logging.TrialLogger
self, event_logs=None) logging.TrialLogger(
A container and analysis utility for managing multiple event logs from repeated simulation runs or trials.
The TrialLogger
aggregates logs produced by EventLogger
instances, indexes them by run ID, and provides utilities for retrieving logs, summarizing trial statistics, and computing event-to-event durations.
Methods include add_log(event_log) Add a new EventLogger
log to the trial collection. get_log_by_run(run, as_df=False) Retrieve the log for a specific run. Can return raw records or as a DataFrame. to_dataframe() Return the full trial data as a pandas DataFrame. summary() Return a simple summary of the number of runs in the trial. get_event_duration_stat(first_event, second_event, what=“mean”, exclude_incomplete=True, dp=2, label=None, **kwargs) Compute statistics on durations between two event types across runs.
Parameters
Name | Type | Description | Default |
---|---|---|---|
event_logs | list[EventLogger] | A list of vidigi EventLogger instances to initialize the trial log with. |
None |
Methods
Name | Description |
---|---|
add_log | Add a new event log to the trial collection. |
get_event_duration_stat | Compute statistics on durations between two event types across runs. |
get_log_by_run | Retrieve the log for a specific run. |
plot_metric_bar | Plot a bar chart of event duration statistics for a list of event pairs. |
plot_queue_size | Plot the size of one or more queues over time across simulation runs. |
summary | Summarize the trial logs. |
to_dataframe | Return the full trial data as a single concatenated DataFrame. |
add_log
logging.TrialLogger.add_log(event_log)
Add a new event log to the trial collection.
Parameters
Name | Type | Description | Default |
---|---|---|---|
event_log | EventLogger | An EventLogger instance containing a log of events for a single run. |
required |
get_event_duration_stat
logging.TrialLogger.get_event_duration_stat(
first_event,
second_event,='mean',
what=True,
exclude_incomplete=2,
dp=None,
label**kwargs,
)
Compute statistics on durations between two event types across runs.
Parameters
Name | Type | Description | Default |
---|---|---|---|
first_event | str | Name of the first event (start). | required |
second_event | str | Name of the second event (end). | required |
what | str | Statistic to compute. Options include: - Standard aggregations: {“mean”, “median”, “max”, “min”, “quantile”, “std”, “var”, “sum”} - Special aggregations: {“count”, “unserved_count”, “served_count”, “unserved_rate”, “served_rate”, “summary”} | "mean" |
exclude_incomplete | bool | If True, ignore cases where the second event is missing (NaN). | True |
dp | int | Number of decimal places to round numeric results to. | 2 |
label | str | If provided, return the result as a dictionary with keys {“stat”: label, “value”: result}. | None |
**kwargs | dict | Additional arguments passed to the pandas Series method corresponding to what (e.g., quantile(q=0.9) ). |
{} |
Returns
Name | Type | Description |
---|---|---|
float or dict | The computed statistic, rounded to dp if numeric. If what="summary" , returns a dictionary with multiple statistics. If label is provided, wraps the result in a dict with the label. |
Raises
Name | Type | Description |
---|---|---|
ValueError | If what is not a supported aggregation function. |
get_log_by_run
=False) logging.TrialLogger.get_log_by_run(run, as_df
Retrieve the log for a specific run.
Parameters
Name | Type | Description | Default |
---|---|---|---|
run | int or str | The run identifier to fetch. | required |
as_df | bool | If True, return the log as a pandas DataFrame. Otherwise, return the raw event records (list of dicts). | False |
Returns
Name | Type | Description |
---|---|---|
list of dict or pandas.DataFrame | The requested run log, either as raw records or a DataFrame. |
plot_metric_bar
logging.TrialLogger.plot_metric_bar(
event_pair_list,='mean',
what=True,
exclude_incomplete=True,
interactive**kwargs,
)
Plot a bar chart of event duration statistics for a list of event pairs.
This function computes a specified statistic (e.g., mean, median) of durations between pairs of events and plots the results as a bar chart. Interactive plotting is supported via Plotly.
Parameters
Name | Type | Description | Default |
---|---|---|---|
event_pair_list | list of dict | A list of dictionaries, each containing: - "label" (str): A label for the event pair. - "first_event" (str): The name of the first event. - "second_event" (str): The name of the second event. |
required |
what | str | The statistic to compute on event durations. Supported values depend on the implementation of get_event_duration_stat (e.g., “mean”, “median”). |
"mean" |
exclude_incomplete | bool | If True, incomplete event durations (where the second event is missing) are excluded from the calculation. | True |
interactive | bool | If True, returns an interactive Plotly bar chart. If False, static plotting is not currently supported (a message will be printed). | True |
**kwargs | dict | Additional keyword arguments passed to plotly.express.bar . |
{} |
Returns
Name | Type | Description |
---|---|---|
plotly.graph_objs._figure.Figure or None | An interactive Plotly bar chart if interactive=True . Otherwise, prints a message and returns None. |
See Also
plot_queue_size : Plot the size of queues for events over time.
Notes
This method relies on self.get_event_duration_stat
to compute the chosen statistic for each event pair.
Examples
>>> event_pairs = [
"label": "Start to End", "first_event": "start", "second_event": "end"},
... {"label": "Check to Approve", "first_event": "check", "second_event": "approve"},
... {
... ]>>> fig = obj.plot_metric_bar(event_pairs, what="mean")
>>> fig.show()
plot_queue_size
logging.TrialLogger.plot_queue_size(
event_list,
limit_duration,=1,
every_x_time_units=True,
interactive=True,
show_all_runs=True,
shared_y_axis**kwargs,
)
Plot the size of one or more queues over time across simulation runs.
This function processes logged simulation events, computes queue sizes for specified event types, and visualizes the results. If multiple runs are available, individual trajectories and/or their mean are shown. Currently, only interactive Plotly-based plotting is supported.
Parameters
Name | Type | Description | Default |
---|---|---|---|
event_list | list of str | List of event types (e.g., "queue_enter" , "queue_exit" ) to include in the plot. |
required |
limit_duration | int or float | Maximum simulation duration (time units) to include in the plot. | required |
every_x_time_units | int | Time granularity for snapshots. Larger values aggregate queue size over coarser time intervals. | 1 |
interactive | bool | If True, generates an interactive Plotly figure. Static plotting is not currently implemented. | True |
show_all_runs | bool | If True, plots all runs with semi-transparent lines and overlays the mean trajectory. If False, only the mean trajectory is plotted. | True |
**kwargs | Additional keyword arguments passed to plotly.express.line . |
{} |
Returns
Name | Type | Description |
---|---|---|
fig | plotly.graph_objects.Figure | Interactive Plotly figure containing the queue size plot. |
Notes
- When multiple event types are specified, they are faceted in separate panels if
show_all_runs=False
. - The function relies on
reshape_for_animations
to transform raw event logs into a time-indexed format suitable for plotting. - If
interactive=False
, no plot is returned and a message is printed instead.
See Also
reshape_for_animations : Helper function for snapshotting simulation logs.
Examples
>>> sim.plot_queue_size(
=["queue_enter", "queue_exit"],
... event_list=500,
... limit_duration=5,
... every_x_time_units=True
... show_all_runs
... )<plotly.graph_objs._figure.Figure>
summary
logging.TrialLogger.summary()
Summarize the trial logs.
Returns
Name | Type | Description |
---|---|---|
dict | Dictionary with summary information: - "number_of_runs" : int The number of runs currently stored. |
to_dataframe
logging.TrialLogger.to_dataframe()
Return the full trial data as a single concatenated DataFrame.
Returns
Name | Type | Description |
---|---|---|
pandas.DataFrame | A dataframe containing all events from all runs. |