Документ взят из кэша поисковой машины. Адрес оригинального документа : http://kodomo.fbb.msu.ru/hg/allpy/file/84730a6e4a15/test/usecase3.py
Дата изменения: Unknown
Дата индексирования: Mon Feb 4 05:32:08 2013
Кодировка:
allpy: 84730a6e4a15 test/usecase3.py

allpy

view test/usecase3.py @ 489:84730a6e4a15

blocks3d/www: move to rest2web site-build system * translate source comments to english * use jquery * remove self-written bikes * add README
author boris (netbook) <bnagaev@gmail.com>
date Mon, 21 Feb 2011 00:02:27 +0300
parents efca47965dc3
children e7d60bf1dfd8
line source
1 from allpy import protein
2 alignment = protein.Alignment().append_file(open("aln.fasta"))
3 #conservative = [(10,20), (40,50)]
4 conservative = [(0,6),(18,37)]
6 def ranges_to_markup(ranges):
7 """Convert list of ranges to line of markup.
9 This has nothing to do with allpy.
10 """
11 markup = ["-"] * len(alignment.columns)
12 for begin, end in ranges:
13 for i in range(begin, end+1):
14 markup[i] = "+"
15 return "".join(markup)
17 def markup_to_blocks(markup):
18 """Convert markup line to a bunch of blocks, one for each sequential run."""
19 current = None
20 blocks = {}
21 for mark, column in zip(markup, alignment.columns):
22 if mark != current:
23 block = protein.Block.from_alignment(alignment, columns=[])
24 blocks[mark] = blocks.get(mark, []) + [block]
25 current = mark
26 blocks[mark][-1].columns.append(column)
27 return blocks
29 def main():
30 markup = ranges_to_markup(conservative)
31 blocks = markup_to_blocks(markup)
32 for block in blocks["-"]:
33 block.flush("left")
34 alignment.to_file(open("output.fasta", "w"))
36 main()