[PYTHON] Deep Learning für die Bildung von Verbindungen?

banner.png

Einführung

Ich drucke nach, was ich in der Vergangenheit geschrieben habe. Es kann in der Nähe von verschiedenen Notizen sein. Ich weiß es nicht.

Neue Molekülgeneration?

Erstellen Sie ein neues Molekül. Was haben Sie bisher insbesondere in Bezug auf das Design "nützlicher neuer Moleküle mit den gewünschten physikalischen Eigenschaften" getan? Zum Beispiel denke ich, dass es auf dem Gebiet der Wirkstoffentdeckung nicht nur auf der Grundlage der Grundtheorie der Chemie erstellt wird, sondern auch unter Verwendung empirischer Regeln, des Tanimoto-Koeffizienten, der quantenchemischen Berechnung usw. (ich denke, es gibt andere). Ich werde (überprüfe mich).

In letzter Zeit scheint es einen großen Schritt zu geben, maschinelles Lernen dazu zu bringen, das oben Genannte zu tun.

Unter ihnen war die Aspuru-Guzik-Gruppe der Harvard University, die eine große Anzahl von Zitaten von 213 hatte, die, auf die wir diesmal achteten. 「Automatic Chemical Design Using a Data-Driven Continuous Representation of Molecules」(1) Und ein darauf basierendes Programm Es ist "Chemical VAE" (2). banner.png

Was ist chemische VAE?

Dies ist eine Technologie, die word2vec (Seq2Seq) namens SMILES2vec verwendet. Ich würde mich freuen, wenn Sie den vorherigen Mein Artikel dazu sehen könnten.

Das Folgende ist der Fluss der neuen Molekülgeneration, über den ich nach dem Lesen der Zeitung nachgedacht habe.

Zunächst wird die durch die Verbindung dargestellte Zeichenfolge von einem Codierer vektorisiert, um einen latenten Raum (Vektorraum) zu erzeugen. Jede Position in diesem Vektorraum ist eine Zeichenfolge von SMILES, und es scheint, dass die Struktur umso näher existiert, je näher die Position (später ausgedrückt als z) liegt. Verwenden Sie den Decoder, um ihn so weit wie möglich in einen ähnlichen String umzuwandeln. Wir werden auch die Encoder und Dekorateure schulen, damit sie erfolgreich codiert und decodiert werden können.

smv.jpg

Danach (es kann "zur gleichen Zeit" gesagt werden) wird f (z) wie in der folgenden Abbildung gezeigt erzeugt, indem die physikalischen Eigenschaftswerte der Moleküle gelernt werden, die dem Vektorraum mit einem neuronalen Netzwerk entsprechen.

スクリーンショット 2018-12-31 17.15.12.png

(Hinweis) Von hier aus war es besonders schwer zu lesen, sodass es in etwa dem entspricht, was Sie erwartet haben.

Es ist bedeutungslos, wenn Sie nicht die physikalischen Eigenschaften haben, die Sie als neues Molekül bezeichnen möchten, oder? Obwohl die diesmal eingeführte Technologie eine neue Molekülgeneration ist, Pharmazeutische empirische Regel, dass "ein Molekül mit einer Struktur nahe einem bekannten Molekül mit guten physikalischen Eigenschaften auch gute physikalische Eigenschaften haben kann (viele?)"? Es scheint eine solche Idee zu geben. Mit anderen Worten, es scheint den Prozess der Kodierung eines bekannten Moleküls mit guten physikalischen Eigenschaften in diesem erlernten latenten Raum, der Suche nach der Position dieses Moleküls im latenten Raum und der Suche nach einem neuen Molekül zu erfordern. Danach erzeugt der trainierte Decoder LÄCHELN des Moleküls. Wenn es schließlich erzeugt wird, wird RDkit verwendet, um zu bestimmen, ob es als Molekül gilt.

oc-2017-00572f_0005.gif

Die folgende Abbildung scheint das Ergebnis zu sein. Das zentrale Molekül ist von einem Quadrat umgeben. Von dort wird die Positionsbeziehung des latenten Raums ausgedrückt.

Figure2.jpg

Der Fluss bis zu diesem Punkt liegt in meinem Verständnis.

