diff --git a/modules/mol/alg/pymod/ligand_scoring_base.py b/modules/mol/alg/pymod/ligand_scoring_base.py index 60a2b3bb38e323f59bf77fc3c6600ffb28422b71..8d3882c0e02292e903ebf78026aca874e3214961 100644 --- a/modules/mol/alg/pymod/ligand_scoring_base.py +++ b/modules/mol/alg/pymod/ligand_scoring_base.py @@ -40,6 +40,22 @@ class LigandScorer: with a delta of 0.2, a low-score match with coverage 0.96 would be preferred over a high-score match with coverage 0.70. + All versus all scores are available through the lazily computed + :attr:`score_matrix`. However, many things can go wrong... be it even + something as simple as two ligands not matching. Error states therefore + encode scoring issues. Issues with a particular ligand are indicated by a + non-zero state in :attr:`model_ligand_states`/:attr:`target_ligand_states`. + This invalidates pairwise scores of such a ligand with all other ligands. + This and other issues in pairwise score computation are reported in + :attr:`state_matrix` which has the same size as :attr:`score_matrix`. + Only if the respective location is 0, a valid pairwise score can be + expected. The states and their meaning can be explored with code:: + + for state_code, (short_desc, desc) in scorer_obj.items(): + print(state_code) + print(short_desc) + print(desc) + Assumptions: :class:`LigandScorer` generally assumes that the @@ -267,9 +283,7 @@ class LigandScorer: Ligand pairs can be matched and a valid score can be expected if respective location in this matrix is 0. Target ligands are in rows, model ligands in columns. States are encoded - as integers <= 9. Larger numbers encode errors for child classes. - - Human readable description is accessible as `scorer.state_decoding[2]` + as integers <= 9. Larger numbers encode errors for child classes. :rtype: :class:`~numpy.ndarray` """