tpag appli-galaxy

Download Tpag appli-galaxy

If you can't read please download the document

Upload: sebastien-carrere

Post on 07-Aug-2015

93 views

Category:

Documents


0 download

TRANSCRIPT

  1. 1. TP Appli::Galaxy Comment dployer rapidement un outil dans Galaxy sans avoir crire du [email protected] - 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 [email protected] - 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 [email protected] - 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 } [email protected] - 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] );[email protected] - 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)[email protected] - 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'=>... );[email protected] - AG CATI-BBRIC - 20131028
  8. 8. Construction de l'objet Appli Code :https://gist.github.com/carrere/[email protected] - 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 ); }[email protected] - 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');[email protected] - 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, ); [email protected] - 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 [email protected] - 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' } );[email protected] - 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/[email protected] - AG CATI-BBRIC - 20131028