In [1]:
from __future__ import print_function
from Bio import PDB
In [2]:
repository = PDB.PDBList()
repository.retrieve_pdb_file('1TUP', pdir='.')
repository.retrieve_pdb_file('1OLG', pdir='.')
repository.retrieve_pdb_file('1YCQ', pdir='.')
Out[2]:
In [3]:
parser = PDB.PDBParser()
p53_1tup = parser.get_structure('P 53 - DNA Binding', 'pdb1tup.ent')
p53_1olg = parser.get_structure('P 53 - Tetramerization', 'pdb1olg.ent')
p53_1ycq = parser.get_structure('P 53 - Transactivation', 'pdb1ycq.ent')
In [4]:
def print_pdb_headers(headers, indent=0):
ind_text = ' ' * indent
for header, content in headers.items():
if type(content) == dict:
print('\n%s%20s:' % (ind_text, header))
print_pdb_headers(content, indent + 4)
print()
elif type(content) == list:
print('%s%20s:' % (ind_text, header))
for elem in content:
print('%s%21s %s' % (ind_text, '->', elem))
else:
print('%s%20s: %s' % (ind_text, header, content))
print_pdb_headers(p53_1tup.header)
In [5]:
print(p53_1tup.header['compound'])
print(p53_1olg.header['compound'])
print(p53_1ycq.header['compound'])
In [6]:
def describe_model(name, pdb):
print()
for model in pdb:
for chain in model:
print('%s - Chain: %s. Number of residues: %d. Number of atoms: %d.' %
(name, chain.id, len(chain), len(list(chain.get_atoms()))))
describe_model('1TUP', p53_1tup)
describe_model('1OLG', p53_1olg)
describe_model('1YCQ', p53_1ycq)
#will go deep in a next recipe (bottom up)
In [13]:
for residue in p53_1tup.get_residues():
if residue.id[0] in [' ', 'W']:
continue
print(residue.id)
In [10]:
res = next(p53_1tup[0]['A'].get_residues())
print(res)
for atom in res:
print(atom, atom.serial_number, atom.element)
print(p53_1tup[0]['A'][94]['CA'])
In [11]:
from Bio.SeqIO import PdbIO, FastaIO
def get_fasta(pdb_file, fasta_file, transfer_ids=None):
fasta_writer = FastaIO.FastaWriter(fasta_file)
fasta_writer.write_header()
for rec in PdbIO.PdbSeqresIterator(pdb_file):
if len(rec.seq) == 0:
continue
if transfer_ids is not None and rec.id not in transfer_ids:
continue
print(rec.id, rec.seq, len(rec.seq))
fasta_writer.write_record(rec)
get_fasta(open('pdb1tup.ent'), open('1tup.fasta', 'w'), transfer_ids=['1TUP:B'])
get_fasta(open('pdb1olg.ent'), open('1olg.fasta', 'w'), transfer_ids=['1OLG:B'])
get_fasta(open('pdb1ycq.ent'), open('1ycq.fasta', 'w'), transfer_ids=['1YCQ:B'])
In [11]: