【Pm4py第四讲】关于Convert

本节用于介绍pm4py中的转换函数,包括日志、事件流、数据块的转换、Petei网、流程树、BPMN的转换、可达图、面向对象日志等。

1.函数概述

 本次主要介绍Pm4py中一些常见的转换函数,总览如下表:

函数名说明
convert_log_to_networkx(log[,include_df,…])将事件日志对象转换为NetworkX DiGraph对象。
convert_log_to_ocel(log[,activity_column,…])将事件日志转换为具有一个或多个对象类型的以对象为中心的事件日志。
convert_ocel_to_networkx(ocel[, variant])将OCEL转换为NetworkX DiGraph对象。
convert_petri_net_to_networkx(net, im, fm)将Petri网转换为NetworkX DiGraph。
convert_petri_net_type(net, im, fm[, type])更改Petri网(内部)类型
convert_to_bpmn(*args)将对象转换为BPMN关系图。
convert_to_dataframe(obj, **kwargs)将日志对象转换为数据帧
convert_to_event_log(obj[, case_id_key])将DataFrame/EventStream对象转换为事件日志对象
convert_to_event_stream(obj[, case_id_key])将日志对象转换为事件流
convert_to_petri_net(*args)将输入模型转换为(可接受的)Petri网。
convert_to_process_tree(*args)将输入模型转换为流程树

2.函数方法介绍

2.1 转换为事件日志

pm4py.convert.convert_to_event_log(obj: Union[DataFrame, EventStream], case_id_key: str = 'case:concept:name', **kwargs) → EventLog

说明:将一个DataFrame/EventStream转换为一个事件日志对象

输入参数:

      obj – 数据流或者事件流对象;

      case_id_key (str) – 案例识别属性;

返回对象

      事件日志

示例代码:

import pandas as pd
import pm4py

dataframe = pm4py.read_csv("tests/input_data/running-example.csv")
dataframe = pm4py.format_dataframe(dataframe, case_id_column='case:concept:name', activity_column='concept:name', timestamp_column='time:timestamp')
log = pm4py.convert_to_event_log(dataframe)

2.2 转换为事件流

pm4py.convert.convert_to_event_stream(obj: Union[EventLog, DataFrame], case_id_key: str = 'case:concept:name', **kwargs) → EventStream[source]

说明:将事件日志格式转化为事件流

输入参数

      obj – 数据流或者事件流对象;

      case_id_key (str) – 案例识别属性;

返回对象

        事件流

示例代码:

import pm4py

log = pm4py.read_xes("tests/input_data/running-example.xes")
event_stream = pm4py.convert_to_event_stream(log)

2.3 转化为DataFrame

pm4py.convert.convert_to_dataframe(obj: Union[EventStream, EventLog], **kwargs) → DataFrame
说明:将事件日志格式转化为DataFrame

输入参数
    obj – 数据流或者事件流对象;;

输出:

    pd.DataFrame

示例代码:

import pm4py

log = pm4py.read_xes("tests/input_data/running-example.xes")
dataframe = pm4py.convert_to_dataframe(log)

2.4 转换为BPMN

pm4py.convert.convert_to_bpmn(*args: Union[Tuple[PetriNet, Marking, Marking], ProcessTree]) → BPMN
说明:将对象转换为BPMN关系图。作为输入,可以提供Petri网(具有相应的初始和最终标记)或流程树。流程树总是可以转换为BPMN模型,从而保证了结果对象的质量。对于Petri网,对流的质量在很大程度上取决于所提供的网络(例如,健全的WF网络可能产生合理的BPMN模型)

输入参数

      args –带有初始和结束标记的petri网或者流程树

返回类型

    BPMN

示例代码:

import pm4py

# import a Petri net from a file
net, im, fm = pm4py.read_pnml("tests/input_data/running-example.pnml")
bpmn_graph = pm4py.convert_to_bpmn(net, im, fm)

2.5 转换为Petri网

pm4py.convert.convert_to_petri_net(*args: Union[BPMN, ProcessTree, HeuristicsNet, dict]) → Tuple[PetriNet, Marking, Marking]
说明:将输入模型转换为(可接受的)Petri网。输入对象可以是流程树、BPMN模型或启发式网络。输出是一个三元组,包含Petri网以及初始和最终标记。只有当标记可以从输入模型中合理地导出时,才会返回标记。

输入参数

    args – 流程树或者BPMN

返回类型:

    Tuple[PetriNet, Marking, Marking]

示例代码:

import pm4py

