Installation globale CulebrONT snakemake

Bonjour @julien
On viens de faire une nouvelle release. On a intégré les modules envs. On a simplifié pas mal la manière d'ajouter les dépendances sur CulebrONT. On a fait un seul singularity contentant l'ensemble de conda. Cela évite donc que les containers conda se buident n'importe où chaque fois que l'user lance CulebrONT et facilite l'install.
Pour DRMAA, je suis entrain de le tester, je te tiens au courant!
Julie

Bonjour @julieOrjuela ,

Merci pour ces nouvelles.
L'approche Singularity permettra effectivement de faciliter l'utilisation du workflow avec un côté "clé en main" très agréable. Nous sommes à ta disposition pour organiser le déploiement sur les clusters IFB !

A bientôt,

Julien

Salut @julien

J'ai du mal avec le drmaa, en fait pour culebrONT on a implementé un wrapper SLURM selon
cette doc de snakemake Executing Snakemake — Snakemake 4.5.1 documentation

" When executing a workflow on a cluster using the --cluster parameter, Snakemake creates a job script for each job to execute. This script is then invoked using the provided cluster submission command (e.g. qsub). Sometimes you want to provide a custom wrapper for the cluster submission command that decides about additional parameters. As this might be based on properties of the job, Snakemake stores the job properties (e.g. rule name, threads, input files, params etc.) as JSON inside the job script. For convenience, there exists a parser function snakemake.utils.read_job_properties that can be used to access the properties. The following shows an example job submission wrapper: "

#!python
import os
import sys

from snakemake.utils import read_job_properties

jobscript = sys.argv[1]
job_properties = read_job_properties(jobscript)

# do something useful with the threads
threads = job_properties[threads]

# access property defined in the cluster configuration file (Snakemake >=3.6.0)
job_properties["cluster"]["time"]

#on envoie au système le nouveau jobscript avec les ressources qu'on a récupéré dans le cluster_config
os.system("qsub -t {threads} {script}".format(threads=threads, script=jobscript))

Dans la commande que tu as posté plus haut, on remplace le --cluster par --drmaa et on donne les paramètres apres à drmaa tels que {resources.memory} etc

snakemake --default-resources cpus=1 memory=100 --drmaa "--cpus-per-task={resources.cpus} --mem={resources.memory} -J {name} --output=logs/cluster/{rule}.{wildcards}.out --error=logs/cluster/{rule}.{wildcards}.err" --jobs=100 --use-envmodules [...]

