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
3 class IntMarkupMixin(base.Markup):
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):
14 result[key] = int(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):
30 for number, monomer in enumerate(self.sequence, 1):
31 monomer.number = number
33 class SequenceIndexMarkup(base.SequenceMarkup):
38 for index, monomer in enumerate(self.sequence):
41 class AlignmentNumberMarkup(base.AlignmentMarkup):
46 for number, column in enumerate(self.alignment.columns, 1):
49 class AlignmentIndexMarkup(base.AlignmentMarkup):
54 for index, column in enumerate(self.alignment.columns):
57 class SequenceCaseMarkup(base.SequenceMarkup):
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: