[Bioperl-l] Interface of the method
Dave Messina
David.Messina at sbc.su.se
Thu Jun 17 23:48:35 UTC 2010
Hi Jun,
Great! Glad to hear you're taking on this project.
> This may cause some confusion.So I propose that we should use a more
> consistent way for similar functions.
>
> For example, the methods of
>
> select_Seq
>
> select_columns
>
> remove_Seq
>
> remove_columns
>
> mask_columns
>
> .
>
> should have the same interface.
Agreed, absolutely. Consistency is important. I would further propose that select_Seq be select_seqs, if indeed multiple seqs are to be selected with this method. Also, capital letters are typically not used in BioPerl method names. For example, eachSeq was deprecated in favor of each_seq.
> So I suggest, we can do
>
> $new_aln=$aln->select_Seq([1,3,5..10,15],"toggle")
>
> Or
>
> $new_aln=$aln->select_columns([2.25,34,52..60])
BioPerl tends to use named parameters passed as a hash, e.g.:
my $in = Bio::SeqIO->new('-format' => 'fasta', '-file' => 'my.fasta');
So something more like:
$new_aln = $aln->select_seqs('-seqs' => (1, 3, 5..10,15), -toggle => 'yes);
$new_aln = $aln->select_columns('-columns' => (2, 25, 45, 52..60);
Admittedly, it's redundant to say -seqs when the method is named select_seqs, and maybe less redundant labels can be chosen.
Also, and this is perhaps a minor point, using () instead of [] here for the set of seqs or columns is better, since [] implies indexing into an array, which isn't what's being done.
Dave
More information about the Bioperl-l
mailing list