Skip to content

Inspect a study

A run is over, or is still going, and you want to know what it found: the best configuration, every trial behind it, which parameter did the work, and something to show a colleague. This page does all of that from the shell, against a study file, with the atune binary alone — no server to start, no notebook, no browser required.

The commands are read-only. Pointing them at a study that four workers are currently writing to is safe and is the intended use of atune top. Two findings-shaped extras ride along for free: the HTML atune report ends with a Findings section — the same advice atune doctor prints, computed sampler-free — and on a study with an open search space atune top shows a bound-movement panel, one line per growth decision.

The transcript below is a file in examples/cli/ that the test suite runs, command by command, against the study file committed beside it — the very study that Tune any program produces. Its outputs are therefore what the CLI prints today, not what it printed when the page was written.

--8\<-- "examples/cli/inspect_a_study.md"

The same study, in a DataFrame

Everything above is the shell. When the next question is one only a table can answer — a groupby, a join against your own run log, a plot — read the study from Python instead: study.trials_dataframe() hands back one numpy column per field, keyed by name (number, state, value or values_0…, and one param_<name> per parameter).

That dict is not a pandas.DataFrame, because atune does not depend on pandas — but it is exactly what the DataFrame constructor takes, so the conversion is pandas.DataFrame(study.trials_dataframe()) and nothing else. The columns arrive flat, so there is no index to unstack first; if you want Optuna's two-level frame, split the names yourself with df.columns.str.split("_", n=1, expand=True).

Per-trial detail that a table flattens away — a trial's distributions, its intermediate_values, its datetime_start/duration — is on each FrozenTrial in study.trials, and study.get_trials(states=["complete"]) narrows that list to the states you care about.

Where to go next

To Read
Look up a flag, a default or an output format CLI reference
Understand what a trial's state and number mean Study and trial
Read the study file yourself, or write your own reader Journal format
Open the study in Optuna's dashboard Optuna interop
Ask whether the study's search space itself cost you budget Read a doctor report
Produce a study to inspect in the first place Tune any program
Read a study from Rust or Python instead of the shell Rust API, Python API