view allpy/protein.py @ 382:df571a5233fb
Changed the way related types are stored for Alignment, Block, Sequence, Monomer
Now each of them has attribute 'type', which is an object with four attributes:
- Alignment
- Block
- Sequence
- Monomer
author |
Daniil Alexeyevsky <dendik@kodomo.fbb.msu.ru> |
date |
Tue, 01 Feb 2011 23:08:08 +0300 |
parents |
5639138f619a |
children |
01f9e9c3493e |
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 Block(Alignment, base.Block):
25 class Alignment(base.Alignment):
28 def muscle_align(self):
29 """ Simple align ths alignment using sequences (muscle)
31 uses old Monomers and Sequences objects
33 tmp_file = NamedTemporaryFile(delete=False)
34 self.save_fasta(tmp_file)
36 os.system("muscle -in %(tmp)s -out %(tmp)s" % {'tmp': tmp_file.name})
37 sequences, body = Alignment.from_file(open(tmp_file.name))
38 for sequence in self.sequences:
40 new_sequence = [i for i in sequences if sequence==i][0]
42 raise Exception("Align: Cann't find sequence %s in muscle output" % \
44 old_monomers = iter(sequence.monomers)
45 self.body[sequence] = []
46 for monomer in body[new_sequence]:
48 self.body[sequence].append(monomer)
50 old_monomer = old_monomers.next()
51 if monomer != old_monomer:
52 raise Exception("Align: alignment errors")
53 self.body[sequence].append(old_monomer)
54 os.unlink(tmp_file.name)
56 # vim: set ts=4 sts=4 sw=4 et: