def execute_script(): log = xes_importer.apply( os.path.join("..", "tests", "input_data", "running-example.xes")) hw_values = sna_algorithm.apply( log, variant=sna_algorithm.Variants.HANDOVER_LOG) wt_values = sna_algorithm.apply( log, variant=sna_algorithm.Variants.WORKING_TOGETHER_LOG) sub_values = sna_algorithm.apply( log, variant=sna_algorithm.Variants.SUBCONTRACTING_LOG) ja_values = sna_algorithm.apply( log, variant=sna_algorithm.Variants.JOINTACTIVITIES_LOG) gviz_sub = pn_vis.apply( sub_values, variant=pn_vis.Variants.NETWORKX, parameters={pn_vis.Variants.NETWORKX.value.Parameters.FORMAT: "svg"}) gviz_hw = pn_vis.apply(hw_values, variant=pn_vis.Variants.PYVIS) gviz_wt = pn_vis.apply( wt_values, variant=pn_vis.Variants.NETWORKX, parameters={pn_vis.Variants.NETWORKX.value.Parameters.FORMAT: "svg"}) gviz_ja = pn_vis.apply(ja_values, variant=pn_vis.Variants.PYVIS) pn_vis.view(gviz_sub, variant=pn_vis.Variants.NETWORKX) pn_vis.view(gviz_hw, variant=pn_vis.Variants.PYVIS) pn_vis.view(gviz_wt, variant=pn_vis.Variants.NETWORKX) pn_vis.view(gviz_ja, variant=pn_vis.Variants.PYVIS)
def discover_subcontracting_network(log: Union[EventLog, pd.DataFrame], n=2): """ Calculates the subcontracting network of the process. Parameters --------------- log Event log or Pandas dataframe n n parameter for Subcontracting metric Returns --------------- metric_values Values of the metric """ if type(log) not in [pd.DataFrame, EventLog, EventStream]: raise Exception("the method can be applied only to a traditional event log!") from pm4py.algo.organizational_mining.sna import algorithm as sna parameters = get_properties(log) parameters["n"] = n if check_is_pandas_dataframe(log): check_pandas_dataframe_columns(log) return sna.apply(log, variant=sna.Variants.SUBCONTRACTING_PANDAS, parameters=parameters) else: return sna.apply(log, variant=sna.Variants.SUBCONTRACTING_LOG, parameters=parameters)
def discover_handover_of_work_network(log: Union[EventLog, pd.DataFrame], beta=0): """ Calculates the handover of work network of the event log. The handover of work network is essentially the DFG of the event log, however, using the resource as a node of the graph, instead of the activity. As such, to use this, resource information should be present in the event log. Parameters --------------- log Event log or Pandas dataframe beta beta parameter for Handover metric Returns --------------- metric_values Values of the metric """ if type(log) not in [pd.DataFrame, EventLog, EventStream]: raise Exception("the method can be applied only to a traditional event log!") from pm4py.algo.organizational_mining.sna import algorithm as sna parameters = get_properties(log) parameters["beta"] = beta if check_is_pandas_dataframe(log): check_pandas_dataframe_columns(log) return sna.apply(log, variant=sna.Variants.HANDOVER_PANDAS, parameters=parameters) else: return sna.apply(log, variant=sna.Variants.HANDOVER_LOG, parameters=parameters)
def discover_handover_of_work_network(log: Union[EventLog, pd.DataFrame], beta=0): """ Calculates the handover of work network of the event log. The handover of work network is essentially the DFG of the event log, however, using the resource as a node of the graph, instead of the activity. As such, to use this, resource information should be present in the event log. Parameters --------------- log Event log or Pandas dataframe beta beta parameter for Handover metric Returns --------------- metric_values Values of the metric """ from pm4py.algo.organizational_mining.sna import algorithm as sna if check_is_dataframe(log): check_dataframe_columns(log) return sna.apply(log, variant=sna.Variants.HANDOVER_PANDAS, parameters={"beta": beta}) else: return sna.apply(log, variant=sna.Variants.HANDOVER_LOG, parameters={"beta": beta})
def test_pandas(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 = pd.read_csv( os.path.join("..", "tests", "input_data", "running-example.csv")) log = dataframe_utils.convert_timestamp_columns_in_df(log) hw_values = sna_alg.apply(log, variant=sna_alg.Variants.HANDOVER_PANDAS) wt_values = sna_alg.apply( log, variant=sna_alg.Variants.WORKING_TOGETHER_PANDAS) sub_values = sna_alg.apply( log, variant=sna_alg.Variants.SUBCONTRACTING_PANDAS)
def test_1(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.apply( os.path.join("..", "tests", "input_data", "running-example.xes")) hw_values = sna_alg.apply(log, variant=sna_alg.Variants.HANDOVER_LOG) wt_values = sna_alg.apply( log, variant=sna_alg.Variants.WORKING_TOGETHER_LOG) sub_values = sna_alg.apply(log, variant=sna_alg.Variants.SUBCONTRACTING_LOG) ja_values = sna_alg.apply(log, variant=sna_alg.Variants.JOINTACTIVITIES_LOG)
def discover_activity_based_resource_similarity(log: Union[EventLog, pd.DataFrame]): """ Calculates similarity between the resources in the event log, based on their activity profiles. Parameters --------------- log Event log or Pandas dataframe Returns --------------- metric_values Values of the metric """ from pm4py.algo.organizational_mining.sna import algorithm as sna if check_is_dataframe(log): check_dataframe_columns(log) return sna.apply(log, variant=sna.Variants.JOINTACTIVITIES_PANDAS) else: return sna.apply(log, variant=sna.Variants.JOINTACTIVITIES_LOG)
def discover_working_together_network(log: Union[EventLog, pd.DataFrame]): """ Calculates the working together network of the process. Two nodes resources are connected in the graph if the resources collaborate on an instance of the process. Parameters --------------- log Event log or Pandas dataframe Returns --------------- metric_values Values of the metric """ from pm4py.algo.organizational_mining.sna import algorithm as sna if check_is_dataframe(log): check_dataframe_columns(log) return sna.apply(log, variant=sna.Variants.WORKING_TOGETHER_PANDAS) else: return sna.apply(log, variant=sna.Variants.WORKING_TOGETHER_LOG)
def discover_activity_based_resource_similarity(log: Union[EventLog, pd.DataFrame]): """ Calculates similarity between the resources in the event log, based on their activity profiles. Parameters --------------- log Event log or Pandas dataframe Returns --------------- metric_values Values of the metric """ if type(log) not in [pd.DataFrame, EventLog, EventStream]: raise Exception("the method can be applied only to a traditional event log!") from pm4py.algo.organizational_mining.sna import algorithm as sna if check_is_pandas_dataframe(log): check_pandas_dataframe_columns(log) return sna.apply(log, variant=sna.Variants.JOINTACTIVITIES_PANDAS, parameters=get_properties(log)) else: return sna.apply(log, variant=sna.Variants.JOINTACTIVITIES_LOG, parameters=get_properties(log))
def discover_subcontracting_network(log: Union[EventLog, pd.DataFrame], n=2): """ Calculates the subcontracting network of the process. Parameters --------------- log Event log or Pandas dataframe n n parameter for Subcontracting metric Returns --------------- metric_values Values of the metric """ from pm4py.algo.organizational_mining.sna import algorithm as sna if check_is_dataframe(log): check_dataframe_columns(log) return sna.apply(log, variant=sna.Variants.SUBCONTRACTING_PANDAS, parameters={"n": n}) else: return sna.apply(log, variant=sna.Variants.SUBCONTRACTING_LOG, parameters={"n": n})
def discover_working_together_network(log: Union[EventLog, pd.DataFrame]): """ Calculates the working together network of the process. Two nodes resources are connected in the graph if the resources collaborate on an instance of the process. Parameters --------------- log Event log or Pandas dataframe Returns --------------- metric_values Values of the metric """ if type(log) not in [pd.DataFrame, EventLog, EventStream]: raise Exception("the method can be applied only to a traditional event log!") from pm4py.algo.organizational_mining.sna import algorithm as sna if check_is_pandas_dataframe(log): check_pandas_dataframe_columns(log) return sna.apply(log, variant=sna.Variants.WORKING_TOGETHER_PANDAS, parameters=get_properties(log)) else: return sna.apply(log, variant=sna.Variants.WORKING_TOGETHER_LOG, parameters=get_properties(log))
def test_sna_clustering(self): log = xes_importer.apply( os.path.join("..", "tests", "input_data", "running-example.xes")) hw_values = sna_alg.apply(log, variant=sna_alg.Variants.HANDOVER_LOG) clusters = sna_util.cluster_affinity_propagation(hw_values)