When using GetMorganFingerprintAsBitVect I get the “expected” Tanimoto score

mol1 = Chem.MolFromSmiles('CCC')
mol2 = Chem.MolFromSmiles('CNC')

fp1 = AllChem.GetMorganFingerprintAsBitVect(mol1,2,nBits=1024)
fp2 = AllChem.GetMorganFingerprintAsBitVect(mol2,2,nBits=1024)

print(DataStructs.TanimotoSimilarity(fp1, fp2))

arr1 = np.zeros((1,))
DataStructs.ConvertToNumpyArray(fp1, arr1)
arr2 = np.zeros((1,))
DataStructs.ConvertToNumpyArray(fp2, arr2)
print(np.sum(arr1*arr2)/np.sum(arr1+arr2-arr1*arr2))

0.14285714285714285
0.14285714285714285



However, when using GetMorganFingerprint I get a difference score.

fp1 = AllChem.GetMorganFingerprint(mol1,2)
fp2 = AllChem.GetMorganFingerprint(mol2,2)

print(DataStructs.TanimotoSimilarity(fp1, fp2))

0.2

I thought the Tanimoto score was always computed using bit vectors.  Can anyone 
explain?

Best regards, Jan
_______________________________________________
Rdkit-discuss mailing list
Rdkit-discuss@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/rdkit-discuss

Reply via email to