Документ взят из кэша поисковой машины. Адрес оригинального документа : http://kodomo.fbb.msu.ru/hg/allpy/file/7c30000dd742/lib/allpy_pdb.py
Дата изменения: Unknown
Дата индексирования: Mon Feb 4 04:24:24 2013
Кодировка:
allpy: 7c30000dd742 lib/allpy_pdb.py

allpy

view lib/allpy_pdb.py @ 85:7c30000dd742

wt: add resources files
author boris <bnagaev@gmail.com>
date Tue, 19 Oct 2010 17:54:14 +0400
parents
children ea3113da42ca
line source
1 import re
3 # for pdb-codes
4 re1 = re.compile(r"(^|[^a-z0-9])([0-9][0-9a-z]{3})([^a-z0-9]([0-9a-z ]?)([^a-z0-9]([0-9]{1,3}))?)?($|[^a-z0-9])")
6 # for files
7 re2 = re.compile(r"(^)([^^]+\.(ent|pdb))([^a-zA-Z0-9]([0-9A-Za-z ]?)([^a-zA-Z0-9]([0-9]{1,3}))?)?$")
9 class Pdb(object):
10 """
11 """
12 @staticmethod
13 def std_id(pdb_id, pdb_chain, pdb_model=None):
14 if pdb_model:
15 return "%s_%s_%s" % pdb_id.lower().strip(), pdb_chain.upper().strip(), pdb_model
16 else:
17 return "%s_%s" % pdb_id.lower().strip(), pdb_chain.upper().strip()
20 def std_id_parse(ID):
21 """
22 Parse standart ID to pdb_code, chain and model
23 """
24 if '.ent' in ID.lower() or '.pdb' in ID.lower():
25 # it is file
26 parseO = self.re2.search(ID) # files
27 else:
28 parseO = self.re1.search(ID.lower()) # pdb codes
29 if not parseO:
30 return None
31 parse = parseO.groups()
32 if len(parse) < 2:
33 return None
34 code = parse[1]
35 chain = ''
36 model = None
37 if len(parse) >= 4:
38 chain = parse[3]
39 if chain:
40 chain = chain.upper()
41 if len(parse) >= 6:
42 if parse[5]:
43 model = parse[5]
44 return code, chain, model
51 #~ class Coordinates(object):
52 """
53 float x, y, z
55 Coordinates(x, y, z) -> Coordinates
56 Coordinates() -> new Coordinates
57 """