Changeset 1571:0234560951c2 in orange-bioinformatics


Ignore:
Timestamp:
02/16/12 22:00:10 (2 years ago)
Author:
markotoplak
Branch:
default
Message:

SetSig2 (which returns a domain) returns the same results as SetSig.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • obiAssess.py

    r1570 r1571  
    658658        return SetSig(learndata=data, genesets=gsetsnum) 
    659659 
     660class SetSigLearner2(object): 
     661 
     662    def __call__(self, data, matcher, geneSets, minSize=3, maxSize=1000, minPart=0.1, classValues=None): 
     663        data, oknames, gsetsnum = selectGenesetsData(data, matcher, geneSets, \ 
     664            minSize=minSize, maxSize=maxSize, minPart=minPart, classValues=classValues) 
     665 
     666        def setSig_example_geneset(ex, data): 
     667            """ ex contains only selected genes """ 
     668 
     669            distances = [ [], [] ]     
     670 
     671            def pearsonr(v1, v2): 
     672                try: 
     673                    return statc.pearsonr(v1, v2)[0] 
     674                except: 
     675                    return numpy.corrcoef([v1, v2])[0,1] 
     676 
     677            def pearson(ex1, ex2): 
     678                attrs = range(len(ex1.domain.attributes)) 
     679                vals1 = [ ex1[i].value for i in attrs ] 
     680                vals2 = [ ex2[i].value for i in attrs ] 
     681                return pearsonr(vals1, vals2) 
     682 
     683            def ttest(ex1, ex2): 
     684                try: 
     685                    return stats.lttest_ind(ex1, ex2)[0] 
     686                except: 
     687                    return 0.0 
     688             
     689            #maps class value to its index 
     690            classValueMap = dict( [ (val,i) for i,val in enumerate(data.domain.classVar.values) ]) 
     691          
     692            #create distances to all learning data - save or other class 
     693            for c in data: 
     694                distances[classValueMap[c[-1].value]].append(pearson(c, ex)) 
     695 
     696            return ttest(distances[0], distances[1]) 
     697 
     698        attributes = [] 
     699 
     700        for name, gs in gsetsnum.items(): #for each geneset 
     701            #for each gene set: take the attribute subset and work on the attribute subset only 
     702            #only select the subset of genes from the learning data 
     703            print name, gs 
     704            at = Orange.feature.Continuous(name=name.id) 
     705 
     706            def t(ex, w, gs=gs, ldata=data): 
     707                domain = orange.Domain([ldata.domain.attributes[ai] for ai in gs], ldata.domain.classVar) 
     708                datao = orange.ExampleTable(domain, ldata) 
     709                example = orange.Example(domain, ex) #domains need to be the same 
     710                return setSig_example_geneset(example, datao) 
     711          
     712            at.get_value_from = t 
     713            attributes.append(at) 
     714        
     715        newdomain = Orange.data.Domain(attributes, data.domain.class_var) 
     716 
     717        return newdomain 
     718 
    660719if __name__ == "__main__": 
    661720 
     
    676735    #ass = AssessLearner()(data, matcher, gsets, rankingf=AT_loessLearner()) 
    677736    #ass = MeanLearner()(data, matcher, gsets, default=False)) 
    678     ass = PLSLearner()(data, matcher, gsets, classValues=choosen_cv) 
    679     #ass = SetSigOLDLearner()(ldata, matcher, gsets, classValues=choosen_cv, minPart=0.0) 
    680     #ass = SetSigLearner()(ldata, matcher, gsets, classValues=choosen_cv, minPart=0.0) 
     737    #ass = PLSLearner()(data, matcher, gsets, classValues=choosen_cv) 
     738    ass = SetSigLearner()(ldata, matcher, gsets, classValues=choosen_cv, minPart=0.0) 
    681739    #ass = PCALearner()(ldata, matcher, gsets, classValues=choosen_cv, minPart=0.0) 
    682740    #ass = GSALearner()(ldata, matcher, gsets, classValues=choosen_cv, minPart=0.0) 
     741 
     742    def to_old_dic(d, data): 
     743        ar = defaultdict(list) 
     744        for ex1 in data: 
     745            ex = d(ex1) 
     746            for a,x in zip(d.attributes, ex): 
     747                ar[a.name].append(x.value) 
     748        return ar 
    683749 
    684750    ar = defaultdict(list) 
     
    687753            ar[a].append(b) 
    688754 
    689     ol =  sorted(ar.items()) 
    690     print '\n'.join([ a.id + ": " +str(b) for a,b in ol]) 
    691  
     755    def pp1(ar): 
     756        ol =  sorted(ar.items()) 
     757        print '\n'.join([ a.id + ": " +str(b) for a,b in ol]) 
     758 
     759    def pp2(ar): 
     760        ol =  sorted(ar.items()) 
     761        print '\n'.join([ a + ": " +str(b) for a,b in ol]) 
     762 
     763    pp1(ar) 
     764    ass = SetSigLearner2()(ldata, matcher, gsets, classValues=choosen_cv, minPart=0.0) 
     765    ar = to_old_dic(ass, data[:5]) 
     766    pp2(ar) 
Note: See TracChangeset for help on using the changeset viewer.