def generate_log(pt, no_traces=100): """ Generate a log out of a process tree Parameters ------------ pt Process tree no_traces Number of traces contained in the process tree Returns ------------ log Trace log object """ log = TraceLog() for i in range(no_traces): ex_seq = execute(pt) ex_seq_labels = pt_util.project_execution_sequence_to_labels(ex_seq) trace = Trace() trace.attributes[xes.DEFAULT_NAME_KEY] = str(i) for label in ex_seq_labels: event = Event() event[xes.DEFAULT_NAME_KEY] = label trace.append(event) log.append(trace) return log
def generate_log(pt0, actdict, no_traces=100): """ Generate a log out of a process tree Parameters ------------ pt Process tree no_traces Number of traces contained in the process tree Returns ------------ log Trace log object """ pt = deepcopy(pt0) #for ele in pt: #print(ele,'here is line 50') # different taus must give different ID in log generation!!!! # so we cannot use the default process tree class # we use this different one! pt = GenerationTree(pt) log = EventLog() #print(pt,'line 56') # assigns to each event an increased timestamp from 1970 curr_timestamp = 10000000 for i in range(no_traces): ex_seq = execute(pt, actdict) #print(ex_seq,'ex_seq') ex_seq_labels = pt_util.project_execution_sequence_to_labels(ex_seq) #print(ex_seq_labels,'ex_seq_labels') trace = Trace() trace.attributes[xes.DEFAULT_NAME_KEY] = str(i) #print('line 67') for label in ex_seq_labels: event = Event() event[xes.DEFAULT_NAME_KEY] = label event[xes.DEFAULT_TIMESTAMP_KEY] = datetime.datetime.fromtimestamp( curr_timestamp) trace.append(event) #print(event,'line 73') curr_timestamp = curr_timestamp + 1 log.append(trace) return log
def generate_log(pt0, no_traces=100): """ Generate a log out of a process tree Parameters ------------ pt Process tree no_traces Number of traces contained in the process tree Returns ------------ log Trace log object """ pt = deepcopy(pt0) log = EventLog() # assigns to each event an increased timestamp from 1970 curr_timestamp = 10000000 for i in range(no_traces): ex_seq = execute(pt) ex_seq_labels = pt_util.project_execution_sequence_to_labels(ex_seq) trace = Trace() trace.attributes[xes.DEFAULT_NAME_KEY] = str(i) for label in ex_seq_labels: event = Event() event[xes.DEFAULT_NAME_KEY] = label event[xes.DEFAULT_TIMESTAMP_KEY] = datetime.datetime.fromtimestamp( curr_timestamp) trace.append(event) curr_timestamp = curr_timestamp + 1 log.append(trace) return log
def generate_log(pt0,freqtrace, evaluatetreelist, loopdict0, no_traces=100): """ Generate a log out of a process tree Parameters ------------ pt Process tree no_traces Number of traces contained in the process tree Returns ------------ log Trace log object """ global Loopdict0 Loopdict0 = loopdict0 pt = deepcopy(pt0) #for ele in pt: #print(ele,'here is line 50') # different taus must give different ID in log generation!!!! # so we cannot use the default process tree class # we use this different one! pt = GenerationTree(pt) log = EventLog() #print(pt,'line 56') # assigns to each event an increased timestamp from 1970 curr_timestamp = 10000000 itrace = 0 while itrace < no_traces: #print(itrace,'line 66') ''' loopdict = deepcopy(loopdict0) for key,value in loopdict.items(): if value[1] >= 1: t = round(np.random.normal(value[1],value[1]*(0.05),1)[0]) #print(t,"t is ") if t < 1: t = 1 loopdict[key] = ('overone',t) ''' loopdict = deepcopy(loopdict0) for key,value in loopdict.items(): if value >= 1 and key.operator == pt_opt.Operator.LOOP: t = round(np.random.normal(value,value*(0.005),1)[0]) #print(t,key,"t is ") if t < 1: t = 1 loopdict[key] = t ''' elif value < 1 and key.operator == pt_opt.Operator.LOOP: c = 0 if random.random() < value: c = 1 #print(key,c,value,"line85") loopdict[key] = c ''' #print("loopdict0",loopdict) ex_seq = execute(pt,evaluatetreelist,loopdict) #print(ex_seq,'ex_seq') itrace0 = 0 for key,value in freqtrace[1].items(): print(itrace,itrace/round(1/value),round(1/value),'line 97') if itrace%round(1/value) == 0 and itrace+itrace0 < no_traces-1: print(itrace,value,'line 99') trace = Trace() trace.attributes[xes.DEFAULT_NAME_KEY] = str(itrace) #print('line 67') for label in freqtrace[0][key]: event = Event() event[xes.DEFAULT_NAME_KEY] = label event[xes.DEFAULT_TIMESTAMP_KEY] = datetime.datetime.fromtimestamp(curr_timestamp) trace.append(event) #print(event,'line 73') curr_timestamp = curr_timestamp + 1 log.append(trace) itrace0 += 1 itrace += itrace0 ex_seq_labels = pt_util.project_execution_sequence_to_labels(ex_seq) #print(ex_seq_labels,'ex_seq_labels') trace = Trace() trace.attributes[xes.DEFAULT_NAME_KEY] = str(itrace) #print('line 67') for label in ex_seq_labels: event = Event() event[xes.DEFAULT_NAME_KEY] = label event[xes.DEFAULT_TIMESTAMP_KEY] = datetime.datetime.fromtimestamp(curr_timestamp) trace.append(event) #print(event,'line 73') curr_timestamp = curr_timestamp + 1 if len(trace) != 0: log.append(trace) itrace += 1 return log