Difference between revisions of "Tutorial"

From victor
Jump to: navigation, search
(Lobo)
(Create a new project)
 
(114 intermediate revisions by 2 users not shown)
Line 1: Line 1:
= Biopool =
+
In the '''sample''' folder are available all input and output files used in this tutorial.
 +
<br>
 +
Consider also to visit the [[Features]] page for further examples.
 +
<br>
 +
=Target/Template alignment=
  
The Biopool class implementation follows the [http://en.wikipedia.org/wiki/Composite_pattern composite design pattern ]  and for a complete description of the class hierarchy we reccomend to see the [Doxygen documentation]. Whitout going into implementation details a '''Protein''' object is just a container for vectors representing chains. Each vector has 2 elements: the '''Spacer''' and the '''Ligand Set'''. The Spacer is the container for '''AminoAcid''' objects whereas the LigandSet is a container for all other melecules and ions, including DNA/RNA chains. Ultimately all molecules, both in the Spacer and in the LigandSet are collections of '''Atom''' objects. The main feature in Biopool is that each AminoAcid object in the Spacer is connected to its neighbours by menas of one rotational vector plus one translational vector. This implementation make ease the modification of the protein structure and lot of functions were implemented to modify/perturbate/transformate the residue relative position in an efficent way.  
+
Supposing you have already found a template candidate, you need to align it against your target sequence. In this dummy example we take the sequences of two homologous proteins both endowed with 3D structure. That allows us to compare different type of Victor alignments with the "exact" one derived from the structural alignment.
Rotation and Translation vectors:
+
  
 +
The two proteins are:
  
The object representation look like that:
+
* Target = [http://www.rcsb.org/pdb/files/2ANL.pdb 2ANL] (chain A)
 +
* Template = [http://www.rcsb.org/pdb/files/1DP5.pdb 1DP5] (chain A)
  
[[immagine:SchemeProteinclass.jpg]]
+
The two structure superimpose quite well (RMSD 2.03 A) considering the low level of sequence identity (28.06%). This is the resulting sequence alignment after the 3D alignment done by [http://fatcat.burnham.org/ FATCAT]:
 +
 +
[[File:3d_align.png|700px]]
  
 +
[[File:alignment_cartoon.png|300px|left]]
 +
[[File:alignment_ribbon.png|300px|rigth]]
  
  
Victor includes different packages: '''Biopool''', '''Lobo''' and '''Energy'''. Every package is identified by a direcotry, starting with a capital letter, in the main Victor path. Inside each package you will find the '''Source''' folder containing the classes code and the '''APPS''' directory including useful utilities. In the main Victor path you will find the '''bin''' directory containing most important porgrams simply copied from the APPS folders. In the main path you should also find the '''data''' folder containing symbolic links to data files used by singular packages.
 
  
 +
The '''subali''' application let you choose from very different type of algorithms, strategies and parameters.
 +
The fist step is to create a file (i.e. '''pair.fasta''', already available in the '''sample''' folder) including both the target and template '''Fasta''' sequences together like that:
  
 +
<pre>
 +
>2ANL:A Target
 +
SENDVIELDDVANLMFYGEGEVGDNHQKFMLIFDTGSANLWVPSKKCNSIGCSTKHLYDSSKSKSYEKDGTKVEITYGSG
 +
TVRGFFSKDLVTLGYLSLPYKFIEVTDTDDLEPLYTAAEFDGILGLGWKDLSIGSIDPIVVELKNQNKIDQALFTFYLPV
 +
HDKHSGYLTIGGIEEKFYEGELTYEKLNHDLFWQVDLDVNFGKTSMEKANVIVDSGTSTITAPTSFINKFFKDLNVIKVP
 +
FLPFYITTCNNKDMPTLEFKSANNTYTLEPEYYMEPLLDIDDTLCMLYILPVDIDKNTFILGDPFMRKYFTVFDYDKESI
 +
GFAVAKN
 +
>1DP5:A Template
 +
GGHDVPLTNYLNAQYYTDITLGTPPQNFKVILDTGSSNLWVPSNECGSLACFLHSKYDHEASSSYKANGTEFAIQYGTGS
 +
LEGYISQDTLSIGDLTIPKQDFAEATSEPGLTFAFGKFDGILGLGYDTISVDKVVPPFYNAIQQDLLDEKRFAFYLGDTS
 +
KDTENGGEATFGGIDESKFKGDITWLPVRRKAYWEVKFEGIGLGDEYAELESHGAAIDTGTSLITLPSGLAEMINAEIGA
 +
KKGWTGQYTLDCNTRDNLPDLIFNFNGYNFTIGPYDYTLEVSGSCISAITPMDFPEPVGPLAIVGDAFLRKYYSIYDLGN
 +
NAVGLAKAI
 +
</pre>
  
== Parsing a PDB file (PdbLoader) ==
 
  
Biopool uses the '''PdbLoader class''' to load PDB files. By default it loads all '''standard residues''' and hetero atoms excluding nucleotides and water molecules. When possible it also tries to place '''hydrogen atoms''' to every amino acid included in the spacer and determine the secondary structure with the DSSP algorithm.
+
==Sequence to sequence alignment==
The simplest way to load a PDB into a '''Protein object''' is:
+
  
<syntaxhighlight line lang="cpp">
+
Supposing we call the input file with the target and template sequences '''pair.fasta''' than by running the following command you obtain a basic alignment with the default parameters (see [[Features]]):
  #include <PdbLoader.h>
+
  #include <Protein.h>
+
  #include <iostream>
+
  
  int main( int argc, char* argv[] ) {
+
subali --in pair.fasta
  
    string inputFile = "MyPdbFile.pdb";
+
The resulting alignment is this:
    ifstream inFile( inputFile.c_str() );
+
    PdbLoader pl(inFile);    // creates the PdbLoader object
+
  
    Protein prot;           
+
[[File:default_align.png|700px]]
    prot.load( pl );        // creates the Protein object
+
  }
+
</syntaxhighlight>
+
  
== Modify the structure ==
 
  
 +
==Profile to profile alignment==
  
 +
Most of the time including evolutionary information helps improving the alignment quality. In this example we used '''PsiBlast''' to calculate profiles both for the target and the template sequences. The PsiBlast tool is available at:
  
=== Add hydrogen atoms ===
+
* [http://www.ncbi.nlm.nih.gov/blast/Blast.cgi?CMD=Web&PAGE=Proteins&PROGRAM=blastp&RUN_PSIBLAST=on Online service]
  
 +
* [ftp://ftp.ncbi.nlm.nih.gov/blast/executables/blast+/LATEST/ Command line package]
  
  
== Get the secondary structure ==
+
The profiles have to be generated in a specific format.  
There are 3 different ways in Victor to get the secondary structure. The first (innacurate) is just parsing the '''HELIX''' and '''SHEET''' fields in the PDB file. The second method is to infer the secondary structure from '''torsional angles'''. The last choice is to use an implementation of the '''DSSP algorithm''', consider that you can find little (negligible) differences compared to the original algorithm but it is the most accurate way to calculate the secondary structure.
+
  
= Lobo =
+
When using the '''online service''' set the "''Formatting options''" specifying "''Show -> Alignment as -> Plain text''" and "''Alignment View -> Flat query-anchored with letters for identities''".
  
 +
Instead, if you prefer to generate the input using the '''command line tool''' remember to use "''-outfmt 4''" ("6" in older versions of Blast, see [[Features]]). In our case the commands are:
 +
 +
psiblast -num_iterations 3 -db /db/blastdb/nr90 -query 2anl_A.fasta -out 2anl_A.psi -outfmt 4
 +
 +
psiblast -num_iterations 3 -db /db/blastdb/nr90 -query 1dp5_A.fasta -out 1dp5_A.psi -outfmt 4
  
How Do I …?
+
The output files ''2anl_A.psi'' and ''1dp5_A.psi'' are provided in the '''samples''' folder.
Loop Modeling
+
  
  
Loop Modeling
+
Then to generate the alignment simply run:
  Based on Lobo algorithm and the lookup tables. All the samples used are in the samples folder, all the generated data is in the data folder.
+
  
How to create a lookup table
+
  subali --in pair.fasta --pro1 2anl_A.psi --pro2 1dp5_A.psi
How to create a lookup table for a fragment of length n
+
How to see the content of a lookup table
+
How to find the starting and ending position of a loop
+
How to model a loop
+
How to obtain a pdb`s torsion angles
+
How to Clustering data
+
How to generate clustered lookup tables
+
How to generate lookup tables using Ramachandran`s clustered data
+
How to analize the backbone geometry of a PDB
+
  
  
 +
[[File:Profile_align.png|700px]]
  
 +
=Evaluate 3D models=
  
 +
Based on the alignment created in the previous section we can easily model the target. In our case, for simplicity, we used the [http://swissmodel.expasy.org/ SwissModel] online service. In the '''sample''' folder you can find two files:
  
 +
*'''model_default.pdb''' - The model obtained from the default sequence-to-sequence alignment.
 +
*'''model_profile.pdb''' - The model obtained from the profile-to-profile alignment.
  
  
 +
[[File:Model_default.png|200px|left]] [[File:Model_profile.png|200px|rigth]]
  
 +
By using the following commands for the two models:
  
How to create a lookup table
+
frst -v -i model_default.pdb
LoboLUT is a perl script used to create a lookup table of a specific length. This table contains the posible angles for the loop creation, this table is used each time a loop is going to be modeled. But is generated only once.
+
To create a lookup table for a fragment of an N lenght
+
N=2
+
        ./loboLUT -A 1 -B 1 -O aa2.lt --table <destination path>
+
N=3
+
        ./loboLUT -A aa2.lt -B 1 -O aa3.lt --table <destination path>
+
N=4
+
        ./loboLUT -A ../data/aa2.lt -B ../data/aa2.lt -O aa4.lt --table <destination path>
+
  
Is recomended to use as a destination path the data folder inside victor library
+
frst -v -i model_profile.pdb
  
  
 +
We obtain the following output (last line):
  
How to create a lookup table for a fragment of length n
+
model_default.pdb -29822.6749 -6266.6390 -18.1340 -223.0000 -46.3974
LoboLUT_all is a perl script used to create all the lookup tables needed. For the modeling of a fragment of lenght N. The algorithm to create the tables, is based on some of the previous created tables. It always considers the half of the length and the half of it until arriving to the 2 or 3 length with are the based tables.
+
  To create the Lookup tables for a fragment of 5 you could use the following line
+
./loboLUT_all -c 5
+
this will create the lookup table for 2, 3 and 5, that will be the needed ones. Remember that the Lobo algorithm divides in two the lenght of the fragment thats why the aa2.lt and aa3.lt should also be created.  
+
  
Also you can create a lookup table of a specific lenght of
+
model_profile.pdb -1549.1603 -3196.3570   -1.1504 -236.0000 -13.6659
N=2
+
        ./loboLUT -A 1 -B 1 -O aa2.lt --table <destination path>
+
N=3
+
        ./loboLUT -A aa2.lt -B 1 -O aa3.lt --table <destination path>
+
N=4
+
        ./loboLUT -A ../data/aa2.lt -B ../data/aa2.lt -O aa4.lt --table <destination path>
+
  
Is recomended to use as a destination path the data folder inside victor library
 
  
 +
Where numbers represent the following energies:
  
How to see the content of a lookup table
+
  FRST | RAPDF | Solvation | Hydrogen | Torsion
the lookUp table is created an a not plain text file, this is why a diferent application is needed to see the content of the table. LoopTablePlot is a c++ program that is used to do this, remember that this table file is create by loboLUT_all / loboLUT .
+
To see the lookup table aa5.lt (created previously), in this example s option allows to define the size for the output
+
./LoopTablePlot -i ../data/aa5.lt  -o PLotoutput -s l
+
The output created in the  Plotoutput file contains the list of possible loop angles.  
+
  
  
How to find the starting and ending position of a loop
+
For comparison, the experimental structure of the target obtains the following energies:
CreateLoopTestset is a c++ program that finds the starting and ending positions in a PDB file or in many PDB files. Its output could be used to model the loop with LoopModelTest application .
+
To obtain the list of starting and ending points for the files 119L 16PK
+
./createLoopTestset -o listLoops -i ../samples/filelist
+
  
Content in filelist file
+
2ANL.pdb (Target) -26691.5315 -8822.3390 -23.3529 -224.0000 -11.8836
  ../samples/119L
+
  ../samples/16PK
+
  
the output will be printed and will be like
 
index1 (-s): 7 index2 (-e) 14
 
index1 (-s): 48 index2 (-e) 52
 
index1 (-s): 86 index2 (-e) 89
 
index1 (-s): 99 index2 (-e) 104
 
….........
 
where the -s is the starting position and the -e is the ending position
 
if many pdbs are evaluated, the application will show all the loops for the first pdb listed and then all the loops for the following ones.
 
  
 +
According to these results the profile alignment is worse than the default alignment. Moreover the model generated from the default alignment appears to be more stable of the native structure of the Target protein (PDB id 2ANL), one explanation could be that SwissModel favours stability when generating structures. The general idea is that with Victor you can easily generate different alignments (changing algorithms and/or parameters) and you can effectively test them by evaluating the quality of the 3D models built from these alignments.
  
 +
For an extensive discussion about these methods visit the [[References]] page.
  
How to model a loop
+
=Build loops=
LoopModelTest is a c++ program that allows the creation of multiple possible loops and creates a pdb file for each of them .
+
 
This program needs as input the pdb and the start and end position to set the loop  
+
In the last section we will show you how to build a loop. In this example we take the 3DFR and try to model the loop of 4 residues from the position 89 to 93.
To create the loop from a start position X to an end position Y of the chain A of an specific pdb file
+
 
./LoopModelTest -i ../samples/ZZZZ.pdb -c A -s X -e Y
+
The first step is to generate a LUT (see [[Features]]) of size 4:
Using the information obtained with the app CreateLoopTestset 
+
 
./LoopModelTest -i ../samples/119L.pdb -c A -s 7 -e 14
+
loboLUT_all -a 4
Remember to create the lookup table for a 7 length fragment using    ./loboLUT_all -c 7
+
 
 +
After that you should find in the '''data''' folder of the Victor package the following files: '''aa2.lt, aa3.lt, aa4.lt'''.
 +
 
 +
Now to model the loop simply do:
 
   
 
   
The new pdbs files fill be created in the working path, and in the printed output will be shown the global RMS, end RMS, bond lenght, bond angle and torsion angle
+
lobo -i 3DFR.pdb -c A -s 89 -e 93
  
Printed output
 
Results:      1.35    121    180
 
  0  global RMS=  0.416  ( 0.366) end-RMS=  0.234     1.17    126    175
 
  1  global RMS=  0.356  ( 0.295) end-RMS= 0.0822     1.38    121    -176
 
…....
 
  
How to obtain a PDB`s torsion angles
+
N.B. To save disk space the "-c" option of '''loboLUT_all''' can be used to create only the necessary LUTs in a given range:
Loop2torsion is a c++ program that allows to obtain all the phi and psi angles of all the amino acids in a selected  PDB chain .
+
  
To obtain the angles a PDB file is needed as input and also the chain should be specified
+
loboLUT_all -c 10
  
    ./loop2torsion -i ../samples/2R8O.pdb -c A 
+
will generate only aa2, aa3, aa5, aa10.
The printed output is the list of the angles and the Bfactor of 1.
+
  -72.1    157    1.0
+
    -165    142    1.0
+
    122    -172    1.0
+
    -126    98.1    1.0
+
  …....
+
  
 +
=Create a new project=
 +
To make your own project you need a source file and a '''make''' file. It follows a simple program for loading in memory a PDB file and the necessary makefile.
  
  
How to Clustering data
+
<syntaxhighlight line lang="cpp">
Using the tor file created in Energy package, ClusterRama, a c++ program clusters the data contained in a Ramachandran distribution file
+
 
To obtain the clustered data using a cutoff value of 100 
+
  #include <PdbLoader.h>
    ./ClusterRama -i ../data/tor.par -o outRama -c 100.0
+
  #include <Protein.h>
 +
  #include <iostream>
  
The output contains the number of the values found the angles values and the corresponding residue
+
   using namespace Victor::Biopool;
12
+
   using namespace Victor;
-55.07    -44.61   GLY
+
   76.11    -172.4  GLY
+
-139.2      129  GLY
+
…...
+
  
How to generate clustered lookup tables
+
  int main( int argc, char* argv[] ) {
Based in the clustered data the LoopTableTest c++ program generates tables of protein entries for the Lobo algorithm .
+
    ./LoopTableTest -A 1 -B 1 -O output.lt -R outRama -S s
+
To create the Ramachandran input file that contains the clustered data use ClusterRama application.
+
The output created is not a plan text file, use the  LoopTablePlot application
+
The printed output, includes the corresponding angle values (see figure)
+
Min:
+
EP: -4.126 ED: -1.281 N: -0.9997 MP: -1.582 MD: -0.4919 MN: -0.9949
+
EP:  2.6 ED: -1.332 N:    -1 MP: 1.521 MD: 0.4671 MN: -0.8217
+
EP: -3.966 ED: -1.289 N: -0.9836 MP: -1.598 MD: -0.7378 MN: -0.5885
+
Max:
+
EP: 3.437 ED: 1.022 N: 0.6597 MP: 0.9131 MD: 0.5203 MN: 0.8068
+
EP: 4.856 ED: 0.1761 N: 0.6105 MP: 2.486 MD: 0.9987 MN: 0.6888
+
EP: 3.592 ED:  1.27 N: 0.9813 MP: 1.307 MD: 0.8342 MN: 0.7185
+
----------------------------
+
Entry    0 EP: -2.737 ED: -0.01248 N: -0.02252 MP: -0.8014 MD: 0.2146 MN: 0.6219
+
EP: 2.699 ED: -1.172 N: 0.5104 MP: 1.879 MD: 0.921 MN: -0.3856
+
EP: 1.984 ED: -0.6955 N: -0.8596 MP: 1.022 MD: 0.3252 MN: 0.6816
+
  
 +
    string inputFile = "MyPdbFile.pdb";
 +
    ifstream inFile( inputFile.c_str() );
 +
    PdbLoader pl(inFile);    // creates the PdbLoader object
  
 +
    Protein prot;           
 +
    prot.load( pl );        // creates the Protein object
 +
  }
 +
</syntaxhighlight>
  
How to generate lookup tables using Ramachandran`s clustered data
 
Based on a lookup table already created with LoboLUT/loboLUT_all and defining a cutoff value. The ClusterLoopTable program allows you to create the new clustered lookuptable.
 
In this example, a cutoff of 10 is set, and it uses the lookup table for a length of 5.
 
    ./ClusterLoopTable -I ../data/aa5.lt -O ../data/aa5clustered.lt -C 10.0
 
The created output is not a plain text file, to see the content use the LoopTablePlot application
 
  
 +
To generate the corresponding executable you can use the following '''make''' file.
  
How to analyze the backbone  geometry of a PDB
 
BackboneAnalyzer is an application that allows to analyze a PDB file in terms of bond lengths and bond angles .
 
As input it uses the PDB file and the chain to evaluate
 
      ./backboneAnalyzer -i ../samples/2R8O.pdb -c A
 
  
The printed output includes the minimum, maximum, average bonds lengths and angles and the corresponding standard deviations.
+
<syntaxhighlight line lang="cpp">
-------------------------------------------------------  
+
 
      Bond Lengths Bond Angles
+
#--*- makefile -*--------------------------------------------------------------
Num N->CA CA->C' C'->N N->CA CA->C' C'->N
+
#
-------------------------------------------------------  
+
#  Standard makefile
Min: 1.4450  1.5019             1.3206 116.87             104.83 112.55
+
#
Max: 1.4804             1.5479             4.0701 158.03             118.34 158.56
+
#------------------------------------------------------------------------------
-------------------------------------------------------  
+
 
Avg: 1.4636 1.5272 1.3505 121.58 111.71 116.73
+
# Path to project directory
SD: 0.0054 0.0067 0.2074   2.45   2.16 1.98
+
UPDIR = /home/Victor/
 +
# Path to subdirectories
 +
SUBDIR =
 +
# Path to directory for binaries
 +
BINPATH = /home/Victor/bin
 +
 
 +
#
 +
# Libraries and paths
 +
#
 +
 
 +
LIBS = -lBiopool -ltools
 +
 
 +
LIB_PATH = -L.  -L/home/Victor/lib/
 +
 
 +
INC_PATH +=    -I. -I/home/Victor/tools/ -I/home/Victor/Biopool/Sources/         
 +
 
 +
#
 +
# Options
 +
#
 +
 
 +
CC=g++
 +
CFLAGS=-I.  -ansi -pedantic -DNEXCEPTIONS -DLINUX -c -O3 -ffast-math -DNDEBUG -ftemplate-depth-36 -Wno-reorder  -Wno-uninitialized -Wno-write- strings -Wno-narrowing
 +
 
 +
#
 +
# Install rule
 +
#
 +
 
 +
install:
 +
$(CC)  $(CFLAGS)  $(INC_PATH) -c test.cc -o test.
 +
$(CC)  test.o -o test $(LIB_PATH) $(LIBS)
 +
</syntaxhighlight>
 +
 
  
= Energy =
+
Notice that in this example only  Biopool and tools modules are used.

Latest revision as of 16:09, 11 November 2014

In the sample folder are available all input and output files used in this tutorial.
Consider also to visit the Features page for further examples.

Target/Template alignment

Supposing you have already found a template candidate, you need to align it against your target sequence. In this dummy example we take the sequences of two homologous proteins both endowed with 3D structure. That allows us to compare different type of Victor alignments with the "exact" one derived from the structural alignment.

The two proteins are:

  • Target = 2ANL (chain A)
  • Template = 1DP5 (chain A)

The two structure superimpose quite well (RMSD 2.03 A) considering the low level of sequence identity (28.06%). This is the resulting sequence alignment after the 3D alignment done by FATCAT:

3d align.png

Alignment cartoon.png

rigth


The subali application let you choose from very different type of algorithms, strategies and parameters. The fist step is to create a file (i.e. pair.fasta, already available in the sample folder) including both the target and template Fasta sequences together like that:

>2ANL:A Target
SENDVIELDDVANLMFYGEGEVGDNHQKFMLIFDTGSANLWVPSKKCNSIGCSTKHLYDSSKSKSYEKDGTKVEITYGSG
TVRGFFSKDLVTLGYLSLPYKFIEVTDTDDLEPLYTAAEFDGILGLGWKDLSIGSIDPIVVELKNQNKIDQALFTFYLPV
HDKHSGYLTIGGIEEKFYEGELTYEKLNHDLFWQVDLDVNFGKTSMEKANVIVDSGTSTITAPTSFINKFFKDLNVIKVP
FLPFYITTCNNKDMPTLEFKSANNTYTLEPEYYMEPLLDIDDTLCMLYILPVDIDKNTFILGDPFMRKYFTVFDYDKESI
GFAVAKN
>1DP5:A Template
GGHDVPLTNYLNAQYYTDITLGTPPQNFKVILDTGSSNLWVPSNECGSLACFLHSKYDHEASSSYKANGTEFAIQYGTGS
LEGYISQDTLSIGDLTIPKQDFAEATSEPGLTFAFGKFDGILGLGYDTISVDKVVPPFYNAIQQDLLDEKRFAFYLGDTS
KDTENGGEATFGGIDESKFKGDITWLPVRRKAYWEVKFEGIGLGDEYAELESHGAAIDTGTSLITLPSGLAEMINAEIGA
KKGWTGQYTLDCNTRDNLPDLIFNFNGYNFTIGPYDYTLEVSGSCISAITPMDFPEPVGPLAIVGDAFLRKYYSIYDLGN
NAVGLAKAI


Sequence to sequence alignment

Supposing we call the input file with the target and template sequences pair.fasta than by running the following command you obtain a basic alignment with the default parameters (see Features):

subali --in pair.fasta

The resulting alignment is this:

Default align.png


Profile to profile alignment

Most of the time including evolutionary information helps improving the alignment quality. In this example we used PsiBlast to calculate profiles both for the target and the template sequences. The PsiBlast tool is available at:


The profiles have to be generated in a specific format.

When using the online service set the "Formatting options" specifying "Show -> Alignment as -> Plain text" and "Alignment View -> Flat query-anchored with letters for identities".

Instead, if you prefer to generate the input using the command line tool remember to use "-outfmt 4" ("6" in older versions of Blast, see Features). In our case the commands are:

psiblast -num_iterations 3 -db /db/blastdb/nr90 -query 2anl_A.fasta -out 2anl_A.psi -outfmt 4

psiblast -num_iterations 3 -db /db/blastdb/nr90 -query 1dp5_A.fasta -out 1dp5_A.psi -outfmt 4

The output files 2anl_A.psi and 1dp5_A.psi are provided in the samples folder.


Then to generate the alignment simply run:

subali --in pair.fasta --pro1 2anl_A.psi --pro2 1dp5_A.psi


Profile align.png

Evaluate 3D models

Based on the alignment created in the previous section we can easily model the target. In our case, for simplicity, we used the SwissModel online service. In the sample folder you can find two files:

  • model_default.pdb - The model obtained from the default sequence-to-sequence alignment.
  • model_profile.pdb - The model obtained from the profile-to-profile alignment.


Model default.png
rigth

By using the following commands for the two models:

frst -v -i model_default.pdb
frst -v -i model_profile.pdb


We obtain the following output (last line):

model_default.pdb	-29822.6749	-6266.6390	 -18.1340	-223.0000	 -46.3974
model_profile.pdb	-1549.1603	-3196.3570	  -1.1504	-236.0000	 -13.6659


Where numbers represent the following energies:

FRST | RAPDF | Solvation | Hydrogen | Torsion


For comparison, the experimental structure of the target obtains the following energies:

2ANL.pdb (Target)	-26691.5315	-8822.3390	 -23.3529	-224.0000	 -11.8836


According to these results the profile alignment is worse than the default alignment. Moreover the model generated from the default alignment appears to be more stable of the native structure of the Target protein (PDB id 2ANL), one explanation could be that SwissModel favours stability when generating structures. The general idea is that with Victor you can easily generate different alignments (changing algorithms and/or parameters) and you can effectively test them by evaluating the quality of the 3D models built from these alignments.

For an extensive discussion about these methods visit the References page.

Build loops

In the last section we will show you how to build a loop. In this example we take the 3DFR and try to model the loop of 4 residues from the position 89 to 93.

The first step is to generate a LUT (see Features) of size 4:

loboLUT_all -a 4

After that you should find in the data folder of the Victor package the following files: aa2.lt, aa3.lt, aa4.lt.

Now to model the loop simply do:

lobo -i 3DFR.pdb -c A -s 89 -e 93


N.B. To save disk space the "-c" option of loboLUT_all can be used to create only the necessary LUTs in a given range:

loboLUT_all -c 10

will generate only aa2, aa3, aa5, aa10.

Create a new project

To make your own project you need a source file and a make file. It follows a simple program for loading in memory a PDB file and the necessary makefile.


  1.  
  2.   #include <PdbLoader.h>
  3.   #include <Protein.h>
  4.   #include <iostream>
  5.  
  6.   using namespace Victor::Biopool;
  7.   using namespace Victor; 
  8.  
  9.   int main( int argc, char* argv[] ) {
  10.  
  11.      string inputFile = "MyPdbFile.pdb";
  12.      ifstream inFile( inputFile.c_str() );
  13.      PdbLoader pl(inFile);    // creates the PdbLoader object
  14.  
  15.      Protein prot;            
  16.      prot.load( pl );         // creates the Protein object
  17.   }


To generate the corresponding executable you can use the following make file.


  1.  #--*- makefile -*--------------------------------------------------------------
  2.  #
  3.  #   Standard makefile
  4.  #
  5.  #------------------------------------------------------------------------------
  6.  
  7.  # Path to project directory
  8.  UPDIR = /home/Victor/
  9.  # Path to subdirectories
  10.  SUBDIR =
  11.  # Path to directory for binaries
  12.  BINPATH = /home/Victor/bin
  13.  
  14.  #
  15.  # Libraries and paths 
  16.  #
  17.  
  18.  LIBS = -lBiopool -ltools
  19.  
  20.  LIB_PATH = -L.  -L/home/Victor/lib/
  21.  
  22.  INC_PATH +=    -I. -I/home/Victor/tools/ -I/home/Victor/Biopool/Sources/          
  23.  
  24.  #
  25.  # Options
  26.  #
  27.  
  28.  CC=g++
  29.  CFLAGS=-I.  -ansi -pedantic -DNEXCEPTIONS -DLINUX -c -O3 -ffast-math -DNDEBUG -ftemplate-depth-36 -Wno-reorder  -Wno-uninitialized -Wno-write- strings -Wno-narrowing 
  30.  
  31.  #
  32.  # Install rule
  33.  #
  34.  
  35.  install:  
  36. 	$(CC)   $(CFLAGS)   $(INC_PATH) -c test.cc -o test.o  
  37. 	$(CC)   test.o -o test $(LIB_PATH) $(LIBS)


Notice that in this example only Biopool and tools modules are used.