FA-55046 / Astronomical coordinate conventions / Open access
Redshift wavelength grid: Integrated bin content receives a coordinate Jacobian twice · case 01
The adapter reports an incorrect bin integral while other fields remain valid.
ROOT CAUSE
Integrated bin content receives a coordinate Jacobian twice. Faulty expression: d['density']*d['width']/d['f']
VERIFIED REPAIR
Preserve the declared model convention at this site: d['density']*d['width']
Unsuccessful approach: A partial convention repair still uses d['density']*d['width']*d['f']
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']/d['f']}
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': 12.0, '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} | Failed |
| astronomical fixture 1 | {'bin_integral': 24.0, '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': 8.0, '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} | Failed |
| astronomical fixture 3 | {'bin_integral': 12.0, '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} | Failed |
| astronomical fixture 4 | {'bin_integral': 0.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': 12.0, '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} | Failed |
SHA-256 / 2878572cb822b434827b93531a7694bcc62b73362647f1c98af83d1cd232896e
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'], 'rest_equivalent_width': d['ew']/d['f'], 'rest_density': d['density']*d['f'], 'bin_integral': d['density']*d['width']*d['f']}
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': 48, '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} | Failed |
| 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': 72, '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} | Failed |
| astronomical fixture 3 | {'bin_integral': 48, '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} | Failed |
| 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': 48, '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} | Failed |
SHA-256 / 23b07656b8790578d81f87ee7cf30f28c99535af7330d7f03462962b69aa78e1
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:54.057438+00:00.
Case digest / b1db9c0b385a0a331f73af736e49f020c9ae5fadcf37b2542e65ccb0c95c87d6