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 :

[bioperl]parser un blast xml


Sujet :

Bioinformatique Perl

  1. #1
    Membre averti Avatar de sohnic
    Femme Profil pro
    bioinfo
    Inscrit en
    Mai 2003
    Messages
    426
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : bioinfo

    Informations forums :
    Inscription : Mai 2003
    Messages : 426
    Points : 434
    Points
    434
    Par défaut [bioperl]parser un blast xml
    Bonjour,
    J'ai copié collé ce petit bout de code, fourni avec bioperl :

    test.pl
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    # one can also request that the parser NOT keep the XML data in memory
        # by using the tempfile initialization flag.
        my $searchin = new Bio::SearchIO(-tempfile => 1,
                                         -format => 'blastxml',
                                         -file   => 'plague_yeast.bls.xml');
        while(my $result = $searchin->next_result ) {
     
        }
    J'ai evidemment le fichier plague_yeast.bls.xml dans le meme repertoire que test.pl

    Quand je le lance (perl -w test.pl), c'est bon. Pas d'erreur.

    MAIS, ce code ne montre pas comment extraire les données du blast, par exemple les query.

    Dans le fichier xml, j'ai par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     <BlastOutput_query-def>gi|5763813|emb|CAB53166.1| putative replication regulatory protein [Yersinia pestis]</BlastOutput_query-def>
    Pour extraire ce query j'ai mis dans mon while :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $qu=$searchin->{"BlastOutput_query-def"};
    print $qu."\n";
    Mais ca me retourne : $qu n'est pas initialisée....

    J'ai essayé d'autres syntaxes sans succès.

    J'ai fait de nombreuses recherches sur le forum et google, sans succès.
    Quelqu'un connaitrait-il la méthode ou un site qui pourrait me renseigner ?

    En vous remerciant,

    Sohnic
    http://www.noctinfo.fr/

    (\ _ /)
    (='.'=) Voici Lapinou. Aidez-le à conquérir le monde en le reproduisant.
    (")-(")

  2. #2
    Membre averti Avatar de sohnic
    Femme Profil pro
    bioinfo
    Inscrit en
    Mai 2003
    Messages
    426
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : bioinfo

    Informations forums :
    Inscription : Mai 2003
    Messages : 426
    Points : 434
    Points
    434
    Par défaut
    Finalement, je m'autoréponds !
    J'ai trouvé un pdf qui lève un peu le voile : http://mig.jouy.inra.fr/mig/download...euclin2004.pdf

    Le code ressemble maintenant a ca :

    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
     
    use Bio::SearchIO;
    use strict;
    my $searchio=new Bio::SearchIO(-format =>'blastxml',-file =>'mon_blast.xml');
    my $result;
    my $hit;
    my $query;
    my $length;
    my $description;
    my $database_name;
    my $algorithm_type;
    while( $result = $searchio->next_result() ) 
    {
    	$query=$result->query_name;
    	$database_name=$result->database_name;
    	$algorithm_type=$result->algorithm;
    	while (my $hit=$result->next_hit())
    	{
    		$length=$result->query_length;
    		my $accession=$hit->accession;
    		my $score=$hit->score;
    		$description=$hit->description;
    		print $description."\n";
    		while (my $hsp=$hit->next_hsp())
    		{
    			my $start_hit=$hsp->start('hit');
    			my $end_hit=$hsp->end('hit');
    			print "$database_name\t$algorithm_type\t$query\t$accession\t$start_hit\t",
    			$hsp->percent_identity,"\t",$hsp->length('total'),"\t$end_hit\t$length\t$description\t
    			$score\t",$hsp->evalue,"\n\n\n";
    		}
    	}
    }
    Seulement avec mon fichier (qui a été fait avec BLASTX 2.2.14, j'ai un warning à la fin

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    -------------------- WARNING ---------------------
    MSG: error in parsing a report:
     
    xml declaration not at start of external entity at line 217, column 224, byte 16384 at /usr/lib/perl5/vendor_perl/5.8.6/i386-linux-thread-multi/XML/Parser.pm line 187
     
    ---------------------------------------------------
    Que je n'ai pas avec le fichier d'exemple (blastp 2.1.3).
    Malgrè tout , j'ai le résultat attendu....

    Si ca peut aider quelqu'un....

    Sohnic
    http://www.noctinfo.fr/

    (\ _ /)
    (='.'=) Voici Lapinou. Aidez-le à conquérir le monde en le reproduisant.
    (")-(")

Discussions similaires

  1. Serait il possible de parser des ficheirs xml avec c++ ,
    Par jlassira dans le forum Bibliothèques
    Réponses: 11
    Dernier message: 04/01/2006, 12h58
  2. [xslt] Parser 2 fichiers XML
    Par malekms dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 30/12/2005, 12h22
  3. Parser un fichier XML
    Par Charlinecha dans le forum Format d'échange (XML, JSON...)
    Réponses: 1
    Dernier message: 11/07/2005, 17h18
  4. [SAX] parser un fichier xml en Java
    Par royou dans le forum Format d'échange (XML, JSON...)
    Réponses: 1
    Dernier message: 10/02/2005, 17h12
  5. parser des fichier .xml en perl
    Par djibril dans le forum Modules
    Réponses: 13
    Dernier message: 18/05/2004, 17h08

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