Changeset 1855:b6778baf5104 in orange-bioinformatics


Ignore:
Timestamp:
10/02/13 17:07:34 (7 months ago)
Author:
markotoplak
Branch:
default
Message:

PIPAx: experiment sorting works properly for numbers also.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • _bioinformatics/widgets/OWPIPAx.py

    r1726 r1855  
    535535            sortOrder = self.columnsSortingWidget.sortingOrder 
    536536 
     537            all_values = defaultdict(set) 
     538            for at in table.domain.attributes: 
     539                atts = at.attributes 
     540                for name in sortOrder: 
     541                    all_values[name].add(atts.get(reverse_header_dict[name], "")) 
     542 
     543            isnum = {} 
     544            for at, vals in all_values.items(): 
     545                vals = filter(None, vals) 
     546                try: 
     547                    for a in vals: 
     548                        float(a) 
     549                    isnum[at] = True 
     550                except: 
     551                    isnum[at] = False 
     552 
     553            def optfloat(x, at): 
     554                if x == "": 
     555                    return "" 
     556                else: 
     557                    return float(x) if isnum[at] else x 
     558 
    537559            def sorting_key(attr): 
    538560                atts = attr.attributes 
    539                 return tuple([atts.get(reverse_header_dict[name], "") \ 
     561                return tuple([optfloat(atts.get(reverse_header_dict[name], ""), name) \ 
    540562                              for name in sortOrder]) 
    541563 
Note: See TracChangeset for help on using the changeset viewer.