[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?
Patrick
#!/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";
get_database_handle('OLIVE_UCSC');
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);
$seq->display_id("$accession.$count");
$out->write_seq($seq->revcom);
} else {
my $seq = shift(@transcript);
$seq->display_id("$accession.$count");
$out->write_seq($seq);
}
$count++;
}
release_database_handle();