Repository navigation
Preserve generic GWSignal options through production waveform paths - #217
Conversation
- BasicIteration: join args_ile.txt lines with a space. Joining with '' then dropping the first space-separated token lost the first ILE option when the executable ended its own line, and a continuation backslash followed by spaces became a stray ' ' argument. Regression test runs the real statements on four layouts. - test_calmarg_extra_args_transport: H_gwsignal asserted that lmax_nyquist alone switched calmarg to GWSignal, while ILE stays on the lalsuite route without --use-gwsignal. Split into H_lmax_lalsuite (no switch) and H_gwsignal (--use-gwsignal; dictionary nested as gwsignal_extra_kwargs). - test_inert_keys_are_inert: a key named only in GWSignal's _RIFT_WRAPPER_CONTROLS is filtered, not read. Assert e_freq is in that set and absent from the rest of the file. - test_rf_transverse_spin: read quote_arguments from argument_quoting.py, where this PR moved it (cip-startup KeyError). - cip-startup: run the five new test files, failing on any skip. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Adversarial review, 2026-10-11. Fixes pushed in 057dba9 (#438) and d7b5396 (#217). Fixed
Checked on CIT (ldas-grid, IGWN python)
Behaviour change. A RIFT control key such as Not addressed. JAX ILE ignores these options (follow-up filed). Slurm calibration args and the other pipeline builders keep their pre-existing quoting. 🤖 Generated with Claude Code |
…aries
- calibration_reweighting: restore parsing of the unquoted-key dictionary
that existing O4c Calib_reweight.sub files deliver
("{antisymmetric_modes_hm: True, ...}"). The PR's second eval raised
NameError there. Values are now parsed as literals ('True' -> True).
- pseudo_pipe: when the GWSignal dictionary carries lmax_nyquist, also emit
--use-gwsignal-lmax-nyquist for calibration, as before. Calibration
workers older than gwsignal_extra_kwargs read only that flag; without it
their waveforms used a different lmax_nyquist from ILE's.
- rift.ini: 'gwsignal arguments' wins over 'arguments' again when both are
given (base behaviour) instead of emitting both and failing.
- Regression tests for each; all fail on d7b5396.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…flag Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Backward-compatibility review against the O4c production setup, 2026-10-11. Fixes in 33f8939 and 072daa8. Production mixes versions: the asimov submit env runs RIFT 0.0.17.9 (8faa1c7), and workers run Fixed
With the fixes, every submit/worker mix runs. The antisymmetric options reach pySEOBNR whenever the worker includes this PR. Record and scripts on CIT: 🤖 Generated with Claude Code |
GWSignal reconstructed its input dictionary using only
lmax_nyquistfrom extra kwargs. Production--internal-waveform-extra-kwargsrequests forenable_antisymmetric_modesandantisymmetric_modes_hmwere parsed and logged by ILE but dropped before waveform generation.This forwards arbitrary backend options in all three GWSignal entry points, using a separate explicit backend dictionary through ILE and calibration reweighting. New options, nested dictionaries, false/zero values and opaque backend objects survive without a waveform-option whitelist. Explicit options take precedence over legacy kwargs; physical source-parameter overrides raise to prevent disagreement with likelihood parameters and waveform metadata. Missing GWSignal and incompatible explicit LALSuite dictionaries fail clearly.
The production Asimov → INI → pseudo-pipe → BasicIteration → Condor path also needed repairs: shell quoting now preserves nested strings/lists/backslashes, manual extra arguments accept lists or strings, both waveform dictionary namespaces are emitted, and both Condor DAG writers share the same argument encoder. Calibration reweighting preserves the selected backend and option namespace.
Validation:
The regression harness extracts narrow executable option-handling statements where importing the full driver requires detector data; the full-driver production-container and scheduler checks above cover those operational boundaries separately.
Historical expression-dictionary compatibility is preserved at the existing pseudo-pipe and O4c calibration parser sites. Regression checks cover direct and double-quoted
1/10expressions, nested dictionaries and booleans through the actual calibration source and GWSignal generator boundary.