Пример #1
0
    def run(self):
        
        wx.CallAfter(self.window.Log, "Creating Epanechnikov analyzer using factory method")
        ap = flow.create_analyzer("Epanechnikov", self.data, self.dim, self.n, self.k, self.h, 0.0)

        wx.CallAfter(self.window.Log, "Test find seeds")
        # min_sep = ap.calc_h()
        # print min_sep
        min_sep = 0.1
        # seeds = ap.find_seeds(min_sep, 10, 100)
        seeds = ap.find_seeds_simple(self.inputs['seeds'])
        wx.CallAfter(self.window.Log, "num seeds:" + str(len(seeds)))
    
        wx.CallAfter(self.window.Log, "Test find modes")
        modes = ap.find_modes(seeds, 1e-4)
        wx.CallAfter(self.window.Log, "num modes:" + str(len(modes)))
        # for mode in modes:
            # print mode, modes[mode]
    
        wx.CallAfter(self.window.Log, "Test merge modes")
        min_merge_sep = 1.0
        mmodes = ap.merge_modes(modes, min_merge_sep)
        
        wx.CallAfter(self.window.Log, "Test dip")
        dip_ratio = self.inputs['dip']
        mmodes = ap.check_modes(mmodes, dip_ratio)
        wx.CallAfter(self.window.Log, "num dip modes:" + str(len(mmodes)))
        wx.CallAfter(self.window.Log, mmodes)
        # for mmode in mmodes:
            # print mmode, mmodes[mmode]
            #         print ">>>", data_unscaled[mmodes[mmode][0]]
    
        wx.CallAfter(self.window.Log, "Test label seeds")
        # seed_labels = flow.label_seeds(mmodes)
        # for seed_label in seed_labels:
            # print seed_label, seed_labels[seed_label]
    
        wx.CallAfter(self.window.Log, "Test label points")
        # nbrs = 1+int(numpy.floor(len(mmodes)/5.0))
        nbrs = 1
        clusters = flow.label_points("Epanechnikov", self.data, mmodes, nbrs)
        #counts = {}
        #for k in clusters.values():
        #    counts[k] = counts.get(k, 0) + 1
        #print counts
        z = []
        for i in clusters.keys():
            z.append(clusters[i])

        # save modes in order of number of captured seeds
        items = [(k, len(v)) for k, v in mmodes.items() if len(v) > 1]
        items.sort(key = operator.itemgetter(1), reverse=True)
        wx.CallAfter(self.window.Log, "Modes found that pass dip and pop tests")
        wx.CallAfter(self.window.Log, items)
        mm = numpy.array([item[0] for item in items])
        if mm.size == 0:
            wx.CallAfter(self.window.NoMM)
        else:
            wx.CallAfter(self.window.ThreadFinish, (z,mm))
Пример #2
0
    def run(self):
        
        wx.CallAfter(self.window.Log, "Creating Epanechnikov analyzer using factory method")
        ap = flow.create_analyzer("Epanechnikov", self.data, self.dim, self.n, self.k, self.h, 0.0)

        wx.CallAfter(self.window.Log, "Test find seeds")
        min_sep = 0.1
        seeds = ap.find_seeds_simple(self.inputs['seeds'])
        wx.CallAfter(self.window.Log, "num seeds:" + str(len(seeds)))
    
        wx.CallAfter(self.window.Log, "Test find modes")
        modes = ap.find_modes(seeds, 1e-4)
        wx.CallAfter(self.window.Log, "num modes:" + str(len(modes)))
        wx.CallAfter(self.window.Log, "Test merge modes")
        min_merge_sep = 1.0

        print "Entering merge modes"
        print ap.merge_modes(modes, min_merge_sep)
        mmodes = ap.merge_modes(modes, min_merge_sep)
        print "Exiting merge modes"

        wx.CallAfter(self.window.Log, "Test dip")
        dip_ratio = self.inputs['dip']
        mmodes = ap.check_modes(mmodes, dip_ratio)
        wx.CallAfter(self.window.Log, "num dip modes:" + str(len(mmodes)))
        wx.CallAfter(self.window.Log, mmodes)
    
        wx.CallAfter(self.window.Log, "Test label seeds")
        wx.CallAfter(self.window.Log, "Test label points")

        nbrs = 1
        clusters = flow.label_points("Epanechnikov", self.data, mmodes, nbrs)

        z = []
        for i in clusters.keys():
            z.append(clusters[i])

        # save modes in order of number of captured seeds
        items = [(k, len(v)) for k, v in mmodes.items() if len(v) > 1]
        items.sort(key = operator.itemgetter(1), reverse=True)
        wx.CallAfter(self.window.Log, "Modes found that pass dip and pop tests")
        wx.CallAfter(self.window.Log, items)
        mm = numpy.array([item[0] for item in items])
        if mm.size == 0:
            wx.CallAfter(self.window.NoMM)
        else:
            wx.CallAfter(self.window.ThreadFinish, (z,mm))
Пример #3
0
    mmodes = ap.check_modes(mmodes, dip_ratio)
    #print "num dip modes:", len(mmodes)
    #print mmodes
    # for mmode in mmodes:
        # print mmode, mmodes[mmode]
        #         print ">>>", data_unscaled[mmodes[mmode][0]]

    #print "Test label seeds"
    # seed_labels = flow.label_seeds(mmodes)
    # for seed_label in seed_labels:
        # print seed_label, seed_labels[seed_label]

    #print "Test label points"
    # nbrs = 1+int(numpy.floor(len(mmodes)/5.0))
    nbrs = 1
    clusters = flow.label_points("Epanechnikov", data, mmodes, nbrs)
    counts = {}
    for k in clusters.values():
        counts[k] = counts.get(k, 0) + 1
    #print counts
    

    #     mm = [m[:2] for m in mmodes]
    #     x, y = zip(*mm)
    #     pylab.figure(figsize=[8,8])
    #     pylab.scatter(x, y, 30, 'r')
    #     dx, dy = zip(*data)[:2]
    #     pylab.scatter(dx, dy, .05, [0.9, 0.9, 0.9])
    #     pylab.xlabel('Dimension 1')
    #     pylab.ylabel('Dimension 2')
    #     pylab.axis('equal')