Changeset 1359:58977a5171f3 in orange-bioinformatics


Ignore:
Timestamp:
04/04/11 09:33:10 (3 years ago)
Author:
markotoplak
Branch:
default
Convert:
cc195ac79c9c26bcbbf044c693bceffb31008b0f
Message:

obiDicty: speed up of averageAttributes

File:
1 edited

Legend:

Unmodified
Added
Removed
  • obiDicty.py

    r1335 r1359  
    132132verbose = 0 
    133133 
    134 def median(l): 
    135     if len(l) == 0: 
    136         return None 
    137     l = sorted(l) 
    138     if len(l) % 2 == 1: #odd 
    139         return l[len(l)/2] 
    140     else: #even 
    141         return (l[len(l)/2-1] + l[len(l)/2])/2.0 
     134import statc 
     135median = statc.median 
    142136 
    143137class HttpGetException(Exception): pass 
     
    11541148    attributes = [ a for a in data.domain.attributes ] 
    11551149    domain = data.domain 
    1156  
     1150     
    11571151    #accumulate values 
    1158     valuesddb = dict( [ (at,{}) for at in attributes ]) 
    11591152 
    11601153    for ex in data: 
    1161         #join attribute - ddb 
    11621154        j = str(ex[joinc]) 
    11631155 
     
    11661158            valuess.add(j) 
    11671159 
    1168         for a in attributes: 
     1160    valuesddb = [ dict( (n,[]) for n in valueso) for at in attributes ] 
     1161     
     1162    for ex in data: 
     1163        j = str(ex[joinc]) 
     1164 
     1165        for a in range(len(attributes)): 
    11691166            val = ex[a] 
    1170             l = valuesddb[a].get(j, []) 
    11711167            if not val.isSpecial(): 
    1172                 l.append(val.native()) 
    1173             valuesddb[a][j] = l 
    1174  
    1175     #print "len valueso", len(valueso) 
    1176     #print sorted(set([ str(ex[join]) for ex in data ])) 
    1177  
    1178     #apply function fn to each attribute 
    1179  
    1180     """ 
    1181     for i,at in enumerate(data.domain.attributes): 
    1182         print valuesddb[at]["DDB_G0282817"], "CI" + data.annot["chipids"][i] 
    1183     """ 
    1184  
    1185     for a in attributes: 
    1186         for n,v in valuesddb[a].items(): 
    1187             valuesddb[a][n] = floatOrUnknown(fn(v)) 
    1188             #if n == "DDB_G0282817": print valuesddb[a][n] 
    1189  
    1190     #create a new example table reusing the domain 
     1168                valuesddb[a][j].append(val.native()) 
     1169 
     1170    #create a new example table reusing the domain - apply fn 
    11911171    examples = [] 
    11921172    for v in valueso: 
    11931173        example = orange.Example(domain, \ 
    1194             [ valuesddb[a][v] for a in attributes ] ) 
     1174            [ floatOrUnknown(fn(valuesddb[a][v])) for a in range(len(attributes)) ] ) 
    11951175        example[joinc] = v 
    11961176        examples.append(example) 
Note: See TracChangeset for help on using the changeset viewer.