Документ взят из кэша поисковой машины. Адрес оригинального документа : http://kodomo.fbb.msu.ru/hg/allpy/file/0411fa851bba/allpy/protein.py
Дата изменения: Unknown
Дата индексирования: Mon Feb 4 04:22:34 2013
Кодировка:
allpy: 0411fa851bba allpy/protein.py

allpy

view allpy/protein.py @ 350:0411fa851bba

Fixed references to base interface according to previous changes (closes #12)
author Daniil Alexeyevsky <me.dendik@gmail.com>
date Fri, 21 Jan 2011 15:00:23 +0300
parents e3bcb9f8d7b0
children 24a058450d72
line source
1 import base
3 class Monomer(base.Monomer):
4 """Protein monomers: aminoacids."""
5 type = 'protein'
6 by_code1 = {}
7 by_code3 = {}
8 by_name = {}
9 Monomer._initialize()
11 class Protein(list):
12 """User defined protein; list of protein_sequences."""
13 pass
15 class Sequence(base.Sequence):
16 monomer_type = Monomer
18 class Alignment(base.Alignment):
19 sequence_type = Sequence
21 def muscle_align(self):
22 """ Simple align ths alignment using sequences (muscle)
24 uses old Monomers and Sequences objects
25 """
26 tmp_file = NamedTemporaryFile(delete=False)
27 self.save_fasta(tmp_file)
28 tmp_file.close()
29 os.system("muscle -in %(tmp)s -out %(tmp)s" % {'tmp': tmp_file.name})
30 sequences, body = Alignment.from_file(open(tmp_file.name))
31 for sequence in self.sequences:
32 try:
33 new_sequence = [i for i in sequences if sequence==i][0]
34 except:
35 raise Exception("Align: Cann't find sequence %s in muscle output" % \
36 sequence.name)
37 old_monomers = iter(sequence.monomers)
38 self.body[sequence] = []
39 for monomer in body[new_sequence]:
40 if not monomer:
41 self.body[sequence].append(monomer)
42 else:
43 old_monomer = old_monomers.next()
44 if monomer != old_monomer:
45 raise Exception("Align: alignment errors")
46 self.body[sequence].append(old_monomer)
47 os.unlink(tmp_file.name)
49 class Block(Alignment, base.Block):
50 pass
52 # vim: set ts=4 sts=4 sw=4 et: