Dessins de molécules avec smiles2svg

Un script Python qui génère des images de molécules en format vectoriel (svg) et png, à partir de format SMILES. Le résultat est plus intéressant pour ses qualités esthétiques que pédagogiques.

Le format SMILES est une chaîne de caractères donnant la structure d’une molécule (souvent organique), et que des programmes peuvent interpréter pour représenter la formule (sans les hydrogènes !). Dans l’image finale, les hydrogènes seront également absents.

Si dans un moteur de recherche, vous tapez le nom de la molécule (de préférence en anglais) suivi de « SMILES », vous trouverez très vite la chaîne de caractères.
Exemple : « aspirin SMILES » donne : O=C(C)Oc1ccccc1C(=O)O. Extrait de la page Wikipedia sur l’aspirine :

Quelques pages web utiles pour rechercher une structure SMILES à partir du nom de la molécule, et de générer une image :

Le format svg est un format d’image vectoriel, c’est-à-dire sans perte de qualité (pixelisation).
Le logiciel Inkscape, gratuit et multi-plateforme, est le logiciel le plus connu manipulant des fichiers svg. De plus, il permet d’exporter les fichiers en beaucoup d’autres formats (png, pdf…). Si vous ne l’avez pas déjà installé, dépêchez-vous de réparer cet oubli !

Le script Python s’utilise en ligne de commande. Python doit être installé, mais il n’y a pas à ouvrir le fichier .py avec un éditeur Python ni un logiciel de texte brut.

Il requiert les modules Python suivants, qu’il faut avoir installés : rdkit, cairosvg, svgwrite.

1)Télécharger le script « smiles2svg.py » sur la page de son auteur Iñigo Iribarren, sur la plate-forme Github :
https://github.com/iribirii/smiles2svg/

Je précise de suite que je ne comprends pas grand chose à ce script, ce qui ne m’empêche pas de m’en servir ! J’ai quand même pu corriger deux erreurs (voir ci-dessous). Voici mon script modifié :

2)Le fichier .py téléchargé doit pouvoir être exécuté comme un programme, en ligne de commande. Sur Linux : cliquer sur les propriétés du fichier, et cocher la case « autoriser l’exécution du fichier comme un programme ».

3)Ouvrir un terminal de commande dans le dossier où se trouve le fichier.Voici un premier exemple de commande à exécuter dans le terminal, avec la formule de la caféine :

smiles2svg.py -s 'Cn1cnc2n(C)c(=O)n(C)c(=O)c12'

Selon votre installation, il peut être nécessaire de faire précéder la commande par

python

L’image svg produite donne ceci :

L’option

-s

indique au programme qu’on fournit à la suite la chaîne de caractères smiles de la molécule (entre apostrophes).
Cette commande crée un fichier svg dans le même dossier, son nom est la chaîne smiles de la molécule.

Ce script propose quelques options qu’il est utile de connaître :

la commande suivante demande l’aide (h) (le manuel), du script :

smiles2svg.py -h

en faisant apparaître dans le terminal les différentes options possibles.

L’option

--name

permet de passer en argument un nom pour le fichier .png (pas pour le svg, dont le nom par défaut est la chaîne smiles). Par exemple :

smiles2svg.py -s 'c1ccccc1' --png --name 'benzene'

À l’heure où je rédige ce tutoriel, cette option était prévue dans le script mais il fallait modifier le modifier un peu pour qu’elle soit prise en compte (c’est fait dans mon script modifié).

L’option

--font

suivie du nom d’une police installée permet de choisir la police de caractère pour les symboles (par défaut : Calibri).

L’option

--bond_color

suivie d’un nom de couleur permet de choisi la couleur des liaisons.

smiles2svg.py -s 'Cn1cnc2n(C)c(=O)n(C)c(=O)c12' --png --bond_color violet

L’option

--color

suivie d’un nom de couleur permet de choisir une couleur unique pour tous les atomes et liaisons.

smiles2svg.py -s 'Cn1cnc2n(C)c(=O)n(C)c(=O)c12' --png --color green

Cette option peut être intéressante à combiner avec la suivante, qui propose 3 styles différents :

--style

suivie de

names_all

affiche les symboles des éléments.

smiles2svg.py -s 'Cn1cnc2n(C)c(=O)n(C)c(=O)c12' --png --color blue --style names_all

Le style

names_hetero

n’affiche les éléments que pour les hétéroatomes.

L’option

--png_width

suivie d’une valeur permet de passer en paramètre le nombre de pixels en largeur, pour l’image png produite. À l’heure actuelle, la valeur passée en option n’est pas prise en compte, du fait d’une petite erreur dans le script. C’est corrigé dans mon script modifié.

L’option

-f

suivie d’un nom de fichier .txt permet de générer une série d’images de plusieurs molécules à la volée, le fichier .txt contenant une chaîne smiles par ligne. La page Github de l’auteur donne un exemple de fichier.

Ajout du 27 août :

Le script a été mis à jour. Il est maintenant possible d’ajouter les atomes d’hydrogène, avec l’option

--add_hydrogens

Exemple de code :

smiles2svg.py -s 'O=C(O)CC(N)C(=O)O' --png --name 'aspartic' --style names_hetero --add_hydrogens
L’acide aspartique avec ses hydrogènes.

Be First to Comment

Laisser un commentaire