Changeset 1592:c39f563cc473 in orange-bioinformatics


Ignore:
Timestamp:
03/07/12 09:08:12 (2 years ago)
Author:
markotoplak
Branch:
default
rebase_source:
8f923bb0d0a22098ed24c675a8cf337929239374
Message:

Added Mean and Median to the new gene set signatures module.

Files:
2 edited

Legend:

Unmodified
Added
Removed
  • obiAssess.py

    r1572 r1592  
    675675    choosen_cv = ["Iris-setosa", "Iris-versicolor"] 
    676676    #ass = AssessLearner()(data, matcher, gsets, rankingf=AT_loessLearner()) 
    677     #ass = MeanLearner()(data, matcher, gsets, default=False)) 
     677    #ass = MeanLearner()(data, matcher, gsets, default=False) 
     678    ass = MedianLearner()(data, matcher, gsets) 
    678679    #ass = PLSLearner()(data, matcher, gsets, classValues=choosen_cv) 
    679     ass = SetSigLearner()(ldata, matcher, gsets, classValues=choosen_cv, minPart=0.0) 
     680    #ass = SetSigLearner()(ldata, matcher, gsets, classValues=choosen_cv, minPart=0.0) 
    680681    #ass = PCALearner()(ldata, matcher, gsets, classValues=choosen_cv, minPart=0.0) 
    681682    #ass = GSALearner()(ldata, matcher, gsets, classValues=choosen_cv, minPart=0.0) 
  • obiGeneSetSig.py

    r1587 r1592  
    88import stats 
    99import obiGsea 
    10 import scipy.stats 
    11  
    12  
    1310 
    1411def setSig_example_geneset(ex, data): 
     
    6966    return filter(ok_sizes, gene_sets)  
    7067 
    71 class SetSig(object): 
     68class GeneSetTrans(object): 
    7269 
    7370    __new__ = Orange.misc._orange__new__(object) 
    7471 
    75     def __init__(self, matcher, gene_sets, min_size=3, max_size=1000, min_part=0.1, class_values=None): 
     72    def _mat_ni(self, data): 
     73        """ With cached gene matchers. """ 
     74        if data.domain not in self._cache: 
     75            self._cache[data.domain] = mat_ni(data, self.matcher) 
     76        return self._cache[data.domain] 
     77 
     78    def __init__(self, matcher=None, gene_sets=None, min_size=3, max_size=1000, min_part=0.1, class_values=None): 
    7679        self.matcher = matcher 
    7780        self.gene_sets = gene_sets 
     
    8285        self._cache = {} 
    8386 
    84     def _mat_ni(self, data): 
    85         """ With cached gene matchers. """ 
    86         if data.domain not in self._cache: 
    87             self._cache[data.domain] = mat_ni(data, self.matcher) 
    88         return self._cache[data.domain] 
    89  
    9087    def __call__(self, data, weight_id=None): 
    9188 
     89        #selection of classes and gene sets 
    9290        data = obiGsea.takeClasses(data, classValues=self.class_values) 
    9391        nm,_ =  self._mat_ni(data) 
    9492        gene_sets = select_genesets(nm, self.gene_sets, self.min_size, self.max_size, self.min_part) 
    9593 
     94        #build a new domain 
     95        newfeatures = self.build_features(data, gene_sets) 
     96        newdomain = Orange.data.Domain(newfeatures, data.domain.class_var) 
     97        return Orange.data.Table(newdomain, data) 
     98 
     99def vou(ex, gn, indices): 
     100    """ returns the value or "?" for the given gene name gn""" 
     101    if gn not in indices: 
     102        return "?" 
     103    else: 
     104        return ex[indices[gn]].value 
     105 
     106class SetSig(GeneSetTrans): 
     107 
     108    def build_features(self, data, gene_sets): 
     109 
    96110        attributes = [] 
    97111 
     
    112126                domain = Orange.data.Domain([data.domain.attributes[name_ind[gene]] for gene in genes], data.domain.class_var) 
    113127                datao = Orange.data.Table(domain, data) 
    114  
    115                 def vou(ex, gn, indices): 
    116                     """ returns the value or unknown for the given gene name""" 
    117                     if gn not in indices: 
    118                         return "?" 
    119                     else: 
    120                         return ex[indices[gn]].value 
    121                  
     128                
    122129                #convert the example to the same domain 
    123130                exvalues = [ vou(ex, gn, name_ind2) for gn in genes2 ] + [ "?" ] 
     
    128135            at.get_value_from = t 
    129136            attributes.append(at) 
    130         
    131         newdomain = Orange.data.Domain(attributes, data.domain.class_var) 
    132         return Orange.data.Table(newdomain, data) 
     137 
     138        return attributes  
     139 
     140class SimpleFun(GeneSetTrans): 
     141 
     142    def build_features(self, data, gene_sets): 
     143 
     144        attributes = [] 
     145 
     146        for gs in gene_sets: 
     147            at = Orange.feature.Continuous(name=str(gs)) 
     148 
     149            def t(ex, w, gs=gs): 
     150                geneset = list(gs.genes) 
     151                nm2, name_ind2 = self._mat_ni(ex) 
     152                genes2 = [ nm2.umatch(gene) for gene in geneset ] 
     153                
     154                exvalues = [ vou(ex, gn, name_ind2) for gn in genes2 ] + [ "?" ] 
     155                exvalues = filter(lambda x: x != "?", exvalues) 
     156 
     157                return self.fn(exvalues) 
     158          
     159            at.get_value_from = t 
     160            attributes.append(at) 
     161 
     162        return attributes  
     163 
     164class Mean(SimpleFun): 
     165 
     166    def __init__(self, **kwargs): 
     167       self.fn = numpy.mean 
     168       super(Mean, self).__init__(**kwargs) 
     169 
     170class Median(SimpleFun): 
     171 
     172    def __init__(self, **kwargs): 
     173       self.fn = numpy.median 
     174       super(Median, self).__init__(**kwargs) 
    133175 
    134176if __name__ == "__main__": 
    135  
    136177 
    137178    data = Orange.data.Table("iris") 
     
    151192    """ 
    152193 
    153  
    154194    def to_old_dic(d, data): 
    155195        ar = defaultdict(list) 
     
    164204        print '\n'.join([ a + ": " +str(b) for a,b in ol]) 
    165205 
    166     ass = SetSig(matcher=matcher, gene_sets=gsets, class_values=choosen_cv, min_part=0.0) 
    167     ass = ass(data) 
     206    ass = Median(data, matcher=matcher, gene_sets=gsets, class_values=choosen_cv, min_part=0.0) 
    168207    ar = to_old_dic(ass.domain, data[:5]) 
    169208    pp2(ar) 
Note: See TracChangeset for help on using the changeset viewer.