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@curie.fr> To: <galaxy-france@lists.bx.psu.edu> Subject: [Galaxy-france] Comment choisir le répertoire de sortie pour un outil Galaxy? Message-ID: <50505DDA.9050505@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