PBxplore API cookbook — PB assignation¶
Table of Contents
Note
This page is initialy a jupyter notebook. You can see a notebook HTML render of it or download the notebook itself.
We hereby demonstrate how to use the PBxplore API to assign PB sequences.
from __future__ import print_function, division
from pprint import pprint
%cd ../../../
/Users/jon/dev/PBxplore
import pbxplore as pbx
Use the built-in structure parser¶
Assign PB for a single structure¶
The pbxplore.chains_from_files()
function is the prefered way to
read PDB and PDBx/mmCIF files using PBxplore. This function takes a list
of file path as argument, and yield each chain it can read from these
files. It provides a single interface to read PDB and PDBx/mmCIF files,
to read single model and multimodel files, and to read a single file of
a collection of files.
Here we want to read a single file with a single model and a single
chain. Therefore, we need the first and only record that is yield by
pbxplore.chains_from_files()
. This record contains a name for
the chain, and the chain itself as a pbxplore.structure.Chain
object. Note that, even if we want to read a single file, we need to
provide it as a list to pbxplore.chains_from_files()
.
structure_reader = pbx.chains_from_files(['demo1_assignation/1BTA.pdb'])
chain_name, chain = next(structure_reader)
print(chain_name)
print(chain)
Read 1 chain(s) in demo1_assignation/1BTA.pdb
demo1_assignation/1BTA.pdb | chain A
Chain A / model : 1434 atoms
Protein Blocks are assigned based on the dihedral angles of the
backbone. So we need to calculate them. The
pbxplore.structure.Chain.get_phi_psi_angles()
methods calculate
these angles and return them in a form that can be directly provided to
the assignement function.
The dihedral angles are returned as a dictionnary. Each key of this dictionary is a residue number, and each value is a dictionary with the phi and psi angles.
dihedrals = chain.get_phi_psi_angles()
pprint(dihedrals)
{1: {'phi': None, 'psi': -171.6556313444855},
2: {'phi': -133.80467711845586, 'psi': 153.74322760775027},
3: {'phi': -134.66175688926953, 'psi': 157.30476083095584},
4: {'phi': -144.49159910635186, 'psi': 118.59706956501037},
5: {'phi': -100.12866913978127, 'psi': 92.98634825528089},
6: {'phi': -83.48980457968895, 'psi': 104.23730726195485},
7: {'phi': -64.77163869310709, 'psi': -43.25159835828049},
8: {'phi': -44.47885842536948, 'psi': -25.89184262616925},
9: {'phi': -94.90790101955957, 'psi': -47.182577907117775},
10: {'phi': -41.31267169232996, 'psi': 133.73743399231304},
11: {'phi': -119.15122785547305, 'psi': -11.82789586402356},
12: {'phi': -174.21196552933984, 'psi': 175.87239770676175},
13: {'phi': -56.61341695443224, 'psi': -45.74767617535588},
14: {'phi': -50.78226415072095, 'psi': -45.3742585970337},
15: {'phi': -57.93584481869442, 'psi': -43.329444361460844},
16: {'phi': -55.209603541130434, 'psi': -56.47559202715399},
17: {'phi': -64.51979885245254, 'psi': -18.577118068149446},
18: {'phi': -70.24273354141468, 'psi': -55.153744337676926},
19: {'phi': -65.20648546633561, 'psi': -41.28370221159946},
20: {'phi': -58.98821952110768, 'psi': -35.78957701447905},
21: {'phi': -66.8659714296852, 'psi': -42.14634696303375},
22: {'phi': -67.34201665142825, 'psi': -57.40438549689628},
23: {'phi': -52.29793609141382, 'psi': -66.09120830346023},
24: {'phi': -61.19010445362886, 'psi': -14.807316930892569},
25: {'phi': 54.951586944206355, 'psi': 47.59528477656777},
26: {'phi': -69.51531755580697, 'psi': 161.10806531443862},
27: {'phi': -57.36300935545188, 'psi': -179.66365615297644},
28: {'phi': -79.91369005407893, 'psi': -18.494472196394668},
29: {'phi': -93.51717329199727, 'psi': 13.80253054655975},
30: {'phi': -38.40653214238887, 'psi': 105.85297788366393},
31: {'phi': -64.01559307951965, 'psi': -5.507357757886837},
32: {'phi': 50.06519606710964, 'psi': 3.604730286754302},
33: {'phi': -84.83560576923662, 'psi': -176.04877012701309},
34: {'phi': -76.65985981150652, 'psi': -36.89428882663367},
35: {'phi': -66.20745817863622, 'psi': -36.19018119951471},
36: {'phi': -80.76844188891471, 'psi': -55.88509876949212},
37: {'phi': -45.0995601497454, 'psi': -50.82304368319501},
38: {'phi': -58.512419169182465, 'psi': -56.4318511704347},
39: {'phi': -44.00775783983471, 'psi': -26.06209153795419},
40: {'phi': -79.6799641005731, 'psi': -51.3827703817916},
41: {'phi': -58.80532943671335, 'psi': -49.46425322450557},
42: {'phi': -75.73059711071141, 'psi': 3.9162670655634235},
43: {'phi': -177.14613562249534, 'psi': 60.46495675947551},
44: {'phi': 177.12658169328853, 'psi': -66.62887199130637},
45: {'phi': -58.436100708193806, 'psi': 149.59997847317612},
46: {'phi': -102.66050573267097, 'psi': 132.43212727859543},
47: {'phi': -114.52132755246623, 'psi': 169.33012343233455},
48: {'phi': -61.39150617820462, 'psi': 136.7035538929314},
49: {'phi': -113.17589693608565, 'psi': 156.54195412530404},
50: {'phi': -117.26440335376822, 'psi': 138.51305036902693},
51: {'phi': -120.03410170277817, 'psi': 81.75707989178757},
52: {'phi': -77.60981590398819, 'psi': 83.18451037698443},
53: {'phi': -79.65858964180552, 'psi': 111.40143302647459},
54: {'phi': -100.37011629225776, 'psi': 150.03395825502497},
55: {'phi': 49.87330458406237, 'psi': 68.74199803405018},
56: {'phi': -73.87938409722335, 'psi': -66.7355521840301},
57: {'phi': -56.20534388077749, 'psi': -35.207843043514686},
58: {'phi': -66.38284564180043, 'psi': -32.21866387324769},
59: {'phi': -94.6778115344365, 'psi': 17.686140221665553},
60: {'phi': -111.48538994784963, 'psi': -38.09776457861392},
61: {'phi': -70.64502750557983, 'psi': -62.8582975880629},
62: {'phi': -33.50588994671665, 'psi': -32.02546270762559},
63: {'phi': -128.57384077349852, 'psi': 62.57927537310066},
64: {'phi': -12.365761900396365, 'psi': 106.99327496259977},
65: {'phi': 73.68588813063124, 'psi': 32.131558860201714},
66: {'phi': -89.05260862755028, 'psi': -69.16778908477181},
67: {'phi': -77.83088301001709, 'psi': -21.564910924673597},
68: {'phi': -71.32122280651765, 'psi': -21.859413182600065},
69: {'phi': -81.4118653034867, 'psi': -55.2935117883826},
70: {'phi': -52.047970110313145, 'psi': -43.22593946145588},
71: {'phi': -59.215594114973726, 'psi': -45.283196644537554},
72: {'phi': -52.67186926130671, 'psi': -38.127901315075064},
73: {'phi': -75.00963018964649, 'psi': -30.83999517691734},
74: {'phi': -74.69878930178584, 'psi': -35.042954979175136},
75: {'phi': -80.22740138668189, 'psi': -37.2721834868002},
76: {'phi': -63.3253002341084, 'psi': -46.736848174955014},
77: {'phi': -62.577975558265166, 'psi': -38.836376804396195},
78: {'phi': -58.4371262613883, 'psi': -30.932534133630554},
79: {'phi': -77.25603045197096, 'psi': -28.810984281581455},
80: {'phi': -65.77402807318447, 'psi': -6.587861693755428},
81: {'phi': 113.27162201541087, 'psi': -14.067924223417435},
82: {'phi': -63.856071155072016, 'psi': 160.46313493362334},
83: {'phi': -109.29442965951228, 'psi': 65.33016925110071},
84: {'phi': -94.29902268445335, 'psi': 87.93029438989075},
85: {'phi': -52.91938395571083, 'psi': 98.897475962567},
86: {'phi': -73.44769372512917, 'psi': 114.6488125441093},
87: {'phi': -114.16119204550668, 'psi': 101.24805765454327},
88: {'phi': -96.78933556699712, 'psi': 106.74340425527281},
89: {'phi': -109.02775603395975, 'psi': None}}
The dihedral angles can be provided to the pbxplore.assign()
function that assigns a Protein Block to each residue, and that returns
the PB sequence as a string. Note that the first and last two residues
are assigned to the Z
jocker block as some dihedral angles cannot be
calculated.
pb_seq = pbx.assign(dihedrals)
print(pb_seq)
ZZdddfklonbfklmmmmmmmmnopafklnoiaklmmmmmnoopacddddddehkllmmmmngoilmmmmmmmmmmmmnopacdcddZZ
Assign PB for several models of a single file¶
A single PDB file can contain several models. Then, we do not want to read only the first chain. Instead, we want to iterate over all the chains.
for chain_name, chain in pbx.chains_from_files(['demo1_assignation/2LFU.pdb']):
dihedrals = chain.get_phi_psi_angles()
pb_seq = pbx.assign(dihedrals)
print('* {}'.format(chain_name))
print(' {}'.format(pb_seq))
Read 10 chain(s) in demo1_assignation/2LFU.pdb
* demo1_assignation/2LFU.pdb | model 1 | chain A
ZZbghiacfkbccdddddehiadddddddddddfklggcdddddddddddddehifbdcddddddddddfklopadddddfhpamlnopcddddddehjadddddehjacbddddddddfklmaccddddddfbgniaghiapaddddddfklnoambZZ
* demo1_assignation/2LFU.pdb | model 2 | chain A
ZZpcfblcffbccdddddeehjacdddddddddfklggcddddddddddddddfblghiadddddddddfklopadddddehpmmmnopcddddddeehiacdddfblopadcddddddfklpaccdddddfklmlmgcdehiaddddddfklmmgopZZ
* demo1_assignation/2LFU.pdb | model 3 | chain A
ZZmgghiafbbccdddddehjbdcdddddddddfklggcddddddddddddddfbfghpacddddddddfklopadddddehiaklmmmgcdddddeehiaddddfkbgciacdddddefklpaccddddddfkgojbdfehpaddddddfkbccfbgZZ
* demo1_assignation/2LFU.pdb | model 4 | chain A
ZZcghiacfkbacdddddfbhpacdddddddddfklmcfdddddddddddddehiacddddddddddddfknopadddddfkpamlnopaddddddehjaccdddfklnopacddddddfklmpccdddddddehiabghehiaddddddfklpccfkZZ
* demo1_assignation/2LFU.pdb | model 5 | chain A
ZZpaehiehkaccdddddehjbccdddddddddfklggcddddddddddddddfbhpadddddddddddfklopadddddehiamlmmpccdddddeehiadddddfbacddcddddddfklmaccddddddfbgghiafehiadddddddfklpacfZZ
* demo1_assignation/2LFU.pdb | model 6 | chain A
ZZmghbacfkbccdddddeehpacdddddddddfklggcdddddddddddddehiacadddddddddddfklopadddddehiaklnopcddddddeehiadddehjlnopacddddddfklmaccddddehiaehbgcdehiadddddddfehjlpcZZ
* demo1_assignation/2LFU.pdb | model 7 | chain A
ZZcchbacfkbccdddddfehpacdddddddddfklggcdddddddddddddddehjapadddddddddfknopadddddfklmmmnopcddddddehjiddddddfknopacddddddfklpaccdddddfklmaacdfehpadddddehjblckknZZ
* demo1_assignation/2LFU.pdb | model 8 | chain A
ZZcehjdeehiacdjdddedjbdcdddddddddfklggcdddddddddddddddbfblbacddddddddfklopacddddehiamlnopaddddddehjacddddfehpaaccdddddefklpaccdddddfklmbfbehehiaddddddffkgoiehZZ
* demo1_assignation/2LFU.pdb | model 9 | chain A
ZZpccdjdfkbccdddddehhpacdddddddddfklggcdddddddddddddehiacbdcdddddddddfklopadddddehiammnopcddddddeejiadddehjlgobacddddddfklmpccddddehiacbcbdfehpadddddehjklmklmZZ
* demo1_assignation/2LFU.pdb | model 10 | chain A
ZZccfklcfkbccdddddehjbdcdddddddddfklggcdddddddddddddehiapaccdddddddddfklopadddddehjamlnopaddddddehjddcdddfbfghpacddddddfklpaccddddddfbcfbacfehpadddddddekpghiaZZ
Assign PB for a set of structures¶
The pbxplore.chains_from_files()
function can also handle
several chains from several files.
import glob
files = glob.glob('demo1_assignation/*.pdb')
for chain_name, chain in pbx.chains_from_files(files):
dihedrals = chain.get_phi_psi_angles()
pb_seq = pbx.assign(dihedrals)
print('* {}'.format(chain_name))
print(' {}'.format(pb_seq))
Read 2 chain(s) in demo1_assignation/1AY7.pdb
* demo1_assignation/1AY7.pdb | chain A
ZZbjadfklmcfklmmmmmmmmnnpaafbfkgopacehlnomaccddehjaccdddddehklpnbjadcdddfbehiacddfegolaccdddfkZZ
* demo1_assignation/1AY7.pdb | chain B
ZZcddfklpcbfklmmmmmmmmnopafklgoiaklmmmmmmmmpacddddddehkllmmmmnnommmmmmmmmmmmmmnopacddddZZ
Read 1 chain(s) in demo1_assignation/1BTA.pdb
* demo1_assignation/1BTA.pdb | chain A
ZZdddfklonbfklmmmmmmmmnopafklnoiaklmmmmmnoopacddddddehkllmmmmngoilmmmmmmmmmmmmnopacdcddZZ
Read 10 chain(s) in demo1_assignation/2LFU.pdb
* demo1_assignation/2LFU.pdb | model 1 | chain A
ZZbghiacfkbccdddddehiadddddddddddfklggcdddddddddddddehifbdcddddddddddfklopadddddfhpamlnopcddddddehjadddddehjacbddddddddfklmaccddddddfbgniaghiapaddddddfklnoambZZ
* demo1_assignation/2LFU.pdb | model 2 | chain A
ZZpcfblcffbccdddddeehjacdddddddddfklggcddddddddddddddfblghiadddddddddfklopadddddehpmmmnopcddddddeehiacdddfblopadcddddddfklpaccdddddfklmlmgcdehiaddddddfklmmgopZZ
* demo1_assignation/2LFU.pdb | model 3 | chain A
ZZmgghiafbbccdddddehjbdcdddddddddfklggcddddddddddddddfbfghpacddddddddfklopadddddehiaklmmmgcdddddeehiaddddfkbgciacdddddefklpaccddddddfkgojbdfehpaddddddfkbccfbgZZ
* demo1_assignation/2LFU.pdb | model 4 | chain A
ZZcghiacfkbacdddddfbhpacdddddddddfklmcfdddddddddddddehiacddddddddddddfknopadddddfkpamlnopaddddddehjaccdddfklnopacddddddfklmpccdddddddehiabghehiaddddddfklpccfkZZ
* demo1_assignation/2LFU.pdb | model 5 | chain A
ZZpaehiehkaccdddddehjbccdddddddddfklggcddddddddddddddfbhpadddddddddddfklopadddddehiamlmmpccdddddeehiadddddfbacddcddddddfklmaccddddddfbgghiafehiadddddddfklpacfZZ
* demo1_assignation/2LFU.pdb | model 6 | chain A
ZZmghbacfkbccdddddeehpacdddddddddfklggcdddddddddddddehiacadddddddddddfklopadddddehiaklnopcddddddeehiadddehjlnopacddddddfklmaccddddehiaehbgcdehiadddddddfehjlpcZZ
* demo1_assignation/2LFU.pdb | model 7 | chain A
ZZcchbacfkbccdddddfehpacdddddddddfklggcdddddddddddddddehjapadddddddddfknopadddddfklmmmnopcddddddehjiddddddfknopacddddddfklpaccdddddfklmaacdfehpadddddehjblckknZZ
* demo1_assignation/2LFU.pdb | model 8 | chain A
ZZcehjdeehiacdjdddedjbdcdddddddddfklggcdddddddddddddddbfblbacddddddddfklopacddddehiamlnopaddddddehjacddddfehpaaccdddddefklpaccdddddfklmbfbehehiaddddddffkgoiehZZ
* demo1_assignation/2LFU.pdb | model 9 | chain A
ZZpccdjdfkbccdddddehhpacdddddddddfklggcdddddddddddddehiacbdcdddddddddfklopadddddehiammnopcddddddeejiadddehjlgobacddddddfklmpccddddehiacbcbdfehpadddddehjklmklmZZ
* demo1_assignation/2LFU.pdb | model 10 | chain A
ZZccfklcfkbccdddddehjbdcdddddddddfklggcdddddddddddddehiapaccdddddddddfklopadddddehjamlnopaddddddehjddcdddfbfghpacddddddfklpaccddddddfbcfbacfehpadddddddekpghiaZZ
Read 1 chain(s) in demo1_assignation/3ICH.pdb
* demo1_assignation/3ICH.pdb | chain A
ZZccdfbdcdddddehjbdebjcdddddfklmmmlmmmmmmmmnopnopajeopacfbdcehibacehiamnonopgocdfkbjbdcdfblmbccfbghiacdddebehiafkbccddfbdcfklgokaccfbdcfbhklmmmmmmmpccdfkopafbacddfbgcddddfbacddddZZ
Assign PB for frames in a trajectory¶
PB sequences can be assigned from a trajectory. To do so, we use the
pbxplore.chains_from_trajectory()
function that takes the path
to a trajectory and the path to the corresponding topology as argument.
Any file formats readable by MDAnalysis can be used. Except for its
arguments, pbxplore.chains_from_trajectory()
works the same as
pbxplore.chains_from_files()
.
** Note that MDAnalysis is required to use this feature. **
trajectory = 'demo2/barstar_md_traj.xtc'
topology = 'demo2/barstar_md_traj.gro'
for chain_name, chain in pbx.chains_from_trajectory(trajectory, topology):
dihedrals = chain.get_phi_psi_angles()
pb_seq = pbx.assign(dihedrals)
print('* {}'.format(chain_name))
print(' {}'.format(pb_seq))
* demo2/barstar_md_traj.xtc | frame 0
ZZdddfklpmbfklmmmmmmmmnopafklgoiaklmmmmmmmmpacddddddehklmmmmmoghilmmmmmmmmmmmmnopacddddZZ
* demo2/barstar_md_traj.xtc | frame 1
ZZdddfklpcbfklmmmmmmmmnopafkbghiaklmmmmmmmmpccddddddehklmmmmmcehilmmmmmmmmmmmmnopacddddZZ
* demo2/barstar_md_traj.xtc | frame 2
ZZdddfklpcbfklmmmmmmmmnopafklgoiaklmmmmmmmmpccddddddehklmmmmnpghklmmmmmmmmmmmmnopacddddZZ
* demo2/barstar_md_traj.xtc | frame 3
ZZdddfklccbfklmmmmmmmmnopafkbghiaklmmmmmnopaccddddddehkllmmmmpghilmmmmmmmmmmmmnopacddddZZ
* demo2/barstar_md_traj.xtc | frame 4
ZZdddfklpmbfklmmmmmmmmnopafklgoiaklmmmmmnopaccddddddehklmmmmmpghjllmmmmmmmmmmmnopacddddZZ
* demo2/barstar_md_traj.xtc | frame 5
ZZdddfklpmbfklmmmmmmmmnopafkbgoiaklmmmmmnopbacddddddehklmmmmmpghilmmmmmmmmmmmmnopacddddZZ
* demo2/barstar_md_traj.xtc | frame 6
ZZdddfklpmblmlmmmmmmmmnopafkbghiaklmmmmmnopbacddddddehjllmmmnoghklmmmmmmmmmmmmnopacddddZZ
* demo2/barstar_md_traj.xtc | frame 7
ZZdddfklcfblmlmmmmmmmmnopafkbgoiaklmmmmmmmmcacddddddehklmmmmnpghklmmmmmmmmmmmmnopacddddZZ
* demo2/barstar_md_traj.xtc | frame 8
ZZdddfklpgbfklmmmmmmmmnopafklgoiaklmmmmmnojaccddddddehklmmmmmpghilmmmmmmmmmmmmnopacddddZZ
* demo2/barstar_md_traj.xtc | frame 9
ZZdddfklpcbfklmmmmmmmmnopafklgoiaklmmmmmmombacddddddehkllmmmnbghilkmmmmmmmmmmmnopacddddZZ
* demo2/barstar_md_traj.xtc | frame 10
ZZdddfklmmblklmmmmmmmmnopafkbgoiaklmmmmmmmmppcddddddehkllmmmmbghilmmmmmmmmmmmmnopacddddZZ
* demo2/barstar_md_traj.xtc | frame 11
ZZddefklpcbfklmmmmmmmmnopafklghiaklmmmmmnopbacddddddehklmmmmmpghilmmmmmmmmmmmmnopacddddZZ
* demo2/barstar_md_traj.xtc | frame 12
ZZdddfklcfbfklmmmmmmmmnopafklgoiaklmmmmmmmmpacddddddehklmmmmmpghilmmmmmmmmmmmmnopacddddZZ
* demo2/barstar_md_traj.xtc | frame 13
ZZdddfklpmbfklmmmmmmmmnopafklgoiaklmmmmmnopbacddddddehklmmmmmpghklmmmmmmmmmmmmnopacddddZZ
* demo2/barstar_md_traj.xtc | frame 14
ZZdddfklpmbfklmmmmmmmmnopafklghiaklmmmmmmmmpccddddddehklmmmmmpghilmmmmmmmmmmmmnopacddddZZ
* demo2/barstar_md_traj.xtc | frame 15
ZZdddfklpcbfklmmmmmmmmnopafklghiaklmmmmmmmmpccddddddehklmmmmmbghklmmmmmmmmmmmmnopacddddZZ
* demo2/barstar_md_traj.xtc | frame 16
ZZdddfklpmbfklmmmmmmmmnopafkbghiaklmmmmmnoobacddddddehkllmmmmpghilmmmmmmmmmmmmnopacddddZZ
* demo2/barstar_md_traj.xtc | frame 17
ZZdddfklombfklmmmmmmmmnopafkbghiaklmmmmmnopbacddddddehklmmmmmpghilmmmmmmmmmmmmnopacddddZZ
* demo2/barstar_md_traj.xtc | frame 18
ZZdddfklpmbfklmmmmmmmmnopafklghiaklmmmmmmmmpacddddddehklmmmmmpghilmmmmmmmmmmmmnopcdddddZZ
* demo2/barstar_md_traj.xtc | frame 19
ZZdddfklpmblmlmmmmmmmmnopafkbghiaklmmmmmnopbacddddddehklmmmmnbghijmmmmmmmmmmmmnopacddddZZ
* demo2/barstar_md_traj.xtc | frame 20
ZZdddfklcfbfklmmmmmmmmnopafklgoiaklmmmmmmmmpacddddddehkllmmmmmghijklmmmmmmmmmmnopacddddZZ
* demo2/barstar_md_traj.xtc | frame 21
ZZdddfklpcbfklmmmmmmmmnopafklghiaklmmmmmmmmpccddddddehklmmmmmpghijklmmmmmmmmmmnopacddddZZ
* demo2/barstar_md_traj.xtc | frame 22
ZZdddfklpmbfklmmmmmmmmnopafkbghiaklmmmmmmoopacddddddehklmmmmmmghijmlmmmmmmmmmmnopacddddZZ
* demo2/barstar_md_traj.xtc | frame 23
ZZdddfklpfblmlmmmmmmmmnopafkbgoiaklmmmmmmombacddddddehklmmmmmmghijmmmmmmmmmmmmnopacddddZZ
* demo2/barstar_md_traj.xtc | frame 24
ZZdddfklpmbfklmmmmmmmmnopafkbccdfklmmmmmnopaccddddddehklmmmmmbghijklmmmmmmmmmmnopacddddZZ
* demo2/barstar_md_traj.xtc | frame 25
ZZdddfklpgbfklmmmmmmmmnopafkbccdfklmmmmmmmmpacddddddehklmmmmmpghklmmmmmmmmmmmmnopadddddZZ
* demo2/barstar_md_traj.xtc | frame 26
ZZdddfklpmbfklmmmmmmmmnopafkbccdfklmmmmmmnmpacddddddehklmmmmmbghilmmmmmmmmmmmmnopacddddZZ
* demo2/barstar_md_traj.xtc | frame 27
ZZdddfklpcbfklmmmmmmmmnopafkbccbfklmmmmmmmmpccddddddehklmmmmmbghillmmmmmmmmmmmnopacddddZZ
* demo2/barstar_md_traj.xtc | frame 28
ZZdddfklmmbfmlmmmmmmmmnopafkbccdfklmmmmmmmmpacddddddehkllmmmmpghklmmmmmmmmmmmmnopadddddZZ
* demo2/barstar_md_traj.xtc | frame 29
ZZdddfkbpcbfklmmmmmmmmnopafkbccbfklmmmmmnombacddddddehkllmmmmoghilmmmmmmmmmmmmnopacddddZZ
* demo2/barstar_md_traj.xtc | frame 30
ZZdddfklpmbfklmmmmmmmmnopafkbccbfklmmmmmnombccddddddehjlmmmmmpghilmmmmmmmmmmmmnopacddddZZ
* demo2/barstar_md_traj.xtc | frame 31
ZZdddfklpmbfklmmmmmmmmnopafklccdfklmmmmmnopaacddddddehklmmmmmpghilmmmmmmmmmmmmnopacddddZZ
* demo2/barstar_md_traj.xtc | frame 32
ZZdddfklcfbfklmmmmmmmmnopafkbcbdfklmmmmmmmmpacddddddehklmmmmmpghklmmmmmmmmmmmmnopacddddZZ
* demo2/barstar_md_traj.xtc | frame 33
ZZdddfklpcbfmlmmmmmmmmnopafkbckbfklmmmmmmmmmccddddddehjlmmmmmoghklmmmmmmmmmmmmnopacddddZZ
* demo2/barstar_md_traj.xtc | frame 34
ZZdddfklcfbfklmmmmmmmmnopafklccdfklmmmmmmmmpccddddddehklmmmmmpghilmmmmmmmmmmmmnopacddddZZ
* demo2/barstar_md_traj.xtc | frame 35
ZZdddfklcfbfklmmmmmmmmnopafkbccdfklmmmmmmmmppcddddddehklmmmmmpghklmmmmmmmmmmmmnopacddddZZ
* demo2/barstar_md_traj.xtc | frame 36
ZZdddfklpgbjklmmmmmmmmnopafkbccbfklmmmmmmmmpacddddddehklmmmmmoghjlmmmmmmmmmmmmnopacddddZZ
* demo2/barstar_md_traj.xtc | frame 37
ZZdddfklpfbfklmmmmmmmmnopafklccbfklmmmmmnopbacddddddehklmmmmmoghklmmmmmmmmmmmmnopacddddZZ
* demo2/barstar_md_traj.xtc | frame 38
ZZdddfklccbfklmmmmmmmmnopafkbckbfklmmmmmmompacddddddehklmmmmmoghjlmmmmmmmmmmmmnopacddddZZ
* demo2/barstar_md_traj.xtc | frame 39
ZZdddfklpmblmlmmmmmmmmnopafkbccdfklmmmmmmmmcacddddddehklmmmmmoghklmmmmmmmmmmmmnopacddddZZ
* demo2/barstar_md_traj.xtc | frame 40
ZZdddfklcfbfmlmmmmmmmmnopafkbccbfklmmmmmmmmmccddddddehklmmmmmpghklmmmmmmmmmmmmnopacddddZZ
* demo2/barstar_md_traj.xtc | frame 41
ZZdddfklpmbfklmmmmmmmmnopafkbccdfklmmmmmmnopacddddddehklmmmmmpghklmmmmmmmmmmmmnopacddddZZ
* demo2/barstar_md_traj.xtc | frame 42
ZZdddfklpmblmlmmmmmmmmnopafkbccdfklmmmmmmgoiacddddddehklmmmmmmgoklmmmmmmmmmmmmnopacddddZZ
* demo2/barstar_md_traj.xtc | frame 43
ZZdddfklpcbfklmmmmmmmmnopafklccdfklmmmmmmmmpacddddddehklmmmmmmghklmmmmmmmmmmmmnopacddddZZ
* demo2/barstar_md_traj.xtc | frame 44
ZZdddfklcfbfklmmmmmmmmnopafkbccdfklmmmmmmmmgccddddddehjllmmmmmghiaklmmmmmmmmmmnopacddddZZ
* demo2/barstar_md_traj.xtc | frame 45
ZZdddfklcfbfmlmmmmmmmmnopafkbccbfklmmmmmmmmcccddddddehklmmmmmpghiamlmmmmmmmmmmnopacddddZZ
* demo2/barstar_md_traj.xtc | frame 46
ZZdddfkbcfbfklmmmmmmmmnopafkbccdfklmmmmmmmmpacddddddehkllmmmmpghijmlmmmmmmmmmmnopacddddZZ
* demo2/barstar_md_traj.xtc | frame 47
ZZdddfkbcfbfklmmmmmmmmnopafkbccdfklmmmmmmmmpccddddddehklmmmmmpghijklmmmmmmmmmmnopadddddZZ
* demo2/barstar_md_traj.xtc | frame 48
ZZdddfkbcfbfklmmmmmmmmnopafkbccdfklmmmmmmomcacddddddehkllmmmmpghilmlmmmmmmmmmmnopacddddZZ
* demo2/barstar_md_traj.xtc | frame 49
ZZdddffbcfbfklmmmmmmmmnopafkbccbfklmmmmmmnmpacddddddehklmmmmmpghijklmmmmmmmmmmnopacddddZZ
* demo2/barstar_md_traj.xtc | frame 50
ZZdddfklgfbfklmmmmmmmmnopafklccdfklmmmmmmmmmccddddddehklmmmmmpghijmmmmmmmmmmmmnopacddddZZ
Use a different structure parser¶
Providing the dihedral angles can be formated as expected by
pbxplore.assign()
, the source of these angles does not matter.
For instance, other PDB parser can be used with PBxplore.
BioPython¶
import Bio.PDB
import math
for model in Bio.PDB.PDBParser().get_structure("demo1_assignation/2LFU",
"demo1_assignation/2LFU.pdb"):
for chain in model:
polypeptides = Bio.PDB.PPBuilder().build_peptides(chain)
for poly_index, poly in enumerate(polypeptides):
dihedral_list = poly.get_phi_psi_list()
dihedrals = {}
for resid, (phi, psi) in enumerate(dihedral_list, start=1):
if not phi is None:
phi = 180 * phi / math.pi
if not psi is None:
psi = 180 * psi / math.pi
dihedrals[resid] = {'phi': phi, 'psi': psi}
print(model, chain)
pb_seq = pbx.assign(dihedrals)
print(pb_seq)
<Model id=0> <Chain id=A>
ZZbghiacfkbccdddddehiadddddddddddfklggcdddddddddddddehifbdcddddddddddfklopadddddfhpamlnopcddddddehjadddddehjacbddddddddfklmaccddddddfbgniaghiapaddddddfklnoambZZ
<Model id=1> <Chain id=A>
ZZpcfblcffbccdddddeehjacdddddddddfklggcddddddddddddddfblghiadddddddddfklopadddddehpmmmnopcddddddeehiacdddfblopadcddddddfklpaccdddddfklmlmgcdehiaddddddfklmmgopZZ
<Model id=2> <Chain id=A>
ZZmgghiafbbccdddddehjbdcdddddddddfklggcddddddddddddddfbfghpacddddddddfklopadddddehiaklmmmgcdddddeehiaddddfkbgciacdddddefklpaccddddddfkgojbdfehpaddddddfkbccfbgZZ
<Model id=3> <Chain id=A>
ZZcghiacfkbacdddddfbhpacdddddddddfklmcfdddddddddddddehiacddddddddddddfknopadddddfkpamlnopaddddddehjaccdddfklnopacddddddfklmpccdddddddehiabghehiaddddddfklpccfkZZ
<Model id=4> <Chain id=A>
ZZpaehiehkaccdddddehjbccdddddddddfklggcddddddddddddddfbhpadddddddddddfklopadddddehiamlmmpccdddddeehiadddddfbacddcddddddfklmaccddddddfbgghiafehiadddddddfklpacfZZ
<Model id=5> <Chain id=A>
ZZmghbacfkbccdddddeehpacdddddddddfklggcdddddddddddddehiacadddddddddddfklopadddddehiaklnopcddddddeehiadddehjlnopacddddddfklmaccddddehiaehbgcdehiadddddddfehjlpcZZ
<Model id=6> <Chain id=A>
ZZcchbacfkbccdddddfehpacdddddddddfklggcdddddddddddddddehjapadddddddddfknopadddddfklmmmnopcddddddehjiddddddfknopacddddddfklpaccdddddfklmaacdfehpadddddehjblckknZZ
<Model id=7> <Chain id=A>
ZZcehjdeehiacdjdddedjbdcdddddddddfklggcdddddddddddddddbfblbacddddddddfklopacddddehiamlnopaddddddehjacddddfehpaaccdddddefklpaccdddddfklmbfbehehiaddddddffkgoiehZZ
<Model id=8> <Chain id=A>
ZZpccdjdfkbccdddddehhpacdddddddddfklggcdddddddddddddehiacbdcdddddddddfklopadddddehiammnopcddddddeejiadddehjlgobacddddddfklmpccddddehiacbcbdfehpadddddehjklmklmZZ
<Model id=9> <Chain id=A>
ZZccfklcfkbccdddddehjbdcdddddddddfklggcdddddddddddddehiapaccdddddddddfklopadddddehjamlnopaddddddehjddcdddfbfghpacddddddfklpaccddddddfbcfbacfehpadddddddekpghiaZZ