rdkit.Chem.Pharm2D.Utils module

utility functionality for the 2D pharmacophores code

See Docs/Chem/Pharm2D.triangles.jpg for an illustration of the way pharmacophores are broken into triangles and labelled.

See Docs/Chem/Pharm2D.signatures.jpg for an illustration of bit numbering

rdkit.Chem.Pharm2D.Utils.BinsTriangleInequality(d1, d2, d3)

checks the triangle inequality for combinations of distance bins.

the general triangle inequality is:
d1 + d2 >= d3
the conservative binned form of this is:
d1(upper) + d2(upper) >= d3(lower)
rdkit.Chem.Pharm2D.Utils.CountUpTo(nItems, nSlots, vs, idx=0, startAt=0)
Figures out where a given combination of indices would

occur in the combinatorial explosion generated by _GetIndexCombinations_

Arguments

  • nItems: the number of items to distribute
  • nSlots: the number of slots in which to distribute them
  • vs: a sequence containing the values to find
  • idx: used in the recursion
  • startAt: used in the recursion

Returns

an integer
rdkit.Chem.Pharm2D.Utils.GetAllCombinations(choices, noDups=1, which=0)

Does the combinatorial explosion of the possible combinations of the elements of _choices_.

Arguments

  • choices: sequence of sequences with the elements to be enumerated
  • noDups: (optional) if this is nonzero, results with duplicates, e.g. (1,1,0), will not be generated
  • which: used in recursion

Returns

a list of lists
>>> GetAllCombinations([(0,),(1,),(2,)])
[[0, 1, 2]]
>>> GetAllCombinations([(0,),(1,3),(2,)])
[[0, 1, 2], [0, 3, 2]]
>>> GetAllCombinations([(0,1),(1,3),(2,)])
[[0, 1, 2], [0, 3, 2], [1, 3, 2]]
rdkit.Chem.Pharm2D.Utils.GetIndexCombinations(nItems, nSlots, slot=0, lastItemVal=0)
Generates all combinations of nItems in nSlots without including
duplicates

Arguments

  • nItems: the number of items to distribute
  • nSlots: the number of slots in which to distribute them
  • slot: used in recursion
  • lastItemVal: used in recursion

Returns

a list of lists
rdkit.Chem.Pharm2D.Utils.GetPossibleScaffolds(nPts, bins, useTriangleInequality=True)

gets all realizable scaffolds (passing the triangle inequality) with the given number of points and returns them as a list of tuples

rdkit.Chem.Pharm2D.Utils.GetTriangles(nPts)

returns a tuple with the distance indices for triangles composing an nPts-pharmacophore

rdkit.Chem.Pharm2D.Utils.GetUniqueCombinations(choices, classes, which=0)

Does the combinatorial explosion of the possible combinations of the elements of _choices_.

rdkit.Chem.Pharm2D.Utils.GetUniqueCombinations_new(choices, classes, which=0)

Does the combinatorial explosion of the possible combinations of the elements of _choices_.

rdkit.Chem.Pharm2D.Utils.NumCombinations(nItems, nSlots)

returns the number of ways to fit nItems into nSlots

We assume that (x,y) and (y,x) are equivalent, and (x,x) is allowed.

General formula is, for N items and S slots:
res = (N+S-1)! / ( (N-1)! * S! )
rdkit.Chem.Pharm2D.Utils.OrderTriangle(featIndices, dists)

put the distances for a triangle into canonical order

It’s easy if the features are all different: >>> OrderTriangle([0,2,4],[1,2,3]) ([0, 2, 4], [1, 2, 3])

It’s trickiest if they are all the same: >>> OrderTriangle([0,0,0],[1,2,3]) ([0, 0, 0], [3, 2, 1]) >>> OrderTriangle([0,0,0],[2,1,3]) ([0, 0, 0], [3, 2, 1]) >>> OrderTriangle([0,0,0],[1,3,2]) ([0, 0, 0], [3, 2, 1]) >>> OrderTriangle([0,0,0],[3,1,2]) ([0, 0, 0], [3, 2, 1]) >>> OrderTriangle([0,0,0],[3,2,1]) ([0, 0, 0], [3, 2, 1])

>>> OrderTriangle([0,0,1],[3,2,1])
([0, 0, 1], [3, 2, 1])
>>> OrderTriangle([0,0,1],[1,3,2])
([0, 0, 1], [1, 3, 2])
>>> OrderTriangle([0,0,1],[1,2,3])
([0, 0, 1], [1, 3, 2])
>>> OrderTriangle([0,0,1],[1,3,2])
([0, 0, 1], [1, 3, 2])
rdkit.Chem.Pharm2D.Utils.ScaffoldPasses(combo, bins=None)

checks the scaffold passed in to see if all contributing triangles can satisfy the triangle inequality

the scaffold itself (encoded in combo) is a list of binned distances

rdkit.Chem.Pharm2D.Utils.UniquifyCombinations(combos)

uniquifies the combinations in the argument

Arguments:

  • combos: a sequence of sequences

Returns

  • a list of tuples containing the unique combos