[PYTHON] Führt eine Hochgeschwindigkeitsberechnung nur für bestimmte Deskriptoren mit mordred durch

Einführung

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.

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.

Umgebung

Quelle

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

Kommentar

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.

abschließend

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

Führt eine Hochgeschwindigkeitsberechnung nur für bestimmte Deskriptoren mit mordred durch
Fehlerfreie Berechnung mit Golangs big.Float
Die Geschichte der numerischen Berechnung von Differentialgleichungen mit TensorFlow 2.0
1. Mit Python 1-3 gelernte Statistiken. Berechnung verschiedener Statistiken (Statistiken)
Echtzeitberechnung des Durchschnittswertes mit Corroutine
VM kann nicht mit einem bestimmten Kernel von CentOS7 gestartet werden
1. Mit Python 1-2 gelernte Statistiken. Berechnung verschiedener Statistiken (Numpy)
Sequentielle Berechnung des Durchschnittswertes mit Online-Algorithmus
Berechnung der gegenseitigen Informationsmenge (kontinuierlicher Wert) mit numpy