view allpy/protein.py @ 396:3a802644d798
add __eq__ and __ne__ operators to Sequence and Column
built-in __eq__ and __ne__ causes different columns to be equal and
results in Graph.bron_kerbosh errors
author |
boris <bnagaev@gmail.com> |
date |
Thu, 03 Feb 2011 13:51:39 +0300 |
parents |
df571a5233fb |
children |
387f692e2356 |
line source
6 class Monomer(base.Monomer):
7 """Protein monomers: aminoacids."""
13 Monomer._initialize(data.codes.protein)
16 """User defined protein; list of protein_sequences."""
19 class Sequence(base.Sequence):
22 class Alignment(base.Alignment):
25 def muscle_align(self):
26 """ Simple align ths alignment using sequences (muscle)
28 uses old Monomers and Sequences objects
30 tmp_file = NamedTemporaryFile(delete=False)
31 self.save_fasta(tmp_file)
33 os.system("muscle -in %(tmp)s -out %(tmp)s" % {'tmp': tmp_file.name})
34 sequences, body = Alignment.from_file(open(tmp_file.name))
35 for sequence in self.sequences:
37 new_sequence = [i for i in sequences if sequence==i][0]
39 raise Exception("Align: Cann't find sequence %s in muscle output" % \
41 old_monomers = iter(sequence.monomers)
42 self.body[sequence] = []
43 for monomer in body[new_sequence]:
45 self.body[sequence].append(monomer)
47 old_monomer = old_monomers.next()
48 if monomer != old_monomer:
49 raise Exception("Align: alignment errors")
50 self.body[sequence].append(old_monomer)
51 os.unlink(tmp_file.name)
53 class Block(Alignment, base.Block):
56 # vim: set ts=4 sts=4 sw=4 et: