def test_importExportCSVtoCSV(self):
     # to avoid static method warnings in tests,
     # that by construction of the unittest package have to be expressed in such way
     self.dummy_variable = "dummy_value"
     event_log = csv_importer.import_event_stream(
         os.path.join(INPUT_DATA_DIR, "running-example.csv"))
     event_log = sorting.sort_timestamp(event_log)
     event_log = sampling.sample(event_log)
     event_log = index_attribute.insert_event_index_as_event_attribute(
         event_log)
     log = log_conv_fact.apply(event_log)
     log = sorting.sort_timestamp(log)
     log = sampling.sample(log)
     log = index_attribute.insert_trace_index_as_event_attribute(log)
     event_log_transformed = log_conv_fact.apply(
         log, variant=log_conv_fact.TO_EVENT_STREAM)
     csv_exporter.export(
         event_log_transformed,
         os.path.join(OUTPUT_DATA_DIR, "running-example-exported.csv"))
     event_log_imported_after_export = csv_importer.import_event_stream(
         os.path.join(OUTPUT_DATA_DIR, "running-example-exported.csv"))
     log_imported_after_export = log_conv_fact.apply(
         event_log_imported_after_export)
     self.assertEqual(len(log), len(log_imported_after_export))
     os.remove(os.path.join(OUTPUT_DATA_DIR,
                            "running-example-exported.csv"))
 def test_csv1documentation(self):
     # to avoid static method warnings in tests,
     # that by construction of the unittest package have to be expressed in such way
     self.dummy_variable = "dummy_value"
     import os
     from pm4py.objects.log.importer.csv import factory as csv_importer
     event_log = csv_importer.import_event_stream(
         os.path.join("input_data", "running-example.csv"))
     event_log_length = len(event_log)
     del event_log_length
     from pm4py.objects.log import transform
     log = transform.transform_event_stream_to_event_log(
         event_log, case_glue="case:concept:name")
     del log
     from pm4py.objects.log.importer.csv.versions import pandas_df_imp
     dataframe = pandas_df_imp.import_dataframe_from_path(
         os.path.join("input_data", "running-example.csv"))
     event_log = log_conv_fact.apply(dataframe,
                                     variant=log_conv_fact.TO_EVENT_STREAM)
     log = log_conv_fact.apply(event_log)
     from pm4py.objects.log.exporter.csv import factory as csv_exporter
     csv_exporter.export(event_log, "outputFile1.csv")
     os.remove("outputFile1.csv")
     from pm4py.objects.log.exporter.csv import factory as csv_exporter
     csv_exporter.export(log, "outputFile2.csv")
     os.remove("outputFile2.csv")
示例#3
0
    def convert(self, filePath):
        """
        function that converts csv files into event logs

        :param filePath: the path to the file
        :return: event log
        """
        csvEventStream = csv_importer.import_event_stream(filePath)
        return conversion_factory.apply(csvEventStream)
示例#4
0
def import_log_csv(path):
    return conversion_factory.apply(
        import_event_stream(
            path),  # https://pm4py.fit.fraunhofer.de/documentation/1.2
        parameters={
            constants.PARAMETER_CONSTANT_CASEID_KEY:
            "case:concept:name",  # this tells the importer
            constants.PARAMETER_CONSTANT_ACTIVITY_KEY:
            "concept:name",  # how to parse the csv
            constants.PARAMETER_CONSTANT_TIMESTAMP_KEY: "time:timestamp"
        }  # and which are the caseID
    )  # concept name and timestamp
 def test_importExportXEStoCSV(self):
     # to avoid static method warnings in tests,
     # that by construction of the unittest package have to be expressed in such way
     self.dummy_variable = "dummy_value"
     log = xes_importer.import_log(os.path.join(INPUT_DATA_DIR, "running-example.xes"))
     event_log = log_conv_fact.apply(log, variant=log_conv_fact.TO_EVENT_STREAM)
     csv_exporter.export(event_log, os.path.join(OUTPUT_DATA_DIR, "running-example-exported.csv"))
     event_log_newimport = csv_importer.import_event_stream(
         os.path.join(OUTPUT_DATA_DIR, "running-example-exported.csv"))
     log_imported_after_export = log_conv_fact.apply(event_log_newimport)
     self.assertEqual(len(log), len(log_imported_after_export))
     os.remove(os.path.join(OUTPUT_DATA_DIR, "running-example-exported.csv"))
