[Bioperl-l] Problem: Can't call method "features" on an undefined value at BIO::DB::GFF.pl

Hang hangsyin at gmail.com
Mon Jan 21 14:22:55 EST 2008


Hi, Chris:

Following your suggestion, I added -create flag and the GFF3loader started
to work. Thanks alot!
When I load dmel-all-5.4.gff into mysql with -fast, I had the following
error:
   Data too long for column 'attribute_value' at c:/../../../mysql.pm line
510
If I don't use -fast, it is OK, except for the annoying slow speed. Do you
have any suggestion on this?

Best,
Hang




Chris Fields wrote:
> 
> It's bp_seqfeature_load.pl (if you have the full bioperl core  
> distribution, it's in script/Bio-SeqFeature/Store).  I had some  
> problems with the fast-loading option but it was likely just my gff  
> formatting; example data loaded just fine.
> 
> As for the error, you need to use the '-create' flag when initializing  
> a database (or wiping data from a current one):
> 
> =============================================================
> use Bio::DB::SeqFeature::Store;
> use Bio::DB::SeqFeature::Store::GFF3Loader;
> my $db = Bio::DB::SeqFeature::Store->new(-adaptor => 'DBI::mysql',
>                                          -dsn     => 'dbi:mysql:test',
>                                          -user    => 'root',
>                                          -pass    => 'XXXXX',
>                                          -write   =>  1
>                                          -create  => 1);
> my $loader = Bio::DB::SeqFeature::Store::GFF3Loader->new(-store    =>  
> $db,
>                                                          -verbose  =>  
> 1);
> $loader->load(./'dmel-all-r5.4.gff');
> =============================================================
> 
> chris
> 
> On Jan 20, 2008, at 9:25 AM, Scott Cain wrote:
> 
>> Jon,
>>
>> There is a script for loading a SeqFeature database just like the GFF
>> database, though I don't know what it's called off hand (I'm not at my
>> normal computer right now).  Be sure to read the documentation and you
>> will probably want to use the 'fast' option (I don't remember what  
>> it is
>> called either).
>>
>> Scott
>>
>>
>> ----------------------------------------------------------------------
>> Scott Cain, Ph. D.				 	 cain at cshl.edu
>> GMOD Coordinator, http://www.gmod.org/			 (216)392-3087
>> ----------------------------------------------------------------------
>>
>>
>> On Sun, 20 Jan 2008, Hang wrote:
>>
>>>
>>> Hi, Scott,
>>> I tried to change sequence-region line to "4   FlyBase   
>>> chromosome_arm  1
>>> 1351857 .  .  .  ID=4;Name=4", it doesn't work. "$!" didn't say  
>>> anything but
>>> "died at line 12".
>>>
>>> So, I went ahead with the Bio::DB::SeqFeature::Store. Here is my  
>>> code to
>>> load the dmel-all-r5.4.gff(from Flybase) to a test database:
>>> =============================================================
>>> use Bio::DB::SeqFeature::Store;
>>> use Bio::DB::SeqFeature::Store::GFF3Loader;
>>> my $db = Bio::DB::SeqFeature::Store->new(-adaptor => 'DBI::mysql',
>>>                                         -dsn     => 'dbi:mysql:test',
>>>                                         -user    => 'root',
>>>                                         -pass    => 'XXXXX',
>>>                                         -write   =>  1 );
>>> my $loader = Bio::DB::SeqFeature::Store::GFF3Loader->new(-store     
>>> => $db,
>>>                                                         -verbose   
>>> => 1);
>>> $loader->load(./'dmel-all-r5.4.gff');
>>> =============================================================
>>> I got bunch of errors like this:
>>> "DBD::mysql::execute failed: Table 'test.locationlist' doesn't  
>>> exist at
>>> C:\Biology\perl\site\lib\Bio\DB\SeqFeature\Store\DBI\mysql.pm line  
>>> 1316".
>>> The line 1316 in mysql.pm looks like this: $sth->execute($name) or  
>>> die
>>> $sth->errstr;
>>> I checked the database test after failed loading. There is only one  
>>> table
>>> created, which call 'meta'. I also tried 'grant all on test to
>>> XXX at localhost' and used that -user and -pass to load gff, it didn't  
>>> work
>>> either.
>>>
>>> Jon
>>>
>>>
>>> Scott Cain-3 wrote:
>>>>
>>>> Hi Jon,
>>>>
>>>> Well, seeing the error message would be helpful, but my first guess
>>>> without is that there are a few things you can try:
>>>>
>>>>  * removing the "sequence-region" line from the GFF file, adding a  
>>>> line
>>>> like this:
>>>>
>>>>  4   FlyBase  chromosome_arm  1  1351857 .  .  .  ID=4;Name=4
>>>>
>>>> and then reloading the database.
>>>>
>>>>  * Or, you may want to consider using Bio::DB::SeqFeature::Store,  
>>>> since
>>>> Bio::DB::GFF3 doesn't always behave correctly with complex GFF3  
>>>> (that
>>>> is, with three levels of features (like gene, mRNA and CDS)).
>>>>
>>>> Scott
>>>>
>>>> On Sat, 2008-01-19 at 19:49 -0800, Hang wrote:
>>>>> Hi, Scott,
>>>>>
>>>>> After adding die $!, I know something is wrong at line:
>>>>> "my $segment = $db->segment(-name => '4', -start => 20000, -end =>
>>>>> 25000);"
>>>>>
>>>>> my gff file is like this:
>>>>> ##gff-version 3
>>>>> ##sequence-region 4 1 1351857
>>>>> 4	FlyBase	transposable_element	2	611	.	+	.
>>>>> ID=FBti0062890;Name=ninja-Dsim- 
>>>>> like 
>>>>> {}4829 
>>>>> ;Dbxref=FlyBase_Annotation_IDs:TE62890;derived_cyto_location=-;
>>>>> 4	repeatmasker_dummy	match	2	347	.	+	.
>>>>> ID=:1395923_repeatmasker_dummy;Name=1%2C347-AE003845.4-dummy- 
>>>>> RepeatMasker;
>>>>> 4	repeatmasker_dummy	match_part	2	347	2367	+	.
>>>>> ID=:5142029_dummy;Name=:5142029;Parent=: 
>>>>> 1395923_repeatmasker_dummy;target_type=so;Target=D83207
>>>>> 5860 6210 +;
>>>>> ...
>>>>> ...
>>>>> I really got confused. Any further suggestion? Thank you!
>>>>>
>>>>> Jon
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> Scott Cain-3 wrote:
>>>>>>
>>>>>> Hi Jon,
>>>>>>
>>>>>> I think it's funny that you have "or die" on the database  
>>>>>> opening line,
>>>>>> "or die" on the @features line, but you didn't put one on the  
>>>>>> $segment
>>>>>> line.  Try adding "or die: $!" to the $segment line to see what it
>>>>> says,
>>>>>> also add a 'print $segment' after you create it and before you  
>>>>>> try to
>>>>>> get the features from it.
>>>>>>
>>>>>> Clearly, the problem is that $segment is not defined (that is,  
>>>>>> nothing
>>>>>> is in it, not that the wrong thing is in it).  The next trick is  
>>>>>> to
>>>>> find
>>>>>> out why.  My first guess, without looking at the data set, is  
>>>>>> that the
>>>>>> arm is not really named '4'.
>>>>>>
>>>>>> Scott
>>>>>>
>>>>>> On Sat, 2008-01-19 at 10:25 -0800, Hang wrote:
>>>>>>> Hi, everyone,
>>>>>>>
>>>>>>> I met this problem when I was running this script to extract  
>>>>>>> features
>>>>>>> overlaps with 4:20,000..25,000. It always responds like "Can't  
>>>>>>> call
>>>>>>> method
>>>>>>> "features" on an undefined value at BIO::DB::GFF.pl line XX".
>>>>>>> ==============================================================
>>>>>>> use Bio::DB::GFF;
>>>>>>> use Bio::Tools::GFF;
>>>>>>> my $db = Bio::DB::GFF->new(-adaptor => 'dbi::mysql',
>>>>>>>                                        -dsn =>
>>>>>>> 'dbi:mysql:dmel_gff:localhost',
>>>>>>>                                        -user => 'XXXX',
>>>>>>>                                        -pass => 'XXXX') || die
>>>>> "database
>>>>>>> open failed";
>>>>>>>
>>>>>>> my $segment = $db->segment(-name => '4', -start => 20000, -end =>
>>>>> 25000);
>>>>>>> my @features = $segment->features(-types => ['gene', 'exon',  
>>>>>>> 'intron',
>>>>>>> 'five_prime_UTR', 'three_prime_UTR', 'CDS']) or die "no  
>>>>>>> features";
>>>>>>> print(scalar(@features)."\n");
>>>>>>>
>>>>>>> ================================================================
>>>>>>> I am using activeperl 5.8.8 and bioperl 1.5.2 under Win32. I  
>>>>>>> loaded
>>>>>>> dmel_5.4.gff into mysql database by bulk_load_gff.pl without any
>>>>> error.
>>>>>>> Other methods failed also.
>>>>>>>
>>>>>>> Any help will be deeply appreciated!
>>>>>>>
>>>>>>> Best,
>>>>>>> Jon
>>>>>>>
>>>>>> -- 
>>>>>>
>>>>> ------------------------------------------------------------------------
>>>>>> Scott Cain, Ph. D.
>>>>> cain at cshl.edu
>>>>>> GMOD Coordinator (http://www.gmod.org/)
>>>>> 216-392-3087
>>>>>> Cold Spring Harbor Laboratory
>>>>>>
>>>>>> _______________________________________________
>>>>>> Bioperl-l mailing list
>>>>>> Bioperl-l at lists.open-bio.org
>>>>>> http://lists.open-bio.org/mailman/listinfo/bioperl-l
>>>>>>
>>>>>>
>>>>>
>>>> -- 
>>>> ------------------------------------------------------------------------
>>>> Scott Cain, Ph. D.                                        
>>>> cain at cshl.edu
>>>> GMOD Coordinator (http://www.gmod.org/)                      
>>>> 216-392-3087
>>>> Cold Spring Harbor Laboratory
>>>>
>>>> _______________________________________________
>>>> Bioperl-l mailing list
>>>> Bioperl-l at lists.open-bio.org
>>>> http://lists.open-bio.org/mailman/listinfo/bioperl-l
>>>>
>>>>
>>>
>>> -- 
>>> View this message in context:
>>> http://www.nabble.com/Problem%3A-Can%27t-call-method-%22features%22-on-an-undefined-value-at-BIO%3A%3ADB%3A%3AGFF.pl-tp14971922p14982665.html
>>> Sent from the Perl - Bioperl-L mailing list archive at Nabble.com.
>>>
>>> _______________________________________________
>>> Bioperl-l mailing list
>>> Bioperl-l at lists.open-bio.org
>>> http://lists.open-bio.org/mailman/listinfo/bioperl-l
>>>
>>
>> _______________________________________________
>> Bioperl-l mailing list
>> Bioperl-l at lists.open-bio.org
>> http://lists.open-bio.org/mailman/listinfo/bioperl-l
> 
> Christopher Fields
> Postdoctoral Researcher
> Lab of Dr. Robert Switzer
> Dept of Biochemistry
> University of Illinois Urbana-Champaign
> 
> 
> 
> _______________________________________________
> Bioperl-l mailing list
> Bioperl-l at lists.open-bio.org
> http://lists.open-bio.org/mailman/listinfo/bioperl-l
> 
> 

-- 
View this message in context: http://www.nabble.com/Problem%3A-Can%27t-call-method-%22features%22-on-an-undefined-value-at-BIO%3A%3ADB%3A%3AGFF.pl-tp14971922p15004412.html
Sent from the Perl - Bioperl-L mailing list archive at Nabble.com.



More information about the Bioperl-l mailing list