SMILES
SMILES és una notació que defineix la estructura de les mol·lècules amb l'ús de cadenes de caràcters ASCII; per guardar-les de forma òptima en sistemes informàtics.
Introducció
Section titled “Introducció”En els vostres estudis de química, començats als primers anys, heu trobat moltes maneres de representar els productes químics, i aquí n’enumerem algunes.
Per exemple,
Nom trivial | Aspirina |
Nom sistemàtic | àcid 2-acetiloxibenzoic |
Fòrmula química | C₉H₈O₄ |
Fòrmula esquel·lètica | CC(=O)OC1=CC=CC=C1C(=O)O |
Diagrama | Dibuix |
Com emmagatzemar mol·lecules en sistemes informátics ?
Section titled “Com emmagatzemar mol·lecules en sistemes informátics ?”Aquestes formes són molt útils pels professionals de la química.
Ara bé, els reptes de la quimioinformàtica són: guardar, representar i visualitzar els compostos i mol·lècules de forma eficient i còmode tant a nivell químic com informàtic.
Inicialment, podem pensar que el nom sistemàtic (àcid 2-acetiloxibenzoic) o la fórmula química (C9H8O4) ens poden servir per guardar tota la informació d’una substància, però no sempre és així.
Hi pot haver fórmules duplicades, per exemple, tant l’etanol com dimetilèter tenen la fórmula C₂H₆O, però un et fa ballar (alcohol) i l’altre… explotar (èter).
També podriem pensar que per compensar aquesta informació que manca (els enllaços) podem usar la fórmula esquel·lètica.
Afortunadament la IUPAC
(Unió Internacional de Química Pura i Aplicada) acorda nomenclatures internacionals de noms químics que són generalment sistemàtics però flexibles. Permeten l’ús de certs noms trivials ben establerts.
Els noms sistemàtics descriuen la fórmula estructural dels compostos. Si coneixeu les regles i el vocabulari, hauríeu de poder escriure un nom a partir d’una fórmula estructural i viceversa. Els químics han desenvolupat diverses maneres de traduir fórmules en noms, de manera que gairebé sempre és possible escriure més d’un nom sistemàtic per a un determinat compost.
Com que els noms IUPAC sistemàtics es fan segons regles formalitzades, en principi podrien ser utilitzats tant per humans com per ordinadors.
Tanmateix, els noms IUPAC solen ser força difícils de llegir per als químics, i molt menys d’escriure, i les regles no són canòniques, la qual cosa dóna lloc a nombroses opcions diferents per anomenar cada compost.
TODO (esquema)
Amb l’arribada de la quimioinformàtica als anys 70 i 80, es va veure la necessitat de representar molècules d’una forma que fos fàcilment llegible i manipulable per ordinador.
Les primeres solucions van ser les taules de connexions, que descriuen de manera explícita quins àtoms estan units entre si i amb quin tipus d’enllaç. Encara s’utilitzen força avui en dia (en formats com .mol o .sdf).
Aquestes taules, tot i ser eficients i precises, ocupen força espai i poden resultar lentes de processar quan es treballa amb milesrs de molècules. Per això, van sorgir sistemes més compactes, com les notacions lineals, pensades per codificar estructures de forma seqüencial dins de fitxers de text, ocupant menys espai i sent més ràpides de llegir, comparar i transmetre.
En aquestes i altres aplicacions de la quimformàtica, les representacions de notació lineal tenen avantatges clau per a la velocitat i l’automatització, especialment per a manipular un gran nombre d’estructures (per exemple, cercant una gran base de dades).
Per això, les notació de línies es podria considerar com una nomenclatura per a ordinadors, ja que com una taula de connexió, un ordinador pot “llegir” una notació de línies i desenvolupar una molècula de la mateixa manera que un humà pot llegir la nomenclatura IUPAC i generar la molècula. Moltes formes de notació de línies són llegibles tant per màquines com per humans.
Actualment, les notacions lineals més utilitzades són el sistema simplificat d’entrada de línies d’entrada molecular (SMILES
) i l’identificador químic de la IUPAC (InChI
).
En aquesta sessió ens centrarem en la notació SMILES.
Notació SMILES
Section titled “Notació SMILES”Les cadenes de SMILES (Simplified Molecular Input Line Entry Specification) són molt útils per ser introduïdes en programes especialitzats i representar molècules sense la necessitat de dibuixar la molècula manualment; és per això que les usare
Hi ha regles específiques sobre com representar àtoms, enllaços, aromaticitat, anells i ramificacions, etc.
Per exemple, els enllaços simples no cal representar-los, però els enllaços dobles es poden representar utilitzant el signe =
.
Els àtoms d’hidrogen normalment s’ignoren.
Exemples:
CH2O
(Etè) es representa com C=O
.
O=C=0
representa el diòxid de Carboni.
O
és per representar l’aigua (que la seva fórmula és H2O, però com hem dit els àtoms d’Hidrògen no compten)
OpenSmiles és una versió del llenguatge SMILES per a química patrocinada per la comunitat i basada en estàndards oberts.
En aquest enllaç tens la OpenSMILES specification
Molecular Fingerprinting
Section titled “Molecular Fingerprinting”Molecular fingerprints are a way to encode a molecule’s structure directly as a bit vector. There are several algorithms but a commonly used one is the ECFP4 notation that captures both the atom’s properties and the properties of neighboring atoms within a diameter of 4.
Then a hashing function is used to convert this identifier into a fixed-size bit vector [7].
A typical application of this representation is to find molecular similarity.
Another common representation of a molecule is as a Graph.
E.g., Adjacency Matrix. If we imagine molecules as graphs, then a node represents an atom, the edge represents the bond between the two atoms. Graphical representations can be more advantageous especially if spatial differences are important as it can preserve this data as opposed to a linear data model like SMILES.
Taller SMILES i RDKIT
Section titled “Taller SMILES i RDKIT”Entorn de treball
Section titled “Entorn de treball”Crea un projecte smiles
:
uv init smilescd smilesuv add rdkit
A continuació tens un exemple de codi que usa la biblioteca RDKit per a representar en 2D el Benzè.
Si descomentes l’última línia pots guardar en una imatge png aquesta representació (dins el directori data).
from rdkit import Chemfrom rdkit.Chem import AllChem, Draw
mol = Chem.MolFromSmiles('C1=CC=CC=C1')print(mol.GetNumAtoms())Draw.MolToImage(mol).show()
# Si vols guardar la mol·lecula en un fitxer png# img.save('./data/moldemo.png')
Els àtoms estan representats per l’abreviatura estàndard de cada element químic, entre claudàtors, com ara [Au]
per a l’or.
Els claudàtors es poden ometre per a “subconjunts orgànics” de B
, C
, N
, O
, P
, S
, F
, Cl
, Br
, i I
. Tots els altres elements han d’estar tancats entre claudàtors.
Si s’ometen els claudàtors, s’assumeix el nombre propi d’àtoms d’hidrogen implícits; per exemple, la cadena SMILES per a l’aigua és simplement O.
from rdkit import Chemfrom rdkit.Chem import AllChem, Draw
def draw_smile(smi): mol = Chem.MolFromSmiles(smi) Draw.MolToImage(mol).show()
draw_smile("O")
Si vols calcular la massa total del compost pots usar aquest codi:
compound_mass: int = 0for atom in mol.GetAtoms(): print(atom.GetSymbol()) print(atom.GetAtomicNum()) compound_mass += atom.GetMass() # print(atom.GetMass())
print(f"Massa total del compost: {compound_mass:.4f}")
L’aigua és H2O, per tant, pots ometre el H2 perquè està implicit.
Un àtom que porta una o diverses càrregues elèctriques s’ha de tancar entre claudàtors (sigui quin sigui), seguit del símbol H si està enllaçat a un o diversos àtoms d’hidrogen (aquests van seguits del seu nombre, excepte si només n’hi ha un: NH4 per a l’amoni), després del signe ’+’ per a una càrrega positiva, o del signe ’-’ per a una càrrega negativa.
El nombre de càrregues s’especifica després del signe (excepte si només n’hi ha una); tanmateix, és possible escriure el signe de la/les càrrega/es tantes vegades com càrregues té l’ió: en lloc de “Ti+4”, es pot escriure perfectament “Ti++++” (Titani IV, Ti4+). Així, l’anió hidròxid es representa per [OH-]
, el catió oxoni per [OH3+]
, i el catió cobalt III (Co3+) per [Co+3]
o per [Co+++]
.
Activitat.
Section titled “Activitat.”Per familiaritzar-te amb SMILES i RDKit prova el codi amb 2 compostos que et semblin interessants.
Crea una funció que permeti calcular la massa mol·lecular del compost.
Typescript
Section titled “Typescript”El contingut d'aquest lloc web té llicència CC BY-NC-ND 4.0.
©2022-2025 xtec.dev