TP Appli::Galaxy
Comment déployer rapidement un outil dans Galaxy
sans avoir à écrire du xml

Sebastien.Carrere@toulouse.i...
lipmutils::corelib::Appli
Qu'est-ce ?
Un module Perl de la « lipmutils » permettant de décrire un programme.
Pourquoi ?
- ...
Mise en place environnement
Création de l'arborescence
mkdir ­p monWrapper/bin/int
mkdir ­p monWrapper/lib
cd monWrapper
R...
Trame du Wrapper
#!/usr/bin/perl
use strict;
use FindBin;
#Si les corelib et lib ne sont pas dans le path perl
use lib "$F...
Construction de l'objet Appli
Constructeur Appli.pm
my $o_appli = New Appli(
                            ­general => %h_pr...
Construction de l'objet Appli
Constructeur Appli.pm
    my $o_appli = New Appli(
                            ­general => %...
Construction de l'objet Appli
Constructeur Appli.pm
    my $o_appli = New Appli(
                            ­general => %...
Construction de l'objet Appli
Code :https://gist.github.com/carrere/4c126ec2989dc956d5bf

Sebastien.Carrere@toulouse.inra....
Construction de l'objet ParamParser
MAIN:
{
    my $o_appli = &SetAppli();
    my $o_param = New ParamParser('APPLI', $o_a...
Contrôle des paramètres
Gestion de l'affichage des usages (Galaxy dans notre cas) suivi des Assertions

    if ($o_param­>...
Lancement du programme et post-process
Si dans le constructeur de Appli
- on a spécifié le programme wrappé dans « cmd »
-...
Code final :https://gist.github.com/carrere/4e02edef22cb82eba149

Reste à :
- copier le wrapper dans l'arborescence des ou...
Cas particuliers
Input Multiples :
→ utilisation de l'attribut card => '1,n'
UC : Wrapper cat unix :
https://gist.github.c...
Liens utiles
●

La lipmutils
–

●

Cette présentation
–

●

http://lipm-svn.toulouse.inra.fr

https://fr.slideshare.net/ca...
Prochain SlideShare
Chargement dans…5
×

Tpag appli-galaxy

237 vues

Publié le

0 commentaire
0 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

Aucun téléchargement
Vues
Nombre de vues
237
Sur SlideShare
0
Issues des intégrations
0
Intégrations
2
Actions
Partages
0
Téléchargements
3
Commentaires
0
J’aime
0
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive
  • {}
  • Tpag appli-galaxy

    1. 1. TP Appli::Galaxy Comment déployer rapidement un outil dans Galaxy sans avoir à écrire du xml Sebastien.Carrere@toulouse.inra.fr - AG CATI-BBRIC - 20131028
    2. 2. lipmutils::corelib::Appli Qu'est-ce ? Un module Perl de la « lipmutils » permettant de décrire un programme. Pourquoi ? - décrire une fois son programme - générer son usage dans divers formats galaxy || json || html || CLI || mobyle Quelles contraintes ? - Perl - Connaitres les types de données des divers formats (mobyle ≠ biomoby ≠ galaxy ≠ GetOptLong ≠ EDAM) Quel cas d'utilisation ? - un programme à ajouter dans galaxy - ce programme a une interface en ligne de commande - j'écris un wrapper Perl utilisant Appli pour générer son usage Galaxy Sebastien.Carrere@toulouse.inra.fr - AG CATI-BBRIC - 20131028
    3. 3. Mise en place environnement Création de l'arborescence mkdir ­p monWrapper/bin/int mkdir ­p monWrapper/lib cd monWrapper Récupération des librairies nécessaires de la boîte à outils « lipmutils » svn export http://lipm­svn.toulouse.inra.fr/svn/lipmutils/trunk/corelib svn export http://lipm­svn.toulouse.inra.fr/svn/lipmutils/trunk/lib lib/ext svn export http://lipm­svn.toulouse.inra.fr/svn/lipmutils/trunk/t Test des librairies cd t ./General.t ./ParamParser.t ./Appli.t Ecriture du wrapper cd ../bin/int vi monWrapper.pl Sebastien.Carrere@toulouse.inra.fr - AG CATI-BBRIC - 20131028
    4. 4. Trame du Wrapper #!/usr/bin/perl use strict; use FindBin; #Si les corelib et lib ne sont pas dans le path perl use lib "$FindBin::Bin/../../corelib"; use lib "$FindBin::Bin/../../lib/ext"; use ParamParser; use General; use Appli; use Runner; my $BIN = 'lipm_predotar.pl'; MAIN: { #Construction des objets Appli et ParamParser #Controle des parametres #Lancement du programme et postprocess } Sebastien.Carrere@toulouse.inra.fr - AG CATI-BBRIC - 20131028
    5. 5. Construction de l'objet Appli Constructeur Appli.pm my $o_appli = New Appli(                             ­general => %h_program_description,                             ­inputs  => %h_program_inputs,                             ­outputs => %h_program_outputs,                             ­params  => %h_program_parameters                             ); # ­general : Description générale du programme  # Facultatif (par défaut name et cmd sont ceux du wrapper) my %h_program_description =  ( 'name'  => 'le nom du programme(par défaut le nom du wrapper)',           'cmd'   => 'executable a lancer avec les paramètres fixes' (par défaut le wrapper),           'descr' => 'description du programme',             'authors' => 'adresses,emails,des,auteurs',           'doclink' => ['liste', 'urls', 'documentation] ) ; Sebastien.Carrere@toulouse.inra.fr - AG CATI-BBRIC - 20131028
    6. 6. Construction de l'objet Appli Constructeur Appli.pm     my $o_appli = New Appli(                             ­general => %h_program_description,                             ­inputs  => %h_program_inputs,                             ­outputs => %h_program_outputs,                             ­params  => %h_program_parameters                             ); # ­inputs/outputs: Description des entrées sorties du programme  my %h_program_inputs =  (   'paramNameA'  =>    { 'descr'       => 'description lisible du parametre', 'type'        => 'type de parametre au sens GetOptLong (Float, Integer, String, Boolean)',       'type_galaxy' => 'le type galaxy du contenu du fichier pointé par ce paramètre (*)'   },   'paramNameB'  => ... ) ; (*) http://wiki.galaxyproject.org/Learn/Datatypes + ceux spécifiques de votre instance Galaxy : https://bbric-pipelines.toulouse.inra.fr/galaxy/root?tool_id=GalaxyDataTypes, https://bbric-pipelines.toulouse.inra.fr/galaxy/u/sebastien-carrere/h/datatypes-20131023 TIP : Sélectionner le type de plus haut niveau pour assurer la compatibilité (ex : tabular permettra de manipuler les csv,xls,vcf) Sebastien.Carrere@toulouse.inra.fr - AG CATI-BBRIC - 20131028
    7. 7. Construction de l'objet Appli Constructeur Appli.pm     my $o_appli = New Appli(                             ­general => %h_program_description,                             ­inputs  => %h_program_inputs,                             ­outputs => %h_program_outputs,                             ­params  => %h_program_parameters                             ); # ­params: Description des paramètres optionnels du programme  my %h_program_parameters =  (   'paramNameA'  =>    { 'descr'       => 'description lisible du parametre', 'type'        => 'type de parametre au sens GetOptLong + Choice', 'min/max/default'   => 'valeurs min max et par defaut du parametre, 'enum' => liste des valeurs dans la cas d'un type Choice   },   'paramNameB'  => ... ) ; Sebastien.Carrere@toulouse.inra.fr - AG CATI-BBRIC - 20131028
    8. 8. Construction de l'objet Appli Code :https://gist.github.com/carrere/4c126ec2989dc956d5bf Sebastien.Carrere@toulouse.inra.fr - AG CATI-BBRIC - 20131028
    9. 9. Construction de l'objet ParamParser MAIN: {     my $o_appli = &SetAppli();     my $o_param = New ParamParser('APPLI', $o_appli); } sub SetAppli { […]     my $o_appli = New Appli(                             ­general => %h_program_description,                             ­inputs  => %h_program_inputs,                             ­outputs => %h_program_outputs,                             ­params  => %h_program_parameters                             ); } Sebastien.Carrere@toulouse.inra.fr - AG CATI-BBRIC - 20131028
    10. 10. Contrôle des paramètres Gestion de l'affichage des usages (Galaxy dans notre cas) suivi des Assertions     if ($o_param­>IsDefined('galaxy'))     {         print $o_appli­>GetGalaxyXml;         exit 0;     }     $o_param­>AssertFileExists('in') ;     $o_param­>AssertDefined('out') ; Sebastien.Carrere@toulouse.inra.fr - AG CATI-BBRIC - 20131028
    11. 11. Lancement du programme et post-process Si dans le constructeur de Appli - on a spécifié le programme wrappé dans « cmd » - les noms des parametres sont les mêmes que le programme wrappé Si le programme wrappé utilise GetOptLong pour son execution Et si ce programme n'écrit rien ni sur STDERR ni sur STDOUT Alors on a fini. Sinon il faut : - reconstruire la ligne de commande du programme wrappé - lancer l'exécution du programme en capturant les flux standards - renommer faire des liens symboliques si nécessaire     my $cmd =  $BIN       . ' ­­in='       . $o_param­>Get('in')       . ' ­­out='       . $o_param­>Get('out')       . ' ­­mit_minscore='       . $o_param­>Get('mit_minscore')       . ' ­­cp_minscore='       . $o_param­>Get('cp_minscore');     my $stdout = '>/tmp/' . $FindBin::Script . time . $$ . '.stdout';     my $stderr = '>/tmp/' . $FindBin::Script . time . $$ . '.stderr';     my ($status, $killed) = RunExt(         ­cmd    => $cmd,         ­stdout => $stdout,         ­stderr => $stderr,         ); Sebastien.Carrere@toulouse.inra.fr - AG CATI-BBRIC - 20131028
    12. 12. Code final :https://gist.github.com/carrere/4e02edef22cb82eba149 Reste à : - copier le wrapper dans l'arborescence des outils Galaxy scp monWrapper.pl galaxy­server:/path/to/galaxy/tools/ - générer le fichier XML dans le même répertoire: ./monWrapper.pl ­­galaxy > monWrapper.xml (on vérifie en même temps que les bin/lib soient accessibles à l'utilisateur galaxy) - redémarrer galaxy Sebastien.Carrere@toulouse.inra.fr - AG CATI-BBRIC - 20131028
    13. 13. Cas particuliers Input Multiples : → utilisation de l'attribut card => '1,n' UC : Wrapper cat unix : https://gist.github.com/carrere/9cb0680d72f11715e898 my %h_program_inputs =  (                            'infiles' =>  {                                         'descr' => 'Input files (one to many)',              'type' => 'String',              'type_galaxy' => 'txt', 'card' => '1,n'    } ); Sebastien.Carrere@toulouse.inra.fr - AG CATI-BBRIC - 20131028
    14. 14. Liens utiles ● La lipmutils – ● Cette présentation – ● http://lipm-svn.toulouse.inra.fr https://fr.slideshare.net/carrere/tpag-appligalaxy Code source: – DemoWrapper ● – https://gist.github.com/carrere/4e02edef22cb82eba149 DemoWrapperInputMultiples ● https://gist.github.com/carrere/9cb0680d72f11715e898 Sebastien.Carrere@toulouse.inra.fr - AG CATI-BBRIC - 20131028

    ×