Skip to content

Restructure: single source of truth + library-first analysis#2

Merged
dschneidinger merged 1 commit into
masterfrom
restructure-single-source-of-truth
Jun 11, 2026
Merged

Restructure: single source of truth + library-first analysis#2
dschneidinger merged 1 commit into
masterfrom
restructure-single-source-of-truth

Conversation

@dschneidinger

Copy link
Copy Markdown
Collaborator

Establish run.yaml as the single source of run parameters and route OSIRIS plotting/shock-fitting through pyVisOS, eliminating config duplication across runme scripts, run_manifest.yaml, and analysis configs.

Run spec (Phases 1-2):

  • FLASH_OSIRIS_define.py gains --config <run.yaml>; freezes the resolved spec to <sim_dir>/run.yaml and trims run_manifest.yaml to provenance + derived.
  • runs/.run.yaml: structured single source per run; runme_.sh reduced to thin --config wrappers. Template emits indexed nx_p(1:1) so osiris_utils can parse 1D decks.
  • src/run_spec.py: RunSpec.from_sim_dir resolves run.yaml -> run_manifest (cli_command) -> runme*.sh; re-exported from analysis_utils. Deleted the brittle parse_runme/load_runme/find_runme/input_deck helpers.
  • config/*.yaml stripped to derived-from-data annotations only (sim_dir, shock fit, dump_params, flash seeds).

Analysis (Phases 3-5):

  • src/shock.py single-sources front detection (detect_front_edge for OSIRIS, detect_front_gradient for FLASH) and robust_linfit (sigma-clipping fit). overview.py and flash_overview.py both use it; flash_utils.detect_front delegates to it.
  • OSIRIS plotting defaults to osh5vis (osimshow/osplot1d/ossemilogy) with labels/units sourced from H5Data data_attrs; loading stays on osh5io + path helpers + StreakBuilder. overview.py and convergence_scan.py migrated.

Tests: src/run_spec and src/shock unit tests (82 pytest pass); CI deps updated.

Establish run.yaml as the single source of run parameters and route OSIRIS
plotting/shock-fitting through pyVisOS, eliminating config duplication across
runme scripts, run_manifest.yaml, and analysis configs.

Run spec (Phases 1-2):
- FLASH_OSIRIS_define.py gains --config <run.yaml>; freezes the resolved spec
  to <sim_dir>/run.yaml and trims run_manifest.yaml to provenance + derived.
- runs/*.run.yaml: structured single source per run; runme_*.sh reduced to
  thin --config wrappers. Template emits indexed nx_p(1:1) so osiris_utils
  can parse 1D decks.
- src/run_spec.py: RunSpec.from_sim_dir resolves run.yaml -> run_manifest
  (cli_command) -> runme*.sh; re-exported from analysis_utils. Deleted the
  brittle parse_runme/load_runme/find_runme/input_deck helpers.
- config/*.yaml stripped to derived-from-data annotations only (sim_dir,
  shock fit, dump_params, flash seeds).

Analysis (Phases 3-5):
- src/shock.py single-sources front detection (detect_front_edge for OSIRIS,
  detect_front_gradient for FLASH) and robust_linfit (sigma-clipping fit).
  overview.py and flash_overview.py both use it; flash_utils.detect_front
  delegates to it.
- OSIRIS plotting defaults to osh5vis (osimshow/osplot1d/ossemilogy) with
  labels/units sourced from H5Data data_attrs; loading stays on osh5io +
  path helpers + StreakBuilder. overview.py and convergence_scan.py migrated.

Tests: src/run_spec and src/shock unit tests (82 pytest pass); CI deps updated.

Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
@dschneidinger dschneidinger merged commit 7cb47a5 into master Jun 11, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant