Conda, le meilleur ami du bioinformaticien
Conda est un package manager écrit en python, comme pypi. Mais contrairement à celui-ci, il permet d'installer des programmes écrits dans d'autres langages. Notamment vos outils bioinformatiques préférés par l’intermédiaire du dépôt bioconda. C'est-à-dire que tous vos outils, que ce soit samtools, bwa, bowtie, trimmomatic, fastqc et j'en passe, sont disponibles et mis à jour par l’intermédiaire de conda.
Par ailleurs, conda permet l'utilisation d’environnement virtuel à l'instar de virtualenv (que les utilisateurs de python connaissent bien), vous évitant tous problèmes de dépendances. C'est donc un outil 2 en 1, que nous vous proposons d'explorer dans cet article.
Installation de miniconda
Ne cherchez pas à installer conda sur votre système en tant que root pour le distribuer à tous vos utilisateurs. Conda s'installe et s'utilise en simple utilisateur. C'est un avantage qui évite de dépendre du sysadmin. La méthode la plus simple pour débuter est d'installer Miniconda en téléchargeant le script d'installation disponible pour GNU/Linux, Windows et Mac. Sur Ubuntu 64 bits :
wget https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh
chmod +x Miniconda3-latest-Linux-x86_64.sh
./Miniconda3-latest-Linux-x86_64.sh
Suivez les instructions et assurez-vous de bien avoir votre PATH modifié afin de pouvoir exécuter conda depuis votre shell.
echo $PATH
conda --version
Ajouter les dépôts bioconda
Pour ajouter les channels (dépôts) de bioconda :
conda config --add channels conda-forge
conda config --add channels defaults
conda config --add channels r
conda config --add channels bioconda
Utilisation
Installer une application
L'installation d'une application se fait de manière très simple.
conda install samtools
samtools --version
Pour désinstaller une application :
conda uninstall samtools
Enfin, si vous voulez chercher un package disponible :
conda search bedtools
Les environnements
Gestion de vos environnements
Les environnements sont une façon simple d'isoler votre projet avec toutes ses dépendances. Vous pouvez créer autant d’environnements que vous le désirez, contenant chacun leurs applications et leurs libraires. Pour créer un environnement :
conda create --name mon_environnement
vous pouvez alors activer l’environnement et installer des packages :
source activate mon_environnement
conda install samtools bedtools bwa bowtie2
Pour désactiver votre environnement :
deactivate
Pour lister les environnements disponibles :
conda env list
Enfin pour supprimer un environnement :
conda env remove my_environnement
Partager vos environnements
L'avantage des environnements, c'est de pouvoir les partager avec un autre utilisateur, sans que celui-ci se casse la tête à installer vos dépendances. Activer votre environnement et utiliser la commande export :
source activate my_environement
conda env export > my_environment.yml
Pour créer un nouvel environnement à partir de my_environnement.yml :
conda env create -n new_environnement -f my_environnement.yml
Créer votre package
Le système de création de package dans conda est relativement simple par rapport aux autres. On ne le fait pas en claquant des doigts mais ça reste plus facile de voir un paquet ajouté au dépôt bioconda que dans les dépôts d'une distribution GNU/Linux. Pour créer un paquet vous devez installer le paquet conda-build et créer un dossier avec la structure suivante:
nom_du_paquet
├── build.sh
└── meta.yaml
- meta.yaml contient toutes les informations sur votre paquet, son nom, où sont les sources (dépôt git, svn, archive tar), ses dépendances (de construction et d'installation)
- build.sh toutes les instructions pour compiler et installer votre package
Le dossier peut aussi contenir un fichier bld.bat pour la compilation et l'installation sur le système d'exploitation Windows.
Pour tester la construction et l'installation de votre package, exécutez la commande suivante :
conda build nom_du_paquet
conda install --use-local nom_du_paquet
Il ne vous reste plus qu'à intégrer votre paquet à bioconda. Pour cela vous devez forker le dépôt bioconda-recipes puis déplacer votre package dans l'arborescence et enfin créer un pull request.
Pour des informations plus détaillées sur la création de package pour conda je vous invite a lire la documentation de conda.Conclusion
Conda semble être une bonne alternative aux containers (Docker, LXD) ou encore à virtualenv afin de rendre vos pipelines portables. La présence du dépôt bioconda, spécialisé pour la bioinformatique en fait tout le charme. À ce jour il y a plus de 1500 applications et la page github compte 194 contributeurs. Pour ma part, j'ai retrouvé tous mes outils favoris. Alors essayez-le et n’hésitez pas à lâcher un commentaire sur vos retours.
Gros remercient et plein de bisous pour nos relecteur : Ludovic, Aurélien, Lins`
Laisser un commentaire