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

# HG changeset patch
# User boris
# Date 1291407883 -10800
# Node ID 6507cd6808c7a88774b92a96ea086b6a2db340c8
# Parent 5caae97bacdf32c96a9de2f9baab7d6125ecac8d
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

diff -r 5caae97bacdf -r 6507cd6808c7 allpy/_monomer.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/allpy/_monomer.py Fri Dec 03 23:24:43 2010 +0300
@@ -0,0 +1,86 @@
+#!/usr/bin/python
+
+from allpy_data.AAdict import AAdict
+
+index_code3 = {}
+index_code1 = {}
+index_name = {}
+
+class MonomerType(object):
+ """ Monomer type
+
+ name -- string like "Valine"
+ code1 -- one-letter code (in upper case)
+ code3 -- three-letter code (in upper case)
+ is_modified -- True of False
+ """
+
+ def __init__(self, name, code1, code3, is_modified=False):
+ self.name = name.capitalize()
+ self.code1 = code1.upper()
+ self.code3 = code3.upper()
+ self.is_modified = bool(is_modified) # ugly
+
+ @classmethod
+ def create(cls, name, code1, code3, is_modified=False):
+ self = cls(name, code1m code3, is_modified)
+ index_name[self.name] = self
+ index_code3[self.code3] = self
+ if not is_modified:
+ if cls not in index_code1:
+ index_code1[cls] = {}
+ index_code1[cls][code1] = self
+
+ @classmethod
+ def from_code1(code1):
+ return index_code1[cls][code1.upper()]
+
+ @staticmethod
+ def from_name(name):
+ return index_name[name.capitalize()]
+
+ @staticmethod
+ def from_pdb_residue(pdb_residue):
+ """ pdb_residue type is Bio.PDB.Residue """
+ return MonomerType.from_code3(pdb_residue.get_resname())
+
+ # TO DISCUSS
+ def __eq__(self, other):
+ return self.code1 == other.code1
+
+ def __ne__(self, other):
+ return not (self == other)
+
+
+class Monomer(object):
+ """ Monomer
+
+ type -- link to MonomerType object
+ """
+ def __init__(self, monomer_type):
+ self.type = monomer_type
+
+ def __eq__(self, other):
+ return self.type == other.type
+
+ def __ne__(self, other):
+ return not (self == other)
+
+
+class AminoAcidType(MonomerType):
+ pass
+class DNAType(MonomerType):
+ pass
+class RNAType(MonomerType):
+ pass
+
+types = {'p': AminoAcidType, 'd': DNAType, 'r': RNAType}
+
+# prepare all aminoacids
+
+for code3, data in AAdict.items():
+ code1, m_type, is_modified, none, name = data
+ monomer_type = types[m_type]
+ monomer_type.create(name, code1, code3, is_modified)
+del code3, data, code1, m_type, is_modified, none, name
+
diff -r 5caae97bacdf -r 6507cd6808c7 allpy/base.py
--- a/allpy/base.py Fri Dec 03 22:57:37 2010 +0300
+++ b/allpy/base.py Fri Dec 03 23:24:43 2010 +0300
@@ -1,3 +1,4 @@
+import _monomer

class Sequence(list):
""" Sequence of Monomers
@@ -10,13 +11,8 @@
"""
pass

-class MonomerType(list):
- """ """
- pass
-
-class Monomer(object):
- """ """
- pass
+MonomerType = _monomer.MonomerType
+Monomer = _monomer.Monomer

class Alignment(list):
""" """
diff -r 5caae97bacdf -r 6507cd6808c7 allpy/dna.py
--- a/allpy/dna.py Fri Dec 03 22:57:37 2010 +0300
+++ b/allpy/dna.py Fri Dec 03 23:24:43 2010 +0300
@@ -1,12 +1,11 @@
import base
+import _monomer

class Sequence(base.Sequence):
""" """
pass

-class MonomerType(base.MonomerType):
- """ """
- pass
+MonomerType = _monomer.DNAType

class Monomer(base.Monomer):
""" """
diff -r 5caae97bacdf -r 6507cd6808c7 allpy/monomer.py
--- a/allpy/monomer.py Fri Dec 03 22:57:37 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,97 +0,0 @@
-#!/usr/bin/python
-
-from allpy_data.AAdict import AAdict
-import Bio.PDB
-
-index_code3 = {}
-index_code1_protein = {}
-index_code1_nucleotide = {}
-index_name = {}
-
-class MonomerType(object):
- """ Monomer type
-
- name -- string like "Valine"
- code1 -- one-letter code (in upper case)
- code3 -- three-letter code (in upper case)
- is_modified -- True of False
- """
- def __init__(self, name, code1, code3, is_modified=False):
- self.name = name.capitalize()
- self.code1 = code1.upper()
- self.code3 = code3.upper()
- self.is_modified = bool(is_modified) # ugly
-
- index_name[self.name] = self
- index_code3[self.code3] = self
-
- @staticmethod
- def from_code3(code3):
- return index_code3[code3.upper()]
- @staticmethod
- def from_name(name):
- return index_name[name.capitalize()]
-
- @staticmethod
- def from_pdb_residue(pdb_residue):
- return MonomerType.from_code3(pdb_residue.get_resname())
-
- # TO DISCUSS
- def __eq__(self, other):
- return self.code1 == other.code1
-
- def __ne__(self, other):
- return not (self == other)
-
-
-class Monomer(object):
- """ Monomer
-
- type -- link to MonomerType object
- """
- def __init__(self, monomer_type):
- self.type = monomer_type
-
- def __eq__(self, other):
- return self.type == other.type
-
- def __ne__(self, other):
- return not (self == other)
-
-class AminoAcidType(MonomerType):
- def __init__(self, name, code1, code3, is_modified=False):
- MonomerType.__init__(self, name, code1, code3, is_modified)
- if not is_modified:
- index_code1_protein[self.code1] = self
-
- @staticmethod
- def from_code1(code1):
- return index_code1_protein[code1.upper()]
- def instance(self):
- """ Returns new AminoAcid object of this type """
- return AminoAcid(self)
-
-class DNAType(MonomerType):
- def __init__(self, name, code1, code3, is_modified=False):
- MonomerType.__init__(self, name, code1, code3, is_modified)
- if not is_modified:
- index_code1_nucleotide[self.code1] = self
-
- @staticmethod
- def from_code1(code1):
- return index_code1_nucleotide[code1.upper()]
- def instance(self):
- """ Returns new AminoAcid object of this type """
- return DNA(self)
-
-
-# prepare all aminoacids
-
-for code3, data in AAdict.items():
- code1, m_type, is_modified, none, name = data
- if m_type == 'p':
- AminoAcidType(name, code1, code3, is_modified)
- if m_type == 'd':
- DNAType(name, code1, code3, is_modified)
-del code3, data, code1, m_type, is_modified, none, name
-
diff -r 5caae97bacdf -r 6507cd6808c7 allpy/rna.py
--- a/allpy/rna.py Fri Dec 03 22:57:37 2010 +0300
+++ b/allpy/rna.py Fri Dec 03 23:24:43 2010 +0300
@@ -1,12 +1,11 @@
import base
+import _monomer

class Sequence(base.Sequence):
""" """
pass

-class MonomerType(base.MonomerType):
- """ """
- pass
+MonomerType = _monomer.DNAType

class Monomer(base.Monomer):
""" """