Archive for September, 2008

Python, “splits” amb expresions regulars

Avui he descobert un mòdul de Python amb una funció molt i molt interessant re.split. Segurament és una xorrada, però és ben útil. Per què? per que separa elements d’una cadena fent ús de diferents patrons. La funció que jo emprava fins al moment, split, és útil quan per separar una cadena hi ha només un element comú.

Un exemple ben clar: una molècula. Tinc la cadena següent: C-C-N-C-O. Per separar els diferents àtoms és ben senzill, simplement cal fer un split indicant que el separador és el guionet -. La funció retorna un array.

molecule = ‘C-C-N-C-O’
atoms_array = molecule.split(’-',”)

Ara, imaginem una molècula on, a banda dels enllaços senzills (-) en tenim de dobles i triples (= i #, respectivament i en notació SMILE). La cadena exemple seria: C#C-N-C=O. Aquí, els marcadors que separen els diferents àtoms no segueixen un únic patró i poden ser -, = i #. La funció anterior no ens serveix. Aquí és on entra en joc la funció que he comentat:

import re
molecule = ‘C#C-N-C=O’
atoms_array = re.split(’[\-\=\#]‘,molecule)

El patró, aquí \-\=\#, pot ser divers: símbols, lletres, números, qualsevol dígit número enter,… En fi, per mi m’és molt còmode :-)

SMILES (II). Uns quants exemples

L’SMILE més senzill és el metà, representat per una simple C. El segueix l’età (CC) el propà (CCC) i, així, successivament. Molècules més complexes, com ara el l’acetat de metil (CC(=O)OC) ja introdueixen dobles enllaços (=) i cadenes laterals (es posen entre parèntesis.

Cada molècula té el seu SMILE únic i pot ser més o menys senzill representar-lo. Buscant alguns exemples per fer proves (i no trencar-me les banyes fent els SMILES) he trobat una web prou interessant ja que recull un fotimer d’exemples per diferents tipus de molècules. Ho podeu trobar aquí.

SMILES

SMILES, de l’anglès Simplified Molecular Input Line Entry Specification, és una notació per descriure, de manera única, l’estructura d’una molècula fent servir una simple cadena de caràcters alfanumèrics en format ASCII. Aquesta manera d’anomenar les molècules, va néixer als anys vuitanta de la mà de n’Arthur Weininger (qui va desenvolupar diferents programes i algoritmes per manejar-les).

Aquesta notació té un seguit de coses positives que la fan interessant. És un “llenguatge” fàcil d’entendre tant per ordinadors com per persones. És un nom “únic”, és a dir, és una manera universal i única d’anomenar una molècula. Requereix poc espai d’emmagatzematge en sistemes informàtics. Com a principal pega és que si bé és relativament senzill transformar un SMILE a coordenades en dues dimensions (2D), obtenir quelcom en tres dimensions ja és molt més complicat.

Fa poc he descobert aquesta nomenclatura i m’hi estic mirant d’acostumar i entendre ja que és la manera amb que remenaré les molècules durant el post-doc.