Erreur snakemake, conda et singularity

Bonjour à tous,

Je rencontre un petit soucis, je ne suis pas capable d'utiliser singularity via mon workflow snakemake.
Je m'explique, j'ai pour habitude d'avoir soit un environnement conda soit une image singularity par règle dans mon workflow snakemake. Mais voilà je me retrouve face à une erreur bizarre.

Description de ce que je fais:

#charge le module snakemake
$ module load snakemake/5.3.0

#ma cmd snakemake qui me permet de voir les job à réaliser sans les exécuter
$ snakemake -s scripts/create_windows_interest_and_count.smk --configfile metadata/config_chip_Abda_CWIAC_ifb-core.yaml --cluster-config metadata/cluster.yaml --cluster "sbatch -p {cluster.partition}" -npkr

Jusque là pas de soucis

#ma cmd snakemake qui me permet d'exécuter les job via singularity
$ snakemake -s scripts/create_windows_interest_and_count.smk --configfile metadata/config_chip_Abda_CWIAC_ifb-core.yaml --use-singularity --cluster-config metadata/cluster.yaml --cluster "sbatch -p {cluster.partition}" -npkr

Building DAG of jobs...
Traceback (most recent call last):
File "/shared/mfs/data/software/miniconda/envs/snakemake-5.3.0/lib/python3.6/site-packages/snakemake/init.py", line 544, in snakemake
export_cwl=export_cwl)
File "/shared/mfs/data/software/miniconda/envs/snakemake-5.3.0/lib/python3.6/site-packages/snakemake/workflow.py", line 566, in execute
quiet=list_conda_envs)
File "/shared/mfs/data/software/miniconda/envs/snakemake-5.3.0/lib/python3.6/site-packages/snakemake/dag.py", line 201, in pull_singularity_imgs
img = singularity.Image(img_url, self)
File "/shared/mfs/data/software/miniconda/envs/snakemake-5.3.0/lib/python3.6/site-packages/snakemake/singularity.py", line 31, in init
if not LooseVersion(v) >= LooseVersion("2.4.1"):
File "/shared/mfs/data/software/miniconda/envs/snakemake-5.3.0/lib/python3.6/distutils/version.py", line 70, in ge
c = self._cmp(other)
File "/shared/mfs/data/software/miniconda/envs/snakemake-5.3.0/lib/python3.6/distutils/version.py", line 337, in _cmp
if self.version < other.version:
TypeError: '<' not supported between instances of 'str' and 'int'

Je comprends de cette erreur viens d'une comparaison de version mais bon ...
J'ai vérifier la compatibilité snakemake singularity avec snakemake 5.3.0 et singularity 3.0.3 il y a pas de soucis a priori.

Mes questions:

  1. Es ce que quelqu'un utilise snakemake sur le cluster, si oui comment gérez-vous les outils utiliser par vos workflow (snakefiles) via les mot clef conda et singularity de vos règles ? ou autres ?

  2. Es ce que quelqu'un a une idée pour m'aider ?

Merci d'avance,
Une bonne journée,

Lucie

A la vue du code de snakemake je pense que c'est un bug qui semble avoir été corrigé dans les versions plus récente : https://github.com/snakemake/snakemake/blob/master/snakemake/singularity.py#L39

Je vais déployer la version 5.7.4 de snakemake qui devrait régler le soucis.

La dernière version de snakemake est à présent disponible sur le cluster

module load snakemake/5.74

Je pense que cette version devrait corrigé le bug du test de la version de singularity.

1 « J'aime »

Je viens de tester ça et oui je ne rencontre plus le problème précédent.

Merci Julien.