【Pm4py第四讲】关于Conversion

news2024/11/24 5:58:01

本节用于介绍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[PetriNet, Marking, Marking]

说明:更改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.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/630731.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java(30天拿下---第一天)

Java开发(30天拿下---第一天) 一 hello world以及JDK,JRE,JVM二 转义字符三 注释四 代码规范五 DOS命令(了解)六 变量1.加号的使用2.数据类型整型浮点型字符类型布尔类型自动类型转换强制类型转换String类型 七 API文档 一 hello …

React | Redux的使用详解

✨ 个人主页:CoderHing 🖥️ React.js专栏:React.js Redux的使用详解 🙋‍♂️ 个人简介:一个不甘平庸的平凡人🍬 💫 系列专栏:吊打面试官系列 16天学会Vue 7天学会微信小程序 N…

亚马逊云科技Serverless数据分析,助力猎豹移动构建更高性价比数据仓库

也许你也听过这样一句话:“21世纪什么最贵?人才!”当数字经济全面席卷而来,这个问题的答案不可置否地变为了“数据”。通过数据分析获取近乎实时的洞察,以驱动业务的全流程,是企业数字化转型的必经之路。借…

【文末送书】微服务拆分规范

目录 一. 🦁 什么是微服务?二. 🦁 拆分模型Ⅰ. 压力模型拆分1. 垂直拆分(Vertical Decomposition)2. 水平拆分(Horizontal Decomposition)3. 动态拆分(Dynamic Decomposition&#x…

初识网络之http协议

目录 一、http协议含义 二、 认识URL 三、urlencode与urldecode 1. urlencode 2. urldecode 四、http协议响应与请求格式 1. http协议请求格式 2.http协议响应格式 3. http请求实际形式 3.1 程序准备 3.2 浏览器发起请求 3.3 请求行内容 3.4 请求报头内容 4. htt…

2022年国赛高教杯数学建模E题小批量物料的生产安排解题全过程文档及程序

2022年国赛高教杯数学建模 E题 小批量物料的生产安排 原题再现 某电子产品制造企业面临以下问题:在多品种小批量的物料生产中,事先无法知道物料的实际需求量。企业希望运用数学方法,分析已有的历史数据,建立数学模型&#xff0c…

mysql联合索引详解

比较简单的是单列索引(btree)。遇到多条件查询时,不可避免会使用到多列索引。联合索引又叫复合索引。 btree结构如下: 每一个磁盘块在mysql中是一个页,页大小是固定的,mysql innodb的默认的页大小是16k&a…

【工作中遇到的性能优化问题】

项目场景: 页面左侧有一列表数据,点击列表项会查对应的表格数据和表单信息(表单是根据数据配置生成的),并在右侧展示。如果数据量大,则非常卡。 需要对此页面进行优化。 问题描述 问题一、加载左侧数据时…

systemV的工作原理+原理代码

概念 我们知道进程间的通信有管道的方式进程通信管道制作_云的小站的博客-CSDN博客 但是我们的管道通信其实属于一种取巧的方式,利用了打开的文件可读写的特性上,两个进程对此分别进行读写操作就会产生所谓的通信现象,但是外面的管道依旧得…

【社区图书】快速入门go程序开发——《Go程序开发实战宝典》书评

《Go程序开发实战宝典》书评 一、介绍二、简要概述三、内容分析3.1、第一部分:Go语言基础知识3.2、第二部分:介绍服务端开发经常需要处理的问题3.3、第三部分:Go语言开发实践实战案例 四、我的看法和评价4.1、对本书整体评价4.2、我对这本书的…

Office Visio 2021安装

哈喽,大家好。今天一起学习的是Visio 2021的安装,这是一个绘制流程图的软件,用有效的绘图表达信息,比任何文字都更加形象和直观。Office Visio 是office软件系列中负责绘制流程图和示意图的软件,便于IT和商务人员就复杂…

Vue.js 中的插槽和动态组件

Vue.js 中的插槽和动态组件 Vue.js 是一款流行的 JavaScript 框架,它提供了一种简单而灵活的方式来构建交互式 Web 应用程序。在 Vue.js 中,插槽和动态组件是两个常用的概念。它们可以帮助开发者更方便地组织和管理组件的结构和行为。但是这两个概念有什…

(opencv)图像几何变换——平移

图像的平移操作是将图像的所有像素坐标进行水平或垂直方向移动,也就是将所有像素点按照给定的偏移量在水平方向沿x轴、垂直方向上沿y轴移动。平移变换分为两种类型:图像大小变化与图像大小不变。第一种类型保证图像平移的完整信息,第二种图像…

Vue.js 中的 $refs 和 $emit 有什么关系?

Vue.js 中的 $refs 和 $emit 有什么关系? 在 Vue.js 中,$refs 和 $emit 都是非常常用的 API。$refs 用于访问组件、元素和子组件等,而 $emit 则用于在组件之间进行通信。本文将会从语法、使用方式、适用场景等方面进行介绍,并探讨…

接招吧! selenium环境+元素定位大法

selenium 与 webdriver Selenium 是一个用于 Web 测试的工具,测试运行在浏览器中,就像真正的用户在手工操作一样。支持所有主流浏览器 WebDriver 就是对浏览器提供的原生API进行封装,使其成为一套更加面向对象的Selenium WebDriver API。 …

【数据结构与算法分析】使用C语言实现队列的两种(带头结点与不带头结点)链式存储,并且给出一种循环队列的设计思想

文章目录 前言队列实现带头结点单向队列不带头结点单向队列循环队列 总结 前言 当我们编写程序时,经常需要处理各种数据结构。队列是一种常见的数据结构,它有着广泛的应用场景。队列的基本操作包括入队和出队,应用于模拟等待队列、消息队列、…

LVS-DR集群

LVS-DR集群 一.LVS-DR工作原理 1.数据包流向 数据包流向分析: (1)客户端发送请求到 Director Server(负载均衡器),请求的数据报文(源 IP 是 CIP,目标 IP 是 VIP)到达内核空间。 &…

Flowable工作流入门完整SpringBoot案例

文章目录 一 、Flowable 的出现是为了什么二、Flowable 的优势三、常见的Java类/实例3.1 ProcessEngine3.2 RepositoryService3.3 ProcessDefinition3.4 Deployment3.5 RuntimeService3.6 ProcessInstance3.7 TaskService3.8 JavaDelegate3.9 其他 四、核心数据库表4.1 数据库4…

CET4写译学习

学习记录笔记: 05.四级写译技巧(上)_哔哩哔哩_bilibili 不会的东西不要往上写。寻找可以替换的词。 保证写的所有内容都是正确的。 切题,论证清楚。 要有自己的观点,然后去论证。 词汇,语法,句子结构都整好。 文…

【软件测试】接口测试工具APIpost

说实话,了解APIpost是因为,我的所有接口相关的文章下,都有该APIpost水军的评论,无非就是APIpost是中文版的postman,有多么多么好用,虽然咱也还不是什么啥网红,但是不知会一声就乱在评论区打广告…