Документ взят из кэша поисковой машины. Адрес оригинального документа : http://kodomo.fbb.msu.ru/hg/allpy/file/4a2341bc90b1/sandbox/common.py
Дата изменения: Unknown
Дата индексирования: Mon Feb 4 07:51:39 2013
Кодировка:
allpy: 4a2341bc90b1 sandbox/common.py

allpy

view sandbox/common.py @ 275:4a2341bc90b1

base.Sequence major cleanup * moved base.Sequence.secstr_has to pdb (it appears that secondary structure it uses is from PDB, which is not a nice thing to do; secondary structure is an entity in itself and must have same names across different sources) * removed stupid base.Sequence.monomers, since base.Sequence is subclass of list * removed all methods that reimplement list behaviour * fixed headers of base.Sequence.from_slice
author Daniil Alexeyevsky <me.dendik@gmail.com>
date Wed, 15 Dec 2010 20:06:27 +0300
parents
children
line source
1 def autoload(filename):
2 seqs = load(filename)
3 maxlen, seqs = measure(seqs)
4 stats, seqs = stat(maxlen, seqs)
5 seqs = color(maxlen, stats, seqs)
6 return seqs
8 def load(filename):
9 seqs = []
10 for block in open(filename).read().split('\n>'):
11 lines = block.split('\n')
12 name = lines[0].lstrip('>').strip()
13 body = "".join(lines[1:])
14 seqs.append((name, body))
15 return seqs
17 def measure(seqs):
18 maxlen = max([len(body) for name, body in seqs])
19 for i, (name, body) in enumerate(seqs):
20 body += "-" * (maxlen - len(body))
21 seqs[i] = name, body
22 return maxlen, seqs
24 def stat(maxlen, seqs):
25 stats = []
26 for x in xrange(maxlen):
27 stat = {}
28 for name, body in seqs:
29 char = body[x]
30 stat[char] = stat.get(char, 0) + 1
31 stats.append(stat)
32 return stats, seqs
34 def color(maxlen, stats, seqs):
35 full = len(seqs)
36 for i, (name, body) in enumerate(seqs):
37 ids = []
38 colors = []
39 for x in xrange(maxlen):
40 id = stats[x][body[x]] * 10 // full
41 norm = id * 256 // 10
42 color = '#%02x%02x%02x' % (norm, norm, norm)
43 ids.append(id)
44 colors.append(color)
45 seqs[i] = name, body, ids, colors
46 return seqs