Документ взят из кэша поисковой машины. Адрес оригинального документа : http://kodomo.fbb.msu.ru/hg/allpy/annotate/3d61ade3a5e5/allpy/pdb.py
Дата изменения: Unknown
Дата индексирования: Sun Mar 2 02:50:50 2014
Кодировка:
allpy: allpy/pdb.py annotate

allpy

annotate allpy/pdb.py @ 268:3d61ade3a5e5

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