PB assignation

We hereby demonstrate how to use the API to assign PB sequences.


In [1]:
from pprint import pprint
import urllib.request
import os

# print date & versions
import datetime
print("Date & time:",datetime.datetime.now())
import sys
print("Python version:", sys.version)


Date & time: 2017-03-13 10:26:07.996272
Python version: 3.5.2 (default, Nov 17 2016, 17:05:23) 
[GCC 5.4.0 20160609]

In [2]:
import pbxplore as pbx
print("PBxplore version:", pbx.__version__)


PBxplore version: 1.3.5

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.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().


In [3]:
pdb_name, _ = urllib.request.urlretrieve('https://files.rcsb.org/view/1BTA.pdb', '1BTA.pdb')

structure_reader = pbx.chains_from_files([pdb_name])
chain_name, chain = next(structure_reader)
print(chain_name)
print(chain)


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.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.


In [4]:
dihedrals = chain.get_phi_psi_angles()
pprint(dihedrals)


{1: {'phi': None, 'psi': -171.65563134448544},
 2: {'phi': -133.80467711845586, 'psi': 153.74322760775027},
 3: {'phi': -134.6617568892695, 'psi': 157.30476083095581},
 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.312671692330014, 'psi': 133.73743399231304},
 11: {'phi': -119.15122785547305, 'psi': -11.827895864023617},
 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.20960354113049, 'psi': -56.47559202715399},
 17: {'phi': -64.51979885245254, 'psi': -18.577118068149446},
 18: {'phi': -70.24273354141474, 'psi': -55.153744337676926},
 19: {'phi': -65.20648546633561, 'psi': -41.28370221159952},
 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.95158694420636, 'psi': 47.59528477656777},
 26: {'phi': -69.51531755580697, 'psi': 161.10806531443856},
 27: {'phi': -57.36300935545188, 'psi': -179.66365615297644},
 28: {'phi': -79.91369005407893, 'psi': -18.494472196394668},
 29: {'phi': -93.51717329199727, 'psi': 13.802530546559774},
 30: {'phi': -38.40653214238887, 'psi': 105.85297788366393},
 31: {'phi': -64.01559307951965, 'psi': -5.507357757886837},
 32: {'phi': 50.06519606710965, 'psi': 3.6047302867544038},
 33: {'phi': -84.83560576923662, 'psi': -176.048770127013},
 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.46495675947553},
 44: {'phi': 177.1265816932884, 'psi': -66.62887199130637},
 45: {'phi': -58.436100708193806, 'psi': 149.59997847317612},
 46: {'phi': -102.66050573267097, 'psi': 132.43212727859543},
 47: {'phi': -114.5213275524662, 'psi': 169.33012343233455},
 48: {'phi': -61.39150617820462, 'psi': 136.7035538929314},
 49: {'phi': -113.17589693608565, 'psi': 156.54195412530404},
 50: {'phi': -117.26440335376827, 'psi': 138.51305036902693},
 51: {'phi': -120.03410170277817, 'psi': 81.75707989178757},
 52: {'phi': -77.60981590398825, 'psi': 83.18451037698443},
 53: {'phi': -79.65858964180552, 'psi': 111.40143302647459},
 54: {'phi': -100.37011629225776, 'psi': 150.03395825502497},
 55: {'phi': 49.87330458406238, 'psi': 68.7419980340502},
 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.686140221665617},
 60: {'phi': -111.48538994784963, 'psi': -38.097764578613976},
 61: {'phi': -70.64502750557983, 'psi': -62.8582975880629},
 62: {'phi': -33.50588994671665, 'psi': -32.02546270762565},
 63: {'phi': -128.57384077349852, 'psi': 62.57927537310066},
 64: {'phi': -12.365761900396365, 'psi': 106.99327496259977},
 65: {'phi': 73.68588813063126, 'psi': 32.131558860201714},
 66: {'phi': -89.05260862755028, 'psi': -69.16778908477181},
 67: {'phi': -77.83088301001709, 'psi': -21.564910924673597},
 68: {'phi': -71.32122280651765, 'psi': -21.85941318260012},
 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.46313493362328},
 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.64881254410926},
 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.


In [5]:
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.


In [6]:
pdb_name, _ = urllib.request.urlretrieve('https://files.rcsb.org/view/2LFU.pdb', '2LFU.pdb')

for chain_name, chain in pbx.chains_from_files([pdb_name]):
    dihedrals = chain.get_phi_psi_angles()
    pb_seq = pbx.assign(dihedrals)
    print('* {}'.format(chain_name))
    print('  {}'.format(pb_seq))


* 2LFU.pdb | model 1 | chain A
  ZZbghiacfkbccdddddehiadddddddddddfklggcdddddddddddddehifbdcddddddddddfklopadddddfhpamlnopcddddddehjadddddehjacbddddddddfklmaccddddddfbgniaghiapaddddddfklnoambZZ
* 2LFU.pdb | model 2 | chain A
  ZZpcfblcffbccdddddeehjacdddddddddfklggcddddddddddddddfblghiadddddddddfklopadddddehpmmmnopcddddddeehiacdddfblopadcddddddfklpaccdddddfklmlmgcdehiaddddddfklmmgopZZ
* 2LFU.pdb | model 3 | chain A
  ZZmgghiafbbccdddddehjbdcdddddddddfklggcddddddddddddddfbfghpacddddddddfklopadddddehiaklmmmgcdddddeehiaddddfkbgciacdddddefklpaccddddddfkgojbdfehpaddddddfkbccfbgZZ
* 2LFU.pdb | model 4 | chain A
  ZZcghiacfkbacdddddfbhpacdddddddddfklmcfdddddddddddddehiacddddddddddddfknopadddddfkpamlnopaddddddehjaccdddfklnopacddddddfklmpccdddddddehiabghehiaddddddfklpccfkZZ
* 2LFU.pdb | model 5 | chain A
  ZZpaehiehkaccdddddehjbccdddddddddfklggcddddddddddddddfbhpadddddddddddfklopadddddehiamlmmpccdddddeehiadddddfbacddcddddddfklmaccddddddfbgghiafehiadddddddfklpacfZZ
* 2LFU.pdb | model 6 | chain A
  ZZmghbacfkbccdddddeehpacdddddddddfklggcdddddddddddddehiacadddddddddddfklopadddddehiaklnopcddddddeehiadddehjlnopacddddddfklmaccddddehiaehbgcdehiadddddddfehjlpcZZ