Ich habe tatsächlich das GitHub-Beispiel ausprobiert.

Wenn Sie ein Beispiel machen, geben Sie chemische_vae mit conda oder pip ein.

Zunächst der Importteil

intro_to_chemvae.ipynb


# tensorflow backend
from os import environ
environ['KERAS_BACKEND'] = 'tensorflow'
# vae stuff
from chemvae.vae_utils import VAEUtils
from chemvae import mol_utils as mu
# import scientific py
import numpy as np
import pandas as pd
# rdkit stuff
from rdkit.Chem import AllChem as Chem
from rdkit.Chem import PandasTools
# plotting stuff
import matplotlib.pyplot as plt
import matplotlib as mpl
from IPython.display import SVG, display
%config InlineBackend.figure_format = 'retina'
%matplotlib inline

Der Datensatz verwendet den Zink-Datensatz. Dieser Datensatz enthält LÄCHELN und physikalische Eigenschaften (QED (Bewertung der Arzneimittelähnlichkeit), SAS (Bewertung der synthetischen Zugänglichkeit), logP (Octanolkoeffizient)).

Ebenfalls, ・ Smiles_1 gibt das zentrale Molekül an. ・ Rauschen ist der Abstand (z) vom Zentralmolekül im latenten Raum.

vae = VAEUtils(directory='../models/zinc_properties')
smiles_1 = mu.canon_smiles('CSCC(=O)NNC(=O)c1c(C)oc(C)c1C')

for i in range(500):
   X_1 = vae.smiles_to_hot(smiles_1,canonize_smiles=True)
   z_1 = vae.encode(X_1)
   X_r= vae.decode(z_1)

   print('{:20s} : {}'.format('Input',smiles_1))
   print('{:20s} : {}'.format('Reconstruction',vae.hot_to_smiles(X_r,strip=True)[0]))

   print('{:20s} : {} with norm {:.3f}'.format('Z representation',z_1.shape, np.linalg.norm(z_1)))


   print('Properties (qed,SAS,logP):')
   y_1 = vae.predict_prop_Z(z_1)[0]
   print(y_1)
  noise=3.0
   print('Searching molecules randomly sampled from {:.2f} std (z-distance) from the point'.format(noise))

・ Ausgabeergebnis

Using TensorFlow backend.
Standarization: estimating mu and std values ...done!
Input                : CSCC(=O)NNC(=O)c1c(C)oc(C)c1C
Reconstruction       : CH1nCNc1Cs)Nccccc(CCc1)c3
Z representation     : (1, 196) with norm 9.901
Properties (qed,SAS,logP):
[0.72396696 2.1183593  2.1463375 ]
Searching molecules randomly sampled from 3.00 std (z-distance) from the point

Am Ende erhalten wir das einzigartige und RDkit-identifizierte, das wir gefunden haben.

   
   df = vae.z_to_smiles( z_1,decode_attempts=100,noise_norm=noise)
   print('Found {:d} unique mols, out of {:d}'.format(len(set(df['smiles'])),sum(df['count'])))
   print('SMILES\n',df.smiles)
   if sum(df['count']) !=0:
      df1=pd.DataFrame(df.smiles)
   df1.to_csv("result1.csv",mode='a',index=False,header=False)

Ausgabeergebnis unten

result1.csv


ON cCO=COCC(O)ccN2cs2c
CCCCCCNc-1cO-SCOCCcccc1
CC1CCcC(-nOcc1ccccCCC1)c1 O
OC (C)C(=Occc3cccccccc)CB
CCC1oNCc2cCcccccc2cccc1 1 1
CO CC(1c(O=O1O(1cO)nC))1
C=C1nn(=O)SnNccccccocc1C
CC C@Cs(=CN=11cccc2cc1Cc)2c1
C OcCCc(CO)c1nccc=Occccc1C
O1Cc(c1CCO)CNCC=BBOCCCN
CC ON(FCNN(C)ccc(Ocn1)1)l
C1ccnccnccccccccncccscc1
CC(CScc(c1cOn1nc1CCl)C)1
CCCCc(-ncccc21nc1c1c2)1CCC
C cnc(Cnncncc(C())Cl)Cl1 1

Es gibt einige, die wahrscheinlich keine Moleküle werden, obwohl sie das RDkit durchlaufen haben. .. .. Es scheint jedoch viele Syntaxfehler zu vermeiden. RDkit kompetent. ..

das ist alles

Referenz

1)Automatic Chemical Design Using a Data-Driven Continuous Representation of Molecules https://pubs.acs.org/doi/abs/10.1021/acscentsci.7b00572 2)chemical_vae https://github.com/aspuru-guzik-group/chemical_vae 3) Verbindungsbildung durch Deep Learning (Medikamente, organische Lumineszenzmoleküle) https://ritsuan.com/blog/8480/

Recommended Posts

Deep Learning für die Bildung von Verbindungen?
Tiefes Lernen
[AI] Deep Learning für das Entrauschen von Bildern
Deep Learning Memorandum
Machen Sie Ihren eigenen PC für tiefes Lernen
Starten Sie Deep Learning
Python Deep Learning
Deep Learning × Python
[Deep Learning] Nogisaka Gesichtserkennung ~ Für Anfänger ~
Informationen zur Datenerweiterungsverarbeitung für tiefes Lernen
Empfohlene Studienreihenfolge für Anfänger des maschinellen Lernens / Deep Learning
Lesen und implementieren Sie Deep Residual Learning für die Bilderkennung
Implementierung eines Deep Learning-Modells zur Bilderkennung
Ich habe den Deep Learning Framework Chainer installiert
Python: Deep Learning-Praxis
Deep Learning / Aktivierungsfunktionen
Deep Learning von Grund auf neu
Deep Learning 1 Übung des Deep Learning
Stärkung des Lernens der dritten Zeile
Deep Learning / Cross Entropy
Erstes tiefes Lernen ~ Vorbereitung ~
Erstes tiefes Lernen ~ Lösung ~
[AI] Deep Metric Learning
Ich habe versucht, tief zu lernen
Python: Deep Learning Tuning
Deep Learning Großtechnologie
Zusammenfassung zum Lernen von RAPIDS
Deep Learning / Softmax-Funktion
Techniken zum Verständnis der Grundlagen von Deep-Learning-Entscheidungen
Tiefes Lernen mit Python Kapitel 2 (Material für runde Vorlesung)
Eine Szene, in der GPU für tiefes Lernen nützlich ist?
Datensatz für maschinelles Lernen
Japanische Vorverarbeitung für maschinelles Lernen
Deep Learning von Grund auf 1-3 Kapitel
Tipps zum Umgang mit Eingaben variabler Länge im Deep Learning Framework
Versuchen Sie es mit TensorFlow
Deep Learning Gaiden ~ GPU-Programmierung ~
<Kurs> Tiefes Lernen: Day2 CNN
Lernablauf für Python-Anfänger
Japanische Übersetzung der öffentlichen Unterrichtsmaterialien des Deep Learning Nano Degree
Python-Lernplan für KI-Lernen
Deep Learning Bilderkennung 1 Theorie
Deep Running 2 Tuning von Deep Learning
Erstellen Sie mit Docker eine Umgebung für "Deep Learning von Grund auf neu"
Deep Learning / LSTM Scratch Code
<Kurs> Tiefes Lernen: Tag 1 NN
Deep Kernel Learning mit Pyro
Memorandum für mich lernen w
Versuchen Sie Deep Learning mit FPGA
Einführung in Udacity Deep Learning Nanodegree
Richten Sie AWS (Ubuntu 14.04) für Deep Learning ein (installieren Sie CUDA, cuDNN).
Themen> Deep Learning: Tag 3 RNN
Einführung in Deep Learning ~ Lernregeln ~
Checkios Empfehlung zum Erlernen von Python
Eine Geschichte über einen 40-jährigen Ingenieurmanager, der "Deep Learning for ENGINEER" bestanden hat
Tiefe Stärkung des Lernens 1 Einführung in die Stärkung des Lernens
Tiefes Lernen der Verstärkung 2 Implementierung des Lernens der Verstärkung
Generiere Pokemon mit Deep Learning
Einführung in Deep Learning ~ Backpropagation ~