Changeset 1599:d26971fdd077 in orange-bioinformatics for obiGeneSetSig.py


Ignore:
Timestamp:
03/11/12 09:16:13 (2 years ago)
Author:
markotoplak
Branch:
default
Message:

obiGeneSetSig: refactoring.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • obiGeneSetSig.py

    r1598 r1599  
    154154        return at 
    155155 
    156 class PLS(GeneSetTrans): 
    157  
     156class ParametrizedTransformation(GeneSetTrans): 
     157 
     158    def _get_par(self, datao): 
     159        pass 
     160         
     161    def _use_par(self, ex, constructt): 
     162        pass 
     163     
    158164    def build_feature(self, data, gs): 
    159165 
     
    165171        datao = Orange.data.Table(domain, data) 
    166172 
    167         constructt = PLSCall(datao, nc=1, y=[datao.domain.class_var]) 
     173        constructt = self._get_par(datao) 
    168174 
    169175        def t(ex, w, geneset=geneset, constructt=constructt, takegenes=takegenes, domain=domain): 
     
    174180            ex = numpy.array(exvalues[:-1]) 
    175181 
    176             xmean, W, P, _ = constructt 
    177             ex = ex - xmean # same input transformation 
    178  
    179             nc = W.shape[1] 
    180  
    181             TR = numpy.empty((1, nc)) 
    182             XR = ex 
    183  
    184             dot = numpy.dot 
    185  
    186             for i in range(nc): 
    187                t = dot(XR, W[:,i].T) 
    188                XR = XR - t*numpy.array([P[:,i]]) 
    189                TR[:,i] = t 
    190  
    191             return TR[0][0] 
    192  
     182            return self._use_par(ex, constructt) 
     183             
    193184        at.get_value_from = t 
    194185        return at 
    195186 
    196 class PCA(GeneSetTrans): 
    197  
    198     def build_feature(self, data, gs): 
    199  
    200         at = Orange.feature.Continuous(name=str(gs)) 
    201  
    202         geneset = list(gs.genes) 
    203         nm, name_ind, genes, takegenes = self._match_data(data, geneset) 
    204         domain = Orange.data.Domain([data.domain.attributes[name_ind[gene]] for gene in genes], data.domain.class_var) 
    205         datao = Orange.data.Table(domain, data) 
    206  
    207         constructt = pca(datao) 
    208  
    209         def t(ex, w, geneset=geneset, constructt=constructt, takegenes=takegenes, domain=domain): 
    210             nm2, name_ind2, genes2 = self._match_instance(ex, geneset, takegenes) 
    211            
    212             #convert the example to the same domain 
    213             exvalues = [ vou(ex, gn, name_ind2) for gn in genes2 ] + [ "?" ] 
    214              
    215             arr = numpy.array(exvalues[:-1]) 
    216              
    217             evals, evect, xmean = constructt 
    218  
    219             arr = arr - xmean # same input transformation - a row in a matrix 
    220             ev0 = evect[0] #this is a row in a matrix - do a dot product 
    221             a = numpy.dot(arr, ev0) 
    222  
    223             return a 
    224                   
    225         at.get_value_from = t 
    226         return at 
     187class PLS(ParametrizedTransformation): 
     188 
     189    def _get_par(self, datao): 
     190        return PLSCall(datao, nc=1, y=[datao.domain.class_var]) 
     191         
     192    def _use_par(self, ex, constructt): 
     193        xmean, W, P, _ = constructt 
     194        ex = ex - xmean # same input transformation 
     195 
     196        nc = W.shape[1] 
     197 
     198        TR = numpy.empty((1, nc)) 
     199        XR = ex 
     200 
     201        dot = numpy.dot 
     202 
     203        for i in range(nc): 
     204           t = dot(XR, W[:,i].T) 
     205           XR = XR - t*numpy.array([P[:,i]]) 
     206           TR[:,i] = t 
     207 
     208        return TR[0][0] 
     209         
     210class PCA(ParametrizedTransformation): 
     211 
     212    def _get_par(self, datao): 
     213        return pca(datao) 
     214 
     215    def _use_par(self, arr, constructt): 
     216        evals, evect, xmean = constructt 
     217 
     218        arr = arr - xmean # same input transformation - a row in a matrix 
     219        ev0 = evect[0] #this is a row in a matrix - do a dot product 
     220        a = numpy.dot(arr, ev0) 
     221 
     222        return a 
    227223 
    228224class SimpleFun(GeneSetTrans): 
     
    334330        print '\n'.join([ a + ": " +str(b) for a,b in ol]) 
    335331 
    336     ass = GSA(data, matcher=matcher, gene_sets=gsets, class_values=choosen_cv, min_part=0.0) 
     332    ass = PCA(data, matcher=matcher, gene_sets=gsets, class_values=choosen_cv, min_part=0.0) 
    337333    ar = to_old_dic(ass.domain, data[:5]) 
    338334    pp2(ar) 
Note: See TracChangeset for help on using the changeset viewer.