[Bioperl-l] Splitting BLAST report

Luis-Miguel Rodríguez Rojas lmrodriguezr at gmail.com
Wed May 11 14:45:13 UTC 2011


Dear all,

Is there a way to split BlastXML report with multiple queries into several
BlastXML reports with one query each?

So far, I have something similar to the following code:

*#!/usr/bin/perl*
use strict;
use Bio::SearchIO;
*
*
*# $file contains the output file*
*# $severalQueries contain the queries*
*# %args contains other BLAST parameters*
*# [...] First, run the large BLAST:*
my $factory = Bio::Tools::Run::StandAloneBlast->new(%args);
$factory->o($file);
$factory->m(7); *# BlastXML*
my $report = $factory->blastall($severalQueries);
*
*
*# $dir is the output directory*
*# [...] Now, in another script, or another part of the script:*
my $report = Bio::SearchIO->new(-file=>$file, -format=>'blastxml');
mkdir $dir unless -d $dir;
while(my $result = $report->next_result){
    my $newFile = $dir."/".$result->query_accession.".xml";
    my $searchIO = Bio::SearchIO->new(-file=>">$newFile",
-output_format=>'blastxml');
    $searchIO->write_result($result);
}
*
*
*# [...]*
*__END__*

The BLAST runs correctly, and the first output (the large XML) is there.
 However, the second part fails with the following message, clearly stating
that I can't create a Bio::SearchIO object with output format BlastXML:

------------- EXCEPTION: Bio::Root::Exception -------------
MSG: Failed to load module Bio::SearchIO::Writer::blastxml. *Can't locate
Bio/SearchIO/Writer/blastxml.pm* in @INC (@INC contains:
/home/equipe/resistance/lrodrigu/Runbox/Unus/lib
/home/equipe/resistance/lrodrigu/lib/perl5
/home/equipe/resistance/lrodrigu/lib/perl5/5.8.8
/home/equipe/resistance/lrodrigu/lib/perl5/site_perl/5.8.8
/usr/lib/perl5/site_perl/5.8.8/i386-linux-thread-multi
/usr/lib/perl5/site_perl/5.8.8 /usr/lib/perl5/site_perl
/usr/lib/perl5/vendor_perl/5.8.8/i386-linux-thread-multi
/usr/lib/perl5/vendor_perl/5.8.8 /usr/lib/perl5/vendor_perl
/usr/lib/perl5/5.8.8/i386-linux-thread-multi /usr/lib/perl5/5.8.8 .) at
/usr/lib/perl5/site_perl/5.8.8/Bio/Root/Root.pm line 439, <GEN25> line
48675.
STACK: Error::throw
STACK: Bio::Root::Root::throw
/usr/lib/perl5/site_perl/5.8.8/Bio/Root/Root.pm:368
STACK: Bio::Root::Root::_load_module
/usr/lib/perl5/site_perl/5.8.8/Bio/Root/Root.pm:441
STACK: Bio::SearchIO::new /usr/lib/perl5/site_perl/5.8.8/Bio/SearchIO.pm:180
STACK: Unus::Blast::run
/home/equipe/resistance/lrodrigu/Runbox/Unus/lib/Unus/Blast.pm:88
STACK: Unus::Orth::BsrAuto::extract_values
/home/equipe/resistance/lrodrigu/Runbox/Unus/lib/Unus/Orth/BsrAuto.pm:47
STACK: Unus::Orth::BsrAuto::thresholds
/home/equipe/resistance/lrodrigu/Runbox/Unus/lib/Unus/Orth/BsrAuto.pm:31
STACK: Unus::Orth::Bsr::build_orthref_file
/home/equipe/resistance/lrodrigu/Runbox/Unus/lib/Unus/Orth/Bsr.pm:42
STACK: Unus::Orth::Bsr::run
/home/equipe/resistance/lrodrigu/Runbox/Unus/lib/Unus/Orth/Bsr.pm:25
STACK: Unus::Unus::calculate_orthologs
/home/equipe/resistance/lrodrigu/Runbox/Unus/lib/Unus/Unus.pm:175
STACK: Unus::Unus::run
/home/equipe/resistance/lrodrigu/Runbox/Unus/lib/Unus/Unus.pm:149
STACK: /home/equipe/resistance/lrodrigu/bin/unus2:45
-----------------------------------------------------------


I checked the supported output formats (Bio::SearchIO::Writer::*) and none
of the supported formats seem to be either BlastXML or Blast, so I assume I
am no in the right direction.

Thanks in advance!

Best,
LRR

--
Luis M. Rodriguez-R
[ http://thebio.me/lrr ]
---------------------------------
UMR Résistance des Plantes aux Bioagresseurs - Group effecteur/cible
Institut de Recherche pour le Développement, Montpellier, France
[ http://bioinfo-prod.mpl.ird.fr/xantho | Luismiguel.Rodriguez at ird.fr ]
+33 (0) 6.29.74.55.93

Unidad de Bioinformática del Laboratorio de Micología y Fitopatología
Universidad de Los Andes, Bogotá, Colombia
[ http://lamfu.uniandes.edu.co | luisrodr at uniandes.edu.co ]
+57 (1) 3.39.49.49 ext 2777




More information about the Bioperl-l mailing list