[Bioperl-l] SeqIO fails on masked sequences

Nathan Haigh nathanhaigh at ukonline.co.uk
Thu Dec 16 05:31:15 EST 2004


When I use the script you supplied, I get the exception shown below.

I'll try to get to the bottom of this.

In the meantime, what OS are you both using and what version of Bioperl?

Nathan


------------- EXCEPTION: Bio::Root::Exception -------------
MSG: Got a sequence with no letters in it cannot guess alphabet []
STACK: Error::throw
STACK: Bio::Root::Root::throw I:/Programming/Perl/perl5.8.0/site/lib/Bio/Root/Root.pm:328
STACK: Bio::PrimarySeq::_guess_alphabet I:/Programming/Perl/perl5.8.0/site/lib/Bio/PrimarySeq.pm:837
STACK: Bio::Seq::SeqFastaSpeedFactory::create I:/Programming/Perl/perl5.8.0/site/lib/Bio/Seq/SeqFastaSpeedFactory.pm:134

STACK: Bio::SeqIO::fasta::next_seq I:/Programming/Perl/perl5.8.0/site/lib/Bio\SeqIO\fasta.pm:141
STACK: test.pl:9
-----------------------------------------------------------

> -----Original Message-----
> From: bioperl-l-bounces at portal.open-bio.org [mailto:bioperl-l-bounces at portal.open-bio.org] On Behalf Of Marc Logghe
> Sent: 16 December 2004 09:27
> To: Wes Barris
> Cc: Bioperl Mailing List
> Subject: RE: [Bioperl-l] SeqIO fails on masked sequences
> 
> Hi Wes,
> 
> > > Guess you can do it by setting the alphabet explicitely:
> > > $seq_in->alphabet('dna'); # or 'rna' or 'protein'
> >
> > Sorry, that does not work.  I tried this and got the same error:
> 
> Yeah, some strange things seem to happen. You can set it this way but it is not taken into account anyhow by Bio::SeqIO::fasta:
when
> it is set and there is a sequence found, it is boldly set to undef !!!
> In object creation the type is guessed anyhow and in your case it ends up as protein because of the X's. It would end up as dna if
it
> were N's, though.
> 
> 
> > > Indirectly, you can do it also by setting the alphabet for
> > the factory object and passing the factory object with the
> > Bio::SeqIO constructor.
> >
> > Would you provide an example?
> Think that did not make sense, sorry for that.
> 
> On the other hand I was not able to mimick your problem generating the error. I got no errors, only the fact that the alphabet was
reset
> to 'protein'. Initially I got a similar error but that was caused by the fact that $format was not set yet and I did not run using
the strict
> pragma.
> 
> The script I used to find that out:
> 
> #!/usr/bin/perl
> use strict;
> use Bio::SeqIO;
> use Data::Dumper;
> 
> my $format = 'fasta';
> 
> 
> my $seq_in  = Bio::SeqIO->new(-format=>$format, -fh => \*DATA);
> $seq_in->alphabet('dna');
> my $seq_out = Bio::SeqIO->new(-format=>$format, -fh => \*STDOUT);
> $seq_out->alphabet('dna');
> my $seq = $seq_in->next_seq;
> 
> print Data::Dumper->Dump([$seq],['seq']);
> $seq_out->write_seq($seq);
> 
> __DATA__
> >test
> XXXXXXXXXXXXXXXXXXXXXXXXX
> 
> 
> I am afraid I can not be of more help here.
> Cheers,
> Marc
> 
> 
> 
> _______________________________________________
> Bioperl-l mailing list
> Bioperl-l at portal.open-bio.org
> http://portal.open-bio.org/mailman/listinfo/bioperl-l
> ---
> avast! Antivirus: Inbound message clean.
> Virus Database (VPS): 0451-1, 14/12/2004
> Tested on: 16/12/2004 10:00:11
> avast! is copyright (c) 2000-2003 ALWIL Software.
> http://www.avast.com
> 
> 

---
avast! Antivirus: Outbound message clean.
Virus Database (VPS): 0451-1, 14/12/2004
Tested on: 16/12/2004 10:30:08
avast! is copyright (c) 2000-2003 ALWIL Software.
http://www.avast.com







More information about the Bioperl-l mailing list