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 :

contrôle d'exécution et vérification de l'existence d'un ACC


Sujet :

Bioinformatique Perl

  1. #1
    Membre émérite
    Avatar de Jasmine80
    Femme Profil pro
    Bioinformaticienne
    Inscrit en
    Octobre 2006
    Messages
    3 157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 44
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Points : 2 673
    Points
    2 673
    Par défaut contrôle d'exécution et vérification de l'existence d'un ACC
    Bonjour,


    J'aimerais trouver la fonction perl permettant de vérifier si j'obtiens quelque chose lors d'une requête Genbank.
    Le problème est que si j'introduits un accession number erroné, mon programme plante. J'aimerais qu'il m'affiche un message d'erreur et passe à l'acc suivant au lieu de s'arrêter.
    J'aimerais aussi connaitre la fonction permettant de vérifier quand je me connecte à un site si celui ci est disponible ou non. Car quand Genbank est en dérangement cela fait également planter mon programme.

    Quand mon programme arrive à un Acc incorrect, il m'écrit ce message à l'écran avant de stopper.

    ------------- EXCEPTION -------------
    MSG: acc does not exist
    STACK Bio:B::WebDBSeqI::get_Seq_by_acc C:/Perl/site/lib/Bio/DB/WebDBSeqI.pm:177
    STACK Bio:B::GenBank::get_Seq_by_acc C:/Perl/site/lib/Bio/DB/GenBank.pm:216
    STACK toplevel P:\Perl\scripts\INTERR~1\RECHER~1\CONTRO~1.PL:20

    --------------------------------------
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    #!/usr/local/bin/perl
     
    #----------------------- ControleGenBank.pl -----------------------#
     
    #----------------------- ControleGenBank.pl -----------------------#
     
    use strict;
    use warnings;
    use Bio::DB::GenBank;
     
    my @Liste_acc = ("plantage", "AB305017", "EF560796");
     
    # Recherche dans Genbank
    #--------------------------
    my $gb = new Bio::DB::GenBank;
     
    foreach my $Acc (@Liste_acc)
    {
            if (not exists $gb->get_Seq_by_acc($Acc)){next;}
            my $Info = $gb->get_Seq_by_acc($Acc);
            my $Gi =  $Info->primary_id();
            print $Acc." => ".$Gi."\n";
     
    }
     
     
    close;

    Merci beaucoup,

    Jasmine,
    -- Jasmine --

  2. #2
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 499 184
    Points
    499 184
    Par défaut
    tu peux faire un eval :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    ACCESSION:
    foreach my $Acc (@Liste_acc) {
      eval { $gb->get_Seq_by_acc($Acc) }; 
      if ($@) {   
        warn "ERREUR : pb accession $ACC\n";     
        next ACCESSION;
      } 
      my $Info = $gb->get_Seq_by_acc($Acc);
      my $Gi =  $Info->primary_id();
      print $Acc." => ".$Gi."\n"; 
    }
    Pour tester un site (ou url ) ok, tu passe par LWP je suppose.
    utilise la methode is_success

    Voilà

  3. #3
    Membre émérite
    Avatar de Jasmine80
    Femme Profil pro
    Bioinformaticienne
    Inscrit en
    Octobre 2006
    Messages
    3 157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 44
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Points : 2 673
    Points
    2 673
    Par défaut
    Merci beaucoup pour ton aide, cela fonctionne très bien.
    Comment s'appelle le fait d'écrire "ACCESSION:"? C'est la première fois que je vois ce type d'écriture?

    Oui, j'utilise LWP::Simple
    Je dois faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    my $gb = new Bio::DB::GenBank;
    is_success ($gb){....}



    Merci beaucoup, je vais tester


    Jasmine,
    -- Jasmine --

  4. #4
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 499 184
    Points
    499 184
    Par défaut
    le fait d'ecrire ACCESSION => mettre une etiquette à ta boucle. Tu l'appels comme tu veux de cette facon (
    ETIQUETTE:
    ) toujours avec le :

    Mais ce n'est pas une obligation, j'ai juste plus propre et visible. De plus c'est conseillé d'etiqueter ces boucles dès qu'on fait appel à next; last; ou redo;.

    Sinon pour la methode is_success, si ton $gb contient l'url, alors tu fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    die "url $gb non disponible" unless ( $gb->is_success);
    et le script s'arretera.

  5. #5
    Membre émérite
    Avatar de Jasmine80
    Femme Profil pro
    Bioinformaticienne
    Inscrit en
    Octobre 2006
    Messages
    3 157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 44
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Points : 2 673
    Points
    2 673
    Par défaut
    Pour une vérifier une connexion à une base de données, puis-je également utiliser is_success?

    $DBconnect=DBI->connect( $url, $user, $password ) or print "Failure!\n";
    is_success($DBconnect){}


    Merci,


    Jasmine,
    -- Jasmine --

  6. #6
    Membre émérite
    Avatar de Jasmine80
    Femme Profil pro
    Bioinformaticienne
    Inscrit en
    Octobre 2006
    Messages
    3 157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 44
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Points : 2 673
    Points
    2 673
    Par défaut
    il n'arrive pas à localiser la fonction

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
     
    #!/usr/local/bin/perl
     
    #----------------------- ControleGenBank.pl -----------------------#
     
    #----------------------- ControleGenBank.pl -----------------------#
     
    use strict;
    use warnings;
    use LWP::Simple;
    use Bio::DB::GenBank;
     
    my @Liste_acc = ("plantage", "AB305017", "EF560796", "EF560795");
     
    # Recherche dans Genbank
    #--------------------------
    my $gb = new Bio::DB::GenBank;
    die "url $gb non disponible" unless ( $gb->is_success);
     
     
     
    ACCESSION:
    foreach my $Acc (@Liste_acc) {
      eval { $gb->get_Seq_by_acc($Acc) };
      if ($@) {
        warn "ERREUR : pb accession $Acc\n";
        next ACCESSION;
      }
      my $Info = $gb->get_Seq_by_acc($Acc);
      my $Gi =  $Info->primary_id();
      print $Acc." => ".$Gi."\n";
    }
     
     
     
     
     
     
     
    close;
    Can't locate object method "is_success" via package "Bio:B::GenBank" at P:\Perl\scripts\INTERR~1\RECHER~1\CONTRO~1.PL line 17.
    -- Jasmine --

  7. #7
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 499 184
    Points
    499 184
    Par défaut
    Citation Envoyé par Jasmine80
    Pour une vérifier une connexion à une base de données, puis-je également utiliser is_success?

    $DBconnect=DBI->connect( $url, $user, $password ) or print "Failure!\n";
    is_success($DBconnect){}


    Merci,


    Jasmine,
    non, is_sucess est une methode du module LWP : http://search.cpan.org/~gaas/libwww-...805/lib/LWP.pm

  8. #8
    Membre émérite
    Avatar de Jasmine80
    Femme Profil pro
    Bioinformaticienne
    Inscrit en
    Octobre 2006
    Messages
    3 157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 44
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Points : 2 673
    Points
    2 673
    Par défaut
    je suis nulle en fait j'ai pas utilisé LWP dans ce programme-ci
    Je peux enlever le use LWP::Simple; cela fonctionne très bien sans.

    Je fais
    my $gb = new Bio:B::GenBank;

    Je vais aller chercher sur le CPAN les info de ce package.
    Je ne savais pas que chaque package avait ses propres fonctions de vérification, je pensais qu'il existait une fonction gérénale pour savoir quand on interrogeait le web si on obtenait une connexion


    Merci,

    Jasmine,
    -- Jasmine --

  9. #9
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 499 184
    Points
    499 184
    Par défaut
    Bon rectification de ma part :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
     
    #!/usr/bin/perl -w
    use strict;
    use Carp;
    use LWP::Simple;
    use Bio::DB::GenBank;
    use HTTP::Request::Common;
     
    my $url = "TON URL de TA PAGE GENBANK AVEC LE HTTP DANS L'URL";
    my @Liste_acc = ("plantage", "AB305017", "EF560796", "EF560795");
     
    # Recherche dans Genbank
    #--------------------------
    my $gb = new Bio::DB::GenBank;
    my $obj_lwp_useragent = LWP::UserAgent->new;
    my $request = $obj_lwp_useragent->request(GET $url);
    die "url $url non disponible" unless ( $request ->is_success);
     
    ACCESSION:
    foreach my $Acc (@Liste_acc) {
      eval { $gb->get_Seq_by_acc($Acc) };
      if ($@) {
        warn "ERREUR : pb accession $Acc\n";
        next ACCESSION;
      }
      my $Info = $gb->get_Seq_by_acc($Acc);
      my $Gi =  $Info->primary_id();
      print $Acc." => ".$Gi."\n";
    }

  10. #10
    Membre émérite
    Avatar de Jasmine80
    Femme Profil pro
    Bioinformaticienne
    Inscrit en
    Octobre 2006
    Messages
    3 157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 44
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Points : 2 673
    Points
    2 673
    Par défaut
    Un grand merci pour ton aide, cela fonctionne très bien.


    Jasmine,
    -- Jasmine --

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 14/09/2012, 00h05
  2. [MySQL] Vérification de l'existance d'un Pseudo
    Par Nadd dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 19/03/2006, 21h25
  3. Vérification de l'existance d'un fichier via HTTP
    Par mouste79 dans le forum Général JavaScript
    Réponses: 18
    Dernier message: 02/02/2006, 14h26
  4. Vérification de l'existence d'un lien / url (link checker)
    Par strek100 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 19/10/2005, 07h34
  5. Vérification de l'existence d'un fichier
    Par alfu dans le forum ASP
    Réponses: 2
    Dernier message: 06/10/2004, 13h29

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