Skip to content

v4.3.0

Choose a tag to compare

@bobbypaton bobbypaton released this 16 May 04:19
· 120 commits to master since this release

Highlights

GoodVibes v4.3.0 ships the first wave of the v5.0 roadmap — programmatic API
polish, structured outputs, and a new plotting module — while keeping the CLI
and .dat output fully backwards compatible. The v5.0 "Ensemble" keystone
(streaming conformer container) is still pending, which is why this is a
v4.x release rather than v5.0.0.

New: structured re-analysis workflow

  • New --export PATH.json writes the v1.0 unified payload (every parsed QC
    field + all thermo blocks), and --import PATH.json reads it back so
    subsequent runs skip QC parsing entirely. Re-run at a new temperature,
    cutoff, or quasi-RRHO scheme without touching the original .log/.out
    files. --cache-save / --cache-read are kept as deprecated aliases.
  • --spc energies are now cached on QCData, so re-passing
    --spc <suffix> after --import reuses them without re-reading the SPC
    files.
  • New cookbook recipe in docs/source/cookbook.md walks through the
    parse-once / re-analyze-many workflow.

New: visualization (goodvibes.plot)

  • New goodvibes.plot module behind the [plot] extras.
  • --strip-plot PATH renders a per-species ΔG scatter for selectivity runs.
  • --pes-plot PATH renders a reaction-profile diagram from a PESResult,
    with bezier or linear connectors, multi-pathway overlay, configurable
    colors, optional point-value annotations, and optional per-conformer
    scatter.
  • Stubs for plot_boltzmann_histogram and plot_temperature_scan lock in
    the v5.1 API.

Programmatic API (v5.0 preview)

  • New ThermoOptions frozen dataclass and calc_bbe.from_options(...)
    classmethod replace the 15-positional-arg constructor (which still works
    but emits a DeprecationWarning; removed in v6.0).
  • New docs/source/migration_v5.md migration guide for users embedding
    GoodVibes in scripts and notebooks.
  • v1.0 JSON schema is now the single source of truth, defined in
    goodvibes.schema with TypedDicts, version constants, and a runtime
    validator.

Selectivity & PES improvements

  • New Grel column in the main results table when selectivity is active.
  • Selectivity terminology renamed for general N-way labels:
    ee → excess, ΔΔG‡ → ΔΔG.
  • --label patterns now also match against the parent directory basename
    (handy when conformers live in per-species sub-folders).
  • PES species spec accepts directory-based assignment via dir: / dirs:
    alongside the existing files: glob syntax.

Fixes

  • --spc now requires an exact suffix match (avoids false-positive matches
    on substrings).
  • --spc CPU-time accounting now correctly sums the SPC job time.
  • PES YAML globs now catch all conformers (previously missed some
    multi-conformer species).
  • --graph is now wired from main() so it fires in single-temperature
    mode (previously only fired under --ti).

Internals & quality

  • CLI flags grouped into argparse argument groups for readability.
  • Direct unit tests added for output.py renderers (overall coverage
    62% → 66%).
  • New msRRHO entropy benchmark suite vs NIST experimental S° data.
  • README + ROADMAP refreshed for the v5.0 surface; v5.1 milestone
    ("Ecosystem & polish": CREST/CENSO import, auto-SI generator) defined.

Upgrade notes

  • CLI users: nothing to change. All v4.2.0 flags still work.
  • Library users: migrate from the legacy calc_bbe(file, QS, QH, ...)
    constructor to compute_thermo(...) or calc_bbe.from_options(...) —
    see docs/source/migration_v5.md. The legacy form still works in v4.x
    with a DeprecationWarning.
  • Cache files: switch from --cache-save / --cache-read to
    --export / --import. The old flags are kept as deprecated aliases
    and still read legacy cache envelopes.

What's not in this release

The v5.0 keystone — the Ensemble streaming container that will refactor
selectivity, pes, and sort.deduplicate onto a lazy parsing pipeline
— is still pending, along with the conformational-entropy correction
(S_conf) and hindered-rotor treatment. These land in v5.0.0.

Full changelog: v4.2.0...v4.3.0