pm4py.discovery.discover_petri_net_heuristics(log: Union[EventLog, DataFrame], dependency_threshold: float = 0.5, and_threshold: float = 0.65, loop_two_threshold: float = 0.5, min_act_count: int = 1, min_dfg_occurrences: int = 1, activity_key: str = 'concept:name', timestamp_key: str = 'time:timestamp', case_id_key: str = 'case:concept:name') Tuple[PetriNet, Marking, Marking][source]#

Discover a Petri net using the Heuristics Miner

Heuristics Miner is an algorithm that acts on the Directly-Follows Graph, providing way to handle with noise and to find common constructs (dependency between two activities, AND). The output of the Heuristics Miner is an Heuristics Net, so an object that contains the activities and the relationships between them. The Heuristics Net can be then converted into a Petri net. The paper can be visited by clicking on the upcoming link: this link).

  • log – event log / Pandas dataframe

  • dependency_threshold (float) – dependency threshold (default: 0.5)

  • and_threshold (float) – AND threshold (default: 0.65)

  • loop_two_threshold (float) – loop two threshold (default: 0.5)

  • min_act_count (int) – minimum number of occurrences per activity in order to be included in the discovery

  • min_dfg_occurrences (int) – minimum number of occurrences per arc in the DFG in order to be included in the discovery

  • activity_key (str) – attribute to be used for the activity

  • timestamp_key (str) – attribute to be used for the timestamp

  • case_id_key (str) – attribute to be used as case identifier

Return type:

Tuple[PetriNet, Marking, Marking]

import pm4py

net, im, fm = pm4py.discover_petri_net_heuristics(dataframe, activity_key='concept:name', case_id_key='case:concept:name', timestamp_key='time:timestamp')