Preview:
Citation preview
- 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. 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. 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. 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. 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. 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. 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. Construction de l'objet Appli Code
:https://gist.github.com/carrere/4c126ec2989dc956d5bfSebastien.Carrere@toulouse.inra.fr
- AG CATI-BBRIC - 20131028
- 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. 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. 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. 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. 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. 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