[Bioperl-l] Fetching Fasta seqs from GenBank - Help request

Alberto Davila davila at ioc.fiocruz.br
Thu Mar 25 15:38:32 EST 2004


Hi Sean,

Thanks for your valuable help !

I solved the problem using "Bio::DB::Query::GenBank", my goal was to
retrieve 2 types of sequences (mitochondrial and ribosomal) from
specific organism (eg Bothrops spp)... I am listing my script for those
interested to do something similar.. the only warning I get is:

[davila at tryps script]$ perl fetch2contaminant.pl
Useless use of a constant in void context at fetch2contaminant.pl line
10.

I was not sure in which field (eg keyword or feature) I should look for
ribosomal and mitochondrial genes, but leaving blank gave some good
results.

Indeed Bioperl is powerful... a bit confusing for beginners too.

Thanks and best regards,

Alberto


#!/usr/local/bin/perl -w

use lib "/usr/local/bioperl14";
use strict;
use Bio::DB::Query::GenBank;
use Bio::SeqIO;
use Bio::DB::GenBank;


my $query_string = ('Bothrops[Organism] AND
ribosomal','Bothrops[Organism] AND mitochondrial');
my $query = new Bio::DB::Query::GenBank(-db=>'nucleotide',
                                        -query=>$query_string,
		                        -mindate => '1985',
		                        -maxdate => '2004');

my $seqio=new Bio::DB::GenBank->get_Stream_by_query($query);

#open a seqio handle for writing the outputfile in fasta
my $outfile = new Bio::SeqIO(-format=>'fasta',
                             -file=>'>contaminant.bothrops');
				  
 while (my $s = $seqio->next_seq) {

#write the fasta  
   $outfile->write_seq($s);
   
	}			  
				  
 	  
	  exit;







On Thu, 2004-03-25 at 16:37, Sean Davis wrote:
> Alberto,
> 
> I would second that.  If are doing more with this than retrieving raw
> sequence (if you care at all), maybe you could let Barry and I know what you
> are trying to do more generally.  Bioperl is quite powerful, but it does
> take some direction to get started.
> 
> Sean
> 
> On 3/25/04 12:43 PM, "Barry Moore" <barry.moore at genetics.utah.edu> wrote:
> 
> > Alberto-
> > 
> > You said, "the 'get_Stream_by_id' is returning me more than the
> > 'sequence per se'".  I'm not sure if this is what your asking, but I'll
> > take a shot.  Since your are retrieving your two sequences in EMBL
> > format, you get all the associated information that you would see if you
> > 
> > downloaded that same file from the web interface.  Your sequences are
> > stored by BioPerl as RichSeq objects which inherits a PrimarySeq
> > objects.  So that EMBL file data is stored in the RichSeq object and the
> > 
> > associated PrimarySeq object it inherited.   Of course when you save
> > that locally as a fasta file, that extra information is lost.  If you
> > decide you need to use that data have a look at the documentation for
> > Bio::Seq::RichSeq and Bio::PrimarySeq and the SeqIO and Feature
> > Annotation HOW TOs to learn more.
> > 
> > Barry
> > 
> > Alberto Davila wrote:
> > 
> >> Thanks Jason,
> >> 
> >> I installed the IO::String, then it is working fine now. However I have
> >> a doubt, the "get_Stream_by_id" is returning me more than the "sequence
> >> per se", what is it ? My script and results are listed below. Finally I
> >> would like to save (in my local disk) the retrieved sequences as fasta
> >> files... is there any argument for that ?
> >> 
> >> Thanks again, Alberto
> >> 
> >> 
> >> #!/usr/local/bin/perl -w
> >> 
> >> use lib "/usr/local/bioperl14";
> >> use Bio::DB::BioFetch;
> >> use strict;
> >> use Bio::DB::WebDBSeqI;
> >> use HTTP::Request::Common 'POST';
> >> 
> >> my $format_type='fasta';
> >> my $stream;
> >> 
> >> 
> >> my $bf = new Bio::DB::BioFetch(-format        =>$format_type,
> >>                               -retrievaltype =>'tempfile',
> >>       -db            =>'EMBL');
> >>  
> >> $stream = $bf->get_Stream_by_id(['BUM','J00231']);
> >> while (my $s = $stream->next_seq) {
> >>    print $s->seq,"\n\n\n";
> >> }              
> >>  
> >>  
> >>  exit;
> >> 
> >> 
> >> 
> >> 
> >> [davila at tryps script]$ perl gb-fetch-1.pl
> >> agtagtgtactaccaagtatagataacgtttaaatattaaagttttggatcaaagccaaagatgattcgca
> > t
> >> gctggtgctgattgtagttacagctgcaagcccagtgtatcagagatgtttccaagatggggctatagtga
> > a
> >> gcaaaacccatccaaagaggcagtcacagaagtgtccctaaaagatgatgttagca
> >> 
> > 
> >> 
> > 
> >> cctggacctcctgtgcaagaacatgaaacanctgtggttcttccttctcctggtggcagctcccagatggg
> > t
> >> cctgtcccaggtgcacctgcaggagtcgggcccaggactggggaagcctccagagctcaaaaccccacttg
> > g
> >> tgacacaactcacacatgcccacggtgcccagagcccaaatcttgtgacacacctcccccgtgcccacggt
> > g
> >> cccagagcccaaatcttgtgacacacctcccccatgcccacggtgcccagagcccaaatcttgtgacacac
> > c
> >> tcccccgtgcccnnngtgcccagcacctgaactcttgggaggaccgtcagtcttcctcttccccccaaaac
> > c
> >> caaggatacccttatgatttcccggacccctgaggtcacgtgcgtggtggtggacgtgagccacgaagacc
> > c
> >> nnnngtccagttcaagtggtacgtggacggcgtggaggtgcataatgccaagacaaagctgcgggaggagc
> > a
> >> gtacaacagcacgttccgtgtggtcagcgtcctcaccgtcctgcaccaggactggctgaacggcaaggagt
> > a
> >> caagtgcaaggtctccaacaaagccctcccagcccccatcgagaaaaccatctccaaagccaaaggacagc
> > c
> >> cnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnngaggagatgaccaagaaccaagtcagcctgacct
> > g
> >> cctggtcaaaggcttctaccccagcgacatcgccgtggagtgggagagcaatgggcagccggagaacaact
> > a
> >> caacaccacgcctcccatgctggactccgacggctccttcttcctctacagcaagctcaccgtggacaaga
> > g
> >> caggtggcagcaggggaacatcttctcatgctccgtgatgcatgaggctctgcacaaccgctacacgcaga
> > a
> >> gagcctctccctgtctccgggtaaatgagtgccatggccggcaagcccccgctccccgggctctcggggtc
> > g
> >> cgcgaggatgcttggcacgtaccccgtgtacatacttcccaggcacccagcatggaaataaagcacccagc
> > g
> >> ctgccctgg
> >> 
> >> 
> >> 
> >> 
> >> On Tue, 2004-03-23 at 22:44, Jason Stajich wrote:
> >>  
> >> 
> >>> You need an additional perl module.
> >>> 
> >>> 
> >>> install IO::String from CPAN
> >>> 
> >>> There is a section on how to install additional perl modules in the
> >>> INSTALL document.
> >>> 
> >>> -j
> >>> 
> >>> On Tue, 23 Mar 2004, Alberto Davila wrote:
> >>> 
> >>>    
> >>> 
> >>>> Hi,
> >>>> 
> >>>> May I ask for some help ?
> >>>> 
> >>>> I am trying to use the BioFetch module in order to download several
> > seqs
> >>>> (from specific Organisms) from GenBank in fasta format, but looks
> > like I
> >>>> am missing "IO/String.pm" and other things.. should I install
> > additional
> >>>> bioperl modules (I have the Bioperl Core 1.4 installed) ? or use a
> >>>> different module for my purpose ?
> >>>> 
> >>>> My script and error msg are listed below.
> >>>> 
> >>>> Thanks and besr regards,
> >>>> 
> >>>> Alberto
> >>>> 
> >>>> ****
> >>>> 
> >>>> #!/usr/local/bin/perl -w
> >>>> 
> >>>> use lib "/usr/local/bioperl14";
> >>>> package Bio::DB::BioFetch;
> >>>> use strict;
> >>>> use Bio::DB::WebDBSeqI;
> >>>> use HTTP::Request::Common 'POST';
> >>>> 
> >>>> my $format_type='fasta';
> >>>> my $stream;
> >>>> 
> >>>> 
> >>>> my $bf = new Bio::DB::BioFetch(-format        =>$format_type',
> >>>>                               -retrievaltype =>'tempfile',
> >>>>                               -db            =>'EMBL');
> >>>> 
> >>>> $stream = $bf->get_Stream_by_id(['BUM','J00231']);
> >>>> while (my $s = $stream->next_seq) {
> >>>>    print $s->seq,"\n";
> >>>>        }
> >>>> 
> >>>> 
> >>>>          exit;
> >>>> 
> >>>> 
> >>>> [davila at tryps script]$ perl gb-fetch-1.pl
> >>>> Can't locate IO/String.pm in @INC (@INC contains:
> >>>> /usr/local/bioperl14/i386-linux-thread-multi /usr/local/bioperl14
> >>>> /usr/lib/perl5/5.8.3/i386-linux-thread-multi /usr/lib/perl5/5.8.3
> >>>> /usr/lib/perl5/site_perl/5.8.3/i386-linux-thread-multi
> >>>> /usr/lib/perl5/site_perl/5.8.2/i386-linux-thread-multi
> >>>> /usr/lib/perl5/site_perl/5.8.1/i386-linux-thread-multi
> >>>> /usr/lib/perl5/site_perl/5.8.0/i386-linux-thread-multi
> >>>> /usr/lib/perl5/site_perl/5.8.3 /usr/lib/perl5/site_perl/5.8.2
> >>>> /usr/lib/perl5/site_perl/5.8.1 /usr/lib/perl5/site_perl/5.8.0
> >>>> /usr/lib/perl5/site_perl
> >>>> /usr/lib/perl5/vendor_perl/5.8.3/i386-linux-thread-multi
> >>>> /usr/lib/perl5/vendor_perl/5.8.2/i386-linux-thread-multi
> >>>> /usr/lib/perl5/vendor_perl/5.8.1/i386-linux-thread-multi
> >>>> /usr/lib/perl5/vendor_perl/5.8.0/i386-linux-thread-multi
> >>>> /usr/lib/perl5/vendor_perl/5.8.3 /usr/lib/perl5/vendor_perl/5.8.2
> >>>> /usr/lib/perl5/vendor_perl/5.8.1 /usr/lib/perl5/vendor_perl/5.8.0
> >>>> /usr/lib/perl5/vendor_perl .) at
> >>>> /usr/local/bioperl14/Bio/DB/WebDBSeqI.pm line 90.
> >>>> BEGIN failed--compilation aborted at
> >>>> /usr/local/bioperl14/Bio/DB/WebDBSeqI.pm line 90.
> >>>> Compilation failed in require at gb-fetch-1.pl line 6.
> >>>> BEGIN failed--compilation aborted at gb-fetch-1.pl line 6.




More information about the Bioperl-l mailing list