Changeset 3695:4e8391daacbc in orange


Ignore:
Timestamp:
05/27/07 18:40:47 (7 years ago)
Author:
Gregor <Gregor@…>
Branch:
default
Convert:
27273f78a4c78e0570da8f85387ee7831ac1b583
Message:

numeric -> numpy

File:
1 edited

Legend:

Unmodified
Added
Removed
  • orange/orngContingency.py

    r1411 r3695  
    1818 
    1919 
    20 import Numeric, orange 
     20import numpy, orange 
    2121from random import * 
    2222 
    23 _log2 = 1.0/Numeric.log(2) 
    24 _log2e = Numeric.log(2) 
     23_log2 = 1.0/numpy.log(2) 
     24_log2e = numpy.log(2) 
    2525 
    2626def Flatten(m): 
    27     if len(Numeric.shape(m)) > 1: 
    28         v = Numeric.ravel(m) 
     27    if len(numpy.shape(m)) > 1: 
     28        v = numpy.ravel(m) 
    2929    else: 
    3030        v = m 
    3131    return v 
    32      
     32 
    3333def Probabilities(m): 
    34     t = Numeric.sum(Flatten(m)) 
     34    t = numpy.sum(Flatten(m)) 
    3535    if t == 0: 
    3636        return 0 
     
    4141    v = Flatten(m) 
    4242    pv = Probabilities(v) 
    43     lv = Numeric.log(Numeric.clip(pv,1e-6,1.0))*_log2 
    44     return -Numeric.dot(pv,lv) 
     43    lv = numpy.log(numpy.clip(pv,1e-6,1.0))*_log2 
     44    return -numpy.dot(pv,lv) 
    4545 
    4646 
     
    7575 
    7676    def IPF(self,tolerance=1e-6,maxiterations=100): 
    77         d = Numeric.shape(self.m) 
     77        d = numpy.shape(self.m) 
    7878        p = self.pm 
    7979        px = self.pab 
     
    8484        pzz = self.pc 
    8585        v = 1.0/(d[0]*d[1]*d[2]) 
    86         model = Numeric.ones(d,Numeric.Float)*v 
     86        model = numpy.ones(d,numpy.float)*v 
    8787 
    8888        iterations = 0 
     
    9393            for c in range(3): 
    9494                if c == 0: 
    95                     mx = Probabilities(Numeric.sum(model,axis=2)) 
     95                    mx = Probabilities(numpy.sum(model,axis=2)) 
    9696                elif c == 1: 
    97                     my = Probabilities(Numeric.sum(model,axis=1)) 
     97                    my = Probabilities(numpy.sum(model,axis=1)) 
    9898                else: 
    99                     mz = Probabilities(Numeric.sum(model,axis=0)) 
     99                    mz = Probabilities(numpy.sum(model,axis=0)) 
    100100                for x in xrange(d[0]): 
    101101                    for y in xrange(d[1]): 
     
    107107                            else: 
    108108                                model[x,y,z] *= pz[y,z]/max(mz[y,z],1e-16) 
    109             # EVALUATE             
     109            # EVALUATE 
    110110            div = 0.0 
    111111            for x in xrange(d[0]): 
     
    113113                    for z in xrange(d[2]): 
    114114                        if p[x,y,z]>0: 
    115                             div += p[x,y,z]*Numeric.log(p[x,y,z]/model[x,y,z]) 
     115                            div += p[x,y,z]*numpy.log(p[x,y,z]/model[x,y,z]) 
    116116            #print iterations, Entropy(model), div 
    117117            iterations += 1 
     
    122122 
    123123    def KSA(self): 
    124         d = Numeric.shape(self.m) 
    125         self.kirk = Numeric.ones(d,Numeric.Float) 
     124        d = numpy.shape(self.m) 
     125        self.kirk = numpy.ones(d,numpy.float) 
    126126 
    127127        # normalize kirkwood approximation 
     
    145145                for z in xrange(d[2]): 
    146146                    if self.pm[x,y,z]>0: 
    147                         div += self.pm[x,y,z]*Numeric.log(self.pm[x,y,z]/self.kirk[x,y,z]) 
     147                        div += self.pm[x,y,z]*numpy.log(self.pm[x,y,z]/self.kirk[x,y,z]) 
    148148        return (div*_log2,sumx) 
    149149 
     
    153153        pkirkwood /= self.pa[x]*self.pb[y]*self.pc[z] 
    154154        if ptrue > 1e-6: 
    155             div = Numeric.log(ptrue/pkirkwood) 
     155            div = numpy.log(ptrue/pkirkwood) 
    156156        else: 
    157157            div = 0.0 
     
    164164        pkirkwood /= self.pa[x]*self.pb[y]*self.pc[z] 
    165165        if ptrue > 1e-6: 
    166             div = Numeric.log(ptrue/(pkirkwood*norm)) 
     166            div = numpy.log(ptrue/(pkirkwood*norm)) 
    167167        else: 
    168168            div = 0.0 
     
    172172        self.names  = names 
    173173        self.values = values 
    174         m = Numeric.array(m,Numeric.Float) 
     174        m = numpy.array(m,numpy.float) 
    175175        self.m = m 
    176         self.bc = Numeric.sum(m,axis=0) 
    177         self.ac = Numeric.sum(m,axis=1) 
    178         self.ab = Numeric.sum(m,axis=2) 
    179  
    180         self.a = Numeric.sum(self.ab,axis=1) 
    181         self.b = Numeric.sum(self.ab,axis=0) 
    182         self.c = Numeric.sum(self.ac,axis=0) 
    183         self.total = Numeric.sum(self.a) 
     176        self.bc = numpy.sum(m,axis=0) 
     177        self.ac = numpy.sum(m,axis=1) 
     178        self.ab = numpy.sum(m,axis=2) 
     179 
     180        self.a = numpy.sum(self.ab,axis=1) 
     181        self.b = numpy.sum(self.ab,axis=0) 
     182        self.c = numpy.sum(self.ac,axis=0) 
     183        self.total = numpy.sum(self.a) 
    184184 
    185185        self.pm = Probabilities(self.m) 
     
    191191        self.pc = Probabilities(self.c) 
    192192        dof = 0 
    193         (ni,nj,nk) = Numeric.shape(self.m) 
     193        (ni,nj,nk) = numpy.shape(self.m) 
    194194        for ii in xrange(ni): 
    195195            for jj in xrange(nj): 
     
    215215        pkirkwood = self.pa[x]*self.pb[y] 
    216216        if ptrue > 1e-6: 
    217             div = Numeric.log(ptrue/pkirkwood) 
     217            div = numpy.log(ptrue/pkirkwood) 
    218218        else: 
    219219            div = 0.0 
     
    226226        f = Flatten(self.m) 
    227227        p = Probabilities(f) 
    228         LUT = Numeric.zeros((self.total,),Numeric.Int) 
     228        LUT = numpy.zeros((self.total,),numpy.int) 
    229229        c = 0 
    230230        for i in xrange(len(f)): 
     
    234234        assert(c == self.total) 
    235235        for i in xrange(N): 
    236             nt = Numeric.zeros((len(f),),Numeric.Float) 
     236            nt = numpy.zeros((len(f),),numpy.float) 
    237237            for j in xrange(c): 
    238238                nt[ LUT[randint(0,c-1)] ] += 1 
     
    241241            for j in xrange(len(f)): 
    242242                if q[j] > 1e-6 and p[j] > 0.0: 
    243                     loss += q[j]*Numeric.log(q[j]/p[j]) 
    244                 #loss += p[j]*Numeric.log(max(p[j],1e-5)/max(q[j],1e-6)) 
     243                    loss += q[j]*numpy.log(q[j]/p[j]) 
     244                #loss += p[j]*numpy.log(max(p[j],1e-5)/max(q[j],1e-6)) 
    245245            if loss >= nlimit: 
    246246                hits += 1 
     
    254254        self.names  = names 
    255255        self.values = values 
    256         m = Numeric.array(m,Numeric.Float) 
     256        m = numpy.array(m,numpy.float) 
    257257        self.m = m 
    258258 
    259         self.a = Numeric.sum(self.m,axis=1) 
    260         self.b = Numeric.sum(self.m,axis=0) 
    261         self.total = Numeric.sum(self.a) 
     259        self.a = numpy.sum(self.m,axis=1) 
     260        self.b = numpy.sum(self.m,axis=0) 
     261        self.total = numpy.sum(self.a) 
    262262 
    263263        self.pa = Probabilities(self.a) 
     
    265265        self.pm = Probabilities(self.m) 
    266266        dof = 0 
    267         (ni,nj) = Numeric.shape(self.m) 
     267        (ni,nj) = numpy.shape(self.m) 
    268268        for ii in xrange(ni): 
    269269            for jj in xrange(nj): 
     
    277277    nj = len(b.values) 
    278278    nk = len(c.values) 
    279     M = prior*Numeric.ones((ni,nj,nk),Numeric.Float) 
     279    M = prior*numpy.ones((ni,nj,nk),numpy.float) 
    280280    if wid == None: # no weighting 
    281281        for ex in t: 
     
    294294    ni = len(a.values) 
    295295    nj = len(b.values) 
    296     M = prior*Numeric.ones((ni,nj),Numeric.Float) 
     296    M = prior*numpy.ones((ni,nj),numpy.float) 
    297297    if wid == None: # no weighting 
    298298        for ex in t: 
Note: See TracChangeset for help on using the changeset viewer.