* 2LFU.pdb | model 7 | chain A
  ZZcchbacfkbccdddddfehpacdddddddddfklggcdddddddddddddddehjapadddddddddfknopadddddfklmmmnopcddddddehjiddddddfknopacddddddfklpaccdddddfklmaacdfehpadddddehjblckknZZ
* 2LFU.pdb | model 8 | chain A
  ZZcehjdeehiacdjdddedjbdcdddddddddfklggcdddddddddddddddbfblbacddddddddfklopacddddehiamlnopaddddddehjacddddfehpaaccdddddefklpaccdddddfklmbfbehehiaddddddffkgoiehZZ
* 2LFU.pdb | model 9 | chain A
  ZZpccdjdfkbccdddddehhpacdddddddddfklggcdddddddddddddehiacbdcdddddddddfklopadddddehiammnopcddddddeejiadddehjlgobacddddddfklmpccddddehiacbcbdfehpadddddehjklmklmZZ
* 2LFU.pdb | model 10 | chain A
  ZZccfklcfkbccdddddehjbdcdddddddddfklggcdddddddddddddehiapaccdddddddddfklopadddddehjamlnopaddddddehjddcdddfbfghpacddddddfklpaccddddddfbcfbacfehpadddddddekpghiaZZ
Read 10 chain(s) in 2LFU.pdb

Assign PB for a set of structures

The pbxplore.chains_from_files() function can also handle several chains from several files.


In [7]:
import glob
files = ['1BTA.pdb', '2LFU.pdb', '3ICH.pdb']
for pdb_name in files:
    urllib.request.urlretrieve('https://files.rcsb.org/view/{0}'.format(pdb_name), pdb_name)

print('The following files will be used:')
pprint(files)
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))


The following files will be used:
['1BTA.pdb', '2LFU.pdb', '3ICH.pdb']
* 1BTA.pdb | chain A
  ZZdddfklonbfklmmmmmmmmnopafklnoiaklmmmmmnoopacddddddehkllmmmmngoilmmmmmmmmmmmmnopacdcddZZ
Read 1 chain(s) in 1BTA.pdb
* 2LFU.pdb | model 1 | chain A
  ZZbghiacfkbccdddddehiadddddddddddfklggcdddddddddddddehifbdcddddddddddfklopadddddfhpamlnopcddddddehjadddddehjacbddddddddfklmaccddddddfbgniaghiapaddddddfklnoambZZ
* 2LFU.pdb | model 2 | chain A
  ZZpcfblcffbccdddddeehjacdddddddddfklggcddddddddddddddfblghiadddddddddfklopadddddehpmmmnopcddddddeehiacdddfblopadcddddddfklpaccdddddfklmlmgcdehiaddddddfklmmgopZZ
* 2LFU.pdb | model 3 | chain A
  ZZmgghiafbbccdddddehjbdcdddddddddfklggcddddddddddddddfbfghpacddddddddfklopadddddehiaklmmmgcdddddeehiaddddfkbgciacdddddefklpaccddddddfkgojbdfehpaddddddfkbccfbgZZ
* 2LFU.pdb | model 4 | chain A
  ZZcghiacfkbacdddddfbhpacdddddddddfklmcfdddddddddddddehiacddddddddddddfknopadddddfkpamlnopaddddddehjaccdddfklnopacddddddfklmpccdddddddehiabghehiaddddddfklpccfkZZ
* 2LFU.pdb | model 5 | chain A
  ZZpaehiehkaccdddddehjbccdddddddddfklggcddddddddddddddfbhpadddddddddddfklopadddddehiamlmmpccdddddeehiadddddfbacddcddddddfklmaccddddddfbgghiafehiadddddddfklpacfZZ
* 2LFU.pdb | model 6 | chain A
  ZZmghbacfkbccdddddeehpacdddddddddfklggcdddddddddddddehiacadddddddddddfklopadddddehiaklnopcddddddeehiadddehjlnopacddddddfklmaccddddehiaehbgcdehiadddddddfehjlpcZZ
* 2LFU.pdb | model 7 | chain A
  ZZcchbacfkbccdddddfehpacdddddddddfklggcdddddddddddddddehjapadddddddddfknopadddddfklmmmnopcddddddehjiddddddfknopacddddddfklpaccdddddfklmaacdfehpadddddehjblckknZZ
* 2LFU.pdb | model 8 | chain A
  ZZcehjdeehiacdjdddedjbdcdddddddddfklggcdddddddddddddddbfblbacddddddddfklopacddddehiamlnopaddddddehjacddddfehpaaccdddddefklpaccdddddfklmbfbehehiaddddddffkgoiehZZ
* 2LFU.pdb | model 9 | chain A
  ZZpccdjdfkbccdddddehhpacdddddddddfklggcdddddddddddddehiacbdcdddddddddfklopadddddehiammnopcddddddeejiadddehjlgobacddddddfklmpccddddehiacbcbdfehpadddddehjklmklmZZ
* 2LFU.pdb | model 10 | chain A
  ZZccfklcfkbccdddddehjbdcdddddddddfklggcdddddddddddddehiapaccdddddddddfklopadddddehjamlnopaddddddehjddcdddfbfghpacddddddfklpaccddddddfbcfbacfehpadddddddekpghiaZZ
* 3ICH.pdb | chain A
  ZZccdfbdcdddddehjbdebjcdddddfklmmmlmmmmmmmmnopnopajeopacfbdcehibacehiamnonopgocdfkbjbdcdfblmbccfbghiacdddebehiafkbccddfbdcfklgokaccfbdcfbhklmmmmmmmpccdfkopafbacddfbgcddddfbacddddZZ
Read 10 chain(s) in 2LFU.pdb
Read 1 chain(s) in 3ICH.pdb

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().


In [8]:
topology, _ = urllib.request.urlretrieve('https://raw.githubusercontent.com/pierrepo/PBxplore/master/demo_doc/psi_md_traj.gro', 
                                         'psi_md_traj.gro')
trajectory, _ = urllib.request.urlretrieve('https://raw.githubusercontent.com/pierrepo/PBxplore/master/demo_doc/psi_md_traj.xtc', 
                                           'psi_md_traj.xtc')

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))


