Précédent   Forum du club des développeurs et IT Pro > Autres langages > Perl > Bioinformatique
Bioinformatique Toutes vos questions sur les scripts Perl associés à la bioinformatique, modules bioperl, projets bioinformatiques, etc ... Avant de poster, veuillez consulter les cours Perl et les critiques de livres.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 19/03/2012, 10h17   #1
karaudrey88
Nouveau Membre du Club
 
Femme
Étudiant
Inscription : mars 2012
Messages : 63
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : Service public

Informations forums :
Inscription : mars 2012
Messages : 63
Points : 29
Points : 29
Par défaut Integration de R dans perl

Bonjour,
J'ai intégré quelques fonctions R dans un script perl.
Les fichiers voulus sont bien créés en revanche j'ai un petit problème avec le fichier de sortie R. Dans ce fichier je doit retrouver le résultat des fonctions R et non le script lui même.
Quelqu'un pourrait il m'aider SVP Merci.
Voici le code utilisé

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#!/usr/bin/perl
 
use strict;
use warnings;
use Getopt::Long;
 
my ($sample1,$sample2);
GetOptions(	"sample1:s" => \$sample1,
		"sample2:s" => \$sample2			
);
 
if (!defined $sample1) {
	die "Error : samlpe1 missing\n";
}
if (!defined $sample2) {
	die "Error : samlpe2 missing\n";
}
 
#create R file instructions file
my $routfile = "$sample1\_$sample2.R";
open (ROUT,">$routfile")or die "\nError : $routfile file could not be created: $!\n";
print ROUT qq(
m <- read.table ("$sample1\")
p <- read.table ("$sample2\")
res <- numeric(ncol(m))
for(i in 1:ncol(m))
	res[i] <- var.test(m[,i]  , p[,i])\$p.value  
	res
);
close ROUT;
 
 
#create qsub file
my $qsuboutfile = "$sample1\_$sample2.qsub";
open (QSUB,">$qsuboutfile")or die "\nError : $qsuboutfile file could not be created: $!\n";
print QSUB qq(#!/bin/bash
#\$ -S /bin/bash
#\$ -V
#\$ -m ea
#\$ -o $qsuboutfile.out
#\$ -e $qsuboutfile.err
#\$ -cwd
#\$ -q short.q
#\$ -pe thread 3
 
# command(s):
R CMD BATCH  $routfile
);
close QSUB;
karaudrey88 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/03/2012, 14h54   #2
Beniou
Membre expérimenté
 
Avatar de Beniou
 
Homme
Inscription : novembre 2009
Messages : 357
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 33
Localisation : France, Nord (Nord Pas de Calais)

Informations forums :
Inscription : novembre 2009
Messages : 357
Points : 509
Points : 509
Bonjour,

Citation:
Envoyé par karaudrey88
Les fichiers voulus sont bien créés en revanche j'ai un petit problème avec le fichier de sortie R. Dans ce fichier je doit retrouver le résultat des fonctions R et non le script lui même.
C'est un peu flou comme demande : que veux-tu dire ?

Le fichier de sortie de R pour toi est le fichier $routfile (ROUT) ou bien le fichier de sortie après l'exécution de la commande R CMD BATCH ??

Donne un exemple de ce que tu as et de ce que tu souhaites pour comprendre un peu mieux...
Beniou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/03/2012, 16h29   #3
karaudrey88
Nouveau Membre du Club
 
Femme
Étudiant
Inscription : mars 2012
Messages : 63
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : Service public

Informations forums :
Inscription : mars 2012
Messages : 63
Points : 29
Points : 29
Par défaut re integration de R dans perl

Les fichiers .R et .qsub sont bien créés mais pas par contre les fichiers .qsub.err et .qsub.out ne sont pas créés. Or moi j'aimerai ce qu'il se créé quand je lance le programme ainsi je n'ai pas besoin de taper la commande qsub file.qsub pour chaque échantillon.
karaudrey88 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/03/2012, 16h44   #4
Beniou
Membre expérimenté
 
Avatar de Beniou
 
Homme
Inscription : novembre 2009
Messages : 357
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 33
Localisation : France, Nord (Nord Pas de Calais)

Informations forums :
Inscription : novembre 2009
Messages : 357
Points : 509
Points : 509
Grosso modo, tu veux lancer la commande qsub sur ton fichier à la fin de ton script si je comprends bien. Pour lancer uen commande en PERL et récupérer la sortie (ici ton Job ID), tu peux utiliser les backquotes (`)
Code :
1
2
3
# Launch file on cluster
my $job_id = `qsub $qsuboutfile`;
print "JOB ID : $job_id\n";
Note : attention les backquotes (`) sont différents des quotes normales (')...
Beniou est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 20/03/2012, 09h45   #5
karaudrey88
Nouveau Membre du Club
 
Femme
Étudiant
Inscription : mars 2012
Messages : 63
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : Service public

Informations forums :
Inscription : mars 2012
Messages : 63
Points : 29
Points : 29
Par défaut RE : integration de R dans perl

Merci beaucoup BENJOU
Cela fonctionne très bien
karaudrey88 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/03/2012, 14h19   #6
mathgon
Candidat au titre de Membre du Club
 
Inscription : juin 2010
Messages : 22
Détails du profil
Informations forums :
Inscription : juin 2010
Messages : 22
Points : 13
Points : 13
qsub, ça sent la grille Sun. Bon courage
mathgon est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 03h24.


 
 
 
 
Partenaires

Hébergement Web