[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