예제 #1
0
    def extractSubEps(self, prefix):
        '''
        extract sub episodes of this episode recursively.
		'''
        sub_epsset = EpisodeSet([])
        if prefix.length == 0:
            for i in range(self.length):
                pfx = [self.events[i]]
                pep = SerialEpisode(pfx)  # prefix episode
                #print pep.repr
                sub_epsset.add(pep)
                #sub_eps[pep.repr] = sub_eps[pep.repr]+1 if sub_eps.has_key(pep.repr) else 1
                sep = SerialEpisode(
                    self.events[i + 1:self.length])  # suffix episodes
                sub_epsset.merge(sep.extractSubEps(pep))
        else:
            for i in range(self.length):
                pfx = copy.deepcopy(prefix.events)
                pfx.extend([self.events[i]])
                pep = SerialEpisode(pfx)  # prefix episode
                #print pep.repr
                sub_epsset.add(pep)
                #sub_eps[pep.repr] = sub_eps[pep.repr]+1 if sub_eps.has_key(pep.repr) else 1
                sep = SerialEpisode(
                    self.events[i + 1:self.length])  # suffix episodes
                sub_epsset.merge(sep.extractSubEps(pep))
        return sub_epsset
예제 #2
0
    def run(self):
        """
        Read the data in window, get episodes and their statistics information 
        into an episode set. 
        """
        global streamers,miners,conds,windows,win_epssets,nwinm

        epsset = EpisodeSet() 
        while True:
           if conds[self.name].acquire():
              if self.name in windows.keys() and epsset.length == 0:
                 #start       = time.time()
                 tsbatcher   = Tsbatcher(self.mtp,windows[self.name]) 
                 epsset = tsbatcher.episodeStatistic()
                 #end         = time.time()
                 #logging.critical('Time spent mining: %f seconds' % (end - start))
                 del windows[self.name]
                 print "\tMiner "+self.name+":"+"window is done."
                 conds[self.name].notify()  
              elif not streamers[self.name].is_alive():
                 conds[self.name].release()  
                 break 
              
              conds[self.name].release()  
           else:
              conds[self.name].wait()
        
           
           if mutex.acquire():
              if epsset.length != 0 and self.name not in win_epssets.keys(): 
                 win_epssets[self.name]  = copy.deepcopy(epsset)
                 #win_epssets[self.name].__show__()
                 epsset = EpisodeSet() 
                 nwinm[self.name] += 1 
              mutex.release()           

           time.sleep(1)

        print "\tMiner "+self.name+":"+"is over." 
예제 #3
0
    def __init__(self, interval, window):
        """
        Constructor
        """
        # Calling the super
        super(Tsbatcher, self).__init__()

        # Storing values
        self.length = 0
        self.interval = interval
        self.starttime = 0
        self.endtime = self.starttime
        self.window = window
        self.winIndex = -1
        self.epsset = EpisodeSet([])
예제 #4
0
    e5 = Event("A,5")

    e6 = Event("A,2")
    e7 = Event("C,3")
    e8 = Event("B,4")
    e9 = Event("C,4")
    e10 = Event("D,4")

    el1 = [e1, e2, e3, e4]
    el2 = [e3, e4, e5]
    el3 = [e2, e6, e7]
    el4 = [e6, e7, e8, e8]

    print el1
    print el2
    print el3
    print el4

    eps1 = SerialEpisode(el1)
    eps2 = SerialEpisode(el2)
    eps3 = SerialEpisode(el3)
    eps4 = SerialEpisode(el4)

    epss1 = EpisodeSet([eps1, eps2])
    epss2 = EpisodeSet([eps1, eps4])

    epss1.__show__()
    epss2.__show__()

    print epss1.commonRatio(epss2)