Conda
Objectif¶
Utiliser conda
sur le cluster à l'aide de l'installation déjà existante.
Si vous utilisez votre propre installation de conda
, le support ne vous aidera pas, mais vous trouverez néanmoins de l'information utile ici.
Liens utiles¶
Description¶
Le logiciel conda
est un gestionnaire de paquets. Il est développé par Anaconda, Inc. qui fournit une distribution nommée Anaconda, mais il en existe d'autres comme miniconda ou miniforge.
Ce tutoriel ne concerne que la version de conda installée par genotoul-bioinfo. Néanmoins, si vous utilisez une version de conda que vous avez installé, ce tutoriel peut tout de même contenir des informations utiles.
Warning
Si vous avez installé votre propre version de conda
et vous voulez utiliser la version du cluster, elles peuvent interférer l'une sur l'autre. Controllez bien vos variables d'environnements (commande env
, fichier ~/.bashrc
, ...) et le fichier de configuration conda ~/.condarc
.
Support
Nous ne faisons de support que pour la version installée par genotoul-bioinfo, sans interférence avec une version de conda que vous auriez installée vous même.
Configurer conda
¶
Par défaut, conda
stocke les paquets et les environnements dans votre $HOME
. Si vous le laissez en l'état, vous allez rapidement dépasser votre quota et bloquer votre accès au cluster. Nous allons donc faire en sorte que ces fichiers soient stockés sur le work
.
Déplacer conda
sur le work
¶
On vérifie s'il existe pas déjà un dossier ~/.conda
.
ls -als ~/.conda
Si le dossier existe, on le déplace sur work:
mv ~/.conda ~/work/
Sinon, on le crée
mkdir ~/work/.conda
Ensuite on crée un lien symbolique pour maintenir la compatibilité.
ln -s ~/work/.conda ~/
Solutions alternatives (pour expert)
Nous n'apporterons aucun support à ces solutions. Vous devez savoir ce que vous faites.
Si vous êtes un·e utilisateur/trice avancé·e vous pouvez configurer ces chemins en modifiant vos fichiers de configuration utilisateur ou à l'aide des variables d'environnement.
Désactiver l'environnement base
¶
Par défaut, conda
active un environnement nommé base
par défaut. Il peut interférer avec les logiciels du système (par exemple, surcharger - c.-à-d. changer - le python par défaut). Nous recommandons de le désactiver par défaut. Cela n'empêchera pas l'utilisation des commandes conda pour gérer les environnements, ni d'accéder à l'environnement base
sur demande.
Il suffit d'exécuter les commandes suivantes pour cela.
module load devel/Miniconda/Miniconda3-init
conda config --set auto_activate_base true
conda deactivate
Utiliser conda
sur le cluster¶
Le programme conda
est installé dans un module. Nous cherchons donc les modules permettant son utilisation.
$ module search conda
------------------ /tools/modulefiles ------------------
devel/Miniconda/Miniconda3: loads the devel/Miniconda/Miniconda3 environment
devel/Miniconda/Miniconda3-init: loads the devel/Miniconda/Miniconda3-init environment
Nous chargeons le module Miniconda3-init
qui permet de sauter l'étape d'initialisation de conda
contrairement au module Miniconda3
$ module load devel/Miniconda/Miniconda3-init
Toute commande conda
nécessite d'avoir chargé ce module à priori.
Ajouter les canaux pour la bioinfo¶
Afin d'installer les paquets dédiés à la bioinfo, nous allons utiliser le canal bioconda qui se configure comme suit:
conda config --add channels defaults
conda config --add channels bioconda
conda config --add channels conda-forge
conda config --set channel_priority strict
Le dernier canal ajouté est prioritaire
Ces commandes modifient le fichier de configuration ~/.condarc
.
$ cat ~/.condarc
auto_activate_base: false
channels:
- conda-forge
- bioconda
- defaults
channel_priority: strict
Rechercher un paquet¶
Le plus simple est d'aller sur https://anaconda.org pour faire une recherche.
Il est aussi possible d'utiliser la commande suivante:
conda search pkg_name
Gérer les environnements¶
N'hésitez pas à consulter la documentation de conda.
Lister les environnements conda¶
conda env list
ou pour les plus anciens:
conda info --envs
Créer un environnement¶
Il existe plusieurs manières de créer un environnement.
Environnement de zéro¶
Si vous souhaiterez créer un environnement de zéro.
conda create -n <env_name> <pkg1> <pkg2>
ou
conda create -p env_path <pkg1> <pkg2>
Ces commandes diffèrent de la façon suivante:
-n
va écrire dans le dossierenvs
par défault de l'installation de conda, c'est à dire/home/<user>/.conda/envs
sur le cluster (/home/<user>/miniconda3/envs
si vous installez miniconda sur votre poste personnel avec la configuration par défaut)-p
va créer l'environnement au chemin donné:- utile pour installer et mutualiser un env dans un espace projet.
Fichier d'environnement¶
Si vous avez un fichier d'environnement <env_file.yml>
. Vous devez utiliser la commande conda env create
conda env create -f <env_file.yml>
Par défaut, l'environement est stocké ~/.conda/envs
et porte le nom défini dans le fichier <env_file.yml>
. Il est possible de changer le nom ou le chemin d'installation en ajoutant respectivement les options -n
ou -p
.
ressources: - https://docs.conda.io/projects/conda/en/latest/user-guide/tasks/manage-environments.html
Activer un environnement¶
conda activate <env>
Replacez <env>
par le nom de l'environnement s'il a été installé avec l'option -n
ou par son chemin (option -p
)
Exporter un env¶
Export normal¶
Export pour un papier¶
Supprimer un env¶
conda env remove -n <env_name>
conda env remove -p <env_path>
Alternative
Pour les plus anciens
conda remove -n <env_name> --all
Gestion des paquets¶
Installer des paquets¶
-
Dans l'environnement actif (après un
conda activate ...
)conda install <pkg1> <pkg2> ...
-
Dans un autre environnement
conda install -n <env_name> <pkg1> <pkg2> ...
L'option -n
peut être remplacée par l'option -p
.
Spécifier les canaux¶
Success
Cette option est également utilisable avec la commande conda create
conda install -n <env_name> -c <channel1> -c <channel2> <pkg1> <pkg2> ...
Exemple: Installer deseq2 venant du canal bioconda
et R (dépendance) venant du canal conda-forge
.
conda install -c conda-forge -c bioconda bioconductor-deseq2
Warning
La priorité décroît de gauche à droit: conda-forge
est prioritaire sur bioconda
si un paquet existe dans les deux canaux.
Spécifier une version particulière de paquet¶
Success
Ces contraintes de versions sont également utilisables avec la commande conda create
Il est possible d'utiliser les notations =
, ==
, !=
, <=
, <
, >=
et >
pour cibler des paquets. Par exemple:
-
pour installer une version 3.6.x de
R
conda install r-base=3.6
-
pour installer dernière version de python 2
conda install "python<3"
-
pour installer une version de
numpy
comprise entre les versions 1.2 (inclue) et 1.2.3 (exclue)conda install "pkg1>=1.2,<1.2.3"
Warning
Faites bien attention à utiliser des "
lorsque vous utilisez les caractères >
et <
.
Supprimer des paquets¶
Aide au dépanage¶
Diagnostic¶
conda info
Alternativement, on peut utiliser la commande conda config
qui est bien plus verbeuse.
conda config --show
check ~/.bashrc
and ~./condarc
content
La résolution des paquets est lente¶
Dans conda
, le solveur qui résoud les dépendances entre les paquets est très lent. La solution consiste à utiliser un solveur alternatif qui est plus rapide.
Utiliser mamba
¶
Il est possible d'utiliser mamba
, une alternative à conda
qui résoud les dépendances plus vite. Il suffit de remplacer la commande conda
par mamba
:
mamba install ...
Utiliser ponctuellement le solveur de mamba
avec conda
¶
Il est aussi possible d'indiquer ponctuellement à conda d'utiliser le solver de mamba
en utilisant l'option --solveur
(recommandé)
conda install --solver libmamba ...
ou en éditant la variable d'environnement CONDA_SOLVER
(non recommandé)
CONDA_SOLVER="libmamba" conda install ...
Utiliser définitivement le solveur de mamba
avec conda
¶
Il est possible de définir le solveur de mamba
comme solveur par défaut de conda
. Il suffit de faire une fois la commande suivante:
$ conda config --set solver libmamba
De vérifier qu'elle est bien appliquée,
-
Soit avec
conda config
$ conda config --show | grep solver ... solver: libmamba ...
-
Soit en regardant le fichier de config
$ cat ~/.condarc ... solver: libmamba
Il est aussi possible de revenir à l'ancien solveur
$ conda config --set solver classic
Conda init¶
-You need to run conda init
-> Vous avez chargé le module Miniconda3
au lieu du module Miniconda3-init
# >>> conda initialize >>>
# !! Contents within this block are managed by 'conda init' !!
__conda_setup="$('/usr/local/bioinfo/src/Miniconda/Miniconda3/bin/conda' 'shell.bash' 'hook' 2> /dev/null)"
if [ $? -eq 0 ]; then
eval "$__conda_setup"
else
if [ -f "/usr/local/bioinfo/src/Miniconda/Miniconda3/etc/profile.d/conda.sh" ]; then
. "/usr/local/bioinfo/src/Miniconda/Miniconda3/etc/profile.d/conda.sh"
else
export PATH="/usr/local/bioinfo/src/Miniconda/Miniconda3/bin:$PATH"
fi
fi
unset __conda_setup
# <<< conda initialize <<<
Activate conda dans un script¶
Normalement, le module Miniconda3-init
gère cela correctement, mais parfois le conda activate ne fonctionne pas dans les scripts
conda activate
in scripts https://pythonspeed.com/articles/activate-conda-dockerfile/
Alors plusieurs choses:
1- Le quota du home est trop limité pour recevoir des installations conda. Il faut déplacer le répertoire /home/<login> /.conda dans le work et faire un lien symbolique:
voir notre FAQ https://bioinfo.genotoul.fr/index.php/faq/software_faq/ -> Default directory for some software and /home overquota.
2- Pour installer un environnement
module load system/Miniconda3
conda env create -v --file path/environment.yml -n env-name
3- Pour charger cet environnement avec "conda activate", conda demande de faire un conda init. Ce qui crée un chargement automatique d'un environnement dans le fichier /home/<login>/.bashrc et ce à chaque connexion!
C'est embetant parce que cela crée par la suite beaucoup de conflits.
La bonne pratique à ce sujet peut être de faire ça: https://kb.iu.edu/d/axgp#conda-init
Sinon effacez ou commentez le contenu du fichier /home/<login>/.bashrc et pour charger votre environnement, utilisez "source activate " au lieu de "conda activate"
module load system/Miniconda3
source activate <votre env>
Marie-Stéphane Trotard
INRAE- Unité MIAT
24 Chemin de Borde Rouge - Auzeville
CS 52 627
31326 Castanet Tolosan cede
(absente le vendredi)