Soucis d'upload sur Galaxy

Galaxy dans ses dernières versions [edit : post date de juillet (*)] semblent souvent poser des problèmes d'upload.

J'ai résolu le problème de mon côté en éditant le fichier universe_wsgi.ini / galaxy.ini

Il faut commenter "use_interactive" et mettre debug à False.

J'ai également mis database_engine_option_pool_size et database_engine_option_max_overflow à 20, mais je crois pas que cela change quoi que ce soit.

Il faut ensuite redémarrer galaxy.

(*) : pour l'upload, il vaut mieux mettre en place un serveur FTP galaxy http://wiki.galaxyproject.org/Admin/Config/Upload%20via%20FTP

Les fichiers XML de Galaxy

Il n'est pas forcément aisé de comprendre comment fonctionnent tous les fichiers de configuration XML des dernières versions stables de Galaxy.

Cet article a donc pour objectif de décrire de manière simplifiée à quoi servent et comment manipuler les principaux fichiers de configuration XML de Galaxy impliqués dans l'ajout de nouveaux outils (Version de Galaxy utilisée pour cet article: mars 2012).

Quelques points importants:

1) Les outils peuvent toujours être ajoutés à la main grâce au fichier tool_conf.xml.

2) Les outils peuvent aussi provenir d'un ou plusieurs Toolshed (Comme http://toolshed.g2.bx.psu.edu/ par exemple) et sont chargés dans Galaxy via le fichier shed_tool_conf.xml.

3) La liste des XML que votre instance Galaxy doit utiliser au démarrage est définie dans le fichier de configuration global universe_wsgi.ini situé a la racine du repertoire d'installation de Galaxy.

# Locally installed tools and tools installed from tool sheds tool_config_files = tool_conf.xml,shed_tool_conf.xml
4) Le nouveau fichier integrated_tool_panel.xml est un peu spécial car il n'est pas créé manuellement. De plus, la manière d'utiliser Galaxy diverge en fonction de sa présence/absence:

a) Si le fichier integrated_tool_panel.xml n'existe pas/plus:

Au démarrage, Galaxy va lire les autres fichiers XML et générer automatiquement le fichier integrated_tool_panel.xml.

Avec le tool_conf.xml suivant:

<toolbox>
    <section id="getext" name="Get Data" version="">
        <tool id="upload1" />
    </section>
    <label id="basic_tools" text="Basic Tools" version="" />
</toolbox>

et le shed_tool_conf.xml suivant:

<?xml version="1.0"?>
<toolbox tool_path="../shed_tools">
    <tool file="../shed_tools/gvk.bx.psu.edu/repos/test/column_maker/f06aa1bf1e8a/column_maker/column_maker.xml" guid="gvk.bx.psu.edu:9009/repos/test/column_maker/Add_a_column1/1.1.0">
        <tool_shed>gvk.bx.psu.edu:9009</tool_shed>
        <repository_name>column_maker</repository_name>
        <repository_owner>test</repository_owner>
        <installed_changeset_revision>f06aa1bf1e8a</installed_changeset_revision
        <id>gvk.bx.psu.edu:9009/repos/test/column_maker/Add_a_column1/1.1.0</id>
        <version>1.1.0</version>
    </tool>
</toolbox>

On obtiendra le integrated_tool_panel suivant:

<?xml version="1.0"?>
<toolbox>
    <section id="getext" name="Get Data" version="">
        <tool id="upload1" />
    </section>
    <label id="basic_tools" text="Basic Tools" version="" />
    <tool id="gvk.bx.psu.edu:9009/repos/test/column_maker/Add_a_column1/1.1.0" />
</toolbox>

b) Si le fichier integrated_tool_panel.xml existe déjà:

Au démarrage, Galaxy va lire les autres fichiers XML et mettre à jour le fichier integrated_tool_panel.xml.

Donc, si vous avez rajouté un outil via le fichier tool_conf.xml alors galaxy va le rajouter au fichier integrated_tool_panel.xml

Ce qu'il faut bien comprendre, c'est que si le fichier integrated_tool_panel.xml existe alors c'est lui qui va gouverner l'affichage des sections du tool panel (Barre de gauche dans Galaxy).

Ainsi, si vous modifiez la position d'un label dans le fichier tool_conf.xml, ce changement ne sera pas répercuté (ou pas correctement) sur le menu gauche de galaxy.

