[PYTHON] Effectue le calcul à grande vitesse de descripteurs spécifiques uniquement avec mordred

introduction

Auparavant, j'ai étudié comment calculer le descripteur pour chaque molécule avec mordred en Calculant 1 molécule et 1 descripteur avec mordred. Cela permet de ne calculer que les descripteurs que vous souhaitez utiliser.

Cependant, si cette méthode est utilisée pour calculer uniquement un descripteur spécifique lorsqu'il y a un grand nombre de molécules, elle est incommode dans les points suivants.

Cette fois-ci, lorsqu'il y a un grand nombre de molécules, j'ai étudié comment calculer le descripteur en spécifiant uniquement le descripteur que vous souhaitez utiliser et en utilisant la méthode pandas de la classe Calculator.

environnement

La source

Tu peux aller comme ça.


from mordred import Calculator, descriptors

calc_dummy = Calculator(descriptors, ignore_3D=False)
my_desc_names = ["SpAD_A", "SRW10"]
my_descs = []
for i, desc in enumerate(calc_dummy.descriptors):
    if desc.__str__()  in my_desc_names:
       my_descs.append(desc)

calc_real = Calculator(my_descs, ignore_3D=False)
df = calc_real.pandas(mols, nproc=3)
df.to_csv(args.output + "/mordred.csv")

Commentaire

Si vous lisez attentivement la source de la classe Calculator, vous pouvez spécifier une liste d'instances de la classe Descriptor au lieu de descripteurs dans l'argument du constructeur.

En utilisant cela, prenez l'instance à partir du nom du descripteur que vous souhaitez calculer (répertorié dans my_desc_names) et mettez-la dans la liste.

La raison pour laquelle calc_dummy crée un objet Calculator factice est d'obtenir une liste d'instances de descripteur. (Il doit y avoir un moyen plus élégant, alors essayez de pirater la source).

Ensuite, créez un objet Calculator en donnant une liste d'instances de descripteur comme arguments au constructeur de la classe Calculator.

Enfin, lorsque le calcul est effectué par cet objet Calculator, un DataFrame dans lequel le résultat du calcul du seul descripteur spécifié est stocké est obtenu.

en conclusion

Ce savoir-faire est très utile lorsque l'on ne fait des prédictions qu'après avoir créé un modèle de prédiction. En effet, si vous souhaitez uniquement effectuer des prédictions, il vous suffit de calculer les descripteurs utilisés dans le modèle de prédiction. Surtout lors du calcul d'une liste de composés tels que des dizaines de milliers ou des centaines de milliers, nous pensons qu'il y aura une grande différence dans le temps de traitement.

Recommended Posts

Effectue le calcul à grande vitesse de descripteurs spécifiques uniquement avec mordred
Calcul sans erreur avec le big.Float de Golang
L'histoire du calcul numérique des équations différentielles avec TensorFlow 2.0
1. Statistiques apprises avec Python 1-3. Calcul de diverses statistiques (statistiques)
Calcul en temps réel de la valeur moyenne avec corroutine
La VM ne peut pas être démarrée avec un noyau spécifique de CentOS7
1. Statistiques apprises avec Python 1-2. Calcul de diverses statistiques (Numpy)
Calcul séquentiel de la valeur moyenne avec l'algorithme en ligne
Calcul de la quantité d'informations mutuelles (valeur continue) avec numpy