rdkit.Chem.AtomPairs.Pairs module

Contains an implementation of Atom-pair fingerprints, as described in:

R.E. Carhart, D.H. Smith, R. Venkataraghavan; “Atom Pairs as Molecular Features in Structure-Activity Studies: Definition and Applications” JCICS 25, 64-73 (1985).

The fingerprints can be accessed through the following functions: - GetAtomPairFingerprint - GetHashedAtomPairFingerprint (identical to GetAtomPairFingerprint) - GetAtomPairFingerprintAsIntVect - GetAtomPairFingerprintAsBitVect

rdkit.Chem.AtomPairs.Pairs.ExplainPairScore(score, includeChirality=False)
>>> from rdkit import Chem
>>> m = Chem.MolFromSmiles('C=CC')
>>> score = pyScorePair(m.GetAtomWithIdx(0), m.GetAtomWithIdx(1), 1)
>>> ExplainPairScore(score)
(('C', 1, 1), 1, ('C', 2, 1))
>>> score = pyScorePair(m.GetAtomWithIdx(0), m.GetAtomWithIdx(2), 2)
>>> ExplainPairScore(score)
(('C', 1, 0), 2, ('C', 1, 1))
>>> score = pyScorePair(m.GetAtomWithIdx(1), m.GetAtomWithIdx(2), 1)
>>> ExplainPairScore(score)
(('C', 1, 0), 1, ('C', 2, 1))
>>> score = pyScorePair(m.GetAtomWithIdx(2), m.GetAtomWithIdx(1), 1)
>>> ExplainPairScore(score)
(('C', 1, 0), 1, ('C', 2, 1))

We can optionally deal with chirality too >>> m = Chem.MolFromSmiles(‘C[C@H](F)Cl’) >>> score = pyScorePair(m.GetAtomWithIdx(0), m.GetAtomWithIdx(1), 1) >>> ExplainPairScore(score) ((‘C’, 1, 0), 1, (‘C’, 3, 0)) >>> score = pyScorePair(m.GetAtomWithIdx(0), m.GetAtomWithIdx(1), 1, includeChirality=True) >>> ExplainPairScore(score, includeChirality=True) ((‘C’, 1, 0, ‘’), 1, (‘C’, 3, 0, ‘R’)) >>> m = Chem.MolFromSmiles(‘F[C@@H](Cl)[C@H](F)Cl’) >>> score = pyScorePair(m.GetAtomWithIdx(1), m.GetAtomWithIdx(3), 1, includeChirality=True) >>> ExplainPairScore(score, includeChirality=True) ((‘C’, 3, 0, ‘R’), 1, (‘C’, 3, 0, ‘S’))

rdkit.Chem.AtomPairs.Pairs.GetAtomPairFingerprintAsBitVect(mol)

Returns the Atom-pair fingerprint for a molecule as a SparseBitVect. Note that this doesn’t match the standard definition of atom pairs, which uses counts of the pairs, not just their presence.

Arguments:

  • mol: a molecule

Returns: a SparseBitVect

>>> from rdkit import Chem
>>> m = Chem.MolFromSmiles('CCC')
>>> v = [pyScorePair(m.GetAtomWithIdx(0), m.GetAtomWithIdx(1), 1),
...      pyScorePair(m.GetAtomWithIdx(0), m.GetAtomWithIdx(2), 2),
...     ]
>>> v.sort()
>>> fp = GetAtomPairFingerprintAsBitVect(m)
>>> list(fp.GetOnBits()) == v
True
rdkit.Chem.AtomPairs.Pairs.pyScorePair(at1, at2, dist, atomCodes=None, includeChirality=False)

Returns a score for an individual atom pair.

>>> from rdkit import Chem
>>> m = Chem.MolFromSmiles('CCCCC')
>>> c1 = Utils.GetAtomCode(m.GetAtomWithIdx(0))
>>> c2 = Utils.GetAtomCode(m.GetAtomWithIdx(1))
>>> c3 = Utils.GetAtomCode(m.GetAtomWithIdx(2))
>>> t = 1 | min(c1,c2) << numPathBits | max(c1,c2) << (rdMolDescriptors.AtomPairsParameters.codeSize + numPathBits)
>>> pyScorePair(m.GetAtomWithIdx(0), m.GetAtomWithIdx(1), 1)==t
1
>>> pyScorePair(m.GetAtomWithIdx(1), m.GetAtomWithIdx(0), 1)==t
1
>>> t = 2 | min(c1,c3) << numPathBits | max(c1,c3) << (rdMolDescriptors.AtomPairsParameters.codeSize + numPathBits)
>>> pyScorePair(m.GetAtomWithIdx(0),m.GetAtomWithIdx(2),2)==t
1
>>> pyScorePair(m.GetAtomWithIdx(0),m.GetAtomWithIdx(2),2,
...  atomCodes=(Utils.GetAtomCode(m.GetAtomWithIdx(0)), Utils.GetAtomCode(m.GetAtomWithIdx(2)))) == t
1