示例#6
0
    def obtainPetriNetThroughImdf(self, log_name):
        # to avoid static method warnings in tests,
        # that by construction of the unittest package have to be expressed in such way
        self.dummy_variable = "dummy_value"
        if ".xes" in log_name:
            log = xes_importer.import_log(log_name)
        else:
            event_log = csv_importer.import_event_stream(log_name)
            log = log_conv_fact.apply(event_log)
        net, marking, final_marking = inductive_miner.apply(log)
        soundness = check_soundness.check_petri_wfnet_and_soundness(net)
        del soundness

        return log, net, marking, final_marking
示例#7
0
def import_csv(file):
    '''
    import csv and it adds classifiers
    input file path
    output log object
    '''
    try:
        event_stream = csv_importer.import_event_stream(file)
        log = conversion_factory.apply(event_stream)
        log = add_classifier(log)

    # handling the exceptions occuring during the import and converting
    except Exception as e:
        print("Error occur, please check the csv file", e)
        return None
    return log
示例#8
0
def import_csv_file(filename):
    filename = os.path.basename(filename)

    file_path = global_util.get_full_path_input_file(filename)

    event_stream = csv_importer.import_event_stream(file_path)
    # dataframe = csv_import_adapter.import_dataframe_from_path(file_path, sep=",")

    log = conversion_factory.apply(
        event_stream,
        parameters={constants.PARAMETER_CONSTANT_TIMESTAMP_KEY: "日期和时间"})

    net, initial_marking, final_marking = alpha_miner.apply(log)

    gviz = visualizer.apply(net, initial_marking, final_marking)

    visualizer.view(gviz)
 def test_importExportCSVtoXES(self):
     # to avoid static method warnings in tests,
     # that by construction of the unittest package have to be expressed in such way
     self.dummy_variable = "dummy_value"
     event_log = csv_importer.import_event_stream(os.path.join(INPUT_DATA_DIR, "running-example.csv"))
     event_log = sorting.sort_timestamp(event_log)
     event_log = sampling.sample(event_log)
     event_log = index_attribute.insert_event_index_as_event_attribute(event_log)
     log = log_transform.transform_event_stream_to_event_log(event_log)
     log = sorting.sort_timestamp(log)
     log = sampling.sample(log)
     log = index_attribute.insert_trace_index_as_event_attribute(log)
     xes_exporter.export_log(log, os.path.join(OUTPUT_DATA_DIR, "running-example-exported.xes"))
     log_imported_after_export = xes_importer.import_log(
         os.path.join(OUTPUT_DATA_DIR, "running-example-exported.xes"))
     self.assertEqual(len(log), len(log_imported_after_export))
     os.remove(os.path.join(OUTPUT_DATA_DIR, "running-example-exported.xes"))
示例#10
0
def import_csv_file(filename):
    filename = os.path.basename(filename)
    # 修改日志文件路径
    file_path = global_util.get_full_path_input_file(filename)

    # 将文件按 csv 文件格式导入,得到事件流结构
    event_stream = csv_importer.import_event_stream(file_path)
    # dataframe = csv_import_adapter.import_dataframe_from_path(file_path, sep=",")

    # 将事件流转换成 xes 结构
    log = conversion_factory.apply(event_stream, parameters={constants.PARAMETER_CONSTANT_TIMESTAMP_KEY: "日期和时间"})

    # 矿工应用日志文件,这里简单的应用阿尔法矿工
    net, initial_marking, final_marking = alpha_miner.apply(log)

    # 可视化界面应用分析结果
    gviz = visualizer.apply(net, initial_marking, final_marking)

    # 显示结果
    visualizer.view(gviz)
示例#11
0
    def obtainPetriNetThroughImdf(self,
                                  log_name,
                                  variant=inductive_miner.DEFAULT_VARIANT):
        # to avoid static method warnings in tests,
        # that by construction of the unittest package have to be expressed in such way
        self.dummy_variable = "dummy_value"
        if ".xes" in log_name:
            log = xes_importer.import_log(log_name)
        else:
            event_log = csv_importer.import_event_stream(log_name)
            log = log_conv_fact.apply(event_log)
        # apply dummily the test to all the available variants
        net, marking, final_marking = inductive_miner.apply(
            log, variant=inductive_miner.DFG_BASED_OLD_VERSION)
        net, marking, final_marking = inductive_miner.apply(
            log, variant=inductive_miner.DFG_BASED)
        net, marking, final_marking = inductive_miner.apply(log,
                                                            variant=variant)
        soundness = check_soundness.check_petri_wfnet_and_soundness(net)
        del soundness

        return log, net, marking, final_marking
