Source code for pm4py.write

'''
    This file is part of PM4Py (More Info: https://pm4py.fit.fraunhofer.de).

    PM4Py is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    PM4Py is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with PM4Py.  If not, see <https://www.gnu.org/licenses/>.
'''
import warnings

import deprecation

from pm4py.objects.bpmn.obj import BPMN
from pm4py.objects.log.obj import EventLog, EventStream
from pm4py.objects.ocel.obj import OCEL
from pm4py.objects.petri_net.obj import PetriNet, Marking
from pm4py.objects.process_tree.obj import ProcessTree
import pandas as pd
from typing import Union


[docs]def write_xes(log: Union[EventLog, pd.DataFrame], file_path: str) -> None: """ Exports a XES log Parameters -------------- log Event log file_path Destination path Returns ------------- void """ if type(log) not in [pd.DataFrame, EventLog, EventStream]: raise Exception("the method can be applied only to a traditional event log!") from pm4py.objects.log.exporter.xes import exporter as xes_exporter xes_exporter.apply(log, file_path)
[docs]def write_pnml(petri_net: PetriNet, initial_marking: Marking, final_marking: Marking, file_path: str) -> None: """ Exports a (composite) Petri net object Parameters ------------ petri_net Petri net initial_marking Initial marking final_marking Final marking file_path Destination path Returns ------------ void """ from pm4py.objects.petri_net.exporter import exporter as petri_exporter petri_exporter.apply(petri_net, initial_marking, file_path, final_marking=final_marking)
[docs]@deprecation.deprecated(deprecated_in='2.2.2', removed_in='2.4.0', details='write_petri_net is deprecated, please use write_pnml') def write_petri_net(petri_net: PetriNet, initial_marking: Marking, final_marking: Marking, file_path: str) -> None: warnings.warn('write_petri_net is deprecated, please use write_pnml', DeprecationWarning) """ Exports a (composite) Petri net object Parameters ------------ petri_net Petri net initial_marking Initial marking final_marking Final marking file_path Destination path Returns ------------ void """ from pm4py.objects.petri_net.exporter import exporter as petri_exporter petri_exporter.apply(petri_net, initial_marking, file_path, final_marking=final_marking)
[docs]def write_ptml(tree: ProcessTree, file_path: str) -> None: """ Exports a process tree Parameters ------------ tree Process tree file_path Destination path Returns ------------ void """ from pm4py.objects.process_tree.exporter import exporter as tree_exporter tree_exporter.apply(tree, file_path)
[docs]@deprecation.deprecated(deprecated_in='2.2.2', removed_in='2.4.0', details='write_process_tree is deprecated, please use write_ptml') def write_process_tree(tree: ProcessTree, file_path: str) -> None: warnings.warn('write_process_tree is deprecated, please use write_ptml', DeprecationWarning) """ Exports a process tree Parameters ------------ tree Process tree file_path Destination path Returns ------------ void """ from pm4py.objects.process_tree.exporter import exporter as tree_exporter tree_exporter.apply(tree, file_path)
[docs]def write_dfg(dfg: dict, start_activities: dict, end_activities: dict, file_path: str): """ Exports a DFG Parameters ------------- dfg DFG start_activities Start activities end_activities End activities file_path Destination path Returns ------------ void """ from pm4py.objects.dfg.exporter import exporter as dfg_exporter dfg_exporter.apply(dfg, file_path, parameters={dfg_exporter.Variants.CLASSIC.value.Parameters.START_ACTIVITIES: start_activities, dfg_exporter.Variants.CLASSIC.value.Parameters.END_ACTIVITIES: end_activities})
[docs]def write_bpmn(bpmn_graph: BPMN, file_path: str, enable_layout: bool = True): """ Writes a BPMN to a file Parameters --------------- bpmn_graph BPMN file_path Destination path enable_layout Enables the automatic layouting of the BPMN diagram (default: True) """ if enable_layout: from pm4py.objects.bpmn.layout import layouter bpmn_graph = layouter.apply(bpmn_graph) from pm4py.objects.bpmn.exporter import exporter exporter.apply(bpmn_graph, file_path)
[docs]def write_ocel(ocel: OCEL, file_path: str, objects_path: str = None): """ Stores the content of the object-centric event log to a file. Different formats are supported, including CSV (flat table), JSON-OCEL and XML-OCEL (described in the site http://www.ocel-standard.org/). Parameters ----------------- ocel Object-centric event log file_path Path at which the object-centric event log should be stored objects_path (Optional, only used in CSV exporter) Path where the objects dataframe should be stored """ if file_path.lower().endswith("csv"): from pm4py.objects.ocel.exporter.csv import exporter as csv_exporter return csv_exporter.apply(ocel, file_path, objects_path=objects_path) elif file_path.lower().endswith("jsonocel"): from pm4py.objects.ocel.exporter.jsonocel import exporter as jsonocel_exporter return jsonocel_exporter.apply(ocel, file_path) elif file_path.lower().endswith("xmlocel"): from pm4py.objects.ocel.exporter.xmlocel import exporter as xmlocel_exporter return xmlocel_exporter.apply(ocel, file_path)