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

allpy

view allpy/markups.py @ 735:632a0708ab33

blocks3d/www: allow blocks not to be continuous Changes: * javascript * blocks_to_html method of AlignmentMixin * test for blocks viewer (add one non-continuous block) Currently block can have either "start" and "end" or "positions" attribute, but not both. "start" and "end" attributes are not deprecated and can be used if blocks are known to be continuous or while writting blocks javascript by hands. close #71
author boris <bnagaev@gmail.com>
date Fri, 08 Jul 2011 20:21:39 +0200
parents df624c729ab5
children 52ce523138d5
line source
1 import base
3 class IntMarkupMixin(base.Markup):
5 @classmethod
6 def from_record(cls, container, record, name=None):
7 assert record['io-class'] == 'IntMarkup'
8 result = cls(container, name=name)
9 separator = record.get('separator', ',')
10 values = record['markup'].split(separator)
11 assert len(values) == len(result.sorted_keys())
12 for key, value in zip(result.sorted_keys(), values):
13 if value:
14 result[key] = int(value)
15 return result
17 def to_record(self):
18 def fmt(value):
19 if value is None:
20 return ""
21 return str(value)
22 values = [fmt(self.get(key)) for key in self.sorted_keys()]
23 return {'markup': ','.join(values), 'io-class': 'IntMarkup'}
25 class SequenceNumberMarkup(base.SequenceMarkup):
27 name = 'number'
29 def refresh(self):
30 for number, monomer in enumerate(self.sequence, 1):
31 monomer.number = number
33 class SequenceIndexMarkup(base.SequenceMarkup):
35 name = 'index'
37 def refresh(self):
38 for index, monomer in enumerate(self.sequence):
39 monomer.index = index
41 class AlignmentNumberMarkup(base.AlignmentMarkup):
43 name = 'number'
45 def refresh(self):
46 for number, column in enumerate(self.alignment.columns, 1):
47 self[column] = number
49 class AlignmentIndexMarkup(base.AlignmentMarkup):
51 name = 'index'
53 def refresh(self):
54 for index, column in enumerate(self.alignment.columns):
55 self[column] = index
57 class SequenceCaseMarkup(base.SequenceMarkup):
59 name = 'case'
61 def refresh(self):
62 for monomer in self.sequence:
63 if monomer.input_code1.isupper():
64 monomer.case = 'upper'
65 elif monomer.input_code1.islower():
66 monomer.case = 'lower'
68 # vim: set ts=4 sts=4 sw=4 et: