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

allpy

changeset 260:aae821828b03

Moved contents of allpy._monomer to allpy.base
author Daniil Alexeyevsky <me.dendik@gmail.com>
date Tue, 14 Dec 2010 20:51:53 +0300
parents 0e8b5ad66125
children d60628e29b24
files allpy/_monomer.py allpy/base.py
diffstat 2 files changed, 116 insertions(+), 128 deletions(-) [+]
line diff
     1.1 --- a/allpy/_monomer.py	Tue Dec 14 20:05:13 2010 +0300
     1.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.3 @@ -1,119 +0,0 @@
     1.4 -#!/usr/bin/python
     1.5 -
     1.6 -import data.codes as table
     1.7 -
     1.8 -class MonomerType(object):
     1.9 -    """Class of monomer types.
    1.10 -
    1.11 -    Each MonomerType object represents a known monomer type, e.g. Valine,
    1.12 -    and is referenced to by each instance of monomer in a given sequence.
    1.13 -
    1.14 -    - `name`: full name of monomer type
    1.15 -    - `code1`: one-letter code
    1.16 -    - `code3`: three-letter code
    1.17 -    - `is_modified`: either of True or False
    1.18 -
    1.19 -    class atributes:
    1.20 -
    1.21 -    - `by_code1`: a mapping from one-letter code to MonomerType object
    1.22 -    - `by_code3`: a mapping from three-letter code to MonomerType object
    1.23 -    - `by_name`: a mapping from monomer name to MonomerType object
    1.24 -    - `instance_type`: class of Monomer objects to use when creating new
    1.25 -      objects; this must be redefined in descendent classes
    1.26 -
    1.27 -    All of the class attributes MUST be redefined when subclassing.
    1.28 -    """
    1.29 -
    1.30 -    by_code1 = {}
    1.31 -    by_code3 = {}
    1.32 -    by_name = {}
    1.33 -    instance_type = None
    1.34 -
    1.35 -    def __init__(self, name="", code1="", code3="", is_modified=False):
    1.36 -        self.name = name.capitalize()
    1.37 -        self.code1 = code1.upper()
    1.38 -        self.code3 = code3.upper()
    1.39 -        self.is_modified = bool(is_modified)
    1.40 -        if not is_modified:
    1.41 -            self.by_code1[self.code1] = self
    1.42 -        self.by_code3[code3] = self
    1.43 -        self.by_name[name] = self
    1.44 -        # We duplicate distinguished long names into MonomerType itself,
    1.45 -        # so that we can use MonomerType.from_code3 to create the relevant
    1.46 -        # type of monomer.
    1.47 -        MonomerType.by_code3[code3] = self
    1.48 -        MonomerType.by_name[name] = self
    1.49 -
    1.50 -    @classmethod
    1.51 -    def _initialize(cls, type_letter, codes=table.codes):
    1.52 -        """Create all relevant instances of MonomerType.
    1.53 -
    1.54 -        `type_letter` is either of:
    1.55 -
    1.56 -        - 'p' for protein
    1.57 -        - 'd' for DNA
    1.58 -        - 'r' for RNA
    1.59 -
    1.60 -        `codes` is a table of monomer codes
    1.61 -        """
    1.62 -        for type, code1, is_modified, code3, name in codes:
    1.63 -            if type == type_letter:
    1.64 -                cls(name, code1, code3, is_modified)
    1.65 -
    1.66 -    @classmethod
    1.67 -    def from_code1(cls, code1):
    1.68 -        """Return monomer type by one-letter code."""
    1.69 -        return cls.by_code1[code1.upper()]
    1.70 -
    1.71 -    @classmethod
    1.72 -    def from_code3(cls, code3):
    1.73 -        """Return monomer type by three-letter code."""
    1.74 -        return cls.by_code3[code3.upper()]
    1.75 -
    1.76 -    @classmethod
    1.77 -    def from_name(cls, name):
    1.78 -        """Return monomer type by name."""
    1.79 -        return cls.by_name[name.capitalize()]
    1.80 -
    1.81 -    def instance(self):
    1.82 -        """Create a new monomer of given type."""
    1.83 -        return self.instance_type(self)
    1.84 -
    1.85 -    def __eq__(self, other):
    1.86 -        if hasattr(other, "type"):
    1.87 -            return self is other.type
    1.88 -        return self is other
    1.89 -
    1.90 -class Monomer(object):
    1.91 -    """Monomer object.
    1.92 -
    1.93 -    attributes:
    1.94 -
    1.95 -    - `type`: type of monomer (a MonomerType object)
    1.96 -
    1.97 -    class attribute `monomer_type` is MonomerType or either of it's subclasses,
    1.98 -    it is used when creating new monomers. It MUST be redefined when subclassing Monomer.
    1.99 -    """
   1.100 -    monomer_type = MonomerType
   1.101 -
   1.102 -    def __init__(self, type):
   1.103 -        self.type = type
   1.104 -
   1.105 -    @classmethod
   1.106 -    def from_code1(cls, code1):
   1.107 -        return cls(cls.monomer_type.by_code1[code1.upper()])
   1.108 -
   1.109 -    @classmethod
   1.110 -    def from_code3(cls, code3):
   1.111 -        return cls(cls.monomer_type.by_code3[code3.upper()])
   1.112 -
   1.113 -    @classmethod
   1.114 -    def from_name(cls, name):
   1.115 -        return cls(cls.monomer_type.by_name[name.capitalize()])
   1.116 -
   1.117 -    def __eq__(self, other):
   1.118 -        if hasattr(other, "type"):
   1.119 -            return self.type is other.type
   1.120 -        return self.type is other
   1.121 -
   1.122 -# vim: set ts=4 sts=4 sw=4 et:
     2.1 --- a/allpy/base.py	Tue Dec 14 20:05:13 2010 +0300
     2.2 +++ b/allpy/base.py	Tue Dec 14 20:51:53 2010 +0300
     2.3 @@ -1,5 +1,119 @@
     2.4 -import _monomer
     2.5  from fasta import save_fasta
     2.6 +import data.codes
     2.7 +
     2.8 +class MonomerType(object):
     2.9 +    """Class of monomer types.
    2.10 +
    2.11 +    Each MonomerType object represents a known monomer type, e.g. Valine,
    2.12 +    and is referenced to by each instance of monomer in a given sequence.
    2.13 +
    2.14 +    - `name`: full name of monomer type
    2.15 +    - `code1`: one-letter code
    2.16 +    - `code3`: three-letter code
    2.17 +    - `is_modified`: either of True or False
    2.18 +
    2.19 +    class atributes:
    2.20 +
    2.21 +    - `by_code1`: a mapping from one-letter code to MonomerType object
    2.22 +    - `by_code3`: a mapping from three-letter code to MonomerType object
    2.23 +    - `by_name`: a mapping from monomer name to MonomerType object
    2.24 +    - `instance_type`: class of Monomer objects to use when creating new
    2.25 +      objects; this must be redefined in descendent classes
    2.26 +
    2.27 +    All of the class attributes MUST be redefined when subclassing.
    2.28 +    """
    2.29 +
    2.30 +    by_code1 = {}
    2.31 +    by_code3 = {}
    2.32 +    by_name = {}
    2.33 +    instance_type = None
    2.34 +
    2.35 +    def __init__(self, name="", code1="", code3="", is_modified=False):
    2.36 +        self.name = name.capitalize()
    2.37 +        self.code1 = code1.upper()
    2.38 +        self.code3 = code3.upper()
    2.39 +        self.is_modified = bool(is_modified)
    2.40 +        if not is_modified:
    2.41 +            self.by_code1[self.code1] = self
    2.42 +        self.by_code3[code3] = self
    2.43 +        self.by_name[name] = self
    2.44 +        # We duplicate distinguished long names into MonomerType itself,
    2.45 +        # so that we can use MonomerType.from_code3 to create the relevant
    2.46 +        # type of monomer.
    2.47 +        MonomerType.by_code3[code3] = self
    2.48 +        MonomerType.by_name[name] = self
    2.49 +
    2.50 +    @classmethod
    2.51 +    def _initialize(cls, type_letter, codes=data.codes.codes):
    2.52 +        """Create all relevant instances of MonomerType.
    2.53 +
    2.54 +        `type_letter` is either of:
    2.55 +
    2.56 +        - 'p' for protein
    2.57 +        - 'd' for DNA
    2.58 +        - 'r' for RNA
    2.59 +
    2.60 +        `codes` is a table of monomer codes
    2.61 +        """
    2.62 +        for type, code1, is_modified, code3, name in codes:
    2.63 +            if type == type_letter:
    2.64 +                cls(name, code1, code3, is_modified)
    2.65 +
    2.66 +    @classmethod
    2.67 +    def from_code1(cls, code1):
    2.68 +        """Return monomer type by one-letter code."""
    2.69 +        return cls.by_code1[code1.upper()]
    2.70 +
    2.71 +    @classmethod
    2.72 +    def from_code3(cls, code3):
    2.73 +        """Return monomer type by three-letter code."""
    2.74 +        return cls.by_code3[code3.upper()]
    2.75 +
    2.76 +    @classmethod
    2.77 +    def from_name(cls, name):
    2.78 +        """Return monomer type by name."""
    2.79 +        return cls.by_name[name.capitalize()]
    2.80 +
    2.81 +    def instance(self):
    2.82 +        """Create a new monomer of given type."""
    2.83 +        return self.instance_type(self)
    2.84 +
    2.85 +    def __eq__(self, other):
    2.86 +        if hasattr(other, "type"):
    2.87 +            return self is other.type
    2.88 +        return self is other
    2.89 +
    2.90 +class Monomer(object):
    2.91 +    """Monomer object.
    2.92 +
    2.93 +    attributes:
    2.94 +
    2.95 +    - `type`: type of monomer (a MonomerType object)
    2.96 +
    2.97 +    class attribute `monomer_type` is MonomerType or either of it's subclasses,
    2.98 +    it is used when creating new monomers. It MUST be redefined when subclassing Monomer.
    2.99 +    """
   2.100 +    monomer_type = MonomerType
   2.101 +
   2.102 +    def __init__(self, type):
   2.103 +        self.type = type
   2.104 +
   2.105 +    @classmethod
   2.106 +    def from_code1(cls, code1):
   2.107 +        return cls(cls.monomer_type.by_code1[code1.upper()])
   2.108 +
   2.109 +    @classmethod
   2.110 +    def from_code3(cls, code3):
   2.111 +        return cls(cls.monomer_type.by_code3[code3.upper()])
   2.112 +
   2.113 +    @classmethod
   2.114 +    def from_name(cls, name):
   2.115 +        return cls(cls.monomer_type.by_name[name.capitalize()])
   2.116 +
   2.117 +    def __eq__(self, other):
   2.118 +        if hasattr(other, "type"):
   2.119 +            return self.type is other.type
   2.120 +        return self.type is other
   2.121  
   2.122  class Sequence(list):
   2.123      """ Sequence of Monomers
   2.124 @@ -12,9 +126,6 @@
   2.125      """
   2.126      pass
   2.127  
   2.128 -MonomerType = _monomer.MonomerType
   2.129 -Monomer = _monomer.Monomer
   2.130 -
   2.131  class Alignment(dict):
   2.132      """ Alignment
   2.133      
   2.134 @@ -230,8 +341,4 @@
   2.135      """ """
   2.136      pass
   2.137  
   2.138 -
   2.139 -
   2.140 -
   2.141 -
   2.142 -
   2.143 +# vim: set ts=4 sts=4 sw=4 et: