allpy
annotate allpy/dna.py @ 931:4a9b4503a027
Added class Column to different dna/rna/protein modules too
author | Daniil Alexeyevsky <dendik@kodomo.fbb.msu.ru> |
---|---|
date | Mon, 21 Nov 2011 18:40:16 +0300 |
parents | 5f9e9c4e9ed6 |
children | 08d892230e8c afed1fd8920c |
rev | line source |
---|---|
bnagaev@240 | 1 import base |
me@353 | 2 import data.codes |
me@280 | 3 |
dendik@382 | 4 import dna |
dendik@382 | 5 |
me@328 | 6 class Monomer(base.Monomer): |
me@328 | 7 """DNA monomers: nucleotides.""" |
me@328 | 8 type = 'dna' |
dendik@382 | 9 types = dna |
me@280 | 10 by_code1 = {} |
me@280 | 11 by_code3 = {} |
me@280 | 12 by_name = {} |
me@353 | 13 Monomer._initialize(data.codes.dna) |
bnagaev@240 | 14 |
bnagaev@240 | 15 class Sequence(base.Sequence): |
dendik@382 | 16 types = dna |
dendik@382 | 17 |
dendik@930 | 18 def reverse_complemented(self): |
dendik@930 | 19 """Return a new sequence, reverse-complement to self. |
dendik@930 | 20 |
dendik@930 | 21 Name of the sequence is name of self with apostrophe added. |
dendik@930 | 22 """ |
dendik@930 | 23 from_monomers = self.types.Sequence.from_monomers |
dendik@930 | 24 from_code1 = self.types.Monomer.from_code1 |
dendik@930 | 25 complement = {'A': 'T', 'T': 'A', 'C': 'G', 'G': 'C'} |
dendik@930 | 26 complemented_monomers = [ |
dendik@930 | 27 from_code1(complement.get(monomer.code1, 'N')) |
dendik@930 | 28 for monomer in self |
dendik@930 | 29 ] |
dendik@930 | 30 return from_monomers( |
dendik@930 | 31 reversed(complemented_monomers), |
dendik@930 | 32 self.name + "'", |
dendik@930 | 33 self.description, |
dendik@930 | 34 self.source |
dendik@930 | 35 ) |
dendik@930 | 36 |
dendik@931 | 37 class Column(base.Column): |
dendik@931 | 38 types = dna |
dendik@931 | 39 |
dendik@382 | 40 class Alignment(base.Alignment): |
dendik@382 | 41 types = dna |
bnagaev@240 | 42 |
me@341 | 43 class Block(Alignment, base.Block): |
me@341 | 44 pass |
me@341 | 45 |
me@280 | 46 # vim: set ts=4 sts=4 sw=4 et: |