Hi Chris,
I know you're a core dev;)
Well not a wrapper I'm just extending restriction::analysis and wanted
to do it with moose. But apparently it is much difficult than expected.
Moreover I'm nit really comfortable with moose, I must admit I don't
understand all the concepts :(.
I didn't realize 'rearrange' would break moose. But anyway it looks
like even the subs around moose'new methods are not called. It is
really obscure for me at this time.
Either I'll stay with the current biopel code structure or if someone
has an explanation....
Anyway thanks for your helps
Emmanuel
Le 5 mars 2010 à 16:53, Chris Fields <cjfie...@illinois.edu> a écrit :
Emmanuel,
Are you trying to wrap bioperl modules? The use of $self->_rearrange
()
gives it away, not to mention the 'so:xxxxx' (sequence ontology).
You should probably use delegation, or something like
MooseX::NonMoose;
bioperl's class structure has issues (believe me, I'm a core dev for
the
project).
chris
(PS: FWIW, I'm rewriting some of the core modules in Moose but they
need
serious work)
On Fri, 2010-03-05 at 15:49 +0100, Emmanuel Quevillon wrote:
Stevan Little wrote:
On Mar 5, 2010, at 9:06 AM, Emmanuel Quevillon wrote:
Joel Bernstein wrote:
On 5 Mar 2010, at 13:37, Emmanuel Quevillon wrote:
By the way, I use a self coded 'new' method to create my object.
Would it be the problem?
Yes. But you omitted the code that doesn't work, so... Good luck!
/joel
oops sorry,
sub new {
my($class, %args) = @_;
my $self = $class->SUPER::new(%args);
$self->_init(%args);
$self->_build_types(%args);
return $self;
}
Later in the code is try $self->so_type(), nothing is returned...
Honestly, this should work, however you very well might be doing
something in _init or _build_types that causes the problem. Perhaps
showing us some more code would help.
You might also try changing your "new" to this:
sub BUILD {
my($self, $args) = @_;
$self->_init(%$args);
$self->_build_types(%$args);
}
.. which is a little more Moosey.
- stevan
I tried without success :
Here are the methods :
sub BUILD {
my($self, $args) = @_;
$self->_init(%$args);
$self->_build_types(%$args);
}
sub _init {
my($self, %args) = @_;
my($output, $cut_type, $format, $style) =
$self->_rearrange([qw/OUTPUT CUT_TYPES FORMAT STYLE/], %args);
$format && $self->_set_format (lc($format));
$cut_type && $self->_set_cut_types($cut_type);
$self->_set_style (lc($style) || 'text');
$self->_set_output($output);
return $self;
}
sub _build_types {
my($self, %args) = @_;
$self->{_types} = [ ];
foreach my $type (sort { $a cmp $b } @{$self->cut_types()}){
$type = lc($type);
my $obj = "Bio::Restriction::Analysis::FramedCut::$type";
$self->add_type($obj->new(%args));
}
return;
}
If I put some print into these method, nothing is printed out on my
screen. Looks like there are not called at all. :(
I'm really lost :(
Le 5 mars 2010 à 16:53, Chris Fields <cjfie...@illinois.edu> a écrit :
Emmanuel,
Are you trying to wrap bioperl modules? The use of $self->_rearrange
()
gives it away, not to mention the 'so:xxxxx' (sequence ontology).
You should probably use delegation, or something like
MooseX::NonMoose;
bioperl's class structure has issues (believe me, I'm a core dev for
the
project).
chris
(PS: FWIW, I'm rewriting some of the core modules in Moose but they
need
serious work)
On Fri, 2010-03-05 at 15:49 +0100, Emmanuel Quevillon wrote:
Stevan Little wrote:
On Mar 5, 2010, at 9:06 AM, Emmanuel Quevillon wrote:
Joel Bernstein wrote:
On 5 Mar 2010, at 13:37, Emmanuel Quevillon wrote:
By the way, I use a self coded 'new' method to create my object.
Would it be the problem?
Yes. But you omitted the code that doesn't work, so... Good luck!
/joel
oops sorry,
sub new {
my($class, %args) = @_;
my $self = $class->SUPER::new(%args);
$self->_init(%args);
$self->_build_types(%args);
return $self;
}
Later in the code is try $self->so_type(), nothing is returned...
Honestly, this should work, however you very well might be doing
something in _init or _build_types that causes the problem. Perhaps
showing us some more code would help.
You might also try changing your "new" to this:
sub BUILD {
my($self, $args) = @_;
$self->_init(%$args);
$self->_build_types(%$args);
}
.. which is a little more Moosey.
- stevan
I tried without success :
Here are the methods :
sub BUILD {
my($self, $args) = @_;
$self->_init(%$args);
$self->_build_types(%$args);
}
sub _init {
my($self, %args) = @_;
my($output, $cut_type, $format, $style) =
$self->_rearrange([qw/OUTPUT CUT_TYPES FORMAT STYLE/], %args);
$format && $self->_set_format (lc($format));
$cut_type && $self->_set_cut_types($cut_type);
$self->_set_style (lc($style) || 'text');
$self->_set_output($output);
return $self;
}
sub _build_types {
my($self, %args) = @_;
$self->{_types} = [ ];
foreach my $type (sort { $a cmp $b } @{$self->cut_types()}){
$type = lc($type);
my $obj = "Bio::Restriction::Analysis::FramedCut::$type";
$self->add_type($obj->new(%args));
}
return;
}
If I put some print into these method, nothing is printed out on my
screen. Looks like there are not called at all. :(
I'm really lost :(