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
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."
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([])
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)