vibeqc.ScanResult¶
- class vibeqc.ScanResult(values, energies, geometries, converged_flags, coordinate, output_path=None, extra=<factory>)[source]¶
Bases:
objectContainer for the output of
relaxed_scan().- Parameters:
- __init__(values, energies, geometries, converged_flags, coordinate, output_path=None, extra=<factory>)¶
Methods
__init__(values, energies, geometries, ...)write_qvf(path, *[, ...])Emit a vibe-view
reaction.pathQVF for animation.Attributes
Path stem the scan wrote, or
Noneif no output was requested.Target coordinate values, shape (n_points,) — bohr or radians.
Relaxed energies (Ha), shape (n_points,).
Relaxed geometries — one
MoleculeorPeriodicSystemper scan point.Whether the relaxation at each point converged.
The constraint definition used.
- geometries: list[Any]¶
Relaxed geometries — one
MoleculeorPeriodicSystemper scan point.
- coordinate: Tuple[str, int, int] | Tuple[str, int, int, int] | Tuple[str, int, int, int, int]¶
The constraint definition used.
- write_qvf(path, *, transition_state_frames=None, emit_volumes_every=None, volume_spacing=0.25, volume_padding=4.0)[source]¶
Emit a vibe-view
reaction.pathQVF for animation.Each scan point becomes one frame; the reaction coordinate carries the constraint values; the energy curve becomes the per-frame
energiesarray. Endpoints are tagged asreactant/product; the highest-energy intermediate point is tagged as apointwaypoint (we don’t claim it’s a TS — that requires a Hessian check).The energy-plot x-axis is labelled from the scan coordinate (e.g.
"bond 0–1 (bohr)") via the optionalreaction_coordinate_label/reaction_coordinate_unitmetadata.Periodic scans (with
PeriodicSystemgeometries) ship as QVF v2 archives with the per-frame lattice + dim on thereaction.pathsection. The writer detects periodic frames automatically; vibe-view’s renderer draws the cell and wraps atoms across in-plane periodic boundaries.- Parameters:
transition_state_frames (Sequence[int] | None) – Optional frame indices the caller has independently verified to be transition states (e.g. via a Hessian / single-imaginary-mode check). Each is tagged with a
transition_statewaypoint (rendered with the red TS star). We never auto-promote the energy max to a TS — a scan maximum is not a verified saddle (CLAUDE.md §7), so without this argument the max stays apoint.emit_volumes_every (int | None) – If set to
N, attach the electron density (evaluated on a shared real-space grid) for everyN-th scan frame so the viewer can morph the isosurface along the scan.N=1emits every frame;N=5every fifth (endpoints always included). Each emitted frame costs one extra single-point SCF, so cubes are opt-in and decimated. Molecular scans only — periodic raisesNotImplementedError. Grid box auto-sizes to the union of all emitted geometries withvolume_paddingbohr of headroom andvolume_spacingbohr voxels.volume_spacing (float)
volume_padding (float)
- Return type: