Ich drucke nach, was ich in der Vergangenheit geschrieben habe. Es kann in der Nähe von verschiedenen Notizen sein. Ich weiß es nicht.
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).
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.
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.
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.
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.
Der Fluss bis zu diesem Punkt liegt in meinem Verständnis.
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
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