Skip to content

Examples

The examples/ directory contains runnable scripts that demonstrate synamine's features using the Sepsis Cases event log.

Running examples

All examples are run from the repository root:

uv run python examples/dfg_trie_dendrogram/dfg_trie_dendrogram.py
uv run python examples/discovery_algorithms/discover.py
uv run python examples/statistics/process_statistics.py

DFG & Variant Trie Dendrogram

Directory: examples/dfg_trie_dendrogram/

Demonstrates DFG discovery (full and noise-filtered) and variant trie dendrogram visualization with pruning and label strategies.

import synamine

log = synamine.read_xes("examples/data/sepsis_cases.xes")

# Full DFG
dfg = synamine.discover_dfg(log)
synamine.save_visualization(dfg, "output/dfg_full.png")

# Noise-filtered DFG
dfg_filtered = synamine.discover_dfg(log, noise_threshold=0.1)
synamine.save_visualization(dfg_filtered, "output/dfg_filtered.png")

# Variant trie with pruning
trie = synamine.discover_variant_trie(log)
pruned = trie.prune(min_count=15)
synamine.save_visualization(pruned, "output/trie.png", label_strategy="truncate")

Discovery Algorithms

Directory: examples/discovery_algorithms/

Compares all discovery algorithms side by side on the same log: Alpha Miner, Heuristic Miner, Inductive Miner, and DFG-to-Petri-Net conversion.

import synamine

log = synamine.read_xes("examples/data/sepsis_cases.xes")

# Alpha Miner
pn_alpha = synamine.discover_petri_net(log, algorithm="alpha")

# Heuristic Miner
pn_heuristic = synamine.discover_petri_net(log, algorithm="heuristic")

# Inductive Miner
pt = synamine.discover_process_tree(log)

# DFG-to-Petri-Net
dfg = synamine.discover_dfg(log)
pn_dfg = synamine.convert_dfg_to_petri_net(dfg)

Process Statistics

Directory: examples/statistics/

Demonstrates all 11 statistics functions and 6 chart visualizations:

  1. Basic statistics -- activity frequencies, start/end activities, top variants
  2. Case statistics -- case lengths and case durations
  3. Activity durations -- sojourn times per activity
  4. Waiting times -- inter-event duration distribution
  5. Rework analysis -- activities that repeat within cases
  6. Charts -- saves 6 PNG charts to output/
import synamine

log = synamine.read_xes("examples/data/sepsis_cases.xes")

# Statistics
activities = synamine.get_activities(log)
case_lengths = synamine.get_case_lengths(log)
rework = synamine.get_rework(log)

# Charts
synamine.plot_activity_frequencies(log, path="output/activity_frequencies.png")
synamine.plot_case_durations(log, path="output/case_durations.png")
synamine.plot_cases_over_time(log, path="output/cases_over_time.png")