[Bioperl-l] question of seq() method of Bio::DB::GFF and Bio::PrimarySeq
chiragmatkarbioinfo at gmail.com
Fri Jan 28 06:57:25 UTC 2011
Objects in Bioperl are References ,generally hash references,where keys are
attributes like name and source of sequence
So to get values , You need to Deference them to fetch values stored at the
Hope it Helps.
On Fri, Jan 28, 2011 at 1:16 AM, Florent Angly <florent.angly at gmail.com>wrote:
> Hi Shuai,
> Scott answered your question, but you can find more information pertinent
> to your question here:
> On 27/01/11 08:37, Scott Cain wrote:
>> Hi Shuai,
>> The seq method does not return a sequence string, but a sequence
>> object (Bio::Seq), on which you can perform many methods, including
>> just getting the sequence string, but you can also doing things like
>> translating and getting the reverse complement. To get the DNA
>> string, call the seq() method on your Bio::Seq object:
>> my $upstream->seq->seq;
>> The first invocation of seq is calling the seq method in Bio::DB::GFF,
>> which returns the Bio:Seq object, and the second call of seq calls the
>> seq method in Bio::Seq, which returns a string. The dna method in
>> Bio::DB::GFF is a short cut for doing exactly this (I think--it's been
>> a while since I've used that).
>> 2011/1/27 Zhan, Shuai<Shuai.Zhan at umassmed.edu>:
>>> Dear BIOPERL developers,
>>> I'm a post doc in UMASS Medical School.
>>> Recently I carried out some genome-wide annotation work, but faced some
>>> difficulty with using Bio::DB::GFF to fetch DNA sequences, whose seq()
>>> method is required by another critical softwares.
>>> I found the key issue is that the method of seq() of Bio::DB::GFF
>>> (inherited from Bio::PrimarySeq?) can't exactly return the actual sequence
>>> string but something like reference. This question made me upset for several
>>> days and stoped my progress, but I have not found any related help from
>>> google or my friends. So I'm assuming you could give me some valuable
>>> My perl is 5.8.8 and system is CentOS 5.3.
>>> I loaded gff file with annotation information both of CDS and reference
>>> by bp_load_gff.pl. The raw fasta sequence file was also loaded together.
>>> I wrote a test script just like your instruction on website.
>>> use Bio::DB::GFF;
>>> my $db = Bio::DB::GFF->new(-dsn => 'dbi:mysql:brenneri', -user => 'me',
>>> -password => '123',);
>>> my $contig0 = $db->segment(-class => 'Sequence', -name => 'Contig0');
>>> my $subcontig = $contig0->subseq(1,100);
>>> print "returned by seq(): ", $upstream->seq, "\n";
>>> print "returned by dna(): ", $upstream->dna, "\n\n";
>>> my $transcripts = $db->segment(-class => 'Transcript', -name =>
>>> my @exons = $transcripts->features('CDS');
>>> print "returned by seq(): ", $exons->seq "\n";
>>> print "returned by seq(): ", $exons->dna "\n\n";
>>> my $upstream = $exons->subseq(-20,0);
>>> print "returned by seq(): ", $upstream->seq "\n";
>>> print "returned by seq(): ", $upstream->dna "\n\n";
>>> The result as follows:
>>> $perl test.pl
>>> returned by seq(): Bio::PrimarySeq=HASH(0x1afa40d0)
>>> returned by dna():
>>> returned by seq(): Bio::PrimarySeq=HASH(0x1afa3ab0)
>>> returned by dna():
>>> returned by seq(): Bio::PrimarySeq=HASH(0x1afa3fb0)
>>> returned by dna(): GGAGTTTGGACCGTGTTTCAG
>>> Because the method of dna() could exactly return the actual sequence, so
>>> I think my loaded database should work. But I have no idea of why the method
>>> seq() missed the sequence.
>>> I'd greatly appreciate any help.
>>> Jan 27 2010
>>> 364 Plantation Str.
>>> MA 01605
>>> UMASS MED
>>> Bioperl-l mailing list
>>> Bioperl-l at lists.open-bio.org
> Bioperl-l mailing list
> Bioperl-l at lists.open-bio.org
More information about the Bioperl-l