Singularity et Galaxy besoin d'aide pour déploiement d'un package

Bonjour

Avec des collègues nous avons un outil R que nous aimerions pouvoir déployer sur Galaxy (et W4M en particulier). Mais, pour éviter de passer par Bioconda et dépôt sur Main Toolshed nous souhaiterions passer par Singularity et n'y parvenons pas. Qui pourrait nous aider?
Peut-être @gildaslecorguille @dbenaben @abretaud ?

Merci d'avance
Sylvain et Yann

Salut
C'est un outil ou un script R ?
Même avec Singularity, il faut passer par le ToolShed pour le dépôt des wrappers, ou j'ai pas compris :thinking:

Hello,

Je n'ai pas de solution à proposer, par contre une retour d'expérience sur comment "singulariser" des outils en vue de leur installation sous Galaxy m'intéresse tout particulièrement.

Une idée pour une formation IFB ?!

Bonne journée

Maria

Hello @gildaslecorguille,

Pour le moment c'est un package R (enfin plusieurs en faite) mais qui ont des dépendances assez compliqués à installer. Nous avons déjà une container singularity qui tourne avec toutes les dépendances et comme Galaxy peux gérer des outils sous singularity, les questions sont les suivantes :

  • est-ce que l'instance galaxy/W4M de l'IFB supporte les tools basés sur une image singularity (
    container type="singularity") et si oui, comment ça fonctionne ? ^^
  • est-ce que tu aurais des pistes pour tester localement un tel outils ? j'utilise une image docker avec planemo mais je n'ai pas trouvé comment la rendre compatible avec les images singularity (est-ce qu'il faut construire l'image avant .sif ou juste fournir le fichier .def.. bref, je suis un peu perdu.

Merci ++

Yann et Sylvain

Oui, usegalaxy.fr peut gérer les dépendences à base d'image singularity.
@tchaussepied Tu peux prendre le relais sur le comment :stuck_out_tongue:

Je n'ai jamais tester planemo avec une dependance singularity, désolé

Bonjour
voici un petit tuto pour installer et paramétrer un outil qui utilise une image singularity sur usegalaxy.fr

1 - Pour installer un outil provenant du Tool Shed sur Galaxy, vous devez faire une merge request puis vous rendre dans le dossier suivant : files · master · Institut Français de Bioinformatique / usegalaxy.fr / tools · GitLab. À l'intérieur de ce dossier, vous trouverez un fichier .yml correspondant au type de l'outil que vous souhaitez installer (par exemple, si c'est un outil d'annotation, vous utiliserez le fichier annotation.yml).
Vous devez renseigner les informations suivantes dans ce fichier YAML :

  - name: <nom_de_l_outil>
    owner: <proprietaire_de_l_outil>
    tool_panel_section_id: <section_de_l_outil>

Remplacez nom_de_l_outil, proprietaire_de_l_outil, et section_de_l_outil par les valeurs spécifiques à votre outil
Ces informations sont disponibles sur le site https://toolshed.g2.bx.psu.edu/

2 - Pour paramétrer un outil basé sur une image Singularity, vous devez faire une deuxième merge request puis éditer le fichier production/files/dynamic_rules/tool_destinations.yaml · preprod · Institut Français de Bioinformatique / usegalaxy.fr / infrastructure · GitLab.
Dans ce fichier YAML, vous devez renseigner les paramètres suivants pour l'outil :

<tool_name>: 
  cores: <int>
  mem: <int>
  runner: slurm_singularity
  force_destination_id: True
  singularity_container_id_override: "docker://<docker-image>"

Remplacez tool_name, cores et mem. Et remplacez docker-image par l'identifiant de l'image Docker que vous souhaitez utiliser pour l'outil basé sur Singularity.

Thomas

1 « J'aime »

Hello @tchaussepied,

Merci pour cette réponse détaillée :slight_smile:.

De ce que je comprend, la procédure décrite ne permet pas d'utiliser directement une image singularity fournit par l'utilisateur mais plutôt de convertir une image docker (qui provient probablement de dockerhub ?) en image singularity pour lancer les calculs. Notre cas est différent :

  • Nous avons déjà une recette (.def) et une image singularity (.sif) qui fonctionne pour notre outils et nous voudrions l'utiliser tel quel dans usegalaxy sans avoir à la convertir en docker.

En fouillant dans tool_destinations.yaml, notre cas correspondrait plutôt à ça :

<tool_name>:
  cores: <int>
  mem: <int>
  runner: slurm_singularity
  force_destination_id: True
  singularity_container_id_override: "<path-to-sif>{TOOL_VERSION}.sif"

Ce qui pose une nouvelle question ^^ : contrairement à docker il n'y a pas de dépôt publique pour les images singularity. De ce fait, pour pouvoir utiliser directement l'image dans usegalaxy, où doit pointer le ci-dessus ? (un dépôt interne, un github ?). Et quid du fichier de recette (.def) associé, est-ce qu'il doit être référencé quelque part ?

Merci ++ pour les précisions.

Sylvain

Je pense que le plus propre pour que l'outil soit utilisable en clique-bouton sur usegalaxy.fr, c'est de mettre l'image sur dockerhub.
Galaxy va construire lui même l'image singularity (un équivalent de singularity build tool.sif docker://<docker-image>)

On peut aussi directement utiliser une image en local mais je ne sais pas si c'est une bonne pratique @gildaslecorguille ?

@tchaussepied
Pour construire une image sur le Core Cluster (and co.), nous passons par le repo Institut Français de Bioinformatique / Cluster / tools · GitLab

Merci pour vos réponses !

J'ai parcouru un peu le repo et ça m'a l'air de bien correspondre à nos besoins. Par contre il me manque quelques étapes ^^. Est-ce que vous auriez une procédure pour l'utilisation de ces images dans usegalaxy.fr ? Sinon je me propose d'en rédiger une pour ceux qui souhaiteraient faire ce genre de déploiement. Ci-dessous un proposition à compléter/corriger :

Pour déployer un outil sous singularity sur usegalaxy.fr W4M:

Prérequis

  • Un fichier de définition singularity .def valide qui dépend uniquement de ressources publiques accessibles.
  • Un fichier de configuration .xml pour l'outil galaxy correspondant incluant:
<requirements>
  <container type="singularity">
    # Quel type de lien ici pour que usegalaxy.fr y est accés ?
  </container>
</requirements>

Procédure

J'ai un doute pour l'étape ci-dessus puisque l'outil va demander en requirement l'image singularity qui ne sera disponible au final que sur usegalaxy.fr et pas sur une autre instance de galaxy. Le toolshed est censé pouvoir être déployé n'import où non ?