Experiments, CLI, and Hydra
This page describes the current experiment layer.
Why Hydra Is Used Here
The lower-level optics core should remain easy to import and use directly. However, holography experiments quickly accumulate configuration choices:
- source geometry
- wavelength and pixel pitch
- propagation distance and mode
- target type
- algorithm choice
- display model
Hydra is useful at this upper layer because it makes those choices explicit and reproducible.
Current Entry Points
The preferred repository-facing entry point today is the package CLI:
pado-hologram doctor --run-smoke
pado-hologram run experiment=gs
pado-hologram run experiment=dpac target=gaussian
pado-hologram run experiment=primitive_gaussian_gws_exact primitives=gaussian3d_depth_ring
pado-hologram run experiment=primitive_gaussian_rpws primitives=gaussian3d_depth_ring
The Hydra-native path is still available when you want raw Hydra composition:
python -m pado_hologram.hydra_app experiment=gs
python -m pado_hologram.hydra_app experiment=dpac target=gaussian
Current Experiment Families
The current config tree exposes these main families:
gs: compact Gerchberg-Saxton baselinedpac: double-phase amplitude codingprimitive_gaussian/primitive_gaussian_splat: primitive-scene Gaussian baselinesprimitive_gaussian_wave/primitive_gaussian_awb: depth-aware and alpha-wave-blending style pathsprimitive_gaussian_gws_exact: exact GWS-style primitive pathprimitive_gaussian_rpws: exact GWS-backed RPWS baseline with structured random phase and time-multiplexed intensity averaging
Useful Overrides
Some of the most useful current overrides are:
pado-hologram run experiment=dpac target=gaussian backend=warp
pado-hologram run experiment=primitive_gaussian_gws_exact primitives=gaussian3d_depth_ring backend=warp
pado-hologram run experiment=primitive_gaussian_splat primitives=gaussian_ring camera=binned2 backend=torch
These runs are still intentionally small, but they establish a reproducible experiment layer that is richer than the original DPAC-only starting point.
Warp in This Layer
Warp belongs here for the same reason Hydra does: it is part of the higher-level research workflow layer, not part of the minimal optics core.
Today, the Warp backend is optional and currently appears in:
- the DPAC checkerboard kernel path
- primitive-scene Gaussian splat backends
- exact primitive-based GWS/RPWS renderer paths
That gives the repository a maintainable place to grow future GPU kernels without pretending that the whole propagation stack has been rewritten.
Design Principle
Hydra belongs in pado_hologram, not in pado.
That distinction keeps:
- the optics core lighter
- experiment orchestration explicit
- reproducibility tooling in the layer where it matters most