Документ взят из кэша поисковой машины. Адрес оригинального документа : http://kodomo.fbb.msu.ru/hg/allpy/rev/6507cd6808c7
Дата изменения: Unknown
Дата индексирования: Tue Oct 2 00:26:43 2012
Кодировка:
allpy: 6507cd6808c7

allpy

changeset 244:6507cd6808c7

allpy: monomers completed _monomers.py -- provate module for monomers other modules imports MonomerType's descendant from _monomer and inherit from Monomer type thre are some problems with Monomer -- MonomerType links
author boris <bnagaev@gmail.com>
date Fri, 03 Dec 2010 23:24:43 +0300
parents 5caae97bacdf
children 353379082202
files allpy/_monomer.py allpy/base.py allpy/dna.py allpy/monomer.py allpy/rna.py
diffstat 5 files changed, 93 insertions(+), 110 deletions(-) [+]
line diff
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/allpy/_monomer.py	Fri Dec 03 23:24:43 2010 +0300
     1.3 @@ -0,0 +1,86 @@
     1.4 +#!/usr/bin/python
     1.5 +
     1.6 +from allpy_data.AAdict import AAdict
     1.7 +
     1.8 +index_code3 = {}
     1.9 +index_code1 = {}
    1.10 +index_name = {}
    1.11 +
    1.12 +class MonomerType(object):
    1.13 +    """ Monomer type
    1.14 +    
    1.15 +    name -- string like "Valine" 
    1.16 +    code1 -- one-letter code (in upper case)
    1.17 +    code3 -- three-letter code (in upper case)
    1.18 +    is_modified -- True of False
    1.19 +    """
    1.20 +    
    1.21 +    def __init__(self, name, code1, code3, is_modified=False):
    1.22 +        self.name = name.capitalize()
    1.23 +        self.code1 = code1.upper()
    1.24 +        self.code3 = code3.upper()
    1.25 +        self.is_modified = bool(is_modified) # ugly
    1.26 +
    1.27 +    @classmethod
    1.28 +    def create(cls, name, code1, code3, is_modified=False):
    1.29 +        self = cls(name, code1m code3, is_modified)
    1.30 +        index_name[self.name] = self
    1.31 +        index_code3[self.code3] = self
    1.32 +        if not is_modified:
    1.33 +            if cls not in index_code1:
    1.34 +                index_code1[cls] = {}
    1.35 +            index_code1[cls][code1] = self
    1.36 +    
    1.37 +    @classmethod
    1.38 +    def from_code1(code1):
    1.39 +        return index_code1[cls][code1.upper()]
    1.40 +
    1.41 +    @staticmethod
    1.42 +    def from_name(name):
    1.43 +        return index_name[name.capitalize()]
    1.44 +      
    1.45 +    @staticmethod
    1.46 +    def from_pdb_residue(pdb_residue):
    1.47 +        """ pdb_residue type is Bio.PDB.Residue """
    1.48 +        return MonomerType.from_code3(pdb_residue.get_resname())
    1.49 +        
    1.50 +    # TO DISCUSS
    1.51 +    def __eq__(self, other):
    1.52 +        return self.code1 == other.code1
    1.53 +
    1.54 +    def __ne__(self, other):
    1.55 +        return not (self == other)
    1.56 +
    1.57 +
    1.58 +class Monomer(object):
    1.59 +    """ Monomer 
    1.60 +    
    1.61 +    type -- link to MonomerType object
    1.62 +    """
    1.63 +    def __init__(self, monomer_type):
    1.64 +        self.type = monomer_type
    1.65 +        
    1.66 +    def __eq__(self, other):
    1.67 +        return self.type == other.type
    1.68 +
    1.69 +    def __ne__(self, other):
    1.70 +        return not (self == other)
    1.71 +
    1.72 +
    1.73 +class AminoAcidType(MonomerType):
    1.74 +    pass
    1.75 +class DNAType(MonomerType):
    1.76 +    pass
    1.77 +class RNAType(MonomerType):
    1.78 +    pass
    1.79 +
    1.80 +types = {'p': AminoAcidType, 'd': DNAType, 'r': RNAType}
    1.81 +
    1.82 +# prepare all aminoacids
    1.83 +
    1.84 +for code3, data in AAdict.items():
    1.85 +    code1, m_type, is_modified, none, name = data
    1.86 +    monomer_type = types[m_type]
    1.87 +    monomer_type.create(name, code1, code3, is_modified)
    1.88 +del code3, data, code1, m_type, is_modified, none, name
    1.89 +
     2.1 --- a/allpy/base.py	Fri Dec 03 22:57:37 2010 +0300
     2.2 +++ b/allpy/base.py	Fri Dec 03 23:24:43 2010 +0300
     2.3 @@ -1,3 +1,4 @@
     2.4 +import _monomer
     2.5  
     2.6  class Sequence(list):
     2.7      """ Sequence of Monomers
     2.8 @@ -10,13 +11,8 @@
     2.9      """
    2.10      pass
    2.11  
    2.12 -class MonomerType(list):
    2.13 -    """ """
    2.14 -    pass
    2.15 -
    2.16 -class Monomer(object):
    2.17 -    """ """
    2.18 -    pass
    2.19 +MonomerType = _monomer.MonomerType
    2.20 +Monomer = _monomer.Monomer
    2.21  
    2.22  class Alignment(list):
    2.23      """ """
     3.1 --- a/allpy/dna.py	Fri Dec 03 22:57:37 2010 +0300
     3.2 +++ b/allpy/dna.py	Fri Dec 03 23:24:43 2010 +0300
     3.3 @@ -1,12 +1,11 @@
     3.4  import base
     3.5 +import _monomer
     3.6  
     3.7  class Sequence(base.Sequence):
     3.8      """ """
     3.9      pass
    3.10  
    3.11 -class MonomerType(base.MonomerType):
    3.12 -    """ """
    3.13 -    pass
    3.14 +MonomerType = _monomer.DNAType
    3.15  
    3.16  class Monomer(base.Monomer):
    3.17      """ """
     4.1 --- a/allpy/monomer.py	Fri Dec 03 22:57:37 2010 +0300
     4.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     4.3 @@ -1,97 +0,0 @@
     4.4 -#!/usr/bin/python
     4.5 -
     4.6 -from allpy_data.AAdict import AAdict
     4.7 -import Bio.PDB
     4.8 -
     4.9 -index_code3 = {}
    4.10 -index_code1_protein = {}
    4.11 -index_code1_nucleotide = {}
    4.12 -index_name = {}
    4.13 -
    4.14 -class MonomerType(object):
    4.15 -    """ Monomer type
    4.16 -    
    4.17 -    name -- string like "Valine" 
    4.18 -    code1 -- one-letter code (in upper case)
    4.19 -    code3 -- three-letter code (in upper case)
    4.20 -    is_modified -- True of False
    4.21 -    """
    4.22 -    def __init__(self, name, code1, code3, is_modified=False):
    4.23 -        self.name = name.capitalize()
    4.24 -        self.code1 = code1.upper()
    4.25 -        self.code3 = code3.upper()
    4.26 -        self.is_modified = bool(is_modified) # ugly
    4.27 -        
    4.28 -        index_name[self.name] = self
    4.29 -        index_code3[self.code3] = self
    4.30 -    
    4.31 -    @staticmethod
    4.32 -    def from_code3(code3):
    4.33 -        return index_code3[code3.upper()]
    4.34 -    @staticmethod
    4.35 -    def from_name(name):
    4.36 -        return index_name[name.capitalize()]
    4.37 -      
    4.38 -    @staticmethod
    4.39 -    def from_pdb_residue(pdb_residue):
    4.40 -        return MonomerType.from_code3(pdb_residue.get_resname())
    4.41 -        
    4.42 -    # TO DISCUSS
    4.43 -    def __eq__(self, other):
    4.44 -        return self.code1 == other.code1
    4.45 -
    4.46 -    def __ne__(self, other):
    4.47 -        return not (self == other)
    4.48 -
    4.49 -
    4.50 -class Monomer(object):
    4.51 -    """ Monomer 
    4.52 -    
    4.53 -    type -- link to MonomerType object
    4.54 -    """
    4.55 -    def __init__(self, monomer_type):
    4.56 -        self.type = monomer_type
    4.57 -        
    4.58 -    def __eq__(self, other):
    4.59 -        return self.type == other.type
    4.60 -
    4.61 -    def __ne__(self, other):
    4.62 -        return not (self == other)
    4.63 -
    4.64 -class AminoAcidType(MonomerType):
    4.65 -    def __init__(self, name, code1, code3, is_modified=False):
    4.66 -        MonomerType.__init__(self, name, code1, code3, is_modified)
    4.67 -        if not is_modified:
    4.68 -            index_code1_protein[self.code1] = self
    4.69 -
    4.70 -    @staticmethod
    4.71 -    def from_code1(code1):
    4.72 -        return index_code1_protein[code1.upper()]
    4.73 -    def instance(self):
    4.74 -        """ Returns new AminoAcid object of this type """
    4.75 -        return AminoAcid(self)
    4.76 -
    4.77 -class DNAType(MonomerType):
    4.78 -    def __init__(self, name, code1, code3, is_modified=False):
    4.79 -        MonomerType.__init__(self, name, code1, code3, is_modified)
    4.80 -        if not is_modified:
    4.81 -            index_code1_nucleotide[self.code1] = self
    4.82 -
    4.83 -    @staticmethod
    4.84 -    def from_code1(code1):
    4.85 -        return index_code1_nucleotide[code1.upper()]
    4.86 -    def instance(self):
    4.87 -        """ Returns new AminoAcid object of this type """
    4.88 -        return DNA(self)
    4.89 -
    4.90 -
    4.91 -# prepare all aminoacids
    4.92 -
    4.93 -for code3, data in AAdict.items():
    4.94 -    code1, m_type, is_modified, none, name = data
    4.95 -    if m_type == 'p':
    4.96 -        AminoAcidType(name, code1, code3, is_modified)
    4.97 -    if m_type == 'd':
    4.98 -        DNAType(name, code1, code3, is_modified)
    4.99 -del code3, data, code1, m_type, is_modified, none, name
   4.100 -
     5.1 --- a/allpy/rna.py	Fri Dec 03 22:57:37 2010 +0300
     5.2 +++ b/allpy/rna.py	Fri Dec 03 23:24:43 2010 +0300
     5.3 @@ -1,12 +1,11 @@
     5.4  import base
     5.5 +import _monomer
     5.6  
     5.7  class Sequence(base.Sequence):
     5.8      """ """
     5.9      pass
    5.10  
    5.11 -class MonomerType(base.MonomerType):
    5.12 -    """ """
    5.13 -    pass
    5.14 +MonomerType = _monomer.DNAType
    5.15  
    5.16  class Monomer(base.Monomer):
    5.17      """ """