Structural Bioinformatics Library
Template C++ / Python API for developping structural bioinformatics applications.
|
Authors: F. Cazals and T.O'Donnell
This package provides tools to generate or modify tripeptide segments in protein structure, using the so-called Tripeptide Loop Closure (TLC). These tools encompass low level C++ code, as well as the application . The reader is referred to [137] for a detailed description.
Classical TLC.. Mathematically, consider a tripeptide whose internal coordinates (bond lengths , valence angles , and dihedral angles ) have been extracted / are known. The TLC problem consists of finding all geometries of the tripeptide backbone compatible with the internal coordinate values (Fig. fig-TLC-example).
Solving the problem requires finding the real roots of a degree 16 polynomial, which also means that up to 16 solutions may be found [146], [62].
TLC: example reconstructions. |
TLC with gaps. A generalization of the classical TLC consists of considering three amino acid which are not not contiguous along the backbone (Fig. fig-TLCG-example).
This case is of interest in the presence of three linkers enclosing two rigid SSE. Mathematically, this is akin to the original problem, with the rigid blocks modeled as fictitious bonds separating the amino acid (Fig. fig-TLCG-example for one example).
TLCG: example reconstructions sandwiching a beta sheet. PDBID 1vfb, chain C. The three amino acid defining the tripeptide are: (resid: 41 GLN), green (resid: 42 ALA), yellow (resid: 54 GLY). A total of four reconstructions were obtained; the blue one represents the original geometry. |
Our implementation follows [62], except for numerics and the handling on internal coordinates other than the dihedral angles.
TLC and internal coordinates. Solving a particular TLC problem puts the focus on dihedral angles, so that that there are three options to handle the other internal coordinates (bond length and valence angles):
#6 bond lengths from CA1C1 to N3CA3 1.33 1.52 1.45 1.33 1.52 1.45 #7 bond angles from N1CA1C1 to N3CA3C3 1.95 2.05 2.01 1.95 2.05 2.01 1.95 #Omega torsion angles 3.14 3.14
Algorithm. First, the constraints and position of anchors around the loop closure are extracted. These atoms are (Fig. fig-TLC ). The algorithm proceeds with the following three steps:
Tripeptide: atoms and degrees of freedom used for loop closure. (A) Classical tripeptide loop closure(TLC), the six dihedral angles represented correspond to the degrees of freedom used to solve the problem. (B) In tripeptide loop closure with gaps(TLCG), the dihedral degrees of freedom may not be contiguous – they are separated by red gaps on the Figure. |
Main classes. Four classes following the steps of the algorithm are provided:
These three classes have an algebraic kernel as single template argument(default CGAL::Algebraic_kernel _d_1<CGAL::Gmpq>>). This kernel defines the polynomial type in step 1, the solver in step 2 and the Roots Number type in step 3. These three classes are implemented in a fourth interface class SBL::CSB::T_Tripeptide_loop_closure were all the steps are performed using the same kernel.
Robustness.. The numerical stability of an algorithm is key to its robustness [32]. The aforementioned three steps use two number types:
Using these, the three steps go as follows:
Utilities.. A separate class (SBL::CSB::Tripeptide_loop_closure_utilities) with a number of useful low level static methods, in particular matrix operation functions using arrays.
A number of operations on internal coordinates from the package Molecular_coordinates are used:
This package provides the executable .
More specifically, the main options of are as follows:
The following comments are in order:
#6 bond lengths from CA1C1 to N3CA3 1.33 1.52 1.45 1.33 1.52 1.45 #7 bond angles from N1CA1C1 to N3CA3C3 1.95 2.05 2.01 1.95 2.05 2.01 1.95 #Omega torsion angles 3.14 3.14
#Bond lengths ac cn na ac cn na 1.52 1.33 1.45 1.52 1.33 1.45 #Bond angles nac acn cna nac acn cna nac 1.947 2.050 2.093 1.947 2.050 2.093 1.947 #Omega torsion angles 3.14159265359 3.14159265359
sbl-tripeptide-loop-closure.exe --filename 1vfb.pdb --chainid A --resids 11-13-15 -o solutions
vmd -e /path/to/vmd/script/load-pdbs.vmd -args original/pdb/file.pdb solutions*.pdb
pymol input-file.pdb solutions*.pdb
import os
import nglview as nv
The options of sbl-Tripeptide-loop-closure are:
--filename, Input pdb file(must have .pdb suffix}
--chainid, id of the chain in which the loop is found
--resids, resids(idn) concateneted with eventual insertion codes(cn) in the format id1c1-id2c2-id3c3
--precision-factor, Multiplicative factor (double \eql{>1}) for the number of bits in the mantissa
--data-internals, Use the internals found in data. (Nb: all backbone atoms in the loop must be present in the file)
--standard-internals, Use standard internal values
--user-defined-internals, specify internal value constraints from a file
--directory-output, Folder where output files will be stored
--output-prefix, prefix for output files
--help, print the above option details
#create output folder
outputfolder="results"
if not os.path.exists(outputfolder):
os.mkdir(outputfolder)
#Generate Tripeptide loop closure solutions
os.system("sbl-tripeptide-loop-closure.exe --filename data/1vfb.pdb --chainid A --resids 11-13-15 --output-prefix data_ --directory-output results")
os.system("sbl-tripeptide-loop-closure.exe --filename data/1vfb.pdb --standard-internals --chainid A --resids 14-15-16 --output-prefix std_ --directory-output results")
os.system("sbl-tripeptide-loop-closure.exe --filename data/1vfb.pdb --user-defined-internals constraints.txt --chainid A --resids 14-15-16 --output-prefix specified_constraints_ --directory-output results")
Visualize original file:
view = nv.show_file("data/1vfb.pdb")
view
Visualize data extracted internals second solution:
view = nv.show_file("results/data_1vfb-solution-2.pdb")
view
Visualize standard internals second solution:
view = nv.show_file("results/std_1vfb-solution-2.pdb")
view
Visualize user defined internals second solution:
view = nv.show_file("results/specified_constraints_1vfb-solution-2.pdb")
view