Zuvor habe ich untersucht, wie der Deskriptor für jedes Molekül mit mordred berechnet wird, indem Berechnen von 1 Molekül und 1 Deskriptor mit mordred. Auf diese Weise können nur die Deskriptoren berechnet werden, die Sie verwenden möchten.
Wenn diese Methode jedoch verwendet wird, um nur einen bestimmten Deskriptor zu berechnen, wenn eine große Anzahl von Molekülen vorhanden ist, ist dies in den folgenden Punkten unpraktisch.
Die Berechnung ist ohne Parallelisierung langsam. Die Pandas-Methode der Calculator-Klasse führt eine schöne parallele Berechnung durch, wenn Sie die Anzahl der CPU-Kerne angeben.
Da das Berechnungsergebnis nicht im DataFrame-Format abgerufen werden kann, ist zusätzlicher Aufwand erforderlich.
Dieses Mal, wenn es eine große Anzahl von Molekülen gibt, habe ich untersucht, wie der Deskriptor berechnet wird, indem nur der Deskriptor angegeben wird, den Sie verwenden möchten, und die Pandas-Methode der Calculator-Klasse verwendet wird.
Du kannst so gehen.
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")
Wenn Sie die Quelle der Calculator-Klasse sorgfältig lesen, können Sie im Argument des Konstruktors eine Liste der Instanzen der Descriptor-Klasse anstelle der Deskriptoren angeben.
Nehmen Sie damit die Instanz aus dem Namen des Deskriptors, den Sie berechnen möchten (aufgeführt in my_desc_names), und fügen Sie sie in die Liste ein.
Der Grund, warum calc_dummy ein Dummy-Calculator-Objekt erstellt, besteht darin, eine Liste von Deskriptorinstanzen abzurufen. (Es muss einen eleganteren Weg geben, also versuchen Sie, die Quelle zu hacken).
Erstellen Sie als Nächstes ein Calculator-Objekt, indem Sie dem Konstruktor der Calculator-Klasse eine Liste von Deskriptorinstanzen als Argumente geben.
Wenn die Berechnung von diesem Rechnerobjekt durchgeführt wird, wird schließlich ein DataFrame erhalten, in dem das Berechnungsergebnis nur des angegebenen Deskriptors gespeichert ist.
Dieses Know-how ist sehr nützlich, wenn Sie Vorhersagen erst nach dem Erstellen eines Vorhersagemodells treffen. Dies liegt daran, dass Sie, wenn Sie nur Vorhersagen treffen, nur die im Vorhersagemodell verwendeten Deskriptoren berechnen müssen. Insbesondere bei der Berechnung einer Liste von Verbindungen wie Zehntausenden oder Hunderttausenden gehen wir davon aus, dass sich die Verarbeitungszeit erheblich unterscheiden wird.
Recommended Posts