Statistics & Analysis¶
synamine provides 11 statistics functions covering activity analysis, case properties, timing, rework detection, and resource analytics.
Activity statistics¶
Activity frequencies¶
Count how often each activity occurs across the entire log:
import synamine
log = synamine.read_xes("events.xes")
activities = synamine.get_activities(log)
# {"Approve": 150, "Review": 200, ...}
Start and end activities¶
Which activities begin and end cases:
start = synamine.get_start_activities(log)
end = synamine.get_end_activities(log)
# {"Register": 100, "Submit": 50, ...}
Variants¶
A variant is a unique sequence of activities observed in a case. Get variant frequencies:
Case statistics¶
Case lengths¶
Number of events per case:
Case durations¶
Total duration of each case in seconds (first event to last event):
Timing analysis¶
Activity durations (sojourn times)¶
Time from each activity to the next event in the same case. Returns mean, median, min, max, and standard deviation per activity:
activity_durations = synamine.get_activity_durations(log)
# {"Approve": {"mean": 3600.0, "median": 1800.0, "min": 60.0, "max": 86400.0, "stdev": 5000.0}, ...}
Waiting times¶
All inter-event durations as a flat list (useful for histograms):
Rework analysis¶
Activities that appear more than once within the same case:
Resource analytics¶
Note
Resource functions return None if no resource column is configured in the schema.
Resource workload¶
Event count per resource:
Resource-activity matrix¶
How many times each resource performed each activity:
matrix = synamine.get_resource_activity_matrix(log)
# {"Alice": {"Approve": 50, "Review": 70}, "Bob": {"Register": 95}, ...} or None
Summary¶
| Function | Returns | Description |
|---|---|---|
get_activities(log) |
dict[str, int] |
Activity frequencies |
get_start_activities(log) |
dict[str, int] |
Start activity frequencies |
get_end_activities(log) |
dict[str, int] |
End activity frequencies |
get_variants(log) |
dict[tuple, int] |
Variant frequencies |
get_case_lengths(log) |
dict[str, int] |
Events per case |
get_case_durations(log) |
dict[str, float] |
Case duration in seconds |
get_activity_durations(log) |
dict[str, dict] |
Sojourn time stats per activity |
get_waiting_times(log) |
list[float] |
All inter-event gaps in seconds |
get_rework(log) |
dict[str, int] |
Cases with repeated activities |
get_resource_workload(log) |
dict or None |
Events per resource |
get_resource_activity_matrix(log) |
dict or None |
Resource x activity counts |