示例#12
0
    col_event_concept_name = pd_file.columns.get_loc('_event_concept_name_')
    pd_file.columns.values[col_event_concept_name]= 'concept:name'
except:
    print('Did not find _case_concept_name_')    
    

try:
    col_time_timestamp = pd_file.columns.get_loc('_event_time_timestamp_')
    pd_file.columns.values[col_time_timestamp]= 'time:timestamp'
except:
    print('Did not find _event_time_stamp_')    


pd_file.to_csv(path + file, encoding = 'utf-8', index = False)

event_stream = csv_importer.import_event_stream(path = path + file)


    
log = conversion_factory.apply(event_stream)

from pm4py.algo.discovery.alpha import factory as alpha_miner

net, initial_marking, final_marking = alpha_miner.apply(log)




from pm4py.objects.log.importer.xes import factory as xes_import_factory
xes_path = 'C:/Users/vince_000/Documents/BPI Challenge 2019/INV after GR - with SRM/01_01_01_Service/'
xes_file = '01_01_01_Invoice_after_GR_with_SRM_Service.xes'
示例#13
0
#Topic:
#-----------------------------
#libraries

from pm4py.algo.discovery.alpha import factory as alpha_miner
from pm4py.objects.log.importer.xes import factory as importer
from pm4py.visualization.petrinet import factory as visualizer
from pm4py.objects.log.importer.csv import factory as csv_importer
event_stream = csv_importer.import_event_stream(
    os.path.join("pmdata/", "running-example.csv"))
event_stream

event_stream_length = len(event_stream)
print(event_stream_length)
for event in event_stream:
    print(event)

from pm4py.objects.conversion.log import factory as conversion_factory

log = conversion_factory.apply(event_stream)

from pm4py.objects.log.exporter.csv import factory as csv_exporter

csv_exporter.export(event_stream, "data/outputFile1.csv")

#log = importer.apply('pmdata/running-example.xes')
net, initial_marking, final_marking = alpha_miner.apply(log)
gviz = visualizer.apply(net, initial_marking, final_marking)
visualizer.view(gviz)
示例#14
0
def read_as_log_csv(filepath):
    event_stream = csv_importer.import_event_stream(filepath)
    return conversion_factory.apply(event_stream)
