in reply to A strange error message with Bio::SeqIO

You were missing a few things. Here's the code as I think it should be:
#!/usr/bin/perl use strict; use warnings; use Bio::SeqIO; my $in = Bio::SeqIO->new( -file => "/root/Desktop/seqIOnew.fasta", -format => 'FASTA'); my $out = Bio::SeqIO->new( -file => ">/root/Desktop/new_out.log", -format => "EMBL" ); while ( my $seq = $in->next_seq() ) { print $out->write_seq($seq), "\n"; }
For the input, I took your sequence and put it in a file called seqIOnew.fasta. I tried to get the accession number, but it returned "unknown". Printing out the $seq, you'll see that there is no accession number, so that's why it came back unknown.

For the output, I used new_out.log on my desktop.

Here's the corrected sequence:

>gi|1786958|gb|AAC73831.1| membrane spanning protein in TolA-TolQ-TolR + complex [Escherichia coli str. K-12 substr. MG1655] MTDMNILDLFLKASLL +VKLIMLILIGFSIASWAIIIQRTRILNAAAREAEAFEDKFWSGIELSRLYQESQ GKRDNLTGSEQIFY +SGFKEFVRLHRANSHAPEAVVEGASRAMRISMNRELENLETHIPFLGTVGSISPYI GLFGTVWGIMHA +FIALGAVKQATLQMVAPGIAEALIATAIGLFAAIPAVMAYNRLNQRVNKLELNYDNFM EEFTAILHRQ +AFTVSESNKG
And here's the output:
ID unknown; SV 1; linear; ; STD; UNC; 0 BP. XX AC unknown; XX DE membrane spanning protein in TolA-TolQ-TolR complex [Escherichia +coli str. DE K-12 substr. MG1655] DE MTDMNILDLFLKASLLVKLIMLILIGFSIASWAIIIQRTRILNAAAREAEAFEDKFWSGIELSRL +YQESQ DE GKRDNLTGSEQIFYSGFKEFVRLHRANSHAPEAVVEGASRAMRISMNRELENLETHIPFLGTVGS +ISPYI DE GLFGTVWGIMHAFIALGAVKQATLQMVAPGIAEALIATAIGLFAAIPAVMAYNRLNQRVNKLELN +YDNFM DE EEFTAILHRQAFTVSESNKG XX FH Key Location/Qualifiers FH XX //

Replies are listed 'Best First'.
Re^2: A strange error message with Bio::SeqIO
by genbank (Novice) on Aug 26, 2011 at 13:05 UTC

    Hi Khen1950fx, thank you for your help. I have copyed you code, and run on my computer(just change the path of the file). However I get the same error message, "the sequence does not to be FASTA format(lacks a descriptor line '>')". The code I run as following:

    #!/localperl/bin/perl use strict; use warnings; use Bio::SeqIO; my $in = Bio::SeqIO->new( -file => "/home/zhaoy/document/perl/lwp/seq.fasta", -format => 'FASTA'); my $out = Bio::SeqIO->new( -file => ">/home/zhaoy/document/perl/lwp/new_out.log", -format => "EMBL" ); while ( my $seq = $in->next_seq() ) { print $out->write_seq($seq), "\n"; }

    I receive the error message:

    ------------- EXCEPTION: Bio::Root::Exception ------------- MSG: The sequence does not appear to be FASTA format (lacks a descript +or line '>') STACK: Error::throw STACK: Bio::Root::Root::throw /localperl/lib/site_perl/5.12.4/Bio/Root +/Root.pm:368 STACK: Bio::SeqIO::fasta::next_seq /localperl/lib/site_perl/5.12.4/Bio +/SeqIO/fasta.pm:127 STACK: tmhmm.pl:12 -----------------------------------------------------------

    The same program, gain different results. Maybe the problem is that the installation of bioperl. But I am not sure.

      You probably didn't use the corrected sequence that I gave you:).

        Wow, it's work! I download you sequence and save as 'seq.fasta'. The program not report error message any more and export the expected result. I want to know what the difference bettween the sequences? what I should modify my sequence? Thank you very much!