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
コード例 #2
0
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
コード例 #3
0
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
コード例 #4
0
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