[Bioperl-l] Fwd: SimpleAlign bug?
Chris Fields
cjfields at uiuc.edu
Wed Apr 11 16:46:46 UTC 2007
I have confirmed the bug and fixed this in CVS. Kevin's right; sort
defaults to string comparison if no subroutine or sort block is
specified.
perldoc -f sort:
sort SUBNAME LIST
sort BLOCK LIST
sort LIST
...
If SUBNAME or BLOCK is omitted, "sort"s in standard string com-
parison order.
...
chris
On Apr 11, 2007, at 10:51 AM, Michael Kiwala wrote:
> Kevin Brown wrote:
>>> What is going on here? Can anyone remember doing this?
>>>
>>> -Heikki
>>>
>>> Please can I ask what is the purpose of the line @pos = sort
>>> @pos; in the select_noncont subroutine of SimpleAlign.pm.
>>>
>>>
>>>
>>> In previous versions this line was not present and I could
>>> use the function to reorder the alignment e.g in an alignment
>>> with 5 sequences I could reorder it to put the second
>>> sequence last using $aln->select_noncont(1,3,4,5,2). The sort
>>> function stops this, but even if the idea is to sort
>>> numerically this dos not work since the sort function as is
>>> will put 10 before 2, so that
>>> ->select_noncont(1,2,3,4,5,6,7,8,9,10) would reorder the
>>> sequences in
>>> the alignment to be 1, 10, 2, 3, 4,5, 6, 7, 8,9 .
>>>
>>
>> Not sure why 10 would come before 2 since perl would interpret
>> that list
>> as a series of integers even if they were entered as strings and
>> do the
>> sort.
>>
>>
> Because, according to the documentation for Perl's sort function,
> sorting occurs "in standard string comparison order" unless the user
> specifies another comparison function to use.
More information about the Bioperl-l
mailing list