/home/pierre/.virtualenvs/pbx-py3-test/lib/python3.5/site-packages/MDAnalysis/coordinates/XDR.py:126: UserWarning: Reload offsets from trajectory
 ctime or size or n_atoms did not match
  warnings.warn("Reload offsets from trajectory\n "
Frame 1/225.
* psi_md_traj.xtc | frame 0
  ZZfkbcnopabfklmmmmpckbccdfbfkbcghiaghidfklmmmmmpcfklccZZ
* psi_md_traj.xtc | frame 1
  ZZfkbcnhpabfklmmmmpckbccdfbfkbcchiachidfklmmmmmbdfklccZZ
* psi_md_traj.xtc | frame 2
  ZZfkbcnhpabfklmmmmcckbccdfbfkbcchiacdddfklmmmmmbdfklpcZZ
* psi_md_traj.xtc | frame 3
  ZZfkbcnhpacfklmmmmpckbccdfbfkbcehiaedddfklmmmpccdfklpcZZ
* psi_md_traj.xtc | frame 4
  ZZfkbmnopabfklmmmmmmmbccddbfkbcghiaehidfklmmmmmcdfklpcZZ
* psi_md_traj.xtc | frame 5
  ZZfkbcnlpabfklmmmmpmkbccdfbfkbcchiacdddfklmmmccbdfklccZZ
* psi_md_traj.xtc | frame 6
  ZZfkbcnopabfklmmmnofkbccdfbfkbcchiacdddfklmmoccbdfklpcZZ
* psi_md_traj.xtc | frame 7
  ZZfkbmnopabfklmmmmcfkbccdddfkbcchiaghidfklmmmccbdfklpcZZ
* psi_md_traj.xtc | frame 8
  ZZfkbcnhpabfklmmmmockbccdfbfkbcehiaehiafklmmmmcbcfklccZZ
* psi_md_traj.xtc | frame 9
  ZZfkbcnhpabfklmmmmcckbccdfbfkbcghiaehidfklmmmcfbdfklccZZ
* psi_md_traj.xtc | frame 10
  ZZfkbcnopabfklmmmmpmkbccdfbfklcghiaehidfklmmmccbdfklccZZ
* psi_md_traj.xtc | frame 11
  ZZfkbcghpabfklmmmnockbccdfbfcbcehiaedddfklmmmpcbdfklccZZ
* psi_md_traj.xtc | frame 12
  ZZfkbanopabfklmmmmockbccdfbfkbcchiaehidfklmmmmmbdfklccZZ
* psi_md_traj.xtc | frame 13
  ZZfkbcnhpabfklmmmmockbccdfbfkbcchiaghidfklmmmpccdfklccZZ
* psi_md_traj.xtc | frame 14
  ZZfkbcnbpabfklmmmmockbccdfbfkbcchiaghidfklmmopfbdfklccZZ
* psi_md_traj.xtc | frame 15
  ZZfkbcnlpabfklmmmmockbccdfbfklcchiacdddfklmmmpccdfklccZZ
* psi_md_traj.xtc | frame 16
  ZZfkbcghpabfklmmmmmmkbccdfbfkbcehiachidfklmmmpcbdfklccZZ
* psi_md_traj.xtc | frame 17
  ZZfkbanlpabfklmmmmpckbccdfbfkbcchiaedddfklmmmcfbdfklccZZ
* psi_md_traj.xtc | frame 18
  ZZfkbcnhpabfklmmmmomkbccdfbfkbcehiaehidfklmmmcfbdfklccZZ
* psi_md_traj.xtc | frame 19
  ZZfkbcnopabfklmmmmpmkbccdfbfkbcehiaehidfklmmmpmbdfklccZZ
* psi_md_traj.xtc | frame 20
  ZZfkbcnhpabfklmmmmockbccdfbfkbaghiaedddfklmmmgfbafklccZZ
* psi_md_traj.xtc | frame 21
  ZZfkbcnbpabfklmmmmcckbccdfbfkbcehiaghiafklmmmcfbdfklccZZ
* psi_md_traj.xtc | frame 22
  ZZfkbcnlpabfklmmmmofkbccdfbfkbcchiaghiafklmmmccbdfklccZZ
* psi_md_traj.xtc | frame 23
  ZZfkbcnopabfklmmmmockbccdfbfkbcchiaehiafklmmmccbdfklccZZ
* psi_md_traj.xtc | frame 24
  ZZfkbcnbpabfklmmmmockbccddbfkbcchiaehidfklmmmpmbdfklccZZ
* psi_md_traj.xtc | frame 25
  ZZfkbcgbpabfklmmmmockbccdfbfkbcchiachidfklmmmccbdfklpcZZ
* psi_md_traj.xtc | frame 26
  ZZfkbcnbpabfklmmmmbgkbccdfbfkbcchiacdidfklmmmpmbdfklccZZ
* psi_md_traj.xtc | frame 27
  ZZfkbcnopabfklmmmmpmkbccdfbfkbaghiaghiafklmmmcfbdfklccZZ
* psi_md_traj.xtc | frame 28
  ZZfkbcnhpabfklmmmmockbccdfbfkbcghiaedidfklmmmcfbdfklccZZ
* psi_md_traj.xtc | frame 29
  ZZfkbcnhpabfklmmmmmmmbccdfbfkbcghiaehidfklmmmcfbdfklccZZ
* psi_md_traj.xtc | frame 30
  ZZfkbcnlpabfklmmmmmmmbccdfbfklcchiaehidfklmmmpfbdfklccZZ
* psi_md_traj.xtc | frame 31
  ZZfkbonhpabfklmmmmmmmbccdfbfkbcghiaghidfklmmmmmbdfklccZZ
* psi_md_traj.xtc | frame 32
  ZZfkbcfbpabfklmmmmmmmbccdfbdcbcehiaghidfklmmmccbdfklccZZ
* psi_md_traj.xtc | frame 33
  ZZfkbcnhpabfklmmmmmmkbccdfbfkbcchiaghidfklmmmccbdfklccZZ
* psi_md_traj.xtc | frame 34
  ZZfklcnopabfklmmmmbmmbccdfbfklcghiaghidfklmmmccbdfklccZZ
* psi_md_traj.xtc | frame 35
  ZZfklcnopabfklmmmmpfkbccdfbfkbcehiaehiafklmmmccbdfklccZZ
* psi_md_traj.xtc | frame 36
  ZZfkbcnopabfklmmmnofkbccdfbfcbcehiacdddfklmmmcfbdfklccZZ
* psi_md_traj.xtc | frame 37
  ZZfklcnopabfklmmmmmmmbccdfbfklcghiaghidfklmmmcfbdfklccZZ
* psi_md_traj.xtc | frame 38
  ZZfkbcnopabfklmmmmockbccdfbfkbcehiaehiafklmmmccbdfklpcZZ
* psi_md_traj.xtc | frame 39
  ZZfkbcnopabfklmmmmmmmbccdfbfkbcghiaehiafklmmmpfbdfklccZZ
* psi_md_traj.xtc | frame 40
  ZZfkbcnlpabfklmmmmockbccdddfklcchiaghiafklmmmpfbafklccZZ
* psi_md_traj.xtc | frame 41
  ZZfkbcnopacfklmmmmmmkbccdddfkbcehiaghiafklmmmcfbdfklmcZZ
* psi_md_traj.xtc | frame 42
  ZZfkbcnopabfklmmmnockbccdddfkbcchiaehidfklmmncfbdfklpcZZ
* psi_md_traj.xtc | frame 43
  ZZfkbcnopabfklmmmmockbccdddfkbcchiaehidfklmmmgmbdfklpcZZ
* psi_md_traj.xtc | frame 44
  ZZfkbcnhpabfklmmmmcfkbccdfbfkbcehiaghiafklmmmcfbdfklpcZZ
* psi_md_traj.xtc | frame 45
  ZZfkbcnhpabfklmmmmmgcbccdfbfkbcchiaehidfklmmmccbdfkbccZZ
* psi_md_traj.xtc | frame 46
  ZZfkbcnopabfklmmmmocbbccdfbdfbcehiaehidfklmmmgfbacklccZZ
* psi_md_traj.xtc | frame 47
  ZZfkbcnbpabfklmmmmockbccdfbfkbcchiaehidfklmmoccbdfklccZZ
* psi_md_traj.xtc | frame 48
  ZZfkbmnbpabfklmmmmockbccdfbfkbcchiaehiafklmmommbcfklccZZ
* psi_md_traj.xtc | frame 49
  ZZfkbcnlpabfklmmmmcfkbccdfbfklcghiaehiafklmmmmmbcfklccZZ
* psi_md_traj.xtc | frame 50
  ZZfkbcnopabfklmmmmockbccdfbfcbcehiacdidfklmmmmmpcfklpcZZ
* psi_md_traj.xtc | frame 51
  ZZfkbcnopabfklmmmmockbccdfbfkbcchiaehidfklmmmmmbcfklccZZ
* psi_md_traj.xtc | frame 52
  ZZfkbcnbpabfklmmmmomkbccdfbfklcghiaghidfklmmmmmmcfklccZZ
* psi_md_traj.xtc | frame 53
  ZZfkbmnopcbfklmmmmpckbccdfbfklcghiaghiafklmmmmmccfklpcZZ
* psi_md_traj.xtc | frame 54
  ZZfkbcnbpfbfklmmmmpckbccdddfkbcchiaghiafklmmmmmpcfklpcZZ
* psi_md_traj.xtc | frame 55
  ZZfkbcnbpfbfklmmmmockbccdfbfkbcchiaehidfklmmmmmpccfbacZZ
* psi_md_traj.xtc | frame 56
  ZZfkbmnopabfklmmmmcckbccdfbfkbcchiaehiafklmmmmmpccfbacZZ
* psi_md_traj.xtc | frame 57
  ZZfkbcnbpabfklmmmmcfkbccdfbfkbcehiaehiafklmmmmmacdfbacZZ
* psi_md_traj.xtc | frame 58
  ZZfkbcnhpabfklmmmmockbccdfbdfbachiaehiafklmmmmmmcfklccZZ
* psi_md_traj.xtc | frame 59
  ZZfkbcnopabfklmmmmockbccdfbfkbcchiaghidfklmmmmmmccfbacZZ
* psi_md_traj.xtc | frame 60
  ZZfkbcnbpabfklmmmmofkbccdfbfkbcehiaghidfklmmmmmpccfbacZZ
* psi_md_traj.xtc | frame 61
  ZZfkbanbpfbfklmmmmockbccdfbfkbcehiaghidfklmmmmmcccfbacZZ
* psi_md_traj.xtc | frame 62
  ZZfkbcnbpabfklmmmmomkbccdfbfkbachiaehiafklmmnomacdfbacZZ
* psi_md_traj.xtc | frame 63
  ZZfkbcnbpabfklmmmmpmkbccdfbfkbcchiaehiafklmmmmnocchiacZZ
* psi_md_traj.xtc | frame 64
  ZZfkbcnbpabfklmmmmpckbccdfbfkbcehiaehiafklmmmmmpccfkacZZ
* psi_md_traj.xtc | frame 65
  ZZfkbcnbpcbfklmmmmpckbccdfbfkbcehiaghiafklmmmmmpccfbacZZ
* psi_md_traj.xtc | frame 66
  ZZfkbcnopabfklmmmmockbccdfbfkbcchiaehiafklmmmmmbccfbccZZ
* psi_md_traj.xtc | frame 67
  ZZfkbcnhpabfklmmmmcfkbccdfbfkbcehiaehiafklmmmmmbccfbccZZ
* psi_md_traj.xtc | frame 68
  ZZfkbcnbpabfklmmmmpckbccdfbfkbcehiaehidfklmmmmmbccfbacZZ
* psi_md_traj.xtc | frame 69
  ZZfkbcnbpabfklmmmmockbccdfbfkbcghiaehiafklmmmmmocfklccZZ
* psi_md_traj.xtc | frame 70
  ZZfkbcnopabfklmmmmmmkbccdfbfkbcchiaehidfklmmmmmcccfbacZZ
* psi_md_traj.xtc | frame 71
  ZZfkbcnbpabfklmmmmomkbccdfbfkbcehiaghidfklmmmmmcccfbacZZ
* psi_md_traj.xtc | frame 72
  ZZfkbcfbpabfklmmmmofkbccdfbfcbcehiaehidfklmmmmmmccfbacZZ
* psi_md_traj.xtc | frame 73
  ZZfkbcnbpabfklmmmmockbccdfbffbcchiaehiafklmmmmmccdfbacZZ
* psi_md_traj.xtc | frame 74
  ZZfkbcnbpabfklmmmmcckbccdfbfklcghiaehiafklmmmmmcccfbdcZZ
* psi_md_traj.xtc | frame 75
  ZZfkbcfhpabfklmmmmpmkbccdfbfklcchiaehiafklmmmmmccfklccZZ
* psi_md_traj.xtc | frame 76
  ZZfkbcghpabfklmmmmmmmbccdfbfkbcchiaehiafklmmmmmpacfbacZZ
* psi_md_traj.xtc | frame 77
  ZZfkbcchiabfklmmmmbfkbccdfbfkbcehiaehiafklmmmmmccdfbacZZ
* psi_md_traj.xtc | frame 78
  ZZfkbcchiacfklmmmmmmkbccdfbfkbcehiaehiafklmmmmmpccfbacZZ
* psi_md_traj.xtc | frame 79
  ZZfkbcghpabfklmmmmmmkbccdfbfkbcchiaehidfklmmmmmacfklpcZZ
* psi_md_traj.xtc | frame 80
  ZZfkbcghpabfklmmmmmmkbccdfbfkbcghiaghiafklmmmmmccehiacZZ
* psi_md_traj.xtc | frame 81
  ZZfkbcnhpabfklmmmmockbccdfbfkbcehiaghidfklmmmmmbcchiacZZ
* psi_md_traj.xtc | frame 82
  ZZfkbcghpabfklmmmmmmcbccdfbfklcghiaghiafklmmmmmpcfklccZZ
* psi_md_traj.xtc | frame 83
  ZZfkbcfbpabfklmmmmockbccdfbfklcghiaghidfklmmnomacdfbacZZ
* psi_md_traj.xtc | frame 84
  ZZfkbcnbpabfklmmmmockbccdfbdfbgghiaehiafklmmmmmbccfbccZZ
* psi_md_traj.xtc | frame 85
  ZZfkbcgbpacfklmmmmomkbccdfbfkbcehiaghiafklmmmmmpcfklccZZ
* psi_md_traj.xtc | frame 86
  ZZfkbcghpacfklmmmmmmmbccdfbfkbcehiaehiafklmmmmmccfklccZZ
* psi_md_traj.xtc | frame 87
  ZZfkbcnopabfklmmmmomkbccdfbdcbcehiaghiafklmmmmmacfklpcZZ
* psi_md_traj.xtc | frame 88
  ZZfkbcfbpacfklmmmmmmmbccdfbfkbcghiaehiafklmmmmmacfklacZZ
* psi_md_traj.xtc | frame 89
  ZZfkbcnopabfklmmmmomkbccdfbfklcghiaghiafklmmmmmmcfklpcZZ
* psi_md_traj.xtc | frame 90
  ZZfkbcnhpacfklmmmmockbccdfbfkbcghiaghiafklmmmmmccfklccZZ
* psi_md_traj.xtc | frame 91
  ZZffbcnopacfklmmmmockbccdfbfklaghiaehiafklmmmmmpccfbacZZ
* psi_md_traj.xtc | frame 92
  ZZfkbcnlpacfklmmmmcckbccdfbfkbcghiaehidfklmmmmmccdfbacZZ
* psi_md_traj.xtc | frame 93
  ZZdfbanhpacfklmmmmcfkbccdfbfkbcehiaghiafklmmmmmccdfbacZZ
* psi_md_traj.xtc | frame 94
  ZZfkbcnhpacfklmmmmockbccdfbfkbcehiaehiafklmmmmmccdfbacZZ
* psi_md_traj.xtc | frame 95
  ZZfkbcnopabfklmmmmmmmbccdfbfkbcehiaehiafklmmmmmcccfbacZZ
* psi_md_traj.xtc | frame 96
  ZZfkbcnbpabfklmmmmockbccdfbfkbcehiaghiafklmmmmmcccfbacZZ
* psi_md_traj.xtc | frame 97
  ZZfkbcnbpabfklmmmmmmkbccdfbfklcghiaehiafklmmmmmmccfbccZZ
* psi_md_traj.xtc | frame 98
  ZZdfbfnbpfbfklmmmmmmkbccdfbfkbcchiaehidfklmmmmmpccklccZZ
* psi_md_traj.xtc | frame 99
  ZZfkbcnbpabfklmmmncckbccdfbafbcchiaghidfklmmmmmbcehiacZZ
* psi_md_traj.xtc | frame 100
  ZZfkbcnbpabfklmmmmmmkbccdfbfkbachiaghidfklmmmmmpccfbacZZ
* psi_md_traj.xtc | frame 101
  ZZfkbcnbjabfklmmmmmmmbccdfbfklpghiaghidfklmmmmmpcfkbccZZ
* psi_md_traj.xtc | frame 102
  ZZfkbcnbpcbfklmmmmockbccdfbfklcghiaehidfklmmmmmpccklccZZ
* psi_md_traj.xtc | frame 103
  ZZfkbcnbpabfklmmmmockbccdfbfkbcchiaehidfklmmmmmccdhiacZZ
* psi_md_traj.xtc | frame 104
  ZZfkbcnopacfklmmmmpckbccdfbfkbcehiaehiafklmmmmmpccfbacZZ
* psi_md_traj.xtc | frame 105
  ZZfkbcnopabfklmmmmockbccdfbfklcchiaehidfklmmmmmbccfbacZZ
* psi_md_traj.xtc | frame 106
  ZZfkbcnbpcbfklmmmmoccbccdfbfkbcghiaehidfklmmmmmbccfbacZZ
* psi_md_traj.xtc | frame 107
  ZZfkbcnbjfbfklmmmmockbccdfbfkbcghiaehidfklmmmmmpccfbacZZ
Frame 100/225.
* psi_md_traj.xtc | frame 108
  ZZfkbckbpcbfklmmmmpmkbccdfbfkbcehiaghidfklmmmmmpccfbacZZ
* psi_md_traj.xtc | frame 109
  ZZfkbcnbpabfklmmmmpmkbccdfbfklcghiaghiafklmmmmmpccfbacZZ
* psi_md_traj.xtc | frame 110
  ZZfkbcnbpabfklmmmnockbccdfbfklcehiaghiafklmmmmmpccfbacZZ
* psi_md_traj.xtc | frame 111
  ZZfkbcnbpabfklmmmmockbccdfbfklcghiaehiafklmmmnmpacfbacZZ
* psi_md_traj.xtc | frame 112
  ZZfkbcfbpcbfklmmmmockbccdfbfklcghiaghiafklmmmmmpccfbacZZ
* psi_md_traj.xtc | frame 113
  ZZfkbcnhpabfklmmmmpckbccdfbfklcchiaehiafklmmmmmcccfbacZZ
* psi_md_traj.xtc | frame 114
  ZZfkbcehpabfklmmmmpmkbccdfbfkbcghiaghiafklmmmmmccdfbacZZ
* psi_md_traj.xtc | frame 115
  ZZfkbcnbpabfklmmmmomkbccdfbfkbcehiaghiafklmmmmmcccfbacZZ
* psi_md_traj.xtc | frame 116
  ZZfkbcnbpabfklmmmmomkbccdfbfklcghiaghiafklmmmmmcccfbccZZ
* psi_md_traj.xtc | frame 117
  ZZfkbcfbpabfklmmmmomkbccdfbfkbcghiaghiafklmmmmmccdfbccZZ
* psi_md_traj.xtc | frame 118
  ZZfkbcnbpcbfklmmmmockbccdfbfkbcghiaghiafklmmmmmpccfbpcZZ
* psi_md_traj.xtc | frame 119
  ZZfkbcnopabfklmmmmockbccdfbfklcghiaehiafklmmmmmbccfbdcZZ
* psi_md_traj.xtc | frame 120
  ZZfkbcnopabfklmmmmockbccdfbfkbcehiaehiafklmmmmmccdfbacZZ
* psi_md_traj.xtc | frame 121
  ZZfkbcnbpabfklmmmnockbccdfbfklcehiaghiafklmmmmmpccfbccZZ
* psi_md_traj.xtc | frame 122
  ZZfkbcnopabfklmmmmmckbccdfbfklcghiaghiafklmmmmmcccfbacZZ
* psi_md_traj.xtc | frame 123
  ZZfkbcnopabfklmmmmbckbccdfbfkbcchiaghiafklmmnombcfklccZZ
* psi_md_traj.xtc | frame 124
  ZZfkbcehpabfklmmmmcckbccdfbfkbcehiaehiafklmmmmmbcfklpcZZ
* psi_md_traj.xtc | frame 125
  ZZfkbcnbpabfklmmmmockbccdfbffbcchiaghiafklmmmmmcccfbacZZ
* psi_md_traj.xtc | frame 126
  ZZfkbcnopabfklmmmmockbccdfbfklcghiaehiafklmmmmmpccfbccZZ
* psi_md_traj.xtc | frame 127
  ZZfkbcnbpabfklmmmmmmkbccdfbfkbcehiachiafklmmmmmmccfbacZZ
* psi_md_traj.xtc | frame 128
  ZZfkbcnopabfklmmmmockbccdfbfbbcehiaghiafklmmmmmpccfbacZZ
* psi_md_traj.xtc | frame 129
  ZZfkbcnopabfklmmmmmmkbccdfbfbdcehiaehiafklmmmmmcccfbacZZ
* psi_md_traj.xtc | frame 130
  ZZfkbcnopabfklmmmmockbccdfbfkbcghiaghiafklmmmmmcccfbacZZ
* psi_md_traj.xtc | frame 131
  ZZfkbcnbpabfklmmmmockbccdfbfkbcehiaghiafklmmmmmmgcfkacZZ
* psi_md_traj.xtc | frame 132
  ZZfkbmnlpabfklmmmmockbccdfbfkbcghiaehiafklmmmmmpcghiacZZ
* psi_md_traj.xtc | frame 133
  ZZfkbcnopabfklmmmmbckbccdfbfcbcehiaehiafklmmmmmacehiacZZ
* psi_md_traj.xtc | frame 134
  ZZfkbcnbpabfklmmmmockbccdfbfkbcehiaehidfklmmmmmccehiacZZ
* psi_md_traj.xtc | frame 135
  ZZfkbcnopabfklmmmmockbccdfbfkbcehiaghiafklmmmmmccehiacZZ
* psi_md_traj.xtc | frame 136
  ZZfkbcnbpcbfklmmmmmmkbccdfbfkbcehiaehiafklmmmmmccehiacZZ
* psi_md_traj.xtc | frame 137
  ZZfkbmnopabfklmmmmcckbccdfbfkbcghiaghiafklmmmmmpgehiacZZ
* psi_md_traj.xtc | frame 138
  ZZfkbcnbpabfklmmmmmmmbccdfblkbcehiaehiafklmmmmmccehiacZZ
* psi_md_traj.xtc | frame 139
  ZZfkbcnbpcbfklmmmmbmkbccdfbfkbcehiaehiafklmmmmmmcehjacZZ
* psi_md_traj.xtc | frame 140
  ZZfkbfnopcbfklmmmmpmkbccdfbfkbcehiaghiafklmmmmmmgehiacZZ
* psi_md_traj.xtc | frame 141
  ZZfkbcnbpcbfklmmmmmmmbccdfbfkbcehiaehiafklmmmmmccehiacZZ
* psi_md_traj.xtc | frame 142
  ZZfkbcnopabfklmmmmpmkbccdfbfkbcehiaehiafklmmmmmacehiacZZ
* psi_md_traj.xtc | frame 143
  ZZfkbcnhpabfklmmmmomkbccdfbfkbcehiaghiafklmmmmmacehiacZZ
* psi_md_traj.xtc | frame 144
  ZZfkbcnbpabfklmmmmmmkbccdfbfkbcehiachiafklmmmmmmcehiacZZ
* psi_md_traj.xtc | frame 145
  ZZfkbcfbpabfklmmmmbckbccdfbdfbaehiaghiafklmmmmmacehiacZZ
* psi_md_traj.xtc | frame 146
  ZZfkbcnbpcbfklmmmmockbccdfbdfbaehiaehiafklmmmmmccehiacZZ
* psi_md_traj.xtc | frame 147
  ZZfkbcnbpabfklmmmmockbccdfbdhiaghiaghiafklmmmmmccehiacZZ
* psi_md_traj.xtc | frame 148
  ZZfkbcnbpcbfklmmmmomkbccdfbdcbdehiaghiafklmmmmmccehiacZZ
* psi_md_traj.xtc | frame 149
  ZZfkbcnbpabfklmmmmcfkbccdfbfkbcehiaghiafklmmmmmpcghiacZZ
* psi_md_traj.xtc | frame 150
  ZZfkbcnbpcbfklmmmmomkbccdfbfkbcehiaehiafklmmnombcghiacZZ
* psi_md_traj.xtc | frame 151
  ZZfkbcnbpabfklmmmmockbccdfbfblcehiaghiafklmmmmmpcehiacZZ
* psi_md_traj.xtc | frame 152
  ZZfkbcnbpabfklmmmmockbccdfbfklcehiaghiafklmmmmmpcehiacZZ
* psi_md_traj.xtc | frame 153
  ZZfkbcnbpabfklmmmmpfkbccdfbfblcehiaghiafklmmmmmccehiacZZ
* psi_md_traj.xtc | frame 154
  ZZfkbcnbpabfklmmmmpmkbccdfbfklcghiaehiafklmmmmmpcehiacZZ
* psi_md_traj.xtc | frame 155
  ZZfkbcnbpabfklmmmmpmkbccdfbfklcghiaghiafklmmmmmpcghiacZZ
* psi_md_traj.xtc | frame 156
  ZZfkbcnbpabfklmmmmpckbccdfbfklcghiaehiafklmmmmmbcehiacZZ
* psi_md_traj.xtc | frame 157
  ZZfkbcnbpabfklmmmmofkbccdfbfkbcghiaghiafklmmmmmpcehiacZZ
* psi_md_traj.xtc | frame 158
  ZZfkbcnbpabfklmmmnockbccdfbfkbcehiaehiafklmmmmmccehiacZZ
* psi_md_traj.xtc | frame 159
  ZZfkbcnbpcbfklmmmmockbccdfbdfbaehiaehiafklmmmmmmcehiacZZ
* psi_md_traj.xtc | frame 160
  ZZfkbcnbpabfklmmmmmmkbccdfbdfbachiaghiafklmmmmmccehiacZZ
* psi_md_traj.xtc | frame 161
  ZZfkbcnbpabfklmmmmockbccdfbacbdehiaehiafklmmmmmmcehiacZZ
* psi_md_traj.xtc | frame 162
  ZZfkbcnbpabfklmmmmockbccdfbfkbcehiaghiafklmmmmmpcehiacZZ
* psi_md_traj.xtc | frame 163
  ZZfkbcfbpcbfklmmmmpckbccdfbfkbcghiaghiafklmmmmmpcehiacZZ
* psi_md_traj.xtc | frame 164
  ZZfkbcnhpabfklmmmmomkbccdfbdfbaehiaehiafklmmmmmpcehkacZZ
* psi_md_traj.xtc | frame 165
  ZZfkbcnopabfklmmmmockbccdfbdcbcehiaehiafklmmmmmpcehiacZZ
* psi_md_traj.xtc | frame 166
  ZZfkbcnbpabfklmmmmcfkbccdfbfkbcghiaghiafklmmmmmpcehiacZZ
* psi_md_traj.xtc | frame 167
  ZZfkbcfbpfbfklmmmmockbccdfbfkbcghiaghiafklmmommpcehiacZZ
* psi_md_traj.xtc | frame 168
  ZZfkbcfbpabfklmmmmockbccdfbfkbcghiaehiafklmmmmmpcehiacZZ
* psi_md_traj.xtc | frame 169
  ZZfkbcfbpabfklmmmmockbccdfbfkbcghiaghiafklmmmmmmcehiacZZ
* psi_md_traj.xtc | frame 170
  ZZfkbcfbpabfklmmmmockbccdfbfkbcghiachiafklmmmmmacehiacZZ
* psi_md_traj.xtc | frame 171
  ZZfkbcnopabfklmmmmockbccdfbfklcehiaghiafklmmmmmccehiacZZ
* psi_md_traj.xtc | frame 172
  ZZfkbcnopabfklmmmmockbccdfbfklcghiaehiafklmmmmmccehiacZZ
* psi_md_traj.xtc | frame 173
  ZZfkbcnopabfklmmmmpckbccdfbfkbcehiaehiafklmmmmmccehiacZZ
* psi_md_traj.xtc | frame 174
  ZZfkbmnopabfklmmmmockbccdfbfklcehiaehiafklmmmmmccehiacZZ
* psi_md_traj.xtc | frame 175
  ZZfkbcnbpabfklmmmmockbccdfbfklcchiaghiafklmmmmmpcehiacZZ
* psi_md_traj.xtc | frame 176
  ZZfkbcnbpabfklmmmncfkbccdfbfkbcehiaehiafklmmmmmccehiacZZ
* psi_md_traj.xtc | frame 177
  ZZfkbcnopabfklmmmnockbccdfbfkbcghiaehiafklmmmmmmcehiacZZ
* psi_md_traj.xtc | frame 178
  ZZfkbcnbpabfklmmmmcckbccdfbfkbcehiaghiafklmmmmmccehiacZZ
* psi_md_traj.xtc | frame 179
  ZZfkbcnbpabfklmmmncfkbccdfbfkbcghiaghiafklmmmmmccehiacZZ
* psi_md_traj.xtc | frame 180
  ZZfkbcnopabfklmmmmpckbccdfbfklcehiaghiafklmmmmmpcehiacZZ
* psi_md_traj.xtc | frame 181
  ZZfkbfnbpcbfklmmmmockbccdfbdcbcehiacdddfklmmmmnpcehiacZZ
* psi_md_traj.xtc | frame 182
  ZZfkbcnbpcbfklmmmmpmkbccdfbfkbcghiaghiafklmmmmmpcehiacZZ
* psi_md_traj.xtc | frame 183
  ZZfkbcnbpabfklmmmmockbccdfbfkbcehiaghiafklmmmmmpcehiacZZ
* psi_md_traj.xtc | frame 184
  ZZfkbcnbpabfklmmmmcckbccdfbfklcghiaehiafklmmommccehiacZZ
* psi_md_traj.xtc | frame 185
  ZZfkbcnbpabfklmmmmpfkbccdfbfkbcehiaehiafklmmmmmpcehiacZZ
* psi_md_traj.xtc | frame 186
  ZZfkbcnopabfklmmmmmmkbccdfbfklcghiaghiafklmmmmmpcehiacZZ
* psi_md_traj.xtc | frame 187
  ZZfkbcnopabfklmmmmockbccdfbfklcghiaghiafklmmmmmpcehiacZZ
* psi_md_traj.xtc | frame 188
  ZZfkbcnbpabfklmmmmpmkbccdfbfkbcchiafbdcfklmmmmmpcehjacZZ
* psi_md_traj.xtc | frame 189
  ZZfkbcnbpcbfklmmmmockbccdfbfcbcehiafbdcfklmmmmmbcehiacZZ
* psi_md_traj.xtc | frame 190
  ZZfkbcnbpcbfklmmmmockbccdfbfklcghiafbdcfklmmmmmbcehiacZZ
* psi_md_traj.xtc | frame 191
  ZZfkbmnbpcbfklmmmnockbccdfblbacehiafbdcfklmmnmmbcehiacZZ
* psi_md_traj.xtc | frame 192
  ZZfkbcnbpfbfklmmmmpmkbccdfbfbdcehiafbdcfklmmmmmccehiacZZ
* psi_md_traj.xtc | frame 193
  ZZfkbcnbpcbfklmmmnomkbccdfbfklcghiacbdcfklmmmmmpcehiacZZ
* psi_md_traj.xtc | frame 194
  ZZfkbmnbpabfklmmmmpmkbccdfbfkbcghiafbdcfklmmmmmpcehiacZZ
* psi_md_traj.xtc | frame 195
  ZZfkbfnbpabfklmmmmpmkbccdfbfkbcehiafbdcfklmmmmmmcehiacZZ
* psi_md_traj.xtc | frame 196
  ZZfkbfnbpabfklmmmmpmkbccdfbfkbcehiafbdcfklmmmmmpcehiacZZ
* psi_md_traj.xtc | frame 197
  ZZfkbmnbpabfklmmmmockbccdfbfkbcehiafbdcfklmmmmmpcchiacZZ
* psi_md_traj.xtc | frame 198
  ZZfkbmnbpcbfklmmmmpmkbccdfbdfbcehiafbdcfklmmmmmmcehiacZZ
* psi_md_traj.xtc | frame 199
  ZZfkbcnbpabfklmmmnockbccdfbfkbcghiafbdcfklmmmmmpaehiacZZ
* psi_md_traj.xtc | frame 200
  ZZfkbcnbpcbfklmmmmockbccdfbdcbcehiafbdcfklmmmmmmcehiacZZ
* psi_md_traj.xtc | frame 201
  ZZfkbcnopabfklmmmmomkbccdfbfbdcehiafbdcfklmmmmmpcehiacZZ
* psi_md_traj.xtc | frame 202
  ZZfkbcnopabfklmmmmomkbccdfbfkbcehiafbdcfklmmmmmpcghiacZZ
* psi_md_traj.xtc | frame 203
  ZZfkbcnopabfklmmmmmmkbccdfbfbbcehiafbdcfklmmmmmpcghiacZZ
* psi_md_traj.xtc | frame 204
  ZZfkbcnopabfklmmmmpmkbccdfbfbbcehiafbdcfklmmmmmpcghiacZZ
* psi_md_traj.xtc | frame 205
  ZZfkbcnopabfklmmmmomkbccdfbfbbcehiafbdcfklmmmmmbcghiacZZ
* psi_md_traj.xtc | frame 206
  ZZfkbcnopabfklmmmmpckbccdfbfkbgghiafbdcfklmmmmmpcehjacZZ
* psi_md_traj.xtc | frame 207
  ZZfkbcnopacfklmmmmomkbccdfblkbcghiafbdcfklmmmmmpcehiacZZ
* psi_md_traj.xtc | frame 208
  ZZfkbcfbpabfklmmmmockbccdfbfkbcghiafbdcfklmmmmmpcehiacZZ
* psi_md_traj.xtc | frame 209
  ZZfkbcnbpabfklmmmmockbccdfbfkbcghiafbdcfklmmmmmpcehiacZZ
* psi_md_traj.xtc | frame 210
  ZZfkbcnbpabfklmmmmockbccdfbfkbcghiafbdcfklmmmmmbcehiacZZ
* psi_md_traj.xtc | frame 211
  ZZdfbanbpabfklmmmmockbccdfbfkbcehiafbdcfklmmmnmccehiacZZ
* psi_md_traj.xtc | frame 212
  ZZfkbcnopabfklmmmnofkbccdfbfkbcehiafbdcfklmmmmmccehiacZZ
* psi_md_traj.xtc | frame 213
  ZZfkbcnbpabfklmmmmockbccdfbfkbcehiafbdcfklmmmmmpcehiacZZ
* psi_md_traj.xtc | frame 214
  ZZfkbcnopabfklmmmmomkbccdfbfcbcehiafbdcfklmmmmmpcehiacZZ
* psi_md_traj.xtc | frame 215
  ZZfkbcnopabfklmmmmpfkbccdfbfkbcchiacbdcfklmmmmmpcehiacZZ
* psi_md_traj.xtc | frame 216
  ZZfkbcnopabfklmmmmockbccdfbfkbcehiacbdcfklmmmnmpaghiacZZ
* psi_md_traj.xtc | frame 217
  ZZfkbcnbpabfklmmmmcckbccdfbfkbcehiafbdcfklmmmmmmcehiacZZ
* psi_md_traj.xtc | frame 218
  ZZfkbcnhpabfklmmmmpckbccdfbfkbcchiafbdcfklmmmmmccehiacZZ
* psi_md_traj.xtc | frame 219
  ZZfkbcnbpabfklmmmmpckbccdfbfkbachiafbdcfklmmmmmpcehiacZZ
* psi_md_traj.xtc | frame 220
  ZZfkbcnbpabfklmmmnockbccdfbfkbcehiafbdcfklmmmnmpaghiacZZ
* psi_md_traj.xtc | frame 221
  ZZdfbanbpabfklmmmnockbccdfblkbcehiafbdcfklmmmmmmcehiacZZ
* psi_md_traj.xtc | frame 222
  ZZfkbcnopabfklmmmmcfkbccdfbfkbcehiafbdcfklmmmmmmcehiacZZ
* psi_md_traj.xtc | frame 223
  ZZfkbcnopabfklmmmmcfkbccdfbfkbcehiafbdcfklmmmmmmcghiacZZ
* psi_md_traj.xtc | frame 224
  ZZfkbcnbpabfklmmmmofkbccdfbfkbcghiafbdcfklmmmmmpcehiacZZ
Frame 200/225.
Frame 225/225.

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


In [9]:
import Bio
import Bio.PDB
import math
print("BioPython version:", Bio.__version__)

pdb_name, _ = urllib.request.urlretrieve('https://files.rcsb.org/view/2LFU.pdb', '2LFU.pdb')

for model in Bio.PDB.PDBParser().get_structure("2LFU", pdb_name):
    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)


BioPython version: 1.68
<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