lDDT

Where can I find the lDDT executable?

The lDDT executable can be found at <YOUR-OST-STAGE-DIR>/bin/

Basic Usage

To calculate the lDDT for one PDB file (mdl1.pdb) against the reference structure stored in ref.pdb, use the following command; the local and global lDDT scores for each model are printed to the terminal:

lddt mdl1.pdb ref.pdb

Similarly it is possible to calculate the lDDT for a list of PDB files:

lddt mdl1.pdb mdl2.pdb mdl3.pdb ref.pdb

Or for multiple reference structures at the same time (please find at the bottom of the page an example of usage):

lddt mdl1.pdb ref1.pdb,ref2.pdb,ref3.pdb

All Options

The lddt executable supports several other command line options, please find them following:

lddt [options] <mod1> [mod1 [mod2]] <re1>[,ref2,ref3]

-s         selection performed on ref
-c         use Calphas only
-f         perform structural checks and filter input data
-t         fault tolerant parsing
-p <file>  use specified parmeter file. Mandatory
-v <level> verbosity level (0=results only,1=problems reported, 2=full report)
-b <value> tolerance in stddevs for bonds
-a <value> tolerance in stddevs for angles
-r <value> distance inclusion radius
-i <value> sequence separation
-e         print version
-x         ignore residue name consistency checks

lDDT - Use cases

Model Quality Checks

When the lddt executable is called with the -f option, the program performs some stereo-chemical and steric clashing checks before computing the lDDT scores. When using this option, the user must also provide a text file containing average bond lengths,angle widths and minimum clashing distances. lddt ships with a default parameter file based on Engh and Huber parameters, and on the atomic radii as defined in the Cambridge Structural Database. This file is human readable and can be modified with a text editor. The location of the file must be passed to the lddt executable using the -p parameter.

For example:

lddt -f -p stereo_chemical_params.txt mdl1.pdb ref.pdb

When the model quality checks are performed, the global and local lDDT scores are preceded in the output text by some information on the outcome of the tests. The number of serious stereo-chemical violations and steric-clashes in the structure is reported, along with some statistics on the global model quality. The local and global lDDT scores are also adjusted according to the outcome of the tests. When stereochemical violations or steric clashes happen in the side-chain of a residue, all distances involving atoms of that side-chain are automatically considered non-conserved. When the violations involve backbone atoms of a residue, all distances containing atoms of the residue are considered non-conserved.

Custom Inclusion Radius

The lDDT score evaluates distances between atoms lying closer than a predermined inclusion radius. By default the radius is set to 15 Angstroms, but the user can override this value by passing a new one to the lddt executable through the -r parameter (in Angstroms):

For example:

lddt -r 10.0 mdl1.pdb ref.pdb

Consistency Checks

When comparing structures, the lddt executable does not perform any chain name checks. It only processes the first chain in each structure, irrespective of the name. It does, however, perform a check on residue names, to make sure that the structures are correctly aligned. The lddt executable will stop with an error if the names of the residues being compared do not match. If the user needs for specific reasons to override this behavior and skip the check, the lddt executable can be called using the -x option. For example:

For example:

lddt -x mdl1.pdb ref.pdb

Custom Quality Parameters

The lddt executable uses several thresholds to determine how serious stereo- chemical violations and steric clashes are. For Bonds and Angles, the parameter file contains typical average lengths and widths, together with expected standard deviations for their measurements in protein structures. A violation is flagged as serious by lDDT when the measured value deviates from the expected one by more than a predefined number of standard deviations. By default this value is 12, but the user can override the default tolerance thresholds using the -b and -a flags, for bonds and angles respectively.

For steric clashes, the lddt executable recovers atomic radii and clashing tolerance distances from the parameter file, depending on the atomic element under investigation.

For example:

lddt -f -p stereo_chemical_params.txt -b 8 -a 8 mdl1.pdb ref.pdb

Multiple Reference Structures

lDDT allows the use of multiple reference structures at the same time (please see the manuscript referenced above for details). In order to use multiple references, simply add them to the first ref.pdb file, separated by a comma.

For example:

lddt mdl1.pdb ref1.pdb,ref2.pdb,ref3.pdb

Output Verbosity

By default the lddt executable only outputs the values of the global and local scores. However, users can tweak the verbosity of the output using the -v parameters. The devault verbosity level is 0 (scores only). Other available levels are: 1 (print information about non conserved distances and failed quality checks, if performed) and 2 (print information on all distances and all quality checks if performed)

For example:

lddt -v 1 -f -p stereo_chemical_params.txt mdl1.pdb ref.pdb

WARNING: Verbosity levels 1 and 2 can generate a large amount of output text, especially with large structures and multiple models being evaluated.

lDDT Python API

One can replicate the binary using simple python script:

#! /bin/env python
"""Run lDDT from within script."""
from ost.io import LoadPDB
from ost.mol.alg import (CleanlDDTReferences,
                         PreparelDDTGlobalRDMap,
                         lDDTSettings,
                         CheckStructure,
                         LocalDistDiffTest,
                         GetlDDTPerResidueStats,
                         PrintlDDTPerResidueStats,
                         ResidueNamesMatch)
from ost.io import ReadStereoChemicalPropsFile

model_path = "Path to your model pdb file"
reference_path = "Path to your reference pdb file"
structural_checks = True
bond_tolerance = 12
angle_tolerance = 12
cutoffs = [0.5, 1.0, 2.0, 4.0]
#
# Load model and prepare its view
model = LoadPDB(model_path)
model_view = model.GetChainList()[0].Select("peptide=true")
#
# Prepare references - it should be alist of EntityView(s)
references = [LoadPDB(reference_path).CreateFullView()]
#
# Initialize settings with default parameters and print them
settings = lDDTSettings()
settings.PrintParameters()

#
# Clean up references
CleanlDDTReferences(references)
#
# Prepare residue map from references
rdmap = PreparelDDTGlobalRDMap(references,
                               cutoffs=cutoffs,
                               sequence_separation=settings.sequence_separation,
                               radius=settings.radius)
#
# This part is optional and it depends on our settings parameter
if structural_checks:
    stereochemical_parameters = ReadStereoChemicalPropsFile()
    CheckStructure(ent=model_view,
                   bond_table=stereochemical_parameters.bond_table,
                   angle_table=stereochemical_parameters.angle_table,
                   nonbonded_table=stereochemical_parameters.nonbonded_table,
                   bond_tolerance=bond_tolerance,
                   angle_tolerance=angle_tolerance)
#
# Check consistency
is_cons = ResidueNamesMatch(model_view, references[0], True)
print("Consistency check: ", "OK" if is_cons else "ERROR")
#
# Calculate lDDT
LocalDistDiffTest(model_view,
                  references,
                  rdmap,
                  settings)
#
# Get the local scores
local_scores = GetlDDTPerResidueStats(model_view,
                                      rdmap,
                                      structural_checks,
                                      settings.label)
#
# Pring local scores
PrintlDDTPerResidueStats(local_scores, structural_checks, len(cutoffs))

Similar effect could be obtained using lDDTScorer. See lDDTScorer for a simple example.

The Python API can be useful when we already have an models and references already read in the memory and we do not want run the binary. Please refere to specific function documentation for more details.