[Bioperl-l] Inheritance Bio::Map::Physical
Keith Anthony Boroevich
kaboroev at sfu.ca
Tue Nov 14 05:55:46 UTC 2006
Hi,
I am using an up-to-date bioperl-live. The precise code is
insignificant so I wrote some additional (shorter) code to attempt to
explain my problem. What I want to do is the following. I want to add
some functionality to the Bio::Map::Physical module so i created a
module that inherits Physical module, Extended::FPC.pm.
#----Test.pl-BEGIN---#
use strict;
use diagnostics;
use Extended::FPC;
my $mapio = new Extended::FPC(-format => "fpc",-file =>
$ARGV[0],-readcor => 1);
my $map = $mapio->next_map();
$map->fpc_test();
exit 0;
#---Test.pl-END------#
#----Extended::FPC.pm-BEGIN---#
package Extended::FPC;
use strict;
use base qw(Bio::Map::Physical Bio::MapIO);
sub fpc_test {
print STDERR "testing\n";
return 0;
}
1;
#----Extended::FPC.pm-END-----#
The execution of test.pl results in a "Can't locate object method
"next_map" via package "Extended::FPC"" error;
Then I added the "Bio::MapIO" module to the "use base
qw(Bio::Map::Physical Bio::MapIO);", because that is the module in which
next_map is declared. When I again execute test.pl I now get the exception:
Uncaught exception from user code:
#-------- EXCEPTION ------- #
------------- EXCEPTION: Bio::Root::NotImplemented -------------
MSG: Abstract method "Bio::Factory::MapFactoryI::next_map" is not
implemented by package Extended::FPC.
This is not your fault - author of Extended::FPC should be blamed!
STACK: Error::throw
STACK: Bio::Root::Root::throw
/usr/lib/perl5/site_perl/5.8.7/Bio/Root/Root.pm:359
STACK: Bio::Root::RootI::throw_not_implemented
/usr/lib/perl5/site_perl/5.8.7/Bio/Root/RootI.pm:522
STACK: Bio::Factory::MapFactoryI::next_map
/usr/lib/perl5/site_perl/5.8.7/Bio/Factory/MapFactoryI.pm:84
STACK: ./fpc.pl:12
----------------------------------------------------------------
at /usr/lib/perl5/site_perl/5.8.7/Error.pm line 187
Error::throw('Bio::Root::NotImplemented', '-class',
'Bio::Root::NotImplemented', '-object', 'Extended::FPC=HASH(0x109ce10)',
'-text', 'Abstract method "Bio::Factory::MapFactoryI::next_map" is not
...') called at /usr/lib/perl5/site_perl/5.8.7/Bio/Root/Root.pm line 359
Bio::Root::Root::throw('Extended::FPC=HASH(0x109ce10)', '-text',
'Abstract method "Bio::Factory::MapFactoryI::next_map" is not ...',
'-class', 'Bio::Root::NotImplemented') called at
/usr/lib/perl5/site_perl/5.8.7/Bio/Root/RootI.pm line 522
Bio::Root::RootI::throw_not_implemented('Extended::FPC=HASH(0x109ce10)')
called at /usr/lib/perl5/site_perl/5.8.7/Bio/Factory/MapFactoryI.pm line 84
Bio::Factory::MapFactoryI::next_map('Extended::FPC=HASH(0x109ce10)')
called at ./fpc.pl line 12
#---- EXCEPTION END ----#
This is where I am now and have no real idea of where to begin. I
suppose the easiest way is to pass the $map variable to the function of
interest and not to bother with inheriting any modules.
Sendu Bala wrote:
> Keith Anthony Boroevich wrote:
>
>> Hi,
>>
>> I am attempting to add a few methods (ie. matching_bands_list) to the
>> fpc map class but I am having a hard time inheriting the class properly.
>>
>> My first attempt was to inherit the "Bio::Map::Physical" class but the
>> "next_map" package is not found.
>> So I tried inheriting "Bio::MapIO" instead, and get a cannot find
>> "matching_bands_list" via package "Bio::Map::Physical"
>> The only way I can get it to work is with no inheritance and passing the
>> map class variable to the function, but this isn't very elegant. Is
>> there a correct way to inherit these classes that will allow me to
>> execute this properly?
>>
>
> It's hard to diagnose the problem without knowing exactly what you've
> tried. Please post some relevant code. Also, what version of Bioperl are
> you using?
> _______________________________________________
> Bioperl-l mailing list
> Bioperl-l at lists.open-bio.org
> http://lists.open-bio.org/mailman/listinfo/bioperl-l
>
>
--
><)))°> -cGRASP- <°(((><
Keith Anthony Boroevich
Simon Fraser University
Tel: 604-268-7276
More information about the Bioperl-l
mailing list