[Bioperl-l] Interface of the method

Jun Yin jun.yin at ucd.ie
Fri Jun 18 15:05:41 UTC 2010


Hi, Chris,

Ok, I see. Then it is better to support a call of the method like:

$newaln=$aln->select_Seqs('-seqs' => [1, 3, 5..10,15], -toggle => "yes");
and,
$newaln=$aln->select_Seqs([1, 3, 5..10,15]);

But '-seqs' doesnot sound very good, I will prefer '-orders'.

Jun Yin
Ph.D. student in U.C.D.

Bioinformatics Laboratory
Conway Institute
University College Dublin


-----Original Message-----
From: Chris Fields [mailto:cjfields at illinois.edu] 
Sent: Friday, June 18, 2010 2:42 PM
To: Jun Yin
Cc: 'Dave Messina'; bioperl-l at lists.open-bio.org
Subject: Re: [Bioperl-l] Interface of the method

Jun, 

It all depends on optimization.  I like the named argument version myself.
The current bioperl named parameters implementation requires, in order to
parse out the named parameters, you have to call either the core
_rearrange() method or Lincoln's rearrange() utility for consistency (deals
with all sorts of variants, and Lincoln's allows aliases).  Either way is a
small hit, which is fine in most cases, but if the method is called possibly
thousands of times it amplifies accordingly and may become a bottleneck on
speed.  

You could have your cake and eat it too; check if the first argument is an
arrayref and do it it the original way, otherwise use rearrange().  

BTW, this won't work:

'-seqs' => (1, 3, 5..10,15), -toggle => "yes"

The list flattens out into this:

'-seqs', 1, 3, 5, 6, 7, 8, 9, 10, 15, -toggle, "yes" (12 elems) 

So they don't pair up as you would expect; this is a silent bug, as
rearrange() will happily assign 1 to 'seqs' and toss the rest unless they
are asked for.  With and odd number of elements you would see warnings
popping up.

You'll have to use arrayrefs to get proper name-value pairings:

'-seqs', [ 1, 3, 5, 6, 7, 8, 9, 10, 15], -toggle, "yes" (4 elems)

chris

On Jun 18, 2010, at 5:47 AM, Jun Yin wrote:

> Hi, Dave,
> 
> No problem. I think your suggestion of using 
> $newaln=$aln->select_Seqs('-seqs' => (1, 3, 5..10,15), -toggle => "yes"); 
> is more reasonable. It is a more BioPerl way of defined parameters.
> 
> And, $newaln=$aln->select_Seqs(1, 3, 5..10,15); 
> will also be recognized for the simplicity of use.
> 
> Cheers,
> Jun Yin
> Ph.D. student in U.C.D.
> 
> Bioinformatics Laboratory
> Conway Institute
> University College Dublin
> 
> 
> -----Original Message-----
> From: bioperl-l-bounces at lists.open-bio.org
[mailto:bioperl-l-bounces at lists.open-bio.org] On Behalf Of Dave Messina
> Sent: Friday, June 18, 2010 10:38 AM
> To: Jun Yin
> Cc: bioperl-l at lists.open-bio.org
> Subject: Re: [Bioperl-l] Interface of the method
> 
> Hi Jun,
> 
> 
>> In the BioPerl guide,
>> http://www.bioperl.org/wiki/Advanced_BioPerl
>> 
>> They say that, Capital word should be used for methods returning  
>> objects,
> 
> You're absolutely right. My apologies — thanks for pointing that out.
> 
> 
>> Thus an array reference
>> [1,3,5..10] seems better than a list (1,3,5..10),
>> the latter will be hard to recognize the other parameters.
> 
> 
>> 
> Aaand, you're right here, too.
> 
> Again, sorry about that. It was quite late last night when I was  
> replying to your email, and I sure wasn't thinking clearly.
> 
> So, please don't mind me, ( carry on, as you were!) and thanks again  
> for your work on this.
> 
> 
> Dave 
> 
> _______________________________________________
> Bioperl-l mailing list
> Bioperl-l at lists.open-bio.org
> http://lists.open-bio.org/mailman/listinfo/bioperl-l
> 
> 
> __________ Information from ESET Smart Security, version of virus
signature database 5099 (20100509) __________
> 
> The message was checked by ESET Smart Security.
> 
> http://www.eset.com
> 
> 
> 
> _______________________________________________
> Bioperl-l mailing list
> Bioperl-l at lists.open-bio.org
> http://lists.open-bio.org/mailman/listinfo/bioperl-l


__________ Information from ESET Smart Security, version of virus signature
database 5099 (20100509) __________

The message was checked by ESET Smart Security.

http://www.eset.com


 

__________ Information from ESET Smart Security, version of virus signature
database 5099 (20100509) __________

The message was checked by ESET Smart Security.

http://www.eset.com
 





More information about the Bioperl-l mailing list