Return-value for methods; seed funding

Georg Fuellen fuellen@dali.Mathematik.Uni-Bielefeld.DE
Wed, 30 Jul 1997 21:03:58 +0000 (GMT)


SteveC:

I'm very very grateful for your suggestions and corrections !
Keep them coming :-) (and I hope some other list-subscribers 
send some comments, too; see URL
http://www.techfak.uni-bielefeld.de/bcd/Perl/Bio/UnivAln/UnivAln.pm.html )
I'm incorporating most changes into my Master file, for the next release.
Please request this Master file before bundling the code at Stanford !

> Georg,
> 
> > > $seq->revcom(seq($beg,$end))      returns modified object
> > > $seq->revcom($beg,$end)           same as current revcom() -- returns sequence
> > > $seq->revcom(inplace($beg,$end))  modifies the object itself -- this saves time+space
> > > 
> > > The implementation should be straightforward doing a pattern match
> > > on the argument.
> > 
> > The last sentence should read 
> > The implementation should be straightforward by setting an appropriate flag --
> > the PDL module uses inplace() in such a way, as far as I remember.
> 
> In UnivAln, your documentation would suggest the following:
> 
> $seq->inplace(1);
> $seq->revcom($beg,$end);
> $seq->inplace(0);
> 
> This seems reasonable, since you could imagine having multiple 
> manipulations between the two calls to inplace().

Correct. The most luxury version could support both, however:
$seq->revcom(inplace($beg,$end)) sets the flag temporarily --
the flag is reset after the current manipulation, so that
the next manipulation will not be inplace unless specified
(the internal value of the flag could be set to 2).
$seq->inplace(1) will not be reset, so the next manipulations will be 
inplace until $seq->inplace(0) is set.
Comments ? An advantage of this, if it's extended to the q. whether
data or objects should be returned, is that there doesn't need to
be both revcom() and revcom_obj(), or get_seq() and get_seq_obj().

> As for other comments on the UnivAln.pm module, I would recommend 
> soliciting your users as much as possible. I haven't had much of a chance 
> to use it much (yet), so my input will be limited. 
> 
> Here are a few observations:
> 
> 1) In the "Object Manipulation" section:
>    line 69: if ($str =~ /[AaTtRr]+/) {return 1;} else {return 0;}
>   change to: 
>    line 69: if ($str =~ /[AaGgRr]+/) {return 1;} else {return 0;}
> 
>    Similarly for line 283 (in the "Access by Selector Function" section).

Correct-- I'm happy this studid error is just in the POD, not in the code.

> 2) Also in the "Object Manipulation" section:
>    for the examples of the methods that can return a string or an array  
>    (gap_free_sites, reverse, complement, revcom), it would be clearer to 
>    have something like:
> 
>    @alnSlice OR $alnString = $aln->reverse(1,3);
>    @alnSlice OR $alnString = $aln->complement(1,3);
>    etc...
>    
>    It's not valid Perl but this is obvious and it gets the idea across.

Not sure. I'm now leaning towards
@alnSlice  = $aln->reverse(1,3);
  OR
$alnString = $aln->reverse(1,3);

> 3) Wording change on line 740 (in the Appendix):
>    'considered possibly dangerous' --> 'intended for internal use only'

I changed this in the Master file.

> 4) When we decide on the best way to handle how reverse/complement/revcom 
>    are to deal with slices, it would be nice for PreSeq and UnivAln to 
>    employ the same strategy.
> 
> 
> That's all for now. I too must sleep |^)

Have a good night :-)
georg

> SteveC
>