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])
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