FA-55031 / Astronomical coordinate conventions / Open access
Redshift wavelength grid: A rest-line coordinate uses the de-redshifting direction · case 01
The adapter reports an incorrect predicted line while other fields remain valid.
ROOT CAUSE
A rest-line coordinate uses the de-redshifting direction. Faulty expression: d['rest']/d['f']
VERIFIED REPAIR
Preserve the declared model convention at this site: d['rest']*d['f']
Unsuccessful approach: A partial convention repair still uses d['rest']*(d['f']-1)
Case contract
For this catalog adapter, redshift factor f=1+z is provided as positive integer f. Rest wavelength, rest bin width, observed line wavelength, observed equivalent width, and wavelength density obey their explicitly stated f-scalings. No velocity convention is inferred. Output fields are defined by: rest_wavelength = d['obs']/d['f']; rest_bin_width = d['width']/d['f']; predicted_line = d['rest']*d['f']; rest_equivalent_width = d['ew']/d['f']; rest_density = d['density']*d['f']; bin_integral = d['density']*d['width']
Why this case matters
Catalog, detector, sky-coordinate, and spectroscopy adapters must preserve the association between numeric coordinates and their declared reference conventions.
1 / The failure
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(d):
return {'rest_wavelength': d['obs']/d['f'], 'rest_bin_width': d['width']/d['f'], 'predicted_line': d['rest']/d['f'], 'rest_equivalent_width': d['ew']/d['f'], 'rest_density': d['density']*d['f'], 'bin_integral': d['density']*d['width']}
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = {1: [({'f': 2, 'obs': 120, 'width': 8, 'rest': 40, 'ew': 6, 'flux': 10, 'density': 3}, {'rest_wavelength': 60.0, 'rest_bin_width': 4.0, 'predicted_line': 80, 'rest_equivalent_width': 3.0, 'rest_density': 6, 'bin_integral': 24}), ({'f': 1, 'obs': 120, 'width': 8, 'rest': 40, 'ew': 6, 'flux': 10, 'density': 3}, {'rest_wavelength': 120.0, 'rest_bin_width': 8.0, 'predicted_line': 40, 'rest_equivalent_width': 6.0, 'rest_density': 3, 'bin_integral': 24}), ({'f': 3, 'obs': 120, 'width': 8, 'rest': 40, 'ew': 6, 'flux': 10, 'density': 3}, {'rest_wavelength': 40.0, 'rest_bin_width': 2.6666666666666665, 'predicted_line': 120, 'rest_equivalent_width': 2.0, 'rest_density': 9, 'bin_integral': 24}), ({'f': 2, 'obs': 120, 'width': 8, 'rest': 40, 'ew': 0, 'flux': 0, 'density': 3}, {'rest_wavelength': 60.0, 'rest_bin_width': 4.0, 'predicted_line': 80, 'rest_equivalent_width': 0.0, 'rest_density': 6, 'bin_integral': 24}), ({'f': 2, 'obs': 120, 'width': 2, 'rest': 40, 'ew': 6, 'flux': 10, 'density': 0}, {'rest_wavelength': 60.0, 'rest_bin_width': 1.0, 'predicted_line': 80, 'rest_equivalent_width': 3.0, 'rest_density': 0, 'bin_integral': 0}), ({'f': 2, 'obs': 120, 'width': 8, 'rest': 70, 'ew': -4, 'flux': 10, 'density': 3}, {'rest_wavelength': 60.0, 'rest_bin_width': 4.0, 'predicted_line': 140, 'rest_equivalent_width': -2.0, 'rest_density': 6, 'bin_integral': 24})], 2: [({'f': 2, 'obs': 121, 'width': 8, 'rest': 40, 'ew': 6, 'flux': 10, 'density': 3}, {'rest_wavelength': 60.5, 'rest_bin_width': 4.0, 'predicted_line': 80, 'rest_equivalent_width': 3.0, 'rest_density': 6, 'bin_integral': 24}), ({'f': 1, 'obs': 121, 'width': 8, 'rest': 40, 'ew': 6, 'flux': 10, 'density': 3}, {'rest_wavelength': 121.0, 'rest_bin_width': 8.0, 'predicted_line': 40, 'rest_equivalent_width': 6.0, 'rest_density': 3, 'bin_integral': 24}), ({'f': 3, 'obs': 121, 'width': 8, 'rest': 40, 'ew': 6, 'flux': 10, 'density': 3}, {'rest_wavelength': 40.333333333333336, 'rest_bin_width': 2.6666666666666665, 'predicted_line': 120, 'rest_equivalent_width': 2.0, 'rest_density': 9, 'bin_integral': 24}), ({'f': 2, 'obs': 121, 'width': 8, 'rest': 40, 'ew': 0, 'flux': 0, 'density': 3}, {'rest_wavelength': 60.5, 'rest_bin_width': 4.0, 'predicted_line': 80, 'rest_equivalent_width': 0.0, 'rest_density': 6, 'bin_integral': 24}), ({'f': 2, 'obs': 121, 'width': 2, 'rest': 40, 'ew': 6, 'flux': 10, 'density': 0}, {'rest_wavelength': 60.5, 'rest_bin_width': 1.0, 'predicted_line': 80, 'rest_equivalent_width': 3.0, 'rest_density': 0, 'bin_integral': 0}), ({'f': 2, 'obs': 121, 'width': 8, 'rest': 70, 'ew': -4, 'flux': 10, 'density': 3}, {'rest_wavelength': 60.5, 'rest_bin_width': 4.0, 'predicted_line': 140, 'rest_equivalent_width': -2.0, 'rest_density': 6, 'bin_integral': 24})], 3: [({'f': 2, 'obs': 122, 'width': 8, 'rest': 40, 'ew': 6, 'flux': 10, 'density': 3}, {'rest_wavelength': 61.0, 'rest_bin_width': 4.0, 'predicted_line': 80, 'rest_equivalent_width': 3.0, 'rest_density': 6, 'bin_integral': 24}), ({'f': 1, 'obs': 122, 'width': 8, 'rest': 40, 'ew': 6, 'flux': 10, 'density': 3}, {'rest_wavelength': 122.0, 'rest_bin_width': 8.0, 'predicted_line': 40, 'rest_equivalent_width': 6.0, 'rest_density': 3, 'bin_integral': 24}), ({'f': 3, 'obs': 122, 'width': 8, 'rest': 40, 'ew': 6, 'flux': 10, 'density': 3}, {'rest_wavelength': 40.666666666666664, 'rest_bin_width': 2.6666666666666665, 'predicted_line': 120, 'rest_equivalent_width': 2.0, 'rest_density': 9, 'bin_integral': 24}), ({'f': 2, 'obs': 122, 'width': 8, 'rest': 40, 'ew': 0, 'flux': 0, 'density': 3}, {'rest_wavelength': 61.0, 'rest_bin_width': 4.0, 'predicted_line': 80, 'rest_equivalent_width': 0.0, 'rest_density': 6, 'bin_integral': 24}), ({'f': 2, 'obs': 122, 'width': 2, 'rest': 40, 'ew': 6, 'flux': 10, 'density': 0}, {'rest_wavelength': 61.0, 'rest_bin_width': 1.0, 'predicted_line': 80, 'rest_equivalent_width': 3.0, 'rest_density': 0, 'bin_integral': 0}), ({'f': 2, 'obs': 122, 'width': 8, 'rest': 70, 'ew': -4, 'flux': 10, 'density': 3}, {'rest_wavelength': 61.0, 'rest_bin_width': 4.0, 'predicted_line': 140, 'rest_equivalent_width': -2.0, 'rest_density': 6, 'bin_integral': 24})], 4: [({'f': 2, 'obs': 123, 'width': 8, 'rest': 40, 'ew': 6, 'flux': 10, 'density': 3}, {'rest_wavelength': 61.5, 'rest_bin_width': 4.0, 'predicted_line': 80, 'rest_equivalent_width': 3.0, 'rest_density': 6, 'bin_integral': 24}), ({'f': 1, 'obs': 123, 'width': 8, 'rest': 40, 'ew': 6, 'flux': 10, 'density': 3}, {'rest_wavelength': 123.0, 'rest_bin_width': 8.0, 'predicted_line': 40, 'rest_equivalent_width': 6.0, 'rest_density': 3, 'bin_integral': 24}), ({'f': 3, 'obs': 123, 'width': 8, 'rest': 40, 'ew': 6, 'flux': 10, 'density': 3}, {'rest_wavelength': 41.0, 'rest_bin_width': 2.6666666666666665, 'predicted_line': 120, 'rest_equivalent_width': 2.0, 'rest_density': 9, 'bin_integral': 24}), ({'f': 2, 'obs': 123, 'width': 8, 'rest': 40, 'ew': 0, 'flux': 0, 'density': 3}, {'rest_wavelength': 61.5, 'rest_bin_width': 4.0, 'predicted_line': 80, 'rest_equivalent_width': 0.0, 'rest_density': 6, 'bin_integral': 24}), ({'f': 2, 'obs': 123, 'width': 2, 'rest': 40, 'ew': 6, 'flux': 10, 'density': 0}, {'rest_wavelength': 61.5, 'rest_bin_width': 1.0, 'predicted_line': 80, 'rest_equivalent_width': 3.0, 'rest_density': 0, 'bin_integral': 0}), ({'f': 2, 'obs': 123, 'width': 8, 'rest': 70, 'ew': -4, 'flux': 10, 'density': 3}, {'rest_wavelength': 61.5, 'rest_bin_width': 4.0, 'predicted_line': 140, 'rest_equivalent_width': -2.0, 'rest_density': 6, 'bin_integral': 24})], 5: [({'f': 2, 'obs': 124, 'width': 8, 'rest': 40, 'ew': 6, 'flux': 10, 'density': 3}, {'rest_wavelength': 62.0, 'rest_bin_width': 4.0, 'predicted_line': 80, 'rest_equivalent_width': 3.0, 'rest_density': 6, 'bin_integral': 24}), ({'f': 1, 'obs': 124, 'width': 8, 'rest': 40, 'ew': 6, 'flux': 10, 'density': 3}, {'rest_wavelength': 124.0, 'rest_bin_width': 8.0, 'predicted_line': 40, 'rest_equivalent_width': 6.0, 'rest_density': 3, 'bin_integral': 24}), ({'f': 3, 'obs': 124, 'width': 8, 'rest': 40, 'ew': 6, 'flux': 10, 'density': 3}, {'rest_wavelength': 41.333333333333336, 'rest_bin_width': 2.6666666666666665, 'predicted_line': 120, 'rest_equivalent_width': 2.0, 'rest_density': 9, 'bin_integral': 24}), ({'f': 2, 'obs': 124, 'width': 8, 'rest': 40, 'ew': 0, 'flux': 0, 'density': 3}, {'rest_wavelength': 62.0, 'rest_bin_width': 4.0, 'predicted_line': 80, 'rest_equivalent_width': 0.0, 'rest_density': 6, 'bin_integral': 24}), ({'f': 2, 'obs': 124, 'width': 2, 'rest': 40, 'ew': 6, 'flux': 10, 'density': 0}, {'rest_wavelength': 62.0, 'rest_bin_width': 1.0, 'predicted_line': 80, 'rest_equivalent_width': 3.0, 'rest_density': 0, 'bin_integral': 0}), ({'f': 2, 'obs': 124, 'width': 8, 'rest': 70, 'ew': -4, 'flux': 10, 'density': 3}, {'rest_wavelength': 62.0, 'rest_bin_width': 4.0, 'predicted_line': 140, 'rest_equivalent_width': -2.0, 'rest_density': 6, 'bin_integral': 24})]}
for i, (record, expected) in enumerate(fixtures[N]):
check('astronomical fixture %s' % i, solve(record), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
| Boundary fixture | Actual | Expected | Outcome |
|---|---|---|---|
| astronomical fixture 0 | {'bin_integral': 24, 'predicted_line': 20.0, 'rest_bin_width': 4.0, 'rest_density': 6, 'rest_equivalent_width': 3.0, 'rest_wavelength': 60.0} | {'bin_integral': 24, 'predicted_line': 80, 'rest_bin_width': 4.0, 'rest_density': 6, 'rest_equivalent_width': 3.0, 'rest_wavelength': 60.0} | Failed |
| astronomical fixture 1 | {'bin_integral': 24, 'predicted_line': 40.0, 'rest_bin_width': 8.0, 'rest_density': 3, 'rest_equivalent_width': 6.0, 'rest_wavelength': 120.0} | {'bin_integral': 24, 'predicted_line': 40, 'rest_bin_width': 8.0, 'rest_density': 3, 'rest_equivalent_width': 6.0, 'rest_wavelength': 120.0} | Passed |
| astronomical fixture 2 | {'bin_integral': 24, 'predicted_line': 13.333333333333334, 'rest_bin_width': 2.6666666666666665, 'rest_density': 9, 'rest_equivalent_width': 2.0, 'rest_wavelength': 40.0} | {'bin_integral': 24, 'predicted_line': 120, 'rest_bin_width': 2.6666666666666665, 'rest_density': 9, 'rest_equivalent_width': 2.0, 'rest_wavelength': 40.0} | Failed |
| astronomical fixture 3 | {'bin_integral': 24, 'predicted_line': 20.0, 'rest_bin_width': 4.0, 'rest_density': 6, 'rest_equivalent_width': 0.0, 'rest_wavelength': 60.0} | {'bin_integral': 24, 'predicted_line': 80, 'rest_bin_width': 4.0, 'rest_density': 6, 'rest_equivalent_width': 0.0, 'rest_wavelength': 60.0} | Failed |
| astronomical fixture 4 | {'bin_integral': 0, 'predicted_line': 20.0, 'rest_bin_width': 1.0, 'rest_density': 0, 'rest_equivalent_width': 3.0, 'rest_wavelength': 60.0} | {'bin_integral': 0, 'predicted_line': 80, 'rest_bin_width': 1.0, 'rest_density': 0, 'rest_equivalent_width': 3.0, 'rest_wavelength': 60.0} | Failed |
| astronomical fixture 5 | {'bin_integral': 24, 'predicted_line': 35.0, 'rest_bin_width': 4.0, 'rest_density': 6, 'rest_equivalent_width': -2.0, 'rest_wavelength': 60.0} | {'bin_integral': 24, 'predicted_line': 140, 'rest_bin_width': 4.0, 'rest_density': 6, 'rest_equivalent_width': -2.0, 'rest_wavelength': 60.0} | Failed |
SHA-256 / 640de391d57cb4b08c2061d1d010226b1d307100099ab12e33f06e9c37956698
2 / The unsuccessful fix
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(d):
return {'rest_wavelength': d['obs']/d['f'], 'rest_bin_width': d['width']/d['f'], 'predicted_line': d['rest']*(d['f']-1), 'rest_equivalent_width': d['ew']/d['f'], 'rest_density': d['density']*d['f'], 'bin_integral': d['density']*d['width']}
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = {1: [({'f': 2, 'obs': 120, 'width': 8, 'rest': 40, 'ew': 6, 'flux': 10, 'density': 3}, {'rest_wavelength': 60.0, 'rest_bin_width': 4.0, 'predicted_line': 80, 'rest_equivalent_width': 3.0, 'rest_density': 6, 'bin_integral': 24}), ({'f': 1, 'obs': 120, 'width': 8, 'rest': 40, 'ew': 6, 'flux': 10, 'density': 3}, {'rest_wavelength': 120.0, 'rest_bin_width': 8.0, 'predicted_line': 40, 'rest_equivalent_width': 6.0, 'rest_density': 3, 'bin_integral': 24}), ({'f': 3, 'obs': 120, 'width': 8, 'rest': 40, 'ew': 6, 'flux': 10, 'density': 3}, {'rest_wavelength': 40.0, 'rest_bin_width': 2.6666666666666665, 'predicted_line': 120, 'rest_equivalent_width': 2.0, 'rest_density': 9, 'bin_integral': 24}), ({'f': 2, 'obs': 120, 'width': 8, 'rest': 40, 'ew': 0, 'flux': 0, 'density': 3}, {'rest_wavelength': 60.0, 'rest_bin_width': 4.0, 'predicted_line': 80, 'rest_equivalent_width': 0.0, 'rest_density': 6, 'bin_integral': 24}), ({'f': 2, 'obs': 120, 'width': 2, 'rest': 40, 'ew': 6, 'flux': 10, 'density': 0}, {'rest_wavelength': 60.0, 'rest_bin_width': 1.0, 'predicted_line': 80, 'rest_equivalent_width': 3.0, 'rest_density': 0, 'bin_integral': 0}), ({'f': 2, 'obs': 120, 'width': 8, 'rest': 70, 'ew': -4, 'flux': 10, 'density': 3}, {'rest_wavelength': 60.0, 'rest_bin_width': 4.0, 'predicted_line': 140, 'rest_equivalent_width': -2.0, 'rest_density': 6, 'bin_integral': 24})], 2: [({'f': 2, 'obs': 121, 'width': 8, 'rest': 40, 'ew': 6, 'flux': 10, 'density': 3}, {'rest_wavelength': 60.5, 'rest_bin_width': 4.0, 'predicted_line': 80, 'rest_equivalent_width': 3.0, 'rest_density': 6, 'bin_integral': 24}), ({'f': 1, 'obs': 121, 'width': 8, 'rest': 40, 'ew': 6, 'flux': 10, 'density': 3}, {'rest_wavelength': 121.0, 'rest_bin_width': 8.0, 'predicted_line': 40, 'rest_equivalent_width': 6.0, 'rest_density': 3, 'bin_integral': 24}), ({'f': 3, 'obs': 121, 'width': 8, 'rest': 40, 'ew': 6, 'flux': 10, 'density': 3}, {'rest_wavelength': 40.333333333333336, 'rest_bin_width': 2.6666666666666665, 'predicted_line': 120, 'rest_equivalent_width': 2.0, 'rest_density': 9, 'bin_integral': 24}), ({'f': 2, 'obs': 121, 'width': 8, 'rest': 40, 'ew': 0, 'flux': 0, 'density': 3}, {'rest_wavelength': 60.5, 'rest_bin_width': 4.0, 'predicted_line': 80, 'rest_equivalent_width': 0.0, 'rest_density': 6, 'bin_integral': 24}), ({'f': 2, 'obs': 121, 'width': 2, 'rest': 40, 'ew': 6, 'flux': 10, 'density': 0}, {'rest_wavelength': 60.5, 'rest_bin_width': 1.0, 'predicted_line': 80, 'rest_equivalent_width': 3.0, 'rest_density': 0, 'bin_integral': 0}), ({'f': 2, 'obs': 121, 'width': 8, 'rest': 70, 'ew': -4, 'flux': 10, 'density': 3}, {'rest_wavelength': 60.5, 'rest_bin_width': 4.0, 'predicted_line': 140, 'rest_equivalent_width': -2.0, 'rest_density': 6, 'bin_integral': 24})], 3: [({'f': 2, 'obs': 122, 'width': 8, 'rest': 40, 'ew': 6, 'flux': 10, 'density': 3}, {'rest_wavelength': 61.0, 'rest_bin_width': 4.0, 'predicted_line': 80, 'rest_equivalent_width': 3.0, 'rest_density': 6, 'bin_integral': 24}), ({'f': 1, 'obs': 122, 'width': 8, 'rest': 40, 'ew': 6, 'flux': 10, 'density': 3}, {'rest_wavelength': 122.0, 'rest_bin_width': 8.0, 'predicted_line': 40, 'rest_equivalent_width': 6.0, 'rest_density': 3, 'bin_integral': 24}), ({'f': 3, 'obs': 122, 'width': 8, 'rest': 40, 'ew': 6, 'flux': 10, 'density': 3}, {'rest_wavelength': 40.666666666666664, 'rest_bin_width': 2.6666666666666665, 'predicted_line': 120, 'rest_equivalent_width': 2.0, 'rest_density': 9, 'bin_integral': 24}), ({'f': 2, 'obs': 122, 'width': 8, 'rest': 40, 'ew': 0, 'flux': 0, 'density': 3}, {'rest_wavelength': 61.0, 'rest_bin_width': 4.0, 'predicted_line': 80, 'rest_equivalent_width': 0.0, 'rest_density': 6, 'bin_integral': 24}), ({'f': 2, 'obs': 122, 'width': 2, 'rest': 40, 'ew': 6, 'flux': 10, 'density': 0}, {'rest_wavelength': 61.0, 'rest_bin_width': 1.0, 'predicted_line': 80, 'rest_equivalent_width': 3.0, 'rest_density': 0, 'bin_integral': 0}), ({'f': 2, 'obs': 122, 'width': 8, 'rest': 70, 'ew': -4, 'flux': 10, 'density': 3}, {'rest_wavelength': 61.0, 'rest_bin_width': 4.0, 'predicted_line': 140, 'rest_equivalent_width': -2.0, 'rest_density': 6, 'bin_integral': 24})], 4: [({'f': 2, 'obs': 123, 'width': 8, 'rest': 40, 'ew': 6, 'flux': 10, 'density': 3}, {'rest_wavelength': 61.5, 'rest_bin_width': 4.0, 'predicted_line': 80, 'rest_equivalent_width': 3.0, 'rest_density': 6, 'bin_integral': 24}), ({'f': 1, 'obs': 123, 'width': 8, 'rest': 40, 'ew': 6, 'flux': 10, 'density': 3}, {'rest_wavelength': 123.0, 'rest_bin_width': 8.0, 'predicted_line': 40, 'rest_equivalent_width': 6.0, 'rest_density': 3, 'bin_integral': 24}), ({'f': 3, 'obs': 123, 'width': 8, 'rest': 40, 'ew': 6, 'flux': 10, 'density': 3}, {'rest_wavelength': 41.0, 'rest_bin_width': 2.6666666666666665, 'predicted_line': 120, 'rest_equivalent_width': 2.0, 'rest_density': 9, 'bin_integral': 24}), ({'f': 2, 'obs': 123, 'width': 8, 'rest': 40, 'ew': 0, 'flux': 0, 'density': 3}, {'rest_wavelength': 61.5, 'rest_bin_width': 4.0, 'predicted_line': 80, 'rest_equivalent_width': 0.0, 'rest_density': 6, 'bin_integral': 24}), ({'f': 2, 'obs': 123, 'width': 2, 'rest': 40, 'ew': 6, 'flux': 10, 'density': 0}, {'rest_wavelength': 61.5, 'rest_bin_width': 1.0, 'predicted_line': 80, 'rest_equivalent_width': 3.0, 'rest_density': 0, 'bin_integral': 0}), ({'f': 2, 'obs': 123, 'width': 8, 'rest': 70, 'ew': -4, 'flux': 10, 'density': 3}, {'rest_wavelength': 61.5, 'rest_bin_width': 4.0, 'predicted_line': 140, 'rest_equivalent_width': -2.0, 'rest_density': 6, 'bin_integral': 24})], 5: [({'f': 2, 'obs': 124, 'width': 8, 'rest': 40, 'ew': 6, 'flux': 10, 'density': 3}, {'rest_wavelength': 62.0, 'rest_bin_width': 4.0, 'predicted_line': 80, 'rest_equivalent_width': 3.0, 'rest_density': 6, 'bin_integral': 24}), ({'f': 1, 'obs': 124, 'width': 8, 'rest': 40, 'ew': 6, 'flux': 10, 'density': 3}, {'rest_wavelength': 124.0, 'rest_bin_width': 8.0, 'predicted_line': 40, 'rest_equivalent_width': 6.0, 'rest_density': 3, 'bin_integral': 24}), ({'f': 3, 'obs': 124, 'width': 8, 'rest': 40, 'ew': 6, 'flux': 10, 'density': 3}, {'rest_wavelength': 41.333333333333336, 'rest_bin_width': 2.6666666666666665, 'predicted_line': 120, 'rest_equivalent_width': 2.0, 'rest_density': 9, 'bin_integral': 24}), ({'f': 2, 'obs': 124, 'width': 8, 'rest': 40, 'ew': 0, 'flux': 0, 'density': 3}, {'rest_wavelength': 62.0, 'rest_bin_width': 4.0, 'predicted_line': 80, 'rest_equivalent_width': 0.0, 'rest_density': 6, 'bin_integral': 24}), ({'f': 2, 'obs': 124, 'width': 2, 'rest': 40, 'ew': 6, 'flux': 10, 'density': 0}, {'rest_wavelength': 62.0, 'rest_bin_width': 1.0, 'predicted_line': 80, 'rest_equivalent_width': 3.0, 'rest_density': 0, 'bin_integral': 0}), ({'f': 2, 'obs': 124, 'width': 8, 'rest': 70, 'ew': -4, 'flux': 10, 'density': 3}, {'rest_wavelength': 62.0, 'rest_bin_width': 4.0, 'predicted_line': 140, 'rest_equivalent_width': -2.0, 'rest_density': 6, 'bin_integral': 24})]}
for i, (record, expected) in enumerate(fixtures[N]):
check('astronomical fixture %s' % i, solve(record), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
| Boundary fixture | Actual | Expected | Outcome |
|---|---|---|---|
| astronomical fixture 0 | {'bin_integral': 24, 'predicted_line': 40, 'rest_bin_width': 4.0, 'rest_density': 6, 'rest_equivalent_width': 3.0, 'rest_wavelength': 60.0} | {'bin_integral': 24, 'predicted_line': 80, 'rest_bin_width': 4.0, 'rest_density': 6, 'rest_equivalent_width': 3.0, 'rest_wavelength': 60.0} | Failed |
| astronomical fixture 1 | {'bin_integral': 24, 'predicted_line': 0, 'rest_bin_width': 8.0, 'rest_density': 3, 'rest_equivalent_width': 6.0, 'rest_wavelength': 120.0} | {'bin_integral': 24, 'predicted_line': 40, 'rest_bin_width': 8.0, 'rest_density': 3, 'rest_equivalent_width': 6.0, 'rest_wavelength': 120.0} | Failed |
| astronomical fixture 2 | {'bin_integral': 24, 'predicted_line': 80, 'rest_bin_width': 2.6666666666666665, 'rest_density': 9, 'rest_equivalent_width': 2.0, 'rest_wavelength': 40.0} | {'bin_integral': 24, 'predicted_line': 120, 'rest_bin_width': 2.6666666666666665, 'rest_density': 9, 'rest_equivalent_width': 2.0, 'rest_wavelength': 40.0} | Failed |
| astronomical fixture 3 | {'bin_integral': 24, 'predicted_line': 40, 'rest_bin_width': 4.0, 'rest_density': 6, 'rest_equivalent_width': 0.0, 'rest_wavelength': 60.0} | {'bin_integral': 24, 'predicted_line': 80, 'rest_bin_width': 4.0, 'rest_density': 6, 'rest_equivalent_width': 0.0, 'rest_wavelength': 60.0} | Failed |
| astronomical fixture 4 | {'bin_integral': 0, 'predicted_line': 40, 'rest_bin_width': 1.0, 'rest_density': 0, 'rest_equivalent_width': 3.0, 'rest_wavelength': 60.0} | {'bin_integral': 0, 'predicted_line': 80, 'rest_bin_width': 1.0, 'rest_density': 0, 'rest_equivalent_width': 3.0, 'rest_wavelength': 60.0} | Failed |
| astronomical fixture 5 | {'bin_integral': 24, 'predicted_line': 70, 'rest_bin_width': 4.0, 'rest_density': 6, 'rest_equivalent_width': -2.0, 'rest_wavelength': 60.0} | {'bin_integral': 24, 'predicted_line': 140, 'rest_bin_width': 4.0, 'rest_density': 6, 'rest_equivalent_width': -2.0, 'rest_wavelength': 60.0} | Failed |
SHA-256 / 3bd3d7349779d096f11ef15e50caed9e07cd6fc34a0871dc32472a91d41f5b0c
3 / The verified repair
Exit 0"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(d):
return {'rest_wavelength': d['obs']/d['f'], 'rest_bin_width': d['width']/d['f'], 'predicted_line': d['rest']*d['f'], 'rest_equivalent_width': d['ew']/d['f'], 'rest_density': d['density']*d['f'], 'bin_integral': d['density']*d['width']}
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = {1: [({'f': 2, 'obs': 120, 'width': 8, 'rest': 40, 'ew': 6, 'flux': 10, 'density': 3}, {'rest_wavelength': 60.0, 'rest_bin_width': 4.0, 'predicted_line': 80, 'rest_equivalent_width': 3.0, 'rest_density': 6, 'bin_integral': 24}), ({'f': 1, 'obs': 120, 'width': 8, 'rest': 40, 'ew': 6, 'flux': 10, 'density': 3}, {'rest_wavelength': 120.0, 'rest_bin_width': 8.0, 'predicted_line': 40, 'rest_equivalent_width': 6.0, 'rest_density': 3, 'bin_integral': 24}), ({'f': 3, 'obs': 120, 'width': 8, 'rest': 40, 'ew': 6, 'flux': 10, 'density': 3}, {'rest_wavelength': 40.0, 'rest_bin_width': 2.6666666666666665, 'predicted_line': 120, 'rest_equivalent_width': 2.0, 'rest_density': 9, 'bin_integral': 24}), ({'f': 2, 'obs': 120, 'width': 8, 'rest': 40, 'ew': 0, 'flux': 0, 'density': 3}, {'rest_wavelength': 60.0, 'rest_bin_width': 4.0, 'predicted_line': 80, 'rest_equivalent_width': 0.0, 'rest_density': 6, 'bin_integral': 24}), ({'f': 2, 'obs': 120, 'width': 2, 'rest': 40, 'ew': 6, 'flux': 10, 'density': 0}, {'rest_wavelength': 60.0, 'rest_bin_width': 1.0, 'predicted_line': 80, 'rest_equivalent_width': 3.0, 'rest_density': 0, 'bin_integral': 0}), ({'f': 2, 'obs': 120, 'width': 8, 'rest': 70, 'ew': -4, 'flux': 10, 'density': 3}, {'rest_wavelength': 60.0, 'rest_bin_width': 4.0, 'predicted_line': 140, 'rest_equivalent_width': -2.0, 'rest_density': 6, 'bin_integral': 24})], 2: [({'f': 2, 'obs': 121, 'width': 8, 'rest': 40, 'ew': 6, 'flux': 10, 'density': 3}, {'rest_wavelength': 60.5, 'rest_bin_width': 4.0, 'predicted_line': 80, 'rest_equivalent_width': 3.0, 'rest_density': 6, 'bin_integral': 24}), ({'f': 1, 'obs': 121, 'width': 8, 'rest': 40, 'ew': 6, 'flux': 10, 'density': 3}, {'rest_wavelength': 121.0, 'rest_bin_width': 8.0, 'predicted_line': 40, 'rest_equivalent_width': 6.0, 'rest_density': 3, 'bin_integral': 24}), ({'f': 3, 'obs': 121, 'width': 8, 'rest': 40, 'ew': 6, 'flux': 10, 'density': 3}, {'rest_wavelength': 40.333333333333336, 'rest_bin_width': 2.6666666666666665, 'predicted_line': 120, 'rest_equivalent_width': 2.0, 'rest_density': 9, 'bin_integral': 24}), ({'f': 2, 'obs': 121, 'width': 8, 'rest': 40, 'ew': 0, 'flux': 0, 'density': 3}, {'rest_wavelength': 60.5, 'rest_bin_width': 4.0, 'predicted_line': 80, 'rest_equivalent_width': 0.0, 'rest_density': 6, 'bin_integral': 24}), ({'f': 2, 'obs': 121, 'width': 2, 'rest': 40, 'ew': 6, 'flux': 10, 'density': 0}, {'rest_wavelength': 60.5, 'rest_bin_width': 1.0, 'predicted_line': 80, 'rest_equivalent_width': 3.0, 'rest_density': 0, 'bin_integral': 0}), ({'f': 2, 'obs': 121, 'width': 8, 'rest': 70, 'ew': -4, 'flux': 10, 'density': 3}, {'rest_wavelength': 60.5, 'rest_bin_width': 4.0, 'predicted_line': 140, 'rest_equivalent_width': -2.0, 'rest_density': 6, 'bin_integral': 24})], 3: [({'f': 2, 'obs': 122, 'width': 8, 'rest': 40, 'ew': 6, 'flux': 10, 'density': 3}, {'rest_wavelength': 61.0, 'rest_bin_width': 4.0, 'predicted_line': 80, 'rest_equivalent_width': 3.0, 'rest_density': 6, 'bin_integral': 24}), ({'f': 1, 'obs': 122, 'width': 8, 'rest': 40, 'ew': 6, 'flux': 10, 'density': 3}, {'rest_wavelength': 122.0, 'rest_bin_width': 8.0, 'predicted_line': 40, 'rest_equivalent_width': 6.0, 'rest_density': 3, 'bin_integral': 24}), ({'f': 3, 'obs': 122, 'width': 8, 'rest': 40, 'ew': 6, 'flux': 10, 'density': 3}, {'rest_wavelength': 40.666666666666664, 'rest_bin_width': 2.6666666666666665, 'predicted_line': 120, 'rest_equivalent_width': 2.0, 'rest_density': 9, 'bin_integral': 24}), ({'f': 2, 'obs': 122, 'width': 8, 'rest': 40, 'ew': 0, 'flux': 0, 'density': 3}, {'rest_wavelength': 61.0, 'rest_bin_width': 4.0, 'predicted_line': 80, 'rest_equivalent_width': 0.0, 'rest_density': 6, 'bin_integral': 24}), ({'f': 2, 'obs': 122, 'width': 2, 'rest': 40, 'ew': 6, 'flux': 10, 'density': 0}, {'rest_wavelength': 61.0, 'rest_bin_width': 1.0, 'predicted_line': 80, 'rest_equivalent_width': 3.0, 'rest_density': 0, 'bin_integral': 0}), ({'f': 2, 'obs': 122, 'width': 8, 'rest': 70, 'ew': -4, 'flux': 10, 'density': 3}, {'rest_wavelength': 61.0, 'rest_bin_width': 4.0, 'predicted_line': 140, 'rest_equivalent_width': -2.0, 'rest_density': 6, 'bin_integral': 24})], 4: [({'f': 2, 'obs': 123, 'width': 8, 'rest': 40, 'ew': 6, 'flux': 10, 'density': 3}, {'rest_wavelength': 61.5, 'rest_bin_width': 4.0, 'predicted_line': 80, 'rest_equivalent_width': 3.0, 'rest_density': 6, 'bin_integral': 24}), ({'f': 1, 'obs': 123, 'width': 8, 'rest': 40, 'ew': 6, 'flux': 10, 'density': 3}, {'rest_wavelength': 123.0, 'rest_bin_width': 8.0, 'predicted_line': 40, 'rest_equivalent_width': 6.0, 'rest_density': 3, 'bin_integral': 24}), ({'f': 3, 'obs': 123, 'width': 8, 'rest': 40, 'ew': 6, 'flux': 10, 'density': 3}, {'rest_wavelength': 41.0, 'rest_bin_width': 2.6666666666666665, 'predicted_line': 120, 'rest_equivalent_width': 2.0, 'rest_density': 9, 'bin_integral': 24}), ({'f': 2, 'obs': 123, 'width': 8, 'rest': 40, 'ew': 0, 'flux': 0, 'density': 3}, {'rest_wavelength': 61.5, 'rest_bin_width': 4.0, 'predicted_line': 80, 'rest_equivalent_width': 0.0, 'rest_density': 6, 'bin_integral': 24}), ({'f': 2, 'obs': 123, 'width': 2, 'rest': 40, 'ew': 6, 'flux': 10, 'density': 0}, {'rest_wavelength': 61.5, 'rest_bin_width': 1.0, 'predicted_line': 80, 'rest_equivalent_width': 3.0, 'rest_density': 0, 'bin_integral': 0}), ({'f': 2, 'obs': 123, 'width': 8, 'rest': 70, 'ew': -4, 'flux': 10, 'density': 3}, {'rest_wavelength': 61.5, 'rest_bin_width': 4.0, 'predicted_line': 140, 'rest_equivalent_width': -2.0, 'rest_density': 6, 'bin_integral': 24})], 5: [({'f': 2, 'obs': 124, 'width': 8, 'rest': 40, 'ew': 6, 'flux': 10, 'density': 3}, {'rest_wavelength': 62.0, 'rest_bin_width': 4.0, 'predicted_line': 80, 'rest_equivalent_width': 3.0, 'rest_density': 6, 'bin_integral': 24}), ({'f': 1, 'obs': 124, 'width': 8, 'rest': 40, 'ew': 6, 'flux': 10, 'density': 3}, {'rest_wavelength': 124.0, 'rest_bin_width': 8.0, 'predicted_line': 40, 'rest_equivalent_width': 6.0, 'rest_density': 3, 'bin_integral': 24}), ({'f': 3, 'obs': 124, 'width': 8, 'rest': 40, 'ew': 6, 'flux': 10, 'density': 3}, {'rest_wavelength': 41.333333333333336, 'rest_bin_width': 2.6666666666666665, 'predicted_line': 120, 'rest_equivalent_width': 2.0, 'rest_density': 9, 'bin_integral': 24}), ({'f': 2, 'obs': 124, 'width': 8, 'rest': 40, 'ew': 0, 'flux': 0, 'density': 3}, {'rest_wavelength': 62.0, 'rest_bin_width': 4.0, 'predicted_line': 80, 'rest_equivalent_width': 0.0, 'rest_density': 6, 'bin_integral': 24}), ({'f': 2, 'obs': 124, 'width': 2, 'rest': 40, 'ew': 6, 'flux': 10, 'density': 0}, {'rest_wavelength': 62.0, 'rest_bin_width': 1.0, 'predicted_line': 80, 'rest_equivalent_width': 3.0, 'rest_density': 0, 'bin_integral': 0}), ({'f': 2, 'obs': 124, 'width': 8, 'rest': 70, 'ew': -4, 'flux': 10, 'density': 3}, {'rest_wavelength': 62.0, 'rest_bin_width': 4.0, 'predicted_line': 140, 'rest_equivalent_width': -2.0, 'rest_density': 6, 'bin_integral': 24})]}
for i, (record, expected) in enumerate(fixtures[N]):
check('astronomical fixture %s' % i, solve(record), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
| Boundary fixture | Actual | Expected | Outcome |
|---|---|---|---|
| astronomical fixture 0 | {'bin_integral': 24, 'predicted_line': 80, 'rest_bin_width': 4.0, 'rest_density': 6, 'rest_equivalent_width': 3.0, 'rest_wavelength': 60.0} | {'bin_integral': 24, 'predicted_line': 80, 'rest_bin_width': 4.0, 'rest_density': 6, 'rest_equivalent_width': 3.0, 'rest_wavelength': 60.0} | Passed |
| astronomical fixture 1 | {'bin_integral': 24, 'predicted_line': 40, 'rest_bin_width': 8.0, 'rest_density': 3, 'rest_equivalent_width': 6.0, 'rest_wavelength': 120.0} | {'bin_integral': 24, 'predicted_line': 40, 'rest_bin_width': 8.0, 'rest_density': 3, 'rest_equivalent_width': 6.0, 'rest_wavelength': 120.0} | Passed |
| astronomical fixture 2 | {'bin_integral': 24, 'predicted_line': 120, 'rest_bin_width': 2.6666666666666665, 'rest_density': 9, 'rest_equivalent_width': 2.0, 'rest_wavelength': 40.0} | {'bin_integral': 24, 'predicted_line': 120, 'rest_bin_width': 2.6666666666666665, 'rest_density': 9, 'rest_equivalent_width': 2.0, 'rest_wavelength': 40.0} | Passed |
| astronomical fixture 3 | {'bin_integral': 24, 'predicted_line': 80, 'rest_bin_width': 4.0, 'rest_density': 6, 'rest_equivalent_width': 0.0, 'rest_wavelength': 60.0} | {'bin_integral': 24, 'predicted_line': 80, 'rest_bin_width': 4.0, 'rest_density': 6, 'rest_equivalent_width': 0.0, 'rest_wavelength': 60.0} | Passed |
| astronomical fixture 4 | {'bin_integral': 0, 'predicted_line': 80, 'rest_bin_width': 1.0, 'rest_density': 0, 'rest_equivalent_width': 3.0, 'rest_wavelength': 60.0} | {'bin_integral': 0, 'predicted_line': 80, 'rest_bin_width': 1.0, 'rest_density': 0, 'rest_equivalent_width': 3.0, 'rest_wavelength': 60.0} | Passed |
| astronomical fixture 5 | {'bin_integral': 24, 'predicted_line': 140, 'rest_bin_width': 4.0, 'rest_density': 6, 'rest_equivalent_width': -2.0, 'rest_wavelength': 60.0} | {'bin_integral': 24, 'predicted_line': 140, 'rest_bin_width': 4.0, 'rest_density': 6, 'rest_equivalent_width': -2.0, 'rest_wavelength': 60.0} | Passed |
SHA-256 / 6432d07522d2d89aac6f92de7ae49ccfccc0740a823eea6dbf99e8a6a7d6121b
Verification & scope
Explicitly stipulated finite algebraic adapter; no standards conformance, physical accuracy, or production-library claim. Inputs are the documented finite valid model domain. This reproducer isolates one failure mechanism. Results cover the supplied fixtures. Variants within a family share a test contract and should remain grouped when constructing evaluation splits. Related mechanisms with a shared evaluation_group must also remain together; these controlled models are not independent production incidents.
Observations recorded using Python 3.12.14 at 2026-09-29T14:45:53.827826+00:00.
Case digest / 43a0ba1e9787f6958f45a434e1310389b813a6717c1416bb975c9b0df4f8ad6c