Reverse Complement utility, Bio::Alg, return value problem

Georg Fuellen fuellen@dali.Mathematik.Uni-Bielefeld.DE
Wed, 6 Aug 1997 09:34:36 +0000 (GMT)

I agree w/ SteveC -re- a web driver (see today's post).
I've already got a little experience using Bio::UnivAln with and PGPLOT, see
(the script is kinda dated, e.g. I've now got a much better grip of PGPLOT)
Do you think this is on the right track ?
Anyway, we should keep in mind that for the GUI, we're probably
going to have Java applets, too -- and then we can also demonstrate that Perl is
an excellent glue for all this.

> You might want a different name than Bio::Alg, since this name to me 
> implies that the module *provides* the algorithms rather than simply 
> wraps around them. Perhaps AlgManager? AlgWrapper?

I agree; IMO AlgMgr is best.
(SteveC: If you think your is worth looking at, pls mail it
or point to it.)

> > > 3) Regarding return-values, pls let me know soon about your opinion.
> > > Btw, in my post I should have used get_seq() instead of slice(), so that 
> > > we have
> > > $myseq->get_seq(seq($beg,$end))       returns modified object
> > 
> > I'm confused.  Is seq an exported function?  

I'd like to follow the PDL example; I think they export the inplace()
function, and seq() [and possibly some other, similar functions]
could be handled the same way.

> > When you say "returns modified object," do you mean modifies the current
> > object or creates a new object and returns that?

creates a new object and returns that. You modify the current object
by 'inplace'.

> > > $myseq->get_seq($beg,$end)            same as current get_seq() -- returns sequence
> > > $myseq->get_seq(inplace($beg,$end))   modifies the object itself -- ithis saves time+space
> > > 
> > > And for revcom:
> > > $myseq->revcom(seq($beg,$end))      returns modified object
> > > $myseq->revcom($beg,$end)           same as current revcom() -- returns sequence
> > > $myseq->revcom(inplace($beg,$end))  modifies the object itself -- this saves time+space
> > > 
> I'm also confused about how the seq() and inplace() calls within the 
> get_seq() and revcom() calls are being used.  Either of these might be 
> more obvious:
> $myseq->revcom($myseq->inplace($beg,$end))

The analog $myseq->get_seq($myseq->seq($beg,$end)) [which slices and returns
a new object containing the slice] doesn't look nice to me.

> OR
> $myseq->revcom($beg,$end,'inplace')

This runs into problems if for some utilities you later add a 3rd parameter
(and need to move 'inplace' one step further towards the end of the parameter

> Cheers,
> SteveC

best wishes,