Python modul RDKit
RDKit je otvorena programska biblioteka za računalnu kemiju. Omogućava vizualizaciju molekula, izračun molekulskih opisnika (engl. molecular descriptors), modeliranje i manipulaciju kemijskim reakcijama te mnoge druge funkcionalnosti. U nastavku ćemo djelomično pratiti odjeljak Getting Started with the RDKit in Python, koji je dio službene dokumentacije RDKita i može poslužiti kao dopuna ovim materijalima.
Za razumijevanje zadataka potrebno je osnovno poznavanje programskog jezika Python i pojmova iz kemoinformatike. Zadatke ćemo rješavati unutar okruženja Google Colab, koje nudi mogućnost pokretanja Jupyterovih bilježnica.
U Google Colabu, Python kod se unosi kroz Python ćelije, a u tekstualnim ćelijama primjenjuje se jezik Markdown. O jeziku Markdown već smo raspravljali u temi Suradnički uređivač teksta HackMD i jezik Markdown.
Naredbe u Linux terminalu zapisuju se u bilježnicu dodavanjem znaka !
ispred same naredbe. Na ovaj način, možemo instalirati RDKit korištenjem naredbe:
!pip install rdkit
U programskom jeziku Python, napisat ćemo programsku skriptu za crtanje spojeva koristeći njihov zapis u formatu SMILES. U nastavku je isječak programskog koda koji koristi module Chem i Draw za crtanje molekule:
from rdkit import Chem
from rdkit.Chem import Draw
molekula = Chem.MolFromSmiles('CCCC')
Draw.MolToImage(molekula)
Želimo li nacrtati dvije molekule jednu do druge, morat ćemo kreirati SMILES listu u kojoj ćemo pohraniti SMILES zapis molekula. Zatim ćemo pomoću petlje for
kreirati slike molekula. To možemo postići na sljedeći način:
from rdkit import Chem
from rdkit.Chem import Draw
smiles_list = ['CC(=O)C', 'C1=CC=CC=C1']
m_list = []
for smiles in smiles_list:
m = Chem.MolFromSmiles(smiles)
m_list.append(m)
Draw.MolsToGridImage(m_list, molsPerRow=2)
Zadatak
- Nacrtajte četiri aminokiseline glicin, fenilalanin, histidin i cistein tako da se nalaze na istoj slici poredane jedna ispod druge.
- Prilagodite prethodni zadatak tako da imate dva retka, svaki s dvije slike molekula.
Ispis SMILES zapisa
Tip objekta pohranjenog u varijabli molekula
možemo provjeriti funkcijom type()
.
from rdkit import Chem
from rdkit.Chem import Draw
molekula = Chem.MolFromSmiles('CCCC')
type(molekula)
rdkit.Chem.rdchem.Mol
rdkit.Chem.rdchem.Mol
je klasa koja predstavlja molekulu u RDKitu. Ova klasa ima različite metode i atribute koji omogućuju pristup raznim informacijama o molekuli, uključujući atomske podatke, veze između atoma i druge relevantne podatke o molekularnoj strukturi.
Želimo li pretvoriti objekt molekula
u znakovni niz u formatu SMILES, napisat ćemo sljedeće:
from rdkit import Chem
from rdkit.Chem import Draw
molekula = Chem.MolFromSmiles('CCCC')
smiles = Chem.MolToSmiles(molekula)
Ako provjerimo kojeg je tipa objekt smiles
vidjet ćemo da je u zapisu <class 'str'>
, dakle niz znakova. Ispišimo na ekran objekt smiles
da dobijemo SMILES zapis molekule:
from rdkit import Chem
from rdkit.Chem import Draw
molekula = Chem.MolFromSmiles('CCCC')
smiles = Chem.MolToSmiles(molekula)
print(smiles)
CCCC
Molekulski opisnici
Molekulski opisnici su kvantitativne reprezentacije određenih karakteristika molekula. Omogućavaju konverziju kompleksnih molekularnih struktura u numeričke podatke, čime se olakšava analiza i modeliranje.
Iz modula Chem
ćemo uvesti pripadni modul Descriptors za pristup molekulskim opisnicima. Primjer ispod koristi nekoliko različitih opisnika:
MolWt
izračunava molarnu masu (engl. molecular weight),HeavyAtomCount
broji atome (oni koji nisu vodik) u molekuli,NumValenceElectrons
računa ukupan broj valentnih elektrona u molekuli.
from rdkit import Chem
from rdkit.Chem import Descriptors
# Definira molekulu iz SMILES zapisa
molekula = Chem.MolFromSmiles('CCCC')
# Izračun i ispis opisnika
molarna_masa = Descriptors.MolWt(molekula)
broj_atoma_u_molekuli = Descriptors.HeavyAtomCount(molekula)
valentni_elektroni = Descriptors.NumValenceElectrons(molekula)
print("Molarna masa:", molarna_masa, "g/mol")
print("Broj atoma u molekuli:", broj_atoma_u_molekuli)
print("Broj valentnih elektrona:", valentni_elektroni)
Zadatak
Nacrtajte mravlju kiselinu (metanska kiselina) te ispišite na ekran molarnu masu i broj atoma u molekuli te broj valentnih elektrona.
Pohrana slikovne datoteke
Slike generiranih molekula mogu se pohraniti na dva načina:
from rdkit import Chem
from rdkit.Chem import Draw
smiles = 'C(=O)O'
molekula = Chem.MolFromSmiles(smiles)
Draw.MolToFile(molekula, "slika1.png", size=(500,500))
from rdkit import Chem
from rdkit.Chem import Draw
smiles = 'C(=O)O'
molekula = Chem.MolFromSmiles(smiles)
slika = Draw.MolToImage(molekula)
slika.save("slika2.png", size=(500,500))
Zadatak
Nacrtajte molekulu djelatne tvari lijeka naziva diklofenak. Pronađite o kojoj je djelatnoj tvari riječ i njezin popularni naziv. Sliku molekule, veličine 600x400 točaka, pohranite tako da se na samoj slici ispod nacrtane molekule nalazi i naziv lijeka. Koristite argument legend
za ispis naziva lijeka ispod slike.
Author: Matea Turalija