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 :

Problème de lecture de texte


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 Problème de lecture de texte
    Bonjour,

    J'ai écrit un programme ouvrant des pages html, en copiant le contenu dans un fichier texte puis lisant celui ci ligne par ligne pour y reprendre des informations.

    Cela fonctionne très bien pour certaines pages mais pas pour d'autres.
    Les fichiers textes intermédiaires sont toujours bien complets, mais quand mon script les parcourts, il ne va pas jusqu'au bout. Pourant ces fichiers textes semblent identiques Avez-vous une idée?

    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
                   my $Gi = 85070119;        # 63099837  OK
     
                    my $Html = get("http://www.ncbi.nlm.nih.gov/entrez/viewer.fcgi?db=nucleotide&val=$Gi")or print "IMPOSSIBLE D OUVRIR LA PAGE\n";
                    my $OutFile = FileHandle->new (">P:/Perl/scripts/Files/Articles.txt");
                    my $InFile = "P:/Perl/scripts/Files/Articles.txt";
                    print  $OutFile ($Html);
     
                    open (InFile,$InFile) or die "Can't open File file\n";
                    my $Articles = "";
                    my $LiensArticles = "";
                    my $Ligne;
                    my $Ok = 0;
                    my $URL = "";                                                      # (DEFINITION[.\n]+)\n<a name="
            	while ($Ligne=<InFile>)
            	{
                            print "$Ligne\n";
                    }


    Cela fonctionne pour gi = 63099837 mais pas pour gi = 85070119
    Alors que les fichiers textes contiennent bien toute la page récupérée, la lecture de ces fichiers s'arrête pour g= 85070119

    gi = 63099837
    <div class='recordbody'><div class="sequence"><a name="locus_63099837"></a><div class="localnav"><ul class="locals"><li><a href="#feature_63099837" title="Jump to the feature table of this record">Features</a></li><li><a href="#sequence_63099837" title="Jump to the sequence of this record">Sequence</a></li></ul></div>

    <pre class="genbank"><div class='recordbody'><div class="sequence"><a name="locus_63099837"></a><div class="localnav"><ul class="locals"><li><a href="#feature_63099837" title="Jump to the feature table of this record">Features</a></li><li><a href="#sequence_63099837" title="Jump to the sequence of this record">Sequence</a></li></ul></div>
    <pre class="genbank">LOCUS AY944897 846 bp DNA linear PLN 28-FEB-2006
    DEFINITION Absidia corymbifera strain FSU787 18S ribosomal RNA gene, partial
    sequence; internal transcribed spacer 1, 5.8S ribosomal RNA gene,
    and internal transcribed spacer 2, complete sequence; and 28S
    ribosomal RNA gene, partial sequence.
    gi = 85070119
    <div class='recordbody'><div class="sequence"><a name="locus_85070119"></a><div class="localnav"><ul class="locals"><li><a href="#feature_85070119" title="Jump to the feature table of this record">Features</a></li><li><a href="#sequence_85070119" title="Jump to the sequence of this record">Sequence</a></li></ul></div>
    <pre class="genbank">LOCUS DQ340176S2 232 bp DNA linear PLN 06-MAR-2006
    DEFINITION Absidia corymbifera strain CBS 118994 18S ribosomal RNA gene,
    partial sequence.

    s'arrête en milieu de ligne juste après "DQ340176S2" et avant "232 bp DNA"
    Sans aucun message d'erreur, comme si il avait simplement fini de lire le fichier.
    <div class='recordbody'><div class="sequence"><a name="locus_85070119"></a><div class="localnav"><ul class="locals"><li><a href="#feature_85070119" title="Jump to the feature table of this record">Features</a></li><li><a href="#sequence_85070119" title="Jump to the sequence of this record">Sequence</a></li></ul></div>

    <pre class="genbank">LOCUS DQ340176S2




    Merci,


    Jasmine,
    -- Jasmine --

  2. #2
    Membre habitué Avatar de crochepatte
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    206
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mars 2005
    Messages : 206
    Points : 145
    Points
    145
    Par défaut
    Je ne connais pas trop les fonctions que tu utilises, mais es tu sur que ces fonctions sont correctement utilisées???
    Pour moi, cette erreur peut venir d'un decalage de temps. Je m'explique, tu ouvre un flux et tu copie sur ce flux la page HTML chargée...cela peut prendre du temps si le garchement de la page est long...Ensuite tu lis ce fichier texte, qui n'est peut etre pas encore complet si la page HTML n'a pas fini d'etre chargé ou imprimé...

    Cela n'est qu'une suposition...

    Essaie d'utiliser le module LWP, moi je sais que je l'utilise pour le meme emploie, et je n'ai jamais eu ce probleme...

    D'ailleurs , je vois de lire ton precedent post, essaie la methode que qqn t'avais donné...

    Bonne chance

  3. #3
    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 : 498 771
    Points
    498 771
    Par défaut
    pense aussi à mettre à mettre un sleep intermediaire en tre le moment ou tu recupere la page et le moment ou tu traite le txt. Ca resoudra peut etre ton souci.

  4. #4
    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
    Bonjour,


    Merci pour votre aide.
    J'utilise le module use LWP::Simple;

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
                    print  $OutFile ($Html);
     
                    sleep(10);
                    exec();
     
                    open (InFile,$InFile) or die "Can't open File file\n";
    Cela fonctionne maintenant.
    Mais j'ai des messages de mise en garde

    Subroutine Cwd::fastcwd redefined at C:/Perl/lib/XSLoader.pm line 91.
    Subroutine Cwd::cwd redefined at C:/Perl/lib/Cwd.pm line 542.
    Subroutine Cwd::getcwd redefined at C:/Perl/lib/Cwd.pm line 543.
    Subroutine Cwd::fastcwd redefined at C:/Perl/lib/Cwd.pm line 544.
    Subroutine Cwd::fastgetcwd redefined at C:/Perl/lib/Cwd.pm line 545.
    Subroutine Cwd::abs_path redefined at C:/Perl/lib/Cwd.pm line 546.
    Prototype mismatch: sub Cwd::abs_path (;$) vs none at C:/Perl/lib/Cwd.pm line 546.
    Subroutine Cwd::realpath redefined at C:/Perl/lib/Cwd.pm line 547.
    Prototype mismatch: sub Cwd::realpath (;$) vs none at C:/Perl/lib/Cwd.pm line 547.
    Statement unlikely to be reached at P:\Perl\scripts\PubMed\TESTAR~1.PL line 78.
    (Maybe you meant system() when you said exec()?)
    Dois-je mettre la commande exec()? Si je ne la mets pas cela ne fonctionne pas.

    Pourquoi les sous programmes sont ils redéfinis?

    Merci,

    Jasmine,
    -- Jasmine --

  5. #5
    En attente de confirmation mail
    Inscrit en
    Novembre 2006
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 4
    Points : 5
    Points
    5
    Par défaut Interagir avec le NCBI
    Bonjour,
    As-tu essayé d'utiliser l'API Webservices du NCBI pour récupérer des infos depuis n'importe laquelle de leurs bases ? C'est tout de même plus propre que de parser des fichiers html !
    Tu trouveras l'api ici : http://www.ncbi.nlm.nih.gov/entrez/q...soap_help.html

    Tu peux aisément l'utiliser depuis un programme Perl avec le module SOAP::Lite.

    a+

    stimy

  6. #6
    En attente de confirmation mail
    Inscrit en
    Novembre 2006
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 4
    Points : 5
    Points
    5
    Par défaut Ou bien...
    Citation Envoyé par stimy
    Bonjour,
    As-tu essayé d'utiliser l'API Webservices du NCBI pour récupérer des infos depuis n'importe laquelle de leurs bases ?
    Ou bien plus simple pendant que j'y pense : les e-utils que tu pourras trouver ici : http://eutils.ncbi.nlm.nih.gov/entre...tils_help.html

  7. #7
    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,
    Je vais essayer d'utiliser SOAP::Lite.
    Tout ça est un peu compliqué parce que je n'ai pas fait énormément d'informatique. Mais je suis motivée pour progresser.

    J'ai lu
    http://www.ncbi.nlm.nih.gov/books/bv...chapter.eutils

    Donc je dois faire EPost -> ESummary
    1) utiliser EPost en y mettant l'UID dont je veux récupérer la page html
    2) récupérer ESummary
    3) Parser ce résumé afin d'y retrouver ma date en utilisant l'XML

    Je dois donc utiliser SOAP
    http://search.cpan.org/~byrne/SOAP-L...s/SOAP/Lite.pm


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    use strict;
    use warnings;
    use SOAP::Lite;
     
    my $Gi="";
    my $html = "http://www.ncbi.nlm.nih.gov/entrez/viewer.fcgi?db=nucleotide&val=$Gi";
     
     
     
      print SOAP::Lite
        -> uri('http://www.soaplite.com/Temperatures')
        -> proxy('http://services.soaplite.com/temper.cgi')
        -> f2c(32)
        -> result;
    et comment dois-je lier SOAP et les eUtils?

    Merci beaucoup,

    Jasmine,
    -- Jasmine --

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

Discussions similaires

  1. Problème accent lecture fichier texte
    Par brisso dans le forum Langage
    Réponses: 12
    Dernier message: 27/06/2011, 19h46
  2. Problème de lecture fichier texte
    Par Draconic dans le forum Visual C++
    Réponses: 1
    Dernier message: 05/08/2007, 18h00
  3. Problème STL lecture fichier texte
    Par Bourrine dans le forum VC++ .NET
    Réponses: 4
    Dernier message: 03/04/2007, 11h57
  4. Réponses: 2
    Dernier message: 28/12/2005, 15h00
  5. [SAX] Problème SAX lecture du texte entre les balises
    Par BernardT dans le forum Format d'échange (XML, JSON...)
    Réponses: 1
    Dernier message: 07/07/2005, 17h24

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