[Bioperl-l] Newbie: Format GenBank
Chris Fields
cjfields at illinois.edu
Wed Sep 23 13:47:51 EDT 2009
On Sep 23, 2009, at 9:38 AM, adlai burman wrote:
> I have finally got past two major hurdles (for me) only to get
> stumped:
> 1. I have written a perl script that can take a genbank formated
> text file as a filehandle and do all sorts of nifty (for me) things
> with it.
> 2. I have gotten my BioPerl installation working on a web hosting
> service so my advisor can use this through a browser.
>
> BUT the code I have to fetch GB record can print it as a single HTML
> line, and what I need is for it to assign the retrieved file to a
> scaler variable. I am going blind trying to figure out how access
> (not write) the gb file from an SeqIO object and assign it to a
> variable.
>
> Here's an example of the code I have going on the server:
>
> #!/usr/bin/perl
> print "Content-type: text/html\n\n";
> use Bio::SeqIO;
> use Bio::DB::GenBank;
>
> $genBank = new Bio::DB::GenBank; # This object knows how to talk to
> GenBank
>
> my $seq = $genBank->get_Seq_by_acc('DQ897681'); # get a record by
> accession
>
> my $seqOut = new Bio::SeqIO(-format => 'genbank');
>
> $seqOut->write_seq($seq);
>
> exit;
>
> where 'DQ897861' will be replaced by a CGI post.
>
> I know that write_seq is not what I need, and I assume that this is
> a simple problem but can anyone tell me how to assign the retrieved
> gb file to a scaler?
>
> Thanks,
> Adlai
Actually, there are two ways you can do this, one involving write_seq.
(1) The first is to just grab the raw data using Bio::DB::EUtilities:
use Bio::DB::EUtilities;
my $eutil = Bio::DB::EUtilities->new(-eutil => 'efetch',
-db => 'nuccore',
-id => 'DQ897681',
-rettype => 'gb');
my $var = $eutil->get_Response->content;
(2) Use IO::String (see the SeqIO HOWTO), or Roy's example code. That
would 'filter' everything through SeqIO via next_seq/write_seq, so the
output is what BioPerl spits out and may not be exactly the same.
chris
More information about the Bioperl-l
mailing list