Neulich habe ich die Daten zum ersten Mal seit einiger Zeit mit Python analysiert. Ich habe vergessen, wie man Pandas benutzt.
Zu dieser Zeit dachte ich plötzlich darüber nach. "Übrigens habe ich nicht viel über Leute gehört, die Python synchron mit unserer Abteilung verwendet haben."
Ich habe hier und da einige R-Benutzer gehört ... (Es ist einfach und es gibt viele Pakete, also ist es natürlich.)
Ich werde vorstellen, dass Python auch Chemie kann.
RDkit Es ist ein Paket, das auf dem Gebiet der Cheminformatik sehr aktiv ist. Zeichnen Sie eine Verbindung oder lesen Sie Strukturdaten, um die Diagrammstruktur anzuzeigen. Was Sie mit RDkit tun können → https://www.rdkit.org
Fügen wir zunächst die Struktur entsprechend ein.
from rdkit import Chem
from rdkit import IPythonConsole #Einstellungen für Strukturzeichnungen
from rdkit.Chem import Draw
Hier verwenden wir die Notation SMILES, um die Struktur einzugeben. SMILES ist eine Abkürzung für Simplified Molecular Input Line Entry System, eine Notation zum Konvertieren von Strukturinformationen in eine Zeichenfolge. Siehe hier für Details (http://opensmiles.org)
Möchten Sie zum Beispiel Essigsäure zeichnen?
m1=Chem.MolFromSmiles("CC(=O)O") #Methode zum Lesen der mit einem Lächeln geschriebenen Zeichenkette
m1
Dann kann die Strukturformel von Essigsäure gezogen werden, was einfach ist.
In ähnlicher Weise können aromatische Verbindungen wie Phenolphthalin gezogen werden.
m2=Chem.MolFromSmiles("O=C1OC(c2ccccc12)(c3ccc(O)cc3)c4ccc(O)cc4")
m2
Zum Beispiel, wenn Sie einen Datensatz erstellen und analysieren möchten. Wenn Sie es als Datenbank einführen ●ChEMBL(https://www.ebi.ac.uk/chembl/) ●PubChem(https://pubchem.ncbi.nlm.nih.gov) Ich finde diesen Bereich interessant.
Ich mag die NIH-Seite, also werde ich dieses Mal PubChem verwenden. Wenn Sie nach "Aspirin" suchen, das für seine fiebersenkende Wirkung bekannt ist, wird der folgende Suchbildschirm angezeigt.
Speichern Sie die 2D-Struktur-SDF-Datei über die Schaltfläche Herunterladen.
d1=Chem.SDMolSupplier("Structure2D_CID_2244.sdf")#SDF-Datei lesen
Draw.MolsToGridImage(d1)
Ich bin nicht zufrieden damit, nur auszugeben, und ich werde auf verschiedene Weise mit der Ausgabestruktur spielen.
Sehen Sie, wo die Teilstrukturen der beiden Chemikalien übereinstimmen.
#Strukturelle Konsistenz zwischen Essigsäure und Ameisensäure
c1 = Chem.MolFromSmiles('CC(=O)O') #Essigsäure
c2 = Chem.MolFromSmarts('O=CO') #Ameisensäure
c1.GetSubstructMatches(c2) #Überprüfen Sie den Teil, in dem die Struktur mit Essigsäure und Ameisensäure übereinstimmt
from rdkit.Chem import AllChem #Modul zur Durchführung molekularer Modifikationen
delete = AllChem.DeleteSubstructs(c1,c2)#Gemeinsame Teile mit Ameisensäure aus Essigsäure entfernt
Chem.MolToSmiles(delete)
add = Chem.MolFromSmiles('CC(O)C(=O)O') #Unterkonstruktion zu ersetzen(Milchsäure)
exc = AllChem.ReplaceSubstructs(c1,c2,add) #Ersetzen Sie den gemeinsamen Teil von Essigsäure und Ameisensäure durch Milchsäure
Chem.MolToSmiles(exc[0])
Es gibt eine Technik namens Fingerabdruck, die die chemischen Merkmale beschreibt, die erforderlich sind, um molekulare Ähnlichkeit zu zeigen.
#Ähnlichkeitsberechnung mit Fingerabdrücken von Essigsäure, Ameisensäure und Milchsäure
from rdkit import DataStructs
from rdkit.Chem.Fingerprints import FingerprintMols
data=[Chem.MolFromSmiles('CC(=O)O'),Chem.MolFromSmiles('O=CO'),Chem.MolFromSmiles('CC(O)C(=O)O')]#Fügen Sie 3 Moleküle ein, für die Sie die Ähnlichkeit überprüfen möchten
judge = [FingerprintMols.FingerprintMol(x) for x in data]
DataStructs.FingerprintSimilarity(judge[1],judge[2])#Ähnlichkeit zwischen Ameisensäure und Milchsäure
DataStructs.FingerprintSimilarity(fps[1],fps[2], metric=DataStructs.DiceSimilarity)#Änderung des Ähnlichkeitsindex
Zeichnen Sie diese Ähnlichkeit auf die Karte. Zeichnen Sie beispielsweise eine Ähnlichkeitskarte von Lactose auf Benzoesäurebasis.
from rdkit.Chem.Draw import SimilarityMaps #Ähnlichkeitskartenmodul
mol = Chem.MolFromSmiles('O=C(O)c1ccccc1')#Benzoesäure
refmol=Chem.MolFromSmiles('O[C@H]1[C@H](O)[C@H](OC(O)[C@@H]1O)CO[C@@H]2O[C@H](CO)[C@H](O)[C@H](O)[C@H]2O')#Laktose
fp = SimilarityMaps.GetTTFingerprint(refmol, fpType='normal')#topological torsions finger print
fig, maxweight = SimilarityMaps.GetSimilarityMapForFingerprint(mol, refmol, SimilarityMaps.GetMorganFingerprint, metric=DataStructs.TanimotoSimilarity)#Abbildung nach Tanimoto-Koeffizient
Dieses Mal werden wir durch die Ladung von Benzoesäure visualisieren.
AllChem.ComputeGasteigerCharges(mol)
contribs = [float(mol.GetAtomWithIdx(i).GetProp('_GasteigerCharge')) for i in range(mol.GetNumAtoms())] #Visualisierung durch Teilladung nach der Gasteiger-Methode
fig = SimilarityMaps.GetSimilarityMapFromWeights(mol, contribs, colorMap='jet', contourLines=10)
RDkit ist praktisch, da es zum Zeichnen, zur Strukturanalyse und zum Bearbeiten verwendet werden kann. Ich würde es gerne noch einmal versuchen, wenn es ein interessantes Paket in Python gibt.
Recommended Posts