Bonjour,
Voici ce que j'ai implémenter pour le choix du répertoire de sortie
(surtout pour les fichiers intermédiaires générés, pas pour l'output
"final" présenté dans l'historique de Galaxy) :
- Le fichier xml n'est pas impacté.
- Le script est modifié en créant un nouveau répertoire de sortie dans
lequel le fichier output est créé, puis je récupère l'output créé pour
le copier dans l'output automatiquement généré par Galaxy :
#!/usr/bin/perl -w
.....................
my $input_bam = $ARGV[0];
my $output_file = $ARGV[1];
my $input_dir = dirname($input_bam);
my $input_basename=basename($input_bam,'.bam');
my $input_bamsorted="$input_dir/${input_basename}-sorted";
..........................
$cmd = "($SCRIPT_BIOINFO $input_bam $input_bamsorted) >& ./samtools.log
2>&1";
system $cmd;
if (! -e "${input_bamsorted}.bam"){print STDERR "OUTPUT FILE NOT
FOUND\n";}
else{`(cp ${input_bamsorted}.bam $output_file) >& ./cp.log 2>&1`}
close( IN );
Donc je pense que c'est un peu différent de l'objectif visé , mais si
cela peut être utile ...
A bientôt,
Sarah
Message: 1
Date: Wed, 12 Sep 2012 12:03:06 +0200
From: Alban Lermine <alermine(a)curie.fr>
To: <galaxy-france(a)lists.bx.psu.edu>
Subject: [Galaxy-france] Comment choisir le répertoire de sortie pour
un outil Galaxy?
Message-ID: <50505DDA.9050505(a)curie.fr>
Content-Type: text/plain; charset="ISO-8859-1"
Bonjour à tous,
Pour notre instance locale de Galaxy, nous souhaitions que nos
utilisateurs puissent choisir l'emplacement ou écrire leurs résultats et
cela sans "casser" les liens dans la base de donnée.
Pour cela, nous avons ainsi mis en place une modification simple du xml
des outils existants:
Prenons l'exemple d'un outil simple dont le xml serait le suivant:
<tool id="example" name="Tool example">
<description>Un exemple d'outil simple</description>
<command interpreter="bash">example.sh -i $input -o
$output</command>
<inputs>
<param name="input" type="text" label="Input"/>
</inputs>
<outputs>
<data format="txt" name="output"
label="outputExample"/>
</ouputs>
</tool>
Dans cet exemple, le fichier de sortie portera le nom "dataset_xxx" et
sera écrit dans le répertoire par défaut
<INSTALL_GALAXY>/galaxy-dist/database/files/000/
La modification que nous allons apporter maintenant va nous permettre de
définir le répertoire d'écriture de l'output ainsi que le nom du fichier.
Après modification, le xml ressemble à ça:
<tool id="example" name="Tool example">
<description>Un exemple d'outil simple</description>
<command interpreter="bash">example.sh -i $input -o $output;mv $output
$output_dir/${file_name}.txt 2>/dev/null;ln -s
$output_dir/${file_name}.txt $output</command>
<inputs>
<param name="input" type="text" label="Input"/>
<!-- Output directory-->
<param name="file_name" type="text" size="150"
label="File name
(without extension)">
<validator type="empty_field" message="You must specify a file
name"/>
</param>
<param name="output_dir" type="text" size="150"
label="Output
directory">
<validator type="empty_field" message="You must specify an
output
path"/>
</param>
<!---->
</inputs>
<outputs>
<data format="txt" name="output"
label="outputExample"/>
</ouputs>
</tool>
Nous avons 2 champs input pour le path et le nom du fichier de sortie
(ainsi que les valideurs associés, l'outil ne s'execute pas si l'un de
ces champs est vide).
Puis dans la balise <command> , nous avons ajouter:
mv $output $output_dir/${file_name}.txt 2>/dev/null;ln -s
$output_dir/${file_name}.txt $output
qui correpond à un move de
<INSTALL_GALAXY>/galaxy-dist/database/files/000/dataset_xxx vers
<OUTPUT_CHOISIT>/<NOM_DE_FICHIER_CHOISIT>,
suivit de la création d'un lien symbolique
<INSTALL_GALAXY>/galaxy-dist/database/files/000/dataset_xxx qui pointe
vers <OUTPUT_CHOISIT>/<NOM_DE_FICHIER_CHOISIT>.
Cette modification fonctionne très bien quelque soit l'interpreteur
défini dans la balise <command>, et est surtout très rapide à mettre en
place.
Je suis très interressé de savoir si d'autres personnes ont implémentés
une solution pour le choix du répertoire de sortie, et si oui de quelle
manière?
Bonne journée à tous,
Alban