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 :
1 2 3 |
wget https ://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh<br> chmod +x Miniconda3-latest-Linux-x86_64.sh<br> ./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.
1 2 |
echo $PATH<br> conda –version |
Ajouter les dépôts bioconda
Pour ajouter les channels (dépôts) de bioconda :
1 2 3 4 |
conda config –add channels conda-forge<br> conda config –add channels defaults<br> conda config –add channels r<br> conda config –add channels bioconda |
Utilisation
Installer une application
L'installation d'une application se fait de manière très simple.
1 2 |
conda install samtools<br> samtools –version |
Pour désinstaller une application :
1 |
conda uninstall samtools |
Enfin, si vous voulez chercher un package disponible :
1 |
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 :
1 |
conda create –name mon_environnement |
vous pouvez alors activer l’environnement et installer des packages :
1 2 |
source activate mon_environnement<br> conda install samtools bedtools bwa bowtie2 |
Pour désactiver votre environnement :
1 |
deactivate |
Pour lister les environnements disponibles :
1 |
conda env list |
Enfin pour supprimer un environnement :
1 |
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 :
1 2 |
source activate my_environement<br> conda env export > ; my_environment.yml |
Pour créer un nouvel environnement à partir de my_environnement.yml :
1 |
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 :
1 2 3 |
[crayon-673f8cb57f834810207310 ]nom_du_paquet<br> ├── build.sh<br> └── meta.yaml<br> |
- 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 :
1 2 |
conda build nom_du_paquet<br> 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