Tpag appli-galaxy

Post on 07-Aug-2015

89 views 0 download

Transcript of Tpag appli-galaxy

  1. 1. TP Appli::Galaxy Comment dployer rapidement un outil dans Galaxy sans avoir crire du xmlSebastien.Carrere@toulouse.inra.fr - AG CATI-BBRIC - 20131028
  2. 2. lipmutils::corelib::Appli Qu'est-ce ? Un module Perl de la lipmutils permettant de dcrire un programme. Pourquoi ? - dcrire une fois son programme - gnrer son usage dans divers formats galaxy || json || html || CLI || mobyle Quelles contraintes ? - Perl - Connaitres les types de donnes 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 gnrer son usage Galaxy Sebastien.Carrere@toulouse.inra.fr - AG CATI-BBRIC - 20131028
  3. 3. Mise en place environnement Cration de l'arborescence mkdirpmonWrapper/bin/int mkdirpmonWrapper/lib cdmonWrapper Rcupration des librairies ncessaires de la bote outils lipmutils svnexporthttp://lipmsvn.toulouse.inra.fr/svn/lipmutils/trunk/corelib svnexporthttp://lipmsvn.toulouse.inra.fr/svn/lipmutils/trunk/liblib/ext svnexporthttp://lipmsvn.toulouse.inra.fr/svn/lipmutils/trunk/t Test des librairies cdt ./General.t ./ParamParser.t ./Appli.t Ecriture du wrapper cd../bin/int vimonWrapper.plSebastien.Carrere@toulouse.inra.fr - AG CATI-BBRIC - 20131028
  4. 4. Trame du Wrapper #!/usr/bin/perl usestrict; useFindBin; #Silescorelibetlibnesontpasdanslepathperl uselib"$FindBin::Bin/../../corelib"; uselib"$FindBin::Bin/../../lib/ext"; useParamParser; useGeneral; useAppli; useRunner; my$BIN='lipm_predotar.pl'; MAIN: { #ConstructiondesobjetsApplietParamParser #Controledesparametres #Lancementduprogrammeetpostprocess } Sebastien.Carrere@toulouse.inra.fr - AG CATI-BBRIC - 20131028
  5. 5. Construction de l'objet Appli Constructeur Appli.pm my$o_appli=NewAppli( general=>%h_program_description, inputs=>%h_program_inputs, outputs=>%h_program_outputs, params=>%h_program_parameters );#general:Descriptiongnraleduprogramme #Facultatif(pardfautnameetcmdsontceuxduwrapper) my%h_program_description= ( 'name'=>'lenomduprogramme(pardfautlenomduwrapper)', 'cmd'=>'executablealanceraveclesparamtresfixes'(pardfautlewrapper), 'descr'=>'descriptionduprogramme', '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 ConstructeurAppli.pm my$o_appli=NewAppli( general=>%h_program_description, inputs=>%h_program_inputs, outputs=>%h_program_outputs, params=>%h_program_parameters ); #inputs/outputs:Descriptiondesentressortiesduprogramme my%h_program_inputs= ( 'paramNameA'=> { 'descr'=>'descriptionlisibleduparametre', 'type'=>'typedeparametreausensGetOptLong(Float,Integer,String,Boolean)', 'type_galaxy'=>'letypegalaxyducontenudufichierpointparceparamtre(*)' }, 'paramNameB'=>... ); (*) http://wiki.galaxyproject.org/Learn/Datatypes + ceux spcifiques 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 : Slectionner 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 ConstructeurAppli.pm my$o_appli=NewAppli( general=>%h_program_description, inputs=>%h_program_inputs, outputs=>%h_program_outputs, params=>%h_program_parameters );#params:Descriptiondesparamtresoptionnelsduprogramme my%h_program_parameters= ( 'paramNameA'=> { 'descr'=>'descriptionlisibleduparametre', 'type'=>'typedeparametreausensGetOptLong+Choice', 'min/max/default'=>'valeursminmaxetpardefautduparametre, 'enum'=>listedesvaleursdanslacasd'untypeChoice }, 'paramNameB'=>... );Sebastien.Carrere@toulouse.inra.fr - AG CATI-BBRIC - 20131028
  8. 8. Construction de l'objet Appli Code :https://gist.github.com/carrere/4c126ec2989dc956d5bfSebastien.Carrere@toulouse.inra.fr - AG CATI-BBRIC - 20131028
  9. 9. Construction de l'objet ParamParser MAIN: { my$o_appli=&SetAppli(); my$o_param=NewParamParser('APPLI',$o_appli); } subSetAppli { [] my$o_appli=NewAppli( 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. Contrle des paramtres Gestion de l'affichage des usages (Galaxy dans notre cas) suivi des Assertionsif($o_param>IsDefined('galaxy')) { print$o_appli>GetGalaxyXml; exit0; } $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 spcifi le programme wrapp dans cmd - les noms des parametres sont les mmes 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'excution du programme en capturant les flux standards - renommer faire des liens symboliques si ncessaire 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/4e02edef22cb82eba149Reste : - copier le wrapper dans l'arborescence des outils Galaxy scpmonWrapper.plgalaxyserver:/path/to/galaxy/tools/- gnrer le fichier XML dans le mme rpertoire: ./monWrapper.plgalaxy>monWrapper.xml(on vrifie en mme temps que les bin/lib soient accessibles l'utilisateur galaxy) - redmarrer galaxySebastien.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' =>'Inputfiles(onetomany)', 'type' =>'String', 'type_galaxy' =>'txt', 'card' =>'1,n' } );Sebastien.Carrere@toulouse.inra.fr - AG CATI-BBRIC - 20131028
  14. 14. Liens utiles La lipmutils Cette prsentation http://lipm-svn.toulouse.inra.frhttps://fr.slideshare.net/carrere/tpag-appligalaxyCode source: DemoWrapper https://gist.github.com/carrere/4e02edef22cb82eba149DemoWrapperInputMultiples https://gist.github.com/carrere/9cb0680d72f11715e898Sebastien.Carrere@toulouse.inra.fr - AG CATI-BBRIC - 20131028