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

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