Calcular el coeficient de Tanimoto amb Pybel
Necessito comparar diverses molècules. Encara no hi entenc massa, però, crec que una de les millors maneres és fer servir el coeficient de Tanimoto [en]. Això, el càlcul d’aquest coeficient l’he de fer de forma reiterada, necessito anar calculant el coeficient per cada molècula que generi i comparar-la així amb una molècula final. A més a més, vull integrar-ho dins un programa que tinc fet amb Python.
La millor manera, doncs, és fent ús de Pybel, un mòdul Python per fer servir eines de l’Openbabel des de codi Python. La manera de fer-ho és ben senzilla. Des de Python:
>>> import pybel #importarem el mòdul
>>> smiles = ['CCCC', 'CCCN'] #Array de molècules
>>> mols = [pybel.readstring("smi", x) for x in smiles] #Llegim les molècules
>>> fps = [x.calcfp() for x in mols] #calculem els fingerprints (descriptors)
>>> print fps[0] | fps[1] #finalment, calculem el coeficient
0.333333333333
I… llestos! suposo que hi deuen haver maneres més acurades i que, com tota cosa estadística, com més descriptors es tinguin per cada molècula, millor, però, per a començar, no va gens malament i el mètode és molt fàcil d’implementar.



I aquest càlcul (el coeficient de Tanimoto) és vàlid per a tot tipus de mol·lècula, o genera algun tipus de desviació en els valors extrems? És a dir, hi ha alguna diferència entre utilitzar aquest coeficient per a la comparació de mol·lècules més o menys properes entre elles?