Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 6 sur 6
  1. #1
    Nouveau Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    mars 2012
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

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

    Informations forums :
    Inscription : mars 2012
    Messages : 69
    Points : 32
    Points
    32

    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;

  2. #2
    Membre expérimenté Avatar de Beniou
    Homme Profil pro
    Inscrit en
    novembre 2009
    Messages
    357
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Nord (Nord Pas de Calais)

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

    Par défaut

    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...

  3. #3
    Nouveau Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    mars 2012
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

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

    Informations forums :
    Inscription : mars 2012
    Messages : 69
    Points : 32
    Points
    32

    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.

  4. #4
    Membre expérimenté Avatar de Beniou
    Homme Profil pro
    Inscrit en
    novembre 2009
    Messages
    357
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Nord (Nord Pas de Calais)

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

    Par défaut

    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 (')...

  5. #5
    Nouveau Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    mars 2012
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

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

    Informations forums :
    Inscription : mars 2012
    Messages : 69
    Points : 32
    Points
    32

    Par défaut RE : integration de R dans perl

    Merci beaucoup BENJOU
    Cela fonctionne très bien

  6. #6
    Candidat au titre de Membre du Club
    Inscrit en
    juin 2010
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : juin 2010
    Messages : 22
    Points : 13
    Points
    13

    Par défaut

    qsub, ça sent la grille Sun. Bon courage

+ Répondre à la discussion
Cette discussion est résolue.

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •