[Bioperl-l] Bio::SeqIO

Loerch, Patrick patrick_loerch@merck.com
Thu, 18 Oct 2001 14:00:19 -0400

I am attempting to connect to a database using DBI, bring in a sequence
using a SQL string, and output that sequence using SeqIO, in Fasta format,
to STDOUT. I keep getting an error message which replies "Bad Name after
Fasta' at fetch_exons.pl Line 14". 

I was wondering if this is a problem with the SeqIO (or possibly with the
databse connection). Here is the script below. There are a number of perl
Modules which I am also using. I am finding this to be very frustrating,
cdoes anyone have any suggestions?


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

use lib '/usr/lib/perl/;
use strict;
use BigFasta;
use JimKent;
use SQLServer;
use Bio::SeqIO;
use Bio::PrimarySeq;

#my $FASTA = "$ENV{HOME}/superlink_masked.fasta";
my $FASTA = "/info/hgapdb/UCSC/Dec0401/chr22.fa";

my $out = Bio::SeqIO->new(-format => 'Fasta', -fh => exons);

my $accession = $ARGV[0] || "NM_005160";


my $sql = "select a.* from ucsc_refgene_exons a, ucsc_refgene b where
a.refgene_id = b.refgene_id and b.name like '$accession'";

my @exons = select($sql);

my @transcript = ();
my $strand;

for my $e (@exons) {
    my ($start, $end) = jk_coords(start => $e->{exonstart},
				  end   => $e->{exonend});
    my $exon = rip_substring(fasta => $FASTA, 
			     start => $start,
			     end   => $end);    
    my $seq = Bio::PrimarySeq->new(-seq => $exon,
				   -moltype => 'dna'
    push(@transcript, $seq);
    $strand = $e->{strand};

my $count = 1;

while (@transcript) {

    if ($strand == -1) {

	my $seq = pop(@transcript);

    } else {

	my $seq = shift(@transcript);