Ce projet est réalisé dans le cadre de notre M2 Algorithmique et modélisation à l'interface des sciences (AMIS). L'objectif est de déterminer la similarité des molécules issues d'une base de données en comparant leur graphe de cycles. La comparaison des graphes utilise un calcul de similarité par sous-graphe induit commun maximum (MCIS) et une distance de Levenshtein.
Ce programme requiert d'utiliser la bibliothèque nauty, de Brendan McKay and Adolfo Piperno. Elle peut être téléchargée depuis la page web des auteurs (la version 2.8.8 a été utilisée).
Une fois la bibliothèque téléchargée, il faut lancer les commandes suivantes, à la racine du dossier contenant la bibliothèque (ie. le dossier nautyx_x_x) :
./configure
make
Puis il faut déplacer les fichiers nauty.h
et nauty.a
dans le dossier de ce dépôt nommé nauty.
Pour compiler le projet, utilisez :
make
Pour charger les molécules depuis la base de données ChEBI :
make data
Pour lancer la comparaison entre toutes les molécules de la base de données, entrez :
./similarite
Les options suivantes sont également disponibles :
./similarite [-a chebi_id1 (défaut : vide)] [-b chebi_id2 (défaut : vide)] [-n nb_fichiers (défaut : tous)] [-g (défaut : non)] [-h (usage)]
Les options -a
et -b
servent à renseigner l'id des deux molécules à comparer. Si -a
est utilisé seul, la molécule sera comparée à toutes les autres.
L'option -n
permet de limiter le nombre de comparaisons, et peut-être utilisé avec -a
.
L'option -g
permet d'obtenir des fichiers DOT pour visualiser les graphes de cycles des molécules, lorsque combinée à -a
et -b
. Pour convertir les fichiers en image au format PNG, entrez la commande make png
. Vous pouvez également les convertir en image vectorielle avec make svg
.
Les résultats sont présentés dans le fichier matRes.csv lorsque la comparaison est lancée sur plusieurs molécules. Quand seulement deux molécules sont comparées, le score de similarité s'affiche dans la console.
Avec les options -a
, -b
et -g
, les fichiers DOT des graphes moléculaires réduits, des graphes de cycles et du graphe produit sont générés et stockés dans le dossier graphs/.
Pour supprimer l'exécutable, les fichiers objets et les fichiers DOT :
make clean
Pour supprimer en plus les fichiers de molécules et le fichier de résultats :
make mrproper
Ce projet suit une structure de dossier organisée pour une meilleure gestion et maintenabilité. Voici une explication des différents dossiers :
-
bin/ : contient l'exécutable généré après la compilation du projet.
-
include/ : contient les fichiers d'en-tête (.h) du programme C. Ces fichiers définissent les interfaces des fonctions et structures utilisées dans le projet.
-
nauty/ : l'emplacement pour les fichiers de la bibliothèque nauty, qui doit être pré-installée manuellement.
-
obj/ : contient les fichiers objets (.o) générés lors de la compilation.
-
data/ : contient les fichiers des molécules chargées depuis la base de données.
-
src/ : contient les fichiers source (.c) du programme C.
-
Makefile : Le fichier de configuration pour la construction du projet.
-
chebi_molecule_loader.py : Script Python pour récupérer les informations des molécules contenues dans le fichier ChEBI_lite_3star.sdf sur le site de la base de données ChEBI. Ces informations sont ensuite stockées dans des fichiers individuels dans le dossier data/.
👤 Noé DEMANGE : Github: @NoeDemange
👤 Ronan DOCHERTY : Github: @Zatsky
👤 Anne FERNET : Github: @uvsq21915170
👤 Victor NESSI : Github: @nectorv