Problem
The limited-angle ARTS2D inverse objective is currently neither statistically weighted nor regularized, and it uses nonsmooth peak normalization that can let one resonant pixel rescale an entire angular trace.
Concrete issues:
tsadar/inverse/loss_function.py:388 hard-codes penalty_error = 0.0, so configured EDF/moment penalties never enter the loss.
- The existing 2-D moment penalty exponentiates an already-positive physical EDF and contains incomplete/incompatible 2-D moment calculations.
- The angular L2 objective divides squared residuals by one global amplitude scalar rather than a per-pixel variance;
noiseE is not used to whiten the residual.
tsadar/core/thomson_diagnostic.py:183 scales every model row to the measured row maximum. amax is noisy and nonsmooth when the argmax switches, discards absolute angular-amplitude information, and couples a single unresolved spike to all wavelengths in the row.
- The angular IRF also restores peaks; the physical convolution issue is tracked separately.
Proposed direction
- Use a documented detector likelihood, initially Poisson plus read/background-subtraction noise or a justified measured covariance.
- Replace measured-maximum normalization with explicit row/wing gain nuisance parameters. For Gaussian residuals, profile linear gains analytically (variable projection) and apply smooth calibration priors across angle.
- Impose positivity by construction and regularize the physical EDF with radial/angular smoothness, entropy/KL to a baseline, and selected moment priors.
- Choose regularization strength using held-out angles/pixels, simulation calibration, discrepancy principle, or evidence—not training loss alone.
Acceptance criteria
Related: #124 and the separate unresolved-resonance issue.
Problem
The limited-angle ARTS2D inverse objective is currently neither statistically weighted nor regularized, and it uses nonsmooth peak normalization that can let one resonant pixel rescale an entire angular trace.
Concrete issues:
tsadar/inverse/loss_function.py:388hard-codespenalty_error = 0.0, so configured EDF/moment penalties never enter the loss.noiseEis not used to whiten the residual.tsadar/core/thomson_diagnostic.py:183scales every model row to the measured row maximum.amaxis noisy and nonsmooth when the argmax switches, discards absolute angular-amplitude information, and couples a single unresolved spike to all wavelengths in the row.Proposed direction
Acceptance criteria
amaxscaling from the differentiable forward model; profile or fit amplitude nuisances with documented priors/identifiability constraints.Related: #124 and the separate unresolved-resonance issue.