21	blur-focus	0.048315
12	scroll-click-0	0.045465
16	focus-blur	0.044872
11	scroll-selection	0.039763
14	focus-scroll	0.039740
6	load-click-0	0.039533
2	load-scroll	0.034766
5	load-selection	0.033676
20	blur-scroll	0.033074
26	selection-scroll	0.032246
31	click-0-load	0.029780
'''
#-----------------

from pm4py.objects.log.importer.csv import factory as csv_importer
excellentLog1A = csv_importer.import_event_stream('Excellent1A_fixed.csv')
from pm4py.objects.conversion.log import factory as conversion_factory
log1 = conversion_factory.apply(excellentLog1A)

from pm4py.visualization.dfg import factory as dfg_vis_factory

gviz = dfg_vis_factory.apply(dfg1, log=log1, variant="frequency")
dfg_vis_factory.view(gviz)

from pm4py.objects.conversion.dfg import factory as dfg_mining_factory

net, im, fm = dfg_mining_factory.apply(dfg1)

from pm4py.visualization.petrinet import factory as pn_vis_factory

gviz = pn_vis_factory.apply(net, im, fm)
示例#16
0
def import_data(directory,
                file_name,
                separator=";",
                quote=None,
                case_id="concept:name",
                activity="activity",
                time_stamp="time:timestamp",
                target="label",
                num_cases=None):
    """
    Loads data from a file and returns an XLog/pm4py log object.
    Expects xes file with standard attributes and the target variable named "event: Label".
    Expects csv file with attributes "case_id", "activity", "timestamp" and "label".
    :param directory: name of path [str].
    :param file_name: name of file [str].
    :param separator: separator for csv file [char].
    :param quote: boolean flag [bool].
    :param case_id: identifier for cases [str].
    :param activity: identifier for activities [str].
    :param time_stamp: identifier for time stamps [str].
    :param target: identifier for target [str].
    :param num_cases: boolean flag [bool].
    :return: event log [EventLog].
    """

    extension = os.path.splitext(file_name)[1]
    print(os.getcwd())
    if extension == '.csv':
        data_dir = os.path.join(directory, file_name)

        # Specify column names
        CASEID_GLUE = case_id
        ACTIVITY_KEY = activity
        TIMEST_KEY = time_stamp

        parameters = {
            constants.PARAMETER_CONSTANT_CASEID_KEY: CASEID_GLUE,
            constants.PARAMETER_CONSTANT_ACTIVITY_KEY: ACTIVITY_KEY,
            constants.PARAMETER_CONSTANT_TIMESTAMP_KEY: TIMEST_KEY,
            'sep': separator,
            'quotechar': quote,
            'timest_columns': TIMEST_KEY
        }

        # Load pm4py event stream
        event_stream = csv_importer.import_event_stream(data_dir,
                                                        parameters=parameters)

        # Transform event stream to log object
        log = conversion_factory.apply(event_stream, parameters=parameters)

        # Sort log by time_stamp
        log = sorting.sort_timestamp(log, timestamp_key=TIMEST_KEY)

        # Rename to xes standard
        for trace in log:
            for event in trace:
                event.__setitem__("caseid", event.__getitem__(case_id))
                event.__setitem__("concept:name", event.__getitem__(activity))
                event.__setitem__("time:timestamp",
                                  event.__getitem__(time_stamp))
                event.__setitem__("label", event.__getitem__(target))

    elif extension == '.xes':
        data_dir = os.path.join(directory, file_name)
        log = xes_import_factory.apply(data_dir)
        print(log)
        for trace in log:
            for event in trace:
                trace.__setitem__("label", event.__getitem__(target))
    else:
        raise TypeError('File type not supported.')

    # Filter out cases where label is not set (i.e. is nan); limits number of cases in event log if set
    # util.apply(log)
    if num_cases is not None:
        log = log[:num_cases]
    print("Event log loaded")

    return log
示例#17
0
import os

from pm4py.objects.log.importer.csv import factory as csv_importer
from pm4py.objects.conversion.log import factory as conversion_factory
from pm4py.algo.discovery.alpha import factory as alpha_miner
from pm4py.visualization.petrinet import factory as vis_factory
from tests.translucent_event_log_new.algo.discover_petrinet.alpha_revise import trans_alpha

event_stream = csv_importer.import_event_stream(
    os.path.join("input_data", "sample.csv"))
log = conversion_factory.apply(event_stream)

net, im, fm = trans_alpha(log)
nett, imm, fmm = alpha_miner.apply(log)

gviz = vis_factory.apply(net, im, fm)
gvizz = vis_factory.apply(nett, imm, fmm)
vis_factory.view(gviz)
vis_factory.view(gvizz)
 def convert(self, filePath):
     csvEventStream = csv_importer.import_event_stream(filePath)
     return conversion_factory.apply(csvEventStream)
示例#19
0
    print('Did not find _case_concept_name_')

try:
    col_time_timestamp = pd_file.columns.get_loc('_event_time_timestamp_')
    pd_file.columns.values[col_time_timestamp] = 'time:timestamp'
except:
    print('Did not find _event_time_stamp_')

pd_file_filtered = pd_file.filter(
    items=['case:concept:name', 'concept:name', 'time:timestamp'])

pd_file_filtered.to_csv(path + file + '_2', encoding='utf-8', index=False)

event_stream = csv_importer.import_event_stream(path=path + file + '_2',
                                                parameters={
                                                    "sort": True,
                                                    "sort_field":
                                                    "time:timestamp"
                                                })

log = conversion_factory.apply(event_stream,
                               parameters={"timestamp_sort": True})

####### Filter the event log

## Start activities

from pm4py.algo.filtering.log.start_activities import start_activities_filter

log_start = start_activities_filter.get_start_activities(log)

log = start_activities_filter.apply_auto_filter(