5) Le fichier migrated_tools_conf.xml est utilisé pour les outils qui ont un jour appartenu à la distribution galaxy et ont par la suite été déportés vers le toolshed principal (Package EMBOSS par exemple).

 

FAQ:

Comment ajouter un outils à votre instance galaxy ?

Comme d'habitude: en rajoutant une ligne dans la section de votre choix (ou une nouvelle) dans le fichier tool_conf.xml.

Vous pouvez aussi récupérer un outils dans l'un des toolshed existant.

Le fichier integrated_tool_panel sera automatiquement mis à jour au prochain démarrage de Galaxy (ou créé si il n'existe pas).

Comment changer l'ordre des sections et labels en fonction de la présence du fichier integrated_tool_panel (ou de son absence) ?

Si le fichier integrated_tool_panel existe, c'est lui qu'il faut éditer pour cette modification.

Si il n'existe pas encore alors c'est le fichier tool_conf qu'il faut éditer.

Est t'il possible de modifier l'ordre des sections et labels sans jamais éditer le fichier integrated_tool_panel ?

Oui, mais de manière brutale.

Si vous souhaitez n'avoir à éditer que le fichier tool_conf.xml (que ce soit pour ajouter un outils ou changer l'ordre des labels), vous pouvez supprimer le fichier integrated_tool_panel, éditer votre fichier tool_conf.xml et redémarrer galaxy.

Le fichier integrated_tool_panel sera automatiquement recréé.

Voila, j'espère avoir été clair.

Merci de me dire, via les commentaires, si vous souhaitez que je modifie/complète cet article :)

Ecrire un wrapper pour galaxy

"Le wrapper est un programme qui va envelopper la réalisation d'un programme différent permettant son aménagement dans un environnement spécifique."

En résumé un wrapper est un "adaptateur". Il va permettre à Galaxy de savoir comment lancer un programme et comment en récupérer les résultats.

En pratique, on va décrire dans un fichier XML quel programme on veut lancer, et quels en sont les entrées, sorties et paramètres ainsi que leurs formats respectifs.

Une description complète de toutes les balises est disponible sur le wiki de galaxy</a>. De plus l'université de Leiden propose un outils web pour générer automatiquement le fichier XML en remplissant un simple formulaire.

exemple : getorf.xml

<tool id="getorf" name="getorf" version="1.3">
    <description>- Extract ORF -</description>

    <requirements>
        <requirement type="binary">getorf</requirement>
    </requirements>

    <command interpreter="perl">
        getorf_wrapper.pl -fasta $fasta_file -out getORF_output -code $code -min $minsize -max $maxsize
    </command>

    <inputs>
        <param name="fasta_file" type="data" label="Input Fasta file (Contigs)" help="Requested file type: fasta" format="fasta" />

        <param name="code" type="select" label="Genetic code" help="">
            <option value="0" selected="true">Standard</option>
            <option value="1">Standard with alternative initiation codons</option>
            <option value="2">Vertebrate Mitochondrial</option>
            <option value="3">Yeast Mitochondrial</option>
            <option value="4">Mold, Protozoan, Coelenterate Mitochondrial and Mycoplasma/Spiroplasma</option>
        </param>

        <param name="minsize" type="integer" label="Minimum nucleotide size of ORF" help="Field type: positive integer" value="30" />
        <param name="maxsize" type="integer" label="Maximum nucleotide size of ORF" help="Field type: positive integer" value="1000000" />

    </inputs>

    <outputs>
        <data name="getORF_output" from_work_dir="getORF_output" label="ORF" format="fasta" ></data>
    </outputs>

    <help>
        You can use this module to extract Open Reading Frames (ORFs) from a set of input sequence in Fasta format.
    </help>
</tool>

La commande indiquée dans la balise sera celle appelée par galaxy en remplaçant les $param par les valeurs des paramètres qui auront été saisis dans galaxy. Si l'attribut "interpreteur" est renseigné, elle sera précédée par le nom de l'interpréteur indiqué.

Le fichier xml doit être placé dans le répertoire /galaxy-dist/tools/ puis l'outil doit être ajouté dans le menu de galaxy en éditant le fichier tools_conf dans galaxy-dist. Il suffit de rajouter une ligne pour le wrapper que l'on viens d'écrire.

<tool file="MBB_Tools/getorf.xml" />

Le nom qui apparaîtra dans le menu de galaxy est celui qui est indiqué dans l'attribut name de la balise du wrapper.