[Bioperl-l] Issues with new Bio::Tools::Run modules for Genemark and Glimmer
Sendu Bala
bix at sendu.me.uk
Thu Mar 1 23:06:54 UTC 2007
Mark Johnson wrote:
> Now that I'm using _set_from_args() and trying to get all the options
> and switches working that I never use, it occurs to me that a 4-in-1
> module for Glimmer2/Glimmer3/GlimmerM/GllimmerHMM is not going to fly
> due to the options and switches being different. At this point, I think
> I'm going to end up with a Genemark module, a Glimmer2 module, and a
> Glimmer3 module. Feh.
I think a 4in1 would still be possible. Presumably at some point you
know which one you will run, so let the user set everything in the
single new() even if it doesn't make sense, but then form argument
strings with
sub _setparams {
...
if ($glimmer2) {
my $param_string = $self->SUPER::_setparams(
-params => [@glim2params], -dash => 1);
}
elsif ($glimmer3) {
...
Or if you want to be stricter in new(), do something like:
sub new {
my($class, @args) = @_;
my $self = $class->SUPER::new(@args);
my ($type) = $self->_rearrange([qw(TYPE)], @args);
if ($type eq 'glimmer2') }
$self->_set_from_args(\@args, -methods => [@glim2params],
-create => 1);
}
elsif ($type eq ...
You'll have to figure out something yourself if you want to warn about
the user supplying args that their requested type doesn't use.
All that said, if these Glimmer things are different programs with
different uses (and not simply different versions of the same thing with
the same function), by all means make separate modules.
More information about the Bioperl-l
mailing list