diff --git a/modules/mol/alg/pymod/ligand_scoring.py b/modules/mol/alg/pymod/ligand_scoring.py index e40fa9e16c3df6412448bc82ed0a91a2531d020e..f008437be482a8fdf4886ae6fba57d0eb53f5985 100644 --- a/modules/mol/alg/pymod/ligand_scoring.py +++ b/modules/mol/alg/pymod/ligand_scoring.py @@ -111,11 +111,15 @@ class LigandScorer: :type lddt_pli_radius: :class:`float` :param lddt_bs_radius: lDDT inclusion radius for lDDT-BS. :type lddt_bs_radius: :class:`float` + :param binding_sites_topn: maximum number of target binding site + representations to assess, per target ligand. + :type binding_sites_topn: :class:`int` """ def __init__(self, model, target, model_ligands=None, target_ligands=None, resnum_alignments=False, check_resnames=True, chain_mapper=None, substructure_match=False, - radius=4.0, lddt_pli_radius=6.0, lddt_bs_radius=10.0): + radius=4.0, lddt_pli_radius=6.0, lddt_bs_radius=10.0, + binding_sites_topn=100000): if isinstance(model, mol.EntityView): self.model = mol.CreateEntityFromView(model, False) @@ -154,6 +158,7 @@ class LigandScorer: self.radius = radius self.lddt_pli_radius = lddt_pli_radius self.lddt_bs_radius = lddt_bs_radius + self.binding_sites_topn = binding_sites_topn # scoring matrices self._rmsd_matrix = None @@ -295,7 +300,7 @@ class LigandScorer: new_editor.UpdateICS() return extracted_ligands - def _get_binding_sites(self, ligand, topn=100000): + def _get_binding_sites(self, ligand): """Find representations of the binding site of *ligand* in the model. Ignore other ligands and waters that may be in proximity. @@ -332,7 +337,7 @@ class LigandScorer: # Find the representations self._binding_sites[ligand.hash_code] = self.chain_mapper.GetRepr( ref_bs, self.model, inclusion_radius=self.lddt_bs_radius, - topn=topn) + topn=self.binding_sites_topn) return self._binding_sites[ligand.hash_code] @staticmethod