pm4py.analysis#

Functions

check_is_workflow_net(net)

Checks if the input Petri net satisfies the WF-net conditions: 1.

check_soundness(petri_net, initial_marking, ...)

Check if a given Petri net is a sound WF-net. A Petri net is a WF-net iff: - it has a unique source place - it has a unique end place - every element in the WF-net is on a path from the source to the sink place A WF-net is sound iff: - it contains no live-locks - it contains no deadlocks - we are able to always reach the final marking For a formal definition of sound WF-net, consider: http://www.padsweb.rwth-aachen.de/wvdaalst/publications/p628.pdf.

compute_emd(language1, language2)

Computes the earth mover distance between two stochastic languages (for example, the first extracted from the log, and the second extracted from the process model.

construct_synchronous_product_net(trace, ...)

constructs the synchronous product net between a trace and a Petri net process model.

generate_marking(net, place_or_dct_places)

Generate a marking for a given Petri net

insert_artificial_start_end(log[, ...])

Inserts the artificial start/end activities in an event log / Pandas dataframe

maximal_decomposition(net, im, fm)

Calculate the maximal decomposition of an accepting Petri net.

reduce_petri_net_implicit_places(net, im, fm)

Reduce the number of invisibles transitions in the provided Petri net.

reduce_petri_net_invisibles(net)

Reduce the number of invisibles transitions in the provided Petri net.

solve_extended_marking_equation(trace, ...)

Gets an heuristics value (underestimation of the cost of an alignment) between a trace and a synchronous product net using the extended marking equation with the standard cost function (e.g.

solve_marking_equation(petri_net, ...[, ...])

Solves the marking equation of a Petri net.