IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bioinformatique Perl Discussion :

correction script pour analyses bayesiennes


Sujet :

Bioinformatique Perl

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2013
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2013
    Messages : 12
    Points : 9
    Points
    9
    Par défaut correction script pour analyses bayesiennes
    Bonjour
    Je travaille sur des analyses evolutives phylogenetiques de type bayesienne avec notamment des software comme beast et j'aurais besoin d'aide pour adapter un script perl afin de retravailler un des fichiers obtenus (fichier txt).
    A partir de ce type de fichier en PJ 'history.txt'


    Je souhaiterais obtenir un fichier final organisé de la sorte (4 colonnes: from - to - time - states)
    from to time states
    A B 69.381812150211935 500000

    Mais le script supprime la colonne 'states'???


    Le script en question:

    #!/usr/bin/perl

    $num_args = $#ARGV + 1;
    if (($num_args != 1) && ($num_args != 3)) {
    print "Usage: collect_times <burning #> [from_state] [to_state]\n";
    exit(-1);
    }

    $burn_in = $ARGV[0];
    $print_all = 1;
    if ($num_args == 3) {
    $print_all = 0;
    $from = $ARGV[1];
    $to = $ARGV[2];
    } else {
    $from = "ALL";
    $to = "ALL";
    }

    print STDERR "Removing states < $burn_in as burn in.\n";
    print STDERR "Recording jumps from $from to $to.\n";

    for ($i = 0; $i < 3; $i++) {
    $line = <STDIN>;
    }

    print "from\tto\ttime\n";
    while($line = <STDIN>) {
    chomp($line);
    ($state, $count, $jumpf) = split('\t',$line,3);
    if ($state >= $burn_in) {
    $jumpf =~ s/\{//;
    $jumpf =~ s/\}//;
    @jumps = split(',',$jumpf);
    $n_jumps = scalar(@jumps);
    for ($i = 0; $i < $n_jumps; $i++) {
    $tmp = $jumps[$i];
    $tmp =~ s/\[//;
    $tmp =~ s/\]//;
    @info = split(':',$tmp);
    $info[2] =~ s/\s\d+$//;
    if (
    ($print_all == 1) ||
    (($info[0] eq $from) && ($info[1] eq $to))
    ) {
    print "$info[0]\t$info[1]\t$info[2]\n";
    }
    }
    }
    }



    Merci beaucoup pour votre aide!!!
    Amicalement,
    Fichiers attachés Fichiers attachés

  2. #2
    Membre éprouvé Avatar de Gardyen
    Homme Profil pro
    Bio informaticien
    Inscrit en
    Août 2005
    Messages
    637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Bio informaticien

    Informations forums :
    Inscription : Août 2005
    Messages : 637
    Points : 1 050
    Points
    1 050
    Par défaut
    Bonjour,
    premier point, pour afficher du code utilise la balise code (#) pour le rendre plus lisible

    ensuite j'ai pu noter que le fichier que tu as joint ne correspond pas aux traitements que tu exécutes, par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $tmp =~ s/\[//;
    $tmp =~ s/\]//;
    @info = split(':',$tmp);
    alors qu'il n'y a ni crochets, ni : dans tes données ?
    Nous les geeks, c'est pas qu'on a une case en moins, c'est juste qu'on compte à partir de zéro.
    Plus les choses changent, plus elles restent les mêmes

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2013
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2013
    Messages : 12
    Points : 9
    Points
    9
    Par défaut
    Merci de votre aide.
    Ce que je ne comprends pas, c'est que lorsque j'execute la commande, j'obtiens ou fichier intermediaire assez proche de ce que je souhaiterais (attached) mais l'annotation 'states' est supprimée. Effectivement le '{' semble egalement etre un probleme secondaire dans ce script.
    Auriez vous une idée pour l'adapter?

    Merci bcp et bonne journée,
    Fichiers attachés Fichiers attachés

  4. #4
    Membre éprouvé Avatar de Gardyen
    Homme Profil pro
    Bio informaticien
    Inscrit en
    Août 2005
    Messages
    637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Bio informaticien

    Informations forums :
    Inscription : Août 2005
    Messages : 637
    Points : 1 050
    Points
    1 050
    Par défaut
    tu récupères state à cette ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ($state, $count, $jumpf) = split('\t',$line,3);
    , mais quand tu affiches les info, tu n'affiches pas $state
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    print "$info[0]\t$info[1]\t$info[2]\n";
    De plus il faudrait revoir le découpage de $jumpf, comme je l'ai précisé dans le premier message. Regarde du côté des expressions régulières cf FAQ
    Nous les geeks, c'est pas qu'on a une case en moins, c'est juste qu'on compte à partir de zéro.
    Plus les choses changent, plus elles restent les mêmes

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2013
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2013
    Messages : 12
    Points : 9
    Points
    9
    Par défaut
    Merci beaucoup.
    Je vais revoir mes 'basiques' mais ces conseils devraient bcp m'aider.

    Bonne journée,

Discussions similaires

  1. Réponses: 2
    Dernier message: 11/07/2015, 10h59
  2. Script pour lire correctement date access.log
    Par jfg59 dans le forum Linux
    Réponses: 3
    Dernier message: 30/03/2013, 10h54
  3. Réponses: 0
    Dernier message: 17/03/2010, 10h55
  4. Aide pour script d'analyse d'évènements
    Par Spear- dans le forum VBScript
    Réponses: 7
    Dernier message: 18/10/2006, 11h49
  5. Script pour envoyer des info a mysql
    Par rhum1 dans le forum Linux
    Réponses: 6
    Dernier message: 15/04/2003, 16h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo