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