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

allpy

annotate allpy/pdb.py @ 247:c85e3a2c87d8

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