Skip to content

Quick Start

This guide walks you through the basics of synamine in five minutes.

Read an event log

synamine supports CSV, XES, and pandas DataFrames:

import synamine

# From a CSV file
log = synamine.read_csv("events.csv")

# From an XES file (IEEE 1849)
log = synamine.read_xes("events.xes")

# From a pandas DataFrame
import pandas as pd
df = pd.read_sql("SELECT * FROM events", conn)
log = synamine.read_dataframe(df)

By default, synamine expects columns named case_id, activity, and timestamp. You can override this:

log = synamine.read_csv(
    "events.csv",
    case_id="order_id",
    activity="step",
    timestamp="ts",
)

Explore the log

print(f"Cases: {log.num_cases}")
print(f"Events: {log.num_events}")
print(f"Activities: {log.activities}")

Compute statistics

variants = synamine.get_variants(log)
start = synamine.get_start_activities(log)
end = synamine.get_end_activities(log)
durations = synamine.get_case_durations(log)
lengths = synamine.get_case_lengths(log)

See Statistics & Analysis for all 11 statistics functions.

Discover a process model

# Directly-Follows Graph
dfg = synamine.discover_dfg(log)

# Petri Net (Alpha Miner or Heuristic Miner)
pn = synamine.discover_petri_net(log, algorithm="alpha")

# Process Tree (Inductive Miner)
pt = synamine.discover_process_tree(log)

# Variant Trie
trie = synamine.discover_variant_trie(log)

See Process Discovery for details on each algorithm.

Visualize

Save any model to file (.png, .svg, .pdf):

synamine.save_visualization(dfg, "dfg.png")
synamine.save_visualization(pn, "petri_net.png")
synamine.save_visualization(pt, "process_tree.svg")
synamine.save_visualization(trie, "trie.png")

Save statistics charts:

synamine.plot_activity_frequencies(log, path="activities.png")
synamine.plot_case_durations(log, path="durations.png")

Filter

from datetime import datetime

filtered = synamine.filter_by_activity(log, activities=["Approve"])
filtered = synamine.filter_by_variant(log, top_k=5)
filtered = synamine.filter_by_timeframe(log, start=datetime(2024, 1, 1))

Next steps