Changeset 1595:8ef1b76b2e6d in orange-bioinformatics for obiGeneSetSig.py


Ignore:
Timestamp:
03/07/12 21:11:25 (2 years ago)
Author:
markotoplak
Branch:
default
Message:

Added PLS to obiGeneSetSig.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • obiGeneSetSig.py

    r1594 r1595  
    77import stats 
    88from obiGsea import takeClasses 
    9 from obiAssess import pca 
     9from obiAssess import pca, PLSCall 
    1010 
    1111def setSig_example_geneset(ex, data): 
     
    139139        return at 
    140140 
     141class PLS(GeneSetTrans): 
     142 
     143    def build_feature(self, data, gs): 
     144 
     145        at = Orange.feature.Continuous(name=str(gs)) 
     146 
     147        geneset = list(gs.genes) 
     148 
     149        nm, name_ind = self._mat_ni(data) 
     150        genes = [ nm.umatch(gene) for gene in geneset ] 
     151        takegenes = [ i for i,a in enumerate(genes) if a != None ] 
     152        genes = [ genes[i] for i in takegenes ] 
     153 
     154        domain = Orange.data.Domain([data.domain.attributes[name_ind[gene]] for gene in genes], data.domain.class_var) 
     155 
     156        datao = Orange.data.Table(domain, data) 
     157 
     158        xmean, W, P, T = PLSCall(datao, nc=1, y=[datao.domain.class_var]) 
     159        constructt = xmean, W, P 
     160 
     161        def t(ex, w, geneset=geneset, constructt=constructt, takegenes=takegenes, domain=domain): 
     162 
     163            nm2, name_ind2 = self._mat_ni(ex) 
     164            genes2 = [ nm2.umatch(gene) for gene in geneset ] 
     165            genes2 = [ genes2[i] for i in takegenes ] 
     166           
     167            #convert the example to the same domain 
     168            exvalues = [ vou(ex, gn, name_ind2) for gn in genes2 ] + [ "?" ] 
     169             
     170            ex = numpy.array(exvalues[:-1]) 
     171 
     172            xmean, W, P = constructt 
     173            ex = ex - xmean # same input transformation 
     174 
     175            nc = W.shape[1] 
     176 
     177            TR = numpy.empty((1, nc)) 
     178            XR = ex 
     179 
     180            dot = numpy.dot 
     181 
     182            for i in range(nc): 
     183               t = dot(XR, W[:,i].T) 
     184               XR = XR - t*numpy.array([P[:,i]]) 
     185               TR[:,i] = t 
     186 
     187            return TR[0][0] 
     188 
     189        at.get_value_from = t 
     190        return at 
     191 
    141192class PCA(GeneSetTrans): 
    142193 
     
    242293        print '\n'.join([ a + ": " +str(b) for a,b in ol]) 
    243294 
    244     ass = Mean(data, matcher=matcher, gene_sets=gsets, class_values=choosen_cv, min_part=0.0) 
     295    ass = PLS(data, matcher=matcher, gene_sets=gsets, class_values=choosen_cv, min_part=0.0) 
    245296    ar = to_old_dic(ass.domain, data[:5]) 
    246297    pp2(ar) 
Note: See TracChangeset for help on using the changeset viewer.