# imports a process tree from a PTML file
process_tree = pm4py.read_ptml("tests/input_data/running-example.ptml")
net, im, fm = pm4py.convert_to_petri_net(process_tree)

2.6 转化为流程树

 pm4py.convert.convert_to_process_tree(*args: Union[Tuple[PetriNet, Marking, Marking], BPMN]) → ProcessTree
说明:将输入模型转换为流程树。输入模型可以是Petri网(标记)或BPMN模型。对于这两种输入类型,转换都不能保证有效,因此,方法的调用可能会产生异常。

输入参数

    args – petri net (along with initial and final marking) or BPMN

返回类型:

    流程树

 示例代码:

import pm4py

# imports a BPMN file
bpmn_graph = pm4py.read_bpmn("tests/input_data/running-example.bpmn")
# converts the BPMN to a process tree (through intermediate conversion to a Petri net)
process_tree = pm4py.convert_to_process_tree(bpmn_graph)

2.7 转化为可达图

pm4py.convert.convert_to_reachability_graph(*args: Union[Tuple[PetriNet, Marking, Marking], BPMN, ProcessTree]) → TransitionSystem

说明:将输入模型转换为可达性图(转换系统)。输入模型可以是Petri网(带标记)、BPMN模型或流程树。输出是模型的状态空间(即可达性图),表示为TransitionSystem对象

输入参数:

      args – 带有初始和结束标记的petri网或流程树或BPMN

返回类型:变迁系统

 示例代码:

import pm4py

# reads a Petri net from a file
net, im, fm = pm4py.read_pnml("tests/input_data/running-example.pnml")
# converts it to reachability graph
reach_graph = pm4py.convert_to_reachability_graph(net, im, fm)

2.8 转化为面向对象的日志

pm4py.convert.convert_log_to_ocel(log: Union[EventLog, EventStream, DataFrame], activity_column: str = 'concept:name', timestamp_column: str = 'time:timestamp', object_types: Optional[Collection[str]] = None, obj_separator: str = ' AND ', additional_event_attributes: Optional[Collection[str]] = None) → OCEL

说明:将事件日志转换为具有一个或多个对象类型的以对象为中心的事件日志。

输入参数:

  • og_obj – 日志对象

  • activity_column (str) – 活动列

  • timestamp_column (str) –时间戳列

  • object_types – list of columns to consider as object types

  • obj_separator (str) – separator between different objects in the same column

  • additional_event_attributes – 额外的事件属性

  • 返回类型:OCEL

 2.9 将事件日志对象转换为NetworkX DiGraph对象

pm4py.convert.convert_to_reachability_graph(*args: Union[Tuple[PetriNet, Marking, Marking], BPMN, ProcessTree]) → TransitionSystem

说明:将事件日志对象转换为NetworkX DiGraph对象。图的节点是事件、案例(可能还有日志的属性)。边缘是:-将每个事件连接到相应的事例(BELONGS_to类型)-将每个活动连接到直接跟随的事例(DF类型,如果启用)-将每一个事例/事件连接到给定的属性值(attribute_EDGE类型)

输入参数:

    log–日志对象(EventLog、EventStream、Pandas数据帧)
   include_df(bool)–在图中包含直接跟随的图关系(bool
   case_id_attribute–指定案例级别的哪个属性应被视为案例id(str)
   other_case_attributes_as_nodes–指定事例级别的哪些属性应作为节点(事例ID除外)插入到图中(列表,默认为空)
   event_attributes_as_nodes–指定事件级别的哪些属性应作为节点插入到图中(列表,默认为空)

返回类型

     nx.DiGraph

2.10 将Petri网转换为NetworkX DiGraph

pm4py.convert.convert_petri_net_to_networkx(net: PetriNet, im: Marking, fm: Marking) → DiGraph

说明:将Petri网转换为NetworkX DiGraph。每个库所和变迁都对应于图中的一个节点。

输入参数:    

  • net– Petri net

  • im – initial marking

  • fm  – final marking

返回类型

       nx.DiGraph

2.11 更改Petri网(内部)类型

pm4py.convert.convert_petri_net_type(net: PetriNetim: Markingfm: Markingtype: str = 'classic') → Tuple[PetriNetMarkingMarking]

说明:更改Petri网(内部)类型。

输入参数:    

  • net– Petri net

  • im – initial marking

  • fm  – final marking

  • type (str) – internal type (classic, reset, inhibitor, reset_inhibitor)

返回类型

      Tuple[PetriNet, Marking, Marking]

如需了解更多,欢迎加入流程挖掘交流群QQ:671290481.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

北冥有鱼zsp

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值