Документ взят из кэша поисковой машины. Адрес оригинального документа : http://kodomo.fbb.msu.ru/hg/allpy/file/cf24b0082aa0/allpy/pdb.py
Дата изменения: Unknown
Дата индексирования: Sun Feb 3 18:10:11 2013
Кодировка:
allpy: cf24b0082aa0 allpy/pdb.py

allpy

view allpy/pdb.py @ 269:cf24b0082aa0

Fixed reference to module index in docs
author Daniil Alexeyevsky <me.dendik@gmail.com>
date Wed, 15 Dec 2010 02:22:38 +0300
parents deae8240d396
children 4e6e85851133
line source
1 """ Functions to get pdb information from fasta id
2 and to generate fasta id from pdb information
4 pdb information: code, chain, model
6 TODO: same for local pdb files
7 """
9 import re
10 from Bio.PDB import PDBParser
13 # for pdb-codes
14 re1 = re.compile(r"(^|[^a-z0-9])(?P<code>[0-9][0-9a-z]{3})([^a-z0-9](?P<chain>[0-9a-z ]?)(?P<model>[^a-z0-9]([0-9]{1,3}))?)?", re.I)
16 #~ # for files
17 #~ re2 = re.compile(r"(^)([^^]+\.(ent|pdb))([^a-zA-Z0-9]([0-9A-Za-z ]?)([^a-zA-Z0-9]([0-9]{1,3}))?)?$")
19 def std_id(pdb_id, pdb_chain, pdb_model=None):
20 if pdb_model:
21 return "%s_%s_%s" % \
22 (pdb_id.lower().strip(), pdb_chain.upper().strip(), pdb_model)
23 else:
24 return "%s_%s" % \
25 (pdb_id.lower().strip(), pdb_chain.upper().strip())
27 def pdb_id_parse(ID):
28 match = re1.search(ID)
29 if not match:
30 return None
31 d = match.groupdict()
32 if 'chain' not in d or not d['chain']:
33 d['chain'] = ' '
34 if 'model' not in d or not d['model']:
35 d['model'] = 0
36 return d
39 def get_structure(file, name):
40 return PDBParser().get_structure(name, file)
42 #~ def std_id_parse(ID):
43 #~ """
44 #~ Parse standart ID to pdb_code, chain and model
45 #~ """
46 #~ if '.ent' in ID.lower() or '.pdb' in ID.lower():
47 #~ # it is file
48 #~ parseO = self.re2.search(ID) # files
49 #~ else:
50 #~ parseO = self.re1.search(ID.lower()) # pdb codes
51 #~ if not parseO:
52 #~ return None
53 #~ parse = parseO.groups()
54 #~ if len(parse) < 2:
55 #~ return None
56 #~ code = parse[1]
57 #~ chain = ''
58 #~ model = None
59 #~ if len(parse) >= 4:
60 #~ chain = parse[3]
61 #~ if chain:
62 #~ chain = chain.upper()
63 #~ if len(parse) >= 6:
64 #~ if parse[5]:
65 #~ model = parse[5]
66 #~ return code, chain, model