Mon problèmes es que je ne sais pas comment passer les {resources.cpus} etc à drmaa...
cette variable ressources tu la récupères d'ou?
Je ne sais pas si je suis claire (c'est la fin de la journée) :sleepy:

Peut être que tu auras de exemples avec d'autres pipeline de la communauté :grinning:

Merci
Julie

Bonjour, Je reviens vers vous pour le déploiement de CulebrONT sur l'IFB via un module load.
Nous avons changer pour les Modules load avec snakemake.
du coup il me faudrai les outils suivants dans leur dernière version:

  • WEESAM
  • MAUVE
  • SHASTA
  • MINIPOLISH
  • SMARTDENOVO
  • MINIASM
  • RACON
  • NANOPOLISH

Merci d'avance

Hello Julien et l’équipe,

J'imagine que vous êtes débordés!

Nous avons récemment fait une release de CulebrONT. Nous avions réussi à faire les profiles et nous avons déjà testé ce profiles sur IFB. Est-ce qu'on peut envisager maintenait une install global chez vous?. Nous sommes disponibles pour vous aider, nous avons mis la documentation à jour à fin de faciliter la démarche.

Merci pour ton retour! à bientôt! :trophy:

Julie

Bonjour Julie,
Désolé pour ce retour tardif.
Comment peut-on reprendre les choses pour CulebrONT afin de le rendre dispo facilement sur le cluster.
Pendant l'été, mon collègue David a installé l'ensemble des dépendances du workflow sous la forme de module distincts (Installation SOFT pour CulebrONT).

Est-ce que tu penses qu'on pourrait faire mieux et proposer CulebrONT directement sous la forme d'un module ?

A bientôt,

Julien

Salut Julien
Merci pour ton message, on a vu que les modules sont disponibles! c'est cool.
Oui, on peut faire un module pour CulebrONT, on a mis a disposition un exemple https://github.com/SouthGreenPlatform/CulebrONT_pipeline/blob/master/gift_files/CulebrONT_envmodules
Est-ce que tu veut qu'on se zoom ? ou voulez vous essayer de l'nstaller en suivant la doc?
Merci!!
Julie

D'accord, je vois l'idée.
Est-ce que vous avez une package conda qui nous permettrait de déployer le pipeline en lui-même (ce qui se trouve dans /path/to/CulebrONT_pipeline) ?

Julien

non, on n'a pas de conda, le /path/to/CulebrONT_pipeline est celui du git clone.
On avait parlé de faire un conda pour faciliter l'install mais on ne sais pas trop faire des packages conda :pleading_face: on veut bien de l'aide des experts :innocent:

par contre, pour la génération du report, à fin d’éviter de demander l'install de toutes les dépendances de R on a fait un conteneur singularity. Cette image peut être ajouté dans un module load puis être ajouté dans la liste des modules loads de CulebrONT_envmodules ...

Si je comprend bien, dans cette image Singularity il y a toutes les dépendances (pas que les dépendances R).
Il ne manquerait que snakemake ainsi que le contenu du dépôt git et on aurait une image clé en main nan ?

en fait plus au moins,

  • Si tu lances culebront en mode use-envmodules il a besoin de la liste des outils que vous avez deja installé en mode load, ce qu'il manquerait c'est juste des dépendances R qui sont utilisés dans le report. Ces dependances sont dans le "Singularity.report.def" (ou deja buildés ici )
  • Si tu lances culebront en mode singularity on met a disposition 2 containers : 1 avec tous les soft (singularity.culebront.def), et un 2eme, le "Singularity.report.def".

en fait les dépendances de culebront, sont python3, snakemake, cookiecutter pour les profiles, singularity (si on est en --use-singularity)

je ne sais pas si je suis claire :S

Je vais essayer de partir de singularity.culebront.def pour déployer une version de CulebrONT clé en main sur le cluster.
Je te partage la MR dès que j'ai démarré !

Hello @julien,
Je viens aux nouvelles pour l'install de CulebrONT sur IFB, on a des utilisateurs impatients :sweat_smile:
On se fait une séance zoom pour l'installation?, on a déjà des instances locales qui marchent à l'IFB ... c'est peut être plus simple de faire cette installation global ensemble non? :crazy_face:
Merci
Julie et @sravel

Tu fais bien de me relancer oui !

J'ai pas mal de dispo la semaine prochaine. Ca peut être lundi matin, ou mardi toute la journée.

Grosso modo, j'ai l'impression que l'ensemble des dépendances pour culebront sont dispos sous la forme de modules sur le core cluster, du coup, j'en étais resté qu'il fallait surtout qu'on propose une doc claire sur comment utiliser Culebront sur le cluster.

Julien

Hello @julien !
Mardi 14h sera parfait.
Oui en effet, on pourra faire la doc aussi, mais on se dit que ça sera plus simple de faire comme même une installation global, après si l'user veut modifier les versions, il a juste a faire un module propre. On en discute mardi :slight_smile:
Julie et @sravel

Ok c'est noté.
Je t'envoie un lien visio en privé.

A mardi,

Julien

Hello Julien
Sébastien a testé et implémenté "click" sur CulebrONT et c'est top!! :crazy_face:
On peut maintenant faire par exemple "culebrONT install_cluster" ou culebrONT run_cluster
On va surement faire une v2 beta !
As-tu réussi à commencer le conda ?
On pourra t'ajouter à notre gitlab ou on a le depot dev de culebront si tu veux :slight_smile:
Julie, Aurore, Florian et Seb

2 « J'aime »

Je crois qu'on peut dire que vous avez fait le boulot, et pas qu'à moitié !

Grâce à vous, culebrONT est dispo sur le cluster : module load culebront :tada:

En grand bravo pour votre implication et votre travail pour proposer un packaging, un déploiement et une utilisation ultra simple de CulebrONT ! C'était un plaisir d'échanger avec vous.

Julien

2 « J'aime »

Merci à toute l’équipe IFB !! on a appris bcp grâce aux échanges avec vous :crazy_face:!!
Nous et plain d'autres utilisateurs allons pouvoir faire des super assemblages ONT sur l'IFB core grâce à la commande magique 'module load culebront' :trophy: qui cache pas mal des heures de boulot derrière jeje :sweat_smile:
Champagne and readthedocs :male_detective:

1 « J'aime »