OpenStructure
Public Member Functions | Data Fields
LDDTPLIScorer Class Reference

Inherits LigandScorer.

Public Member Functions

def __init__ (self, model, target, model_ligands=None, target_ligands=None, resnum_alignments=False, rename_ligand_chain=False, substructure_match=False, coverage_delta=0.2, max_symmetries=1e5, lddt_pli_radius=6.0, add_mdl_contacts=False, lddt_pli_thresholds=[0.5, 1.0, 2.0, 4.0], lddt_pli_binding_site_radius=None)
 
- Public Member Functions inherited from LigandScorer
def __init__ (self, model, target, model_ligands=None, target_ligands=None, resnum_alignments=False, rename_ligand_chain=False, substructure_match=False, coverage_delta=0.2, max_symmetries=1e5)
 
def state_matrix (self)
 
def model_ligand_states (self)
 
def target_ligand_states (self)
 
def score_matrix (self)
 
def coverage_matrix (self)
 
def aux_matrix (self)
 
def assignment (self)
 
def score (self)
 
def aux (self)
 
def unassigned_target_ligands (self)
 
def unassigned_model_ligands (self)
 
def get_target_ligand_state_report (self, trg_lig_idx)
 
def get_model_ligand_state_report (self, mdl_lig_idx)
 
def guess_target_ligand_unassigned_reason (self, trg_lig_idx)
 
def guess_model_ligand_unassigned_reason (self, mdl_lig_idx)
 
def unassigned_model_ligands_reasons (self)
 
def unassigned_target_ligands_reasons (self)
 

Data Fields

 lddt_pli_radius
 
 add_mdl_contacts
 
 lddt_pli_thresholds
 
 lddt_pli_binding_site_radius
 
- Data Fields inherited from LigandScorer
 model
 
 target
 
 target_ligands
 
 model_ligands
 
 resnum_alignments
 
 rename_ligand_chain
 
 substructure_match
 
 coverage_delta
 
 max_symmetries
 
 state_decoding
 

Detailed Description

 :class:`LigandScorer` implementing lDDT-PLI.

lDDT-PLI is an lDDT score considering contacts between ligand and
receptor. Where receptor consists of protein and nucleic acid chains that
pass the criteria for :class:`chain mapping <ost.mol.alg.chain_mapping>`.
This means ignoring other ligands, waters, short polymers as well as any
incorrectly connected chains that may be in proximity.

:class:`LDDTPLIScorer` computes a score for a specific pair of target/model
ligands. Given a target/model ligand pair, all possible mappings of
model chains onto their chemically equivalent target chains are enumerated.
For each of these enumerations, all possible symmetries, i.e. atom-atom
assignments of the ligand as given by :class:`LigandScorer`, are evaluated
and an lDDT-PLI score is computed. The best possible lDDT-PLI score is
returned.

By default, classic lDDT is computed. That means, contacts within
*lddt_pli_radius* are identified in the target and checked if they're
conserved in the model. Added contacts are not penalized. That means if
the ligand is nicely placed in the correct pocket, but that pocket now
suddenly interacts with MORE residues in the model, you still get a high
score. You can penalize for these added contacts with the
*add_mdl_contacts* flag. This additionally considers contacts within
*lddt_pli_radius* in the model but only if the involved atoms can
be mapped to the target. This is a requirement to 1) extract the respective
reference distance from the target 2) avoid usage of contacts for which
we have no experimental evidence. One special case are
contacts from chains that are NOT mapped to the target binding site. It is
very well possible that we have experimental evidence for this chain though
its just too far away from the target binding site.
We therefore try to map these contacts to the chain in the target with
equivalent sequence that is closest to the target binding site. If the
respective atoms can be mapped there, the contact is considered not
fulfilled and added as penalty.

Populates :attr:`LigandScorer.aux_data` with following :class:`dict` keys:

* lddt_pli: The score
* lddt_pli_n_contacts: Number of contacts considered in lDDT computation
* target_ligand: The actual target ligand for which the score was computed
* model_ligand: The actual model ligand for which the score was computed
* bs_ref_res: :class:`set` of residues with potentially non-zero
  contribution to score. That is every residue with at least one
  atom within *lddt_pli_radius* + max(*lddt_pli_thresholds*) of
  the ligand.
* bs_mdl_res: Same for model

:param model: Passed to parent constructor - see :class:`LigandScorer`.
:type model: :class:`ost.mol.EntityHandle`/:class:`ost.mol.EntityView`
:param target: Passed to parent constructor - see :class:`LigandScorer`.
:type target: :class:`ost.mol.EntityHandle`/:class:`ost.mol.EntityView`
:param model_ligands: Passed to parent constructor - see
                      :class:`LigandScorer`.
:type model_ligands: :class:`list`
:param target_ligands: Passed to parent constructor - see
                       :class:`LigandScorer`.
:type target_ligands: :class:`list`
:param resnum_alignments: Passed to parent constructor - see
                          :class:`LigandScorer`.
:type resnum_alignments: :class:`bool`
:param rename_ligand_chain: Passed to parent constructor - see
                            :class:`LigandScorer`.
:type rename_ligand_chain: :class:`bool`
:param substructure_match: Passed to parent constructor - see
                           :class:`LigandScorer`.
:type substructure_match: :class:`bool`
:param coverage_delta: Passed to parent constructor - see
                       :class:`LigandScorer`.
:type coverage_delta: :class:`float`
:param max_symmetries: Passed to parent constructor - see
                       :class:`LigandScorer`.
:type max_symmetries: :class:`int`
:param lddt_pli_radius: lDDT inclusion radius for lDDT-PLI.
:type lddt_pli_radius: :class:`float`
:param add_mdl_contacts: Whether to add mdl contacts.
:type add_mdl_contacts: :class:`bool`
:param lddt_pli_thresholds: Distance difference thresholds for lDDT.
:type lddt_pli_thresholds: :class:`list` of :class:`float`
:param lddt_pli_binding_site_radius: Pro param - dont use. Providing a value
                                     Restores behaviour from previous
                                     implementation that first extracted a
                                     binding site with strict distance
                                     threshold and computed lDDT-PLI only on
                                     those target residues whereas the
                                     current implementation includes every
                                     atom within *lddt_pli_radius*.
:type lddt_pli_binding_site_radius: :class:`float`

Definition at line 12 of file ligand_scoring_lddtpli.py.

Constructor & Destructor Documentation

◆ __init__()

def __init__ (   self,
  model,
  target,
  model_ligands = None,
  target_ligands = None,
  resnum_alignments = False,
  rename_ligand_chain = False,
  substructure_match = False,
  coverage_delta = 0.2,
  max_symmetries = 1e5,
  lddt_pli_radius = 6.0,
  add_mdl_contacts = False,
  lddt_pli_thresholds = [0.5, 1.0, 2.0, 4.0],
  lddt_pli_binding_site_radius = None 
)

Definition at line 102 of file ligand_scoring_lddtpli.py.

Field Documentation

◆ add_mdl_contacts

add_mdl_contacts

Definition at line 119 of file ligand_scoring_lddtpli.py.

◆ lddt_pli_binding_site_radius

lddt_pli_binding_site_radius

Definition at line 121 of file ligand_scoring_lddtpli.py.

◆ lddt_pli_radius

lddt_pli_radius

Definition at line 118 of file ligand_scoring_lddtpli.py.

◆ lddt_pli_thresholds

lddt_pli_thresholds

Definition at line 120 of file ligand_scoring_lddtpli.py.


The documentation for this class was generated from the following file: