broken_source:
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(d):
    return {'geocentric_apparent': d['x']+d['a']+d['g'], 'topocentric_apparent': d['x']+d['a']+d['g'], 'annual_only_once': d['x'] if d['annual_done'] else d['x']+d['a'], 'diurnal_only_once': d['x'] if d['diurnal_done'] else d['x']+d['d'], 'catalog_from_geocentric': d['x']-d['a']-d['g'], 'geocentric_from_topocentric': d['x']-d['d']}
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = {1: [({'x': 10, 'a': 2, 'd': 3, 'g': 4, 'annual_done': False, 'diurnal_done': False}, {'geocentric_apparent': 16, 'topocentric_apparent': 19, 'annual_only_once': 12, 'diurnal_only_once': 13, 'catalog_from_geocentric': 4, 'geocentric_from_topocentric': 7}), ({'x': 10, 'a': 2, 'd': 3, 'g': 4, 'annual_done': True, 'diurnal_done': False}, {'geocentric_apparent': 16, 'topocentric_apparent': 19, 'annual_only_once': 10, 'diurnal_only_once': 13, 'catalog_from_geocentric': 4, 'geocentric_from_topocentric': 7}), ({'x': 10, 'a': 2, 'd': 3, 'g': 4, 'annual_done': False, 'diurnal_done': True}, {'geocentric_apparent': 16, 'topocentric_apparent': 19, 'annual_only_once': 12, 'diurnal_only_once': 10, 'catalog_from_geocentric': 4, 'geocentric_from_topocentric': 7}), ({'x': 10, 'a': 0, 'd': 0, 'g': 0, 'annual_done': False, 'diurnal_done': False}, {'geocentric_apparent': 10, 'topocentric_apparent': 10, 'annual_only_once': 10, 'diurnal_only_once': 10, 'catalog_from_geocentric': 10, 'geocentric_from_topocentric': 10}), ({'x': 10, 'a': -2, 'd': -1, 'g': 4, 'annual_done': False, 'diurnal_done': False}, {'geocentric_apparent': 12, 'topocentric_apparent': 11, 'annual_only_once': 8, 'diurnal_only_once': 9, 'catalog_from_geocentric': 8, 'geocentric_from_topocentric': 11}), ({'x': 10, 'a': 2, 'd': 3, 'g': 4, 'annual_done': True, 'diurnal_done': True}, {'geocentric_apparent': 16, 'topocentric_apparent': 19, 'annual_only_once': 10, 'diurnal_only_once': 10, 'catalog_from_geocentric': 4, 'geocentric_from_topocentric': 7})], 2: [({'x': 11, 'a': 2, 'd': 3, 'g': 4, 'annual_done': False, 'diurnal_done': False}, {'geocentric_apparent': 17, 'topocentric_apparent': 20, 'annual_only_once': 13, 'diurnal_only_once': 14, 'catalog_from_geocentric': 5, 'geocentric_from_topocentric': 8}), ({'x': 11, 'a': 2, 'd': 3, 'g': 4, 'annual_done': True, 'diurnal_done': False}, {'geocentric_apparent': 17, 'topocentric_apparent': 20, 'annual_only_once': 11, 'diurnal_only_once': 14, 'catalog_from_geocentric': 5, 'geocentric_from_topocentric': 8}), ({'x': 11, 'a': 2, 'd': 3, 'g': 4, 'annual_done': False, 'diurnal_done': True}, {'geocentric_apparent': 17, 'topocentric_apparent': 20, 'annual_only_once': 13, 'diurnal_only_once': 11, 'catalog_from_geocentric': 5, 'geocentric_from_topocentric': 8}), ({'x': 11, 'a': 0, 'd': 0, 'g': 0, 'annual_done': False, 'diurnal_done': False}, {'geocentric_apparent': 11, 'topocentric_apparent': 11, 'annual_only_once': 11, 'diurnal_only_once': 11, 'catalog_from_geocentric': 11, 'geocentric_from_topocentric': 11}), ({'x': 11, 'a': -2, 'd': -1, 'g': 4, 'annual_done': False, 'diurnal_done': False}, {'geocentric_apparent': 13, 'topocentric_apparent': 12, 'annual_only_once': 9, 'diurnal_only_once': 10, 'catalog_from_geocentric': 9, 'geocentric_from_topocentric': 12}), ({'x': 11, 'a': 2, 'd': 3, 'g': 4, 'annual_done': True, 'diurnal_done': True}, {'geocentric_apparent': 17, 'topocentric_apparent': 20, 'annual_only_once': 11, 'diurnal_only_once': 11, 'catalog_from_geocentric': 5, 'geocentric_from_topocentric': 8})], 3: [({'x': 12, 'a': 2, 'd': 3, 'g': 4, 'annual_done': False, 'diurnal_done': False}, {'geocentric_apparent': 18, 'topocentric_apparent': 21, 'annual_only_once': 14, 'diurnal_only_once': 15, 'catalog_from_geocentric': 6, 'geocentric_from_topocentric': 9}), ({'x': 12, 'a': 2, 'd': 3, 'g': 4, 'annual_done': True, 'diurnal_done': False}, {'geocentric_apparent': 18, 'topocentric_apparent': 21, 'annual_only_once': 12, 'diurnal_only_once': 15, 'catalog_from_geocentric': 6, 'geocentric_from_topocentric': 9}), ({'x': 12, 'a': 2, 'd': 3, 'g': 4, 'annual_done': False, 'diurnal_done': True}, {'geocentric_apparent': 18, 'topocentric_apparent': 21, 'annual_only_once': 14, 'diurnal_only_once': 12, 'catalog_from_geocentric': 6, 'geocentric_from_topocentric': 9}), ({'x': 12, 'a': 0, 'd': 0, 'g': 0, 'annual_done': False, 'diurnal_done': False}, {'geocentric_apparent': 12, 'topocentric_apparent': 12, 'annual_only_once': 12, 'diurnal_only_once': 12, 'catalog_from_geocentric': 12, 'geocentric_from_topocentric': 12}), ({'x': 12, 'a': -2, 'd': -1, 'g': 4, 'annual_done': False, 'diurnal_done': False}, {'geocentric_apparent': 14, 'topocentric_apparent': 13, 'annual_only_once': 10, 'diurnal_only_once': 11, 'catalog_from_geocentric': 10, 'geocentric_from_topocentric': 13}), ({'x': 12, 'a': 2, 'd': 3, 'g': 4, 'annual_done': True, 'diurnal_done': True}, {'geocentric_apparent': 18, 'topocentric_apparent': 21, 'annual_only_once': 12, 'diurnal_only_once': 12, 'catalog_from_geocentric': 6, 'geocentric_from_topocentric': 9})], 4: [({'x': 13, 'a': 2, 'd': 3, 'g': 4, 'annual_done': False, 'diurnal_done': False}, {'geocentric_apparent': 19, 'topocentric_apparent': 22, 'annual_only_once': 15, 'diurnal_only_once': 16, 'catalog_from_geocentric': 7, 'geocentric_from_topocentric': 10}), ({'x': 13, 'a': 2, 'd': 3, 'g': 4, 'annual_done': True, 'diurnal_done': False}, {'geocentric_apparent': 19, 'topocentric_apparent': 22, 'annual_only_once': 13, 'diurnal_only_once': 16, 'catalog_from_geocentric': 7, 'geocentric_from_topocentric': 10}), ({'x': 13, 'a': 2, 'd': 3, 'g': 4, 'annual_done': False, 'diurnal_done': True}, {'geocentric_apparent': 19, 'topocentric_apparent': 22, 'annual_only_once': 15, 'diurnal_only_once': 13, 'catalog_from_geocentric': 7, 'geocentric_from_topocentric': 10}), ({'x': 13, 'a': 0, 'd': 0, 'g': 0, 'annual_done': False, 'diurnal_done': False}, {'geocentric_apparent': 13, 'topocentric_apparent': 13, 'annual_only_once': 13, 'diurnal_only_once': 13, 'catalog_from_geocentric': 13, 'geocentric_from_topocentric': 13}), ({'x': 13, 'a': -2, 'd': -1, 'g': 4, 'annual_done': False, 'diurnal_done': False}, {'geocentric_apparent': 15, 'topocentric_apparent': 14, 'annual_only_once': 11, 'diurnal_only_once': 12, 'catalog_from_geocentric': 11, 'geocentric_from_topocentric': 14}), ({'x': 13, 'a': 2, 'd': 3, 'g': 4, 'annual_done': True, 'diurnal_done': True}, {'geocentric_apparent': 19, 'topocentric_apparent': 22, 'annual_only_once': 13, 'diurnal_only_once': 13, 'catalog_from_geocentric': 7, 'geocentric_from_topocentric': 10})], 5: [({'x': 14, 'a': 2, 'd': 3, 'g': 4, 'annual_done': False, 'diurnal_done': False}, {'geocentric_apparent': 20, 'topocentric_apparent': 23, 'annual_only_once': 16, 'diurnal_only_once': 17, 'catalog_from_geocentric': 8, 'geocentric_from_topocentric': 11}), ({'x': 14, 'a': 2, 'd': 3, 'g': 4, 'annual_done': True, 'diurnal_done': False}, {'geocentric_apparent': 20, 'topocentric_apparent': 23, 'annual_only_once': 14, 'diurnal_only_once': 17, 'catalog_from_geocentric': 8, 'geocentric_from_topocentric': 11}), ({'x': 14, 'a': 2, 'd': 3, 'g': 4, 'annual_done': False, 'diurnal_done': True}, {'geocentric_apparent': 20, 'topocentric_apparent': 23, 'annual_only_once': 16, 'diurnal_only_once': 14, 'catalog_from_geocentric': 8, 'geocentric_from_topocentric': 11}), ({'x': 14, 'a': 0, 'd': 0, 'g': 0, 'annual_done': False, 'diurnal_done': False}, {'geocentric_apparent': 14, 'topocentric_apparent': 14, 'annual_only_once': 14, 'diurnal_only_once': 14, 'catalog_from_geocentric': 14, 'geocentric_from_topocentric': 14}), ({'x': 14, 'a': -2, 'd': -1, 'g': 4, 'annual_done': False, 'diurnal_done': False}, {'geocentric_apparent': 16, 'topocentric_apparent': 15, 'annual_only_once': 12, 'diurnal_only_once': 13, 'catalog_from_geocentric': 12, 'geocentric_from_topocentric': 15}), ({'x': 14, 'a': 2, 'd': 3, 'g': 4, 'annual_done': True, 'diurnal_done': True}, {'geocentric_apparent': 20, 'topocentric_apparent': 23, 'annual_only_once': 14, 'diurnal_only_once': 14, 'catalog_from_geocentric': 8, 'geocentric_from_topocentric': 11})]}
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)

evaluation_group: astro-aberration-correction-provenance

source:
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(d):
    return {'geocentric_apparent': d['x']+d['a']+d['g'], 'topocentric_apparent': d['x']+d['a']+d['d'], 'annual_only_once': d['x'] if d['annual_done'] else d['x']+d['a'], 'diurnal_only_once': d['x'] if d['diurnal_done'] else d['x']+d['d'], 'catalog_from_geocentric': d['x']-d['a']-d['g'], 'geocentric_from_topocentric': d['x']-d['d']}
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = {1: [({'x': 10, 'a': 2, 'd': 3, 'g': 4, 'annual_done': False, 'diurnal_done': False}, {'geocentric_apparent': 16, 'topocentric_apparent': 19, 'annual_only_once': 12, 'diurnal_only_once': 13, 'catalog_from_geocentric': 4, 'geocentric_from_topocentric': 7}), ({'x': 10, 'a': 2, 'd': 3, 'g': 4, 'annual_done': True, 'diurnal_done': False}, {'geocentric_apparent': 16, 'topocentric_apparent': 19, 'annual_only_once': 10, 'diurnal_only_once': 13, 'catalog_from_geocentric': 4, 'geocentric_from_topocentric': 7}), ({'x': 10, 'a': 2, 'd': 3, 'g': 4, 'annual_done': False, 'diurnal_done': True}, {'geocentric_apparent': 16, 'topocentric_apparent': 19, 'annual_only_once': 12, 'diurnal_only_once': 10, 'catalog_from_geocentric': 4, 'geocentric_from_topocentric': 7}), ({'x': 10, 'a': 0, 'd': 0, 'g': 0, 'annual_done': False, 'diurnal_done': False}, {'geocentric_apparent': 10, 'topocentric_apparent': 10, 'annual_only_once': 10, 'diurnal_only_once': 10, 'catalog_from_geocentric': 10, 'geocentric_from_topocentric': 10}), ({'x': 10, 'a': -2, 'd': -1, 'g': 4, 'annual_done': False, 'diurnal_done': False}, {'geocentric_apparent': 12, 'topocentric_apparent': 11, 'annual_only_once': 8, 'diurnal_only_once': 9, 'catalog_from_geocentric': 8, 'geocentric_from_topocentric': 11}), ({'x': 10, 'a': 2, 'd': 3, 'g': 4, 'annual_done': True, 'diurnal_done': True}, {'geocentric_apparent': 16, 'topocentric_apparent': 19, 'annual_only_once': 10, 'diurnal_only_once': 10, 'catalog_from_geocentric': 4, 'geocentric_from_topocentric': 7})], 2: [({'x': 11, 'a': 2, 'd': 3, 'g': 4, 'annual_done': False, 'diurnal_done': False}, {'geocentric_apparent': 17, 'topocentric_apparent': 20, 'annual_only_once': 13, 'diurnal_only_once': 14, 'catalog_from_geocentric': 5, 'geocentric_from_topocentric': 8}), ({'x': 11, 'a': 2, 'd': 3, 'g': 4, 'annual_done': True, 'diurnal_done': False}, {'geocentric_apparent': 17, 'topocentric_apparent': 20, 'annual_only_once': 11, 'diurnal_only_once': 14, 'catalog_from_geocentric': 5, 'geocentric_from_topocentric': 8}), ({'x': 11, 'a': 2, 'd': 3, 'g': 4, 'annual_done': False, 'diurnal_done': True}, {'geocentric_apparent': 17, 'topocentric_apparent': 20, 'annual_only_once': 13, 'diurnal_only_once': 11, 'catalog_from_geocentric': 5, 'geocentric_from_topocentric': 8}), ({'x': 11, 'a': 0, 'd': 0, 'g': 0, 'annual_done': False, 'diurnal_done': False}, {'geocentric_apparent': 11, 'topocentric_apparent': 11, 'annual_only_once': 11, 'diurnal_only_once': 11, 'catalog_from_geocentric': 11, 'geocentric_from_topocentric': 11}), ({'x': 11, 'a': -2, 'd': -1, 'g': 4, 'annual_done': False, 'diurnal_done': False}, {'geocentric_apparent': 13, 'topocentric_apparent': 12, 'annual_only_once': 9, 'diurnal_only_once': 10, 'catalog_from_geocentric': 9, 'geocentric_from_topocentric': 12}), ({'x': 11, 'a': 2, 'd': 3, 'g': 4, 'annual_done': True, 'diurnal_done': True}, {'geocentric_apparent': 17, 'topocentric_apparent': 20, 'annual_only_once': 11, 'diurnal_only_once': 11, 'catalog_from_geocentric': 5, 'geocentric_from_topocentric': 8})], 3: [({'x': 12, 'a': 2, 'd': 3, 'g': 4, 'annual_done': False, 'diurnal_done': False}, {'geocentric_apparent': 18, 'topocentric_apparent': 21, 'annual_only_once': 14, 'diurnal_only_once': 15, 'catalog_from_geocentric': 6, 'geocentric_from_topocentric': 9}), ({'x': 12, 'a': 2, 'd': 3, 'g': 4, 'annual_done': True, 'diurnal_done': False}, {'geocentric_apparent': 18, 'topocentric_apparent': 21, 'annual_only_once': 12, 'diurnal_only_once': 15, 'catalog_from_geocentric': 6, 'geocentric_from_topocentric': 9}), ({'x': 12, 'a': 2, 'd': 3, 'g': 4, 'annual_done': False, 'diurnal_done': True}, {'geocentric_apparent': 18, 'topocentric_apparent': 21, 'annual_only_once': 14, 'diurnal_only_once': 12, 'catalog_from_geocentric': 6, 'geocentric_from_topocentric': 9}), ({'x': 12, 'a': 0, 'd': 0, 'g': 0, 'annual_done': False, 'diurnal_done': False}, {'geocentric_apparent': 12, 'topocentric_apparent': 12, 'annual_only_once': 12, 'diurnal_only_once': 12, 'catalog_from_geocentric': 12, 'geocentric_from_topocentric': 12}), ({'x': 12, 'a': -2, 'd': -1, 'g': 4, 'annual_done': False, 'diurnal_done': False}, {'geocentric_apparent': 14, 'topocentric_apparent': 13, 'annual_only_once': 10, 'diurnal_only_once': 11, 'catalog_from_geocentric': 10, 'geocentric_from_topocentric': 13}), ({'x': 12, 'a': 2, 'd': 3, 'g': 4, 'annual_done': True, 'diurnal_done': True}, {'geocentric_apparent': 18, 'topocentric_apparent': 21, 'annual_only_once': 12, 'diurnal_only_once': 12, 'catalog_from_geocentric': 6, 'geocentric_from_topocentric': 9})], 4: [({'x': 13, 'a': 2, 'd': 3, 'g': 4, 'annual_done': False, 'diurnal_done': False}, {'geocentric_apparent': 19, 'topocentric_apparent': 22, 'annual_only_once': 15, 'diurnal_only_once': 16, 'catalog_from_geocentric': 7, 'geocentric_from_topocentric': 10}), ({'x': 13, 'a': 2, 'd': 3, 'g': 4, 'annual_done': True, 'diurnal_done': False}, {'geocentric_apparent': 19, 'topocentric_apparent': 22, 'annual_only_once': 13, 'diurnal_only_once': 16, 'catalog_from_geocentric': 7, 'geocentric_from_topocentric': 10}), ({'x': 13, 'a': 2, 'd': 3, 'g': 4, 'annual_done': False, 'diurnal_done': True}, {'geocentric_apparent': 19, 'topocentric_apparent': 22, 'annual_only_once': 15, 'diurnal_only_once': 13, 'catalog_from_geocentric': 7, 'geocentric_from_topocentric': 10}), ({'x': 13, 'a': 0, 'd': 0, 'g': 0, 'annual_done': False, 'diurnal_done': False}, {'geocentric_apparent': 13, 'topocentric_apparent': 13, 'annual_only_once': 13, 'diurnal_only_once': 13, 'catalog_from_geocentric': 13, 'geocentric_from_topocentric': 13}), ({'x': 13, 'a': -2, 'd': -1, 'g': 4, 'annual_done': False, 'diurnal_done': False}, {'geocentric_apparent': 15, 'topocentric_apparent': 14, 'annual_only_once': 11, 'diurnal_only_once': 12, 'catalog_from_geocentric': 11, 'geocentric_from_topocentric': 14}), ({'x': 13, 'a': 2, 'd': 3, 'g': 4, 'annual_done': True, 'diurnal_done': True}, {'geocentric_apparent': 19, 'topocentric_apparent': 22, 'annual_only_once': 13, 'diurnal_only_once': 13, 'catalog_from_geocentric': 7, 'geocentric_from_topocentric': 10})], 5: [({'x': 14, 'a': 2, 'd': 3, 'g': 4, 'annual_done': False, 'diurnal_done': False}, {'geocentric_apparent': 20, 'topocentric_apparent': 23, 'annual_only_once': 16, 'diurnal_only_once': 17, 'catalog_from_geocentric': 8, 'geocentric_from_topocentric': 11}), ({'x': 14, 'a': 2, 'd': 3, 'g': 4, 'annual_done': True, 'diurnal_done': False}, {'geocentric_apparent': 20, 'topocentric_apparent': 23, 'annual_only_once': 14, 'diurnal_only_once': 17, 'catalog_from_geocentric': 8, 'geocentric_from_topocentric': 11}), ({'x': 14, 'a': 2, 'd': 3, 'g': 4, 'annual_done': False, 'diurnal_done': True}, {'geocentric_apparent': 20, 'topocentric_apparent': 23, 'annual_only_once': 16, 'diurnal_only_once': 14, 'catalog_from_geocentric': 8, 'geocentric_from_topocentric': 11}), ({'x': 14, 'a': 0, 'd': 0, 'g': 0, 'annual_done': False, 'diurnal_done': False}, {'geocentric_apparent': 14, 'topocentric_apparent': 14, 'annual_only_once': 14, 'diurnal_only_once': 14, 'catalog_from_geocentric': 14, 'geocentric_from_topocentric': 14}), ({'x': 14, 'a': -2, 'd': -1, 'g': 4, 'annual_done': False, 'diurnal_done': False}, {'geocentric_apparent': 16, 'topocentric_apparent': 15, 'annual_only_once': 12, 'diurnal_only_once': 13, 'catalog_from_geocentric': 12, 'geocentric_from_topocentric': 15}), ({'x': 14, 'a': 2, 'd': 3, 'g': 4, 'annual_done': True, 'diurnal_done': True}, {'geocentric_apparent': 20, 'topocentric_apparent': 23, 'annual_only_once': 14, 'diurnal_only_once': 14, 'catalog_from_geocentric': 8, 'geocentric_from_topocentric': 11})]}
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)

prompt:
The adapter reports an incorrect topocentric apparent while other fields remain valid.

Reduced astrometric place pipeline uses supplied additive corrections annual a, diurnal d, and deflection g. Catalog place x is uncorrected; geocentric apparent includes a+g; topocentric apparent additionally includes d. Inverse adapters must remove only corrections already included. No correction is physically calculated. Output fields are defined by: geocentric_apparent = d['x']+d['a']+d['g']; topocentric_apparent = d['x']+d['a']+d['g']+d['d']; annual_only_once = d['x'] if d['annual_done'] else d['x']+d['a']; diurnal_only_once = d['x'] if d['diurnal_done'] else d['x']+d['d']; catalog_from_geocentric = d['x']-d['a']-d['g']; geocentric_from_topocentric = d['x']-d['d']

split: open-access


broken_source:
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(d):
    return {'geocentric_apparent': d['x']+d['a']+d['g'], 'topocentric_apparent': d['x']+d['a']+d['g']+d['d'], 'annual_only_once': d['x']+d['a'], 'diurnal_only_once': d['x'] if d['diurnal_done'] else d['x']+d['d'], 'catalog_from_geocentric': d['x']-d['a']-d['g'], 'geocentric_from_topocentric': d['x']-d['d']}
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = {1: [({'x': 10, 'a': 2, 'd': 3, 'g': 4, 'annual_done': False, 'diurnal_done': False}, {'geocentric_apparent': 16, 'topocentric_apparent': 19, 'annual_only_once': 12, 'diurnal_only_once': 13, 'catalog_from_geocentric': 4, 'geocentric_from_topocentric': 7}), ({'x': 10, 'a': 2, 'd': 3, 'g': 4, 'annual_done': True, 'diurnal_done': False}, {'geocentric_apparent': 16, 'topocentric_apparent': 19, 'annual_only_once': 10, 'diurnal_only_once': 13, 'catalog_from_geocentric': 4, 'geocentric_from_topocentric': 7}), ({'x': 10, 'a': 2, 'd': 3, 'g': 4, 'annual_done': False, 'diurnal_done': True}, {'geocentric_apparent': 16, 'topocentric_apparent': 19, 'annual_only_once': 12, 'diurnal_only_once': 10, 'catalog_from_geocentric': 4, 'geocentric_from_topocentric': 7}), ({'x': 10, 'a': 0, 'd': 0, 'g': 0, 'annual_done': False, 'diurnal_done': False}, {'geocentric_apparent': 10, 'topocentric_apparent': 10, 'annual_only_once': 10, 'diurnal_only_once': 10, 'catalog_from_geocentric': 10, 'geocentric_from_topocentric': 10}), ({'x': 10, 'a': -2, 'd': -1, 'g': 4, 'annual_done': False, 'diurnal_done': False}, {'geocentric_apparent': 12, 'topocentric_apparent': 11, 'annual_only_once': 8, 'diurnal_only_once': 9, 'catalog_from_geocentric': 8, 'geocentric_from_topocentric': 11}), ({'x': 10, 'a': 2, 'd': 3, 'g': 4, 'annual_done': True, 'diurnal_done': True}, {'geocentric_apparent': 16, 'topocentric_apparent': 19, 'annual_only_once': 10, 'diurnal_only_once': 10, 'catalog_from_geocentric': 4, 'geocentric_from_topocentric': 7})], 2: [({'x': 11, 'a': 2, 'd': 3, 'g': 4, 'annual_done': False, 'diurnal_done': False}, {'geocentric_apparent': 17, 'topocentric_apparent': 20, 'annual_only_once': 13, 'diurnal_only_once': 14, 'catalog_from_geocentric': 5, 'geocentric_from_topocentric': 8}), ({'x': 11, 'a': 2, 'd': 3, 'g': 4, 'annual_done': True, 'diurnal_done': False}, {'geocentric_apparent': 17, 'topocentric_apparent': 20, 'annual_only_once': 11, 'diurnal_only_once': 14, 'catalog_from_geocentric': 5, 'geocentric_from_topocentric': 8}), ({'x': 11, 'a': 2, 'd': 3, 'g': 4, 'annual_done': False, 'diurnal_done': True}, {'geocentric_apparent': 17, 'topocentric_apparent': 20, 'annual_only_once': 13, 'diurnal_only_once': 11, 'catalog_from_geocentric': 5, 'geocentric_from_topocentric': 8}), ({'x': 11, 'a': 0, 'd': 0, 'g': 0, 'annual_done': False, 'diurnal_done': False}, {'geocentric_apparent': 11, 'topocentric_apparent': 11, 'annual_only_once': 11, 'diurnal_only_once': 11, 'catalog_from_geocentric': 11, 'geocentric_from_topocentric': 11}), ({'x': 11, 'a': -2, 'd': -1, 'g': 4, 'annual_done': False, 'diurnal_done': False}, {'geocentric_apparent': 13, 'topocentric_apparent': 12, 'annual_only_once': 9, 'diurnal_only_once': 10, 'catalog_from_geocentric': 9, 'geocentric_from_topocentric': 12}), ({'x': 11, 'a': 2, 'd': 3, 'g': 4, 'annual_done': True, 'diurnal_done': True}, {'geocentric_apparent': 17, 'topocentric_apparent': 20, 'annual_only_once': 11, 'diurnal_only_once': 11, 'catalog_from_geocentric': 5, 'geocentric_from_topocentric': 8})], 3: [({'x': 12, 'a': 2, 'd': 3, 'g': 4, 'annual_done': False, 'diurnal_done': False}, {'geocentric_apparent': 18, 'topocentric_apparent': 21, 'annual_only_once': 14, 'diurnal_only_once': 15, 'catalog_from_geocentric': 6, 'geocentric_from_topocentric': 9}), ({'x': 12, 'a': 2, 'd': 3, 'g': 4, 'annual_done': True, 'diurnal_done': False}, {'geocentric_apparent': 18, 'topocentric_apparent': 21, 'annual_only_once': 12, 'diurnal_only_once': 15, 'catalog_from_geocentric': 6, 'geocentric_from_topocentric': 9}), ({'x': 12, 'a': 2, 'd': 3, 'g': 4, 'annual_done': False, 'diurnal_done': True}, {'geocentric_apparent': 18, 'topocentric_apparent': 21, 'annual_only_once': 14, 'diurnal_only_once': 12, 'catalog_from_geocentric': 6, 'geocentric_from_topocentric': 9}), ({'x': 12, 'a': 0, 'd': 0, 'g': 0, 'annual_done': False, 'diurnal_done': False}, {'geocentric_apparent': 12, 'topocentric_apparent': 12, 'annual_only_once': 12, 'diurnal_only_once': 12, 'catalog_from_geocentric': 12, 'geocentric_from_topocentric': 12}), ({'x': 12, 'a': -2, 'd': -1, 'g': 4, 'annual_done': False, 'diurnal_done': False}, {'geocentric_apparent': 14, 'topocentric_apparent': 13, 'annual_only_once': 10, 'diurnal_only_once': 11, 'catalog_from_geocentric': 10, 'geocentric_from_topocentric': 13}), ({'x': 12, 'a': 2, 'd': 3, 'g': 4, 'annual_done': True, 'diurnal_done': True}, {'geocentric_apparent': 18, 'topocentric_apparent': 21, 'annual_only_once': 12, 'diurnal_only_once': 12, 'catalog_from_geocentric': 6, 'geocentric_from_topocentric': 9})], 4: [({'x': 13, 'a': 2, 'd': 3, 'g': 4, 'annual_done': False, 'diurnal_done': False}, {'geocentric_apparent': 19, 'topocentric_apparent': 22, 'annual_only_once': 15, 'diurnal_only_once': 16, 'catalog_from_geocentric': 7, 'geocentric_from_topocentric': 10}), ({'x': 13, 'a': 2, 'd': 3, 'g': 4, 'annual_done': True, 'diurnal_done': False}, {'geocentric_apparent': 19, 'topocentric_apparent': 22, 'annual_only_once': 13, 'diurnal_only_once': 16, 'catalog_from_geocentric': 7, 'geocentric_from_topocentric': 10}), ({'x': 13, 'a': 2, 'd': 3, 'g': 4, 'annual_done': False, 'diurnal_done': True}, {'geocentric_apparent': 19, 'topocentric_apparent': 22, 'annual_only_once': 15, 'diurnal_only_once': 13, 'catalog_from_geocentric': 7, 'geocentric_from_topocentric': 10}), ({'x': 13, 'a': 0, 'd': 0, 'g': 0, 'annual_done': False, 'diurnal_done': False}, {'geocentric_apparent': 13, 'topocentric_apparent': 13, 'annual_only_once': 13, 'diurnal_only_once': 13, 'catalog_from_geocentric': 13, 'geocentric_from_topocentric': 13}), ({'x': 13, 'a': -2, 'd': -1, 'g': 4, 'annual_done': False, 'diurnal_done': False}, {'geocentric_apparent': 15, 'topocentric_apparent': 14, 'annual_only_once': 11, 'diurnal_only_once': 12, 'catalog_from_geocentric': 11, 'geocentric_from_topocentric': 14}), ({'x': 13, 'a': 2, 'd': 3, 'g': 4, 'annual_done': True, 'diurnal_done': True}, {'geocentric_apparent': 19, 'topocentric_apparent': 22, 'annual_only_once': 13, 'diurnal_only_once': 13, 'catalog_from_geocentric': 7, 'geocentric_from_topocentric': 10})], 5: [({'x': 14, 'a': 2, 'd': 3, 'g': 4, 'annual_done': False, 'diurnal_done': False}, {'geocentric_apparent': 20, 'topocentric_apparent': 23, 'annual_only_once': 16, 'diurnal_only_once': 17, 'catalog_from_geocentric': 8, 'geocentric_from_topocentric': 11}), ({'x': 14, 'a': 2, 'd': 3, 'g': 4, 'annual_done': True, 'diurnal_done': False}, {'geocentric_apparent': 20, 'topocentric_apparent': 23, 'annual_only_once': 14, 'diurnal_only_once': 17, 'catalog_from_geocentric': 8, 'geocentric_from_topocentric': 11}), ({'x': 14, 'a': 2, 'd': 3, 'g': 4, 'annual_done': False, 'diurnal_done': True}, {'geocentric_apparent': 20, 'topocentric_apparent': 23, 'annual_only_once': 16, 'diurnal_only_once': 14, 'catalog_from_geocentric': 8, 'geocentric_from_topocentric': 11}), ({'x': 14, 'a': 0, 'd': 0, 'g': 0, 'annual_done': False, 'diurnal_done': False}, {'geocentric_apparent': 14, 'topocentric_apparent': 14, 'annual_only_once': 14, 'diurnal_only_once': 14, 'catalog_from_geocentric': 14, 'geocentric_from_topocentric': 14}), ({'x': 14, 'a': -2, 'd': -1, 'g': 4, 'annual_done': False, 'diurnal_done': False}, {'geocentric_apparent': 16, 'topocentric_apparent': 15, 'annual_only_once': 12, 'diurnal_only_once': 13, 'catalog_from_geocentric': 12, 'geocentric_from_topocentric': 15}), ({'x': 14, 'a': 2, 'd': 3, 'g': 4, 'annual_done': True, 'diurnal_done': True}, {'geocentric_apparent': 20, 'topocentric_apparent': 23, 'annual_only_once': 14, 'diurnal_only_once': 14, 'catalog_from_geocentric': 8, 'geocentric_from_topocentric': 11})]}
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)

meaning: Fixture-count band, not measured model difficulty

deps: stdlib

evaluation_group: astro-aberration-correction-provenance

source:
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(d):
    return {'geocentric_apparent': d['x']+d['a']+d['g'], 'topocentric_apparent': d['x']+d['a']+d['g']+d['d'], 'annual_only_once': d['x'] if d['diurnal_done'] else d['x']+d['a'], 'diurnal_only_once': d['x'] if d['diurnal_done'] else d['x']+d['d'], 'catalog_from_geocentric': d['x']-d['a']-d['g'], 'geocentric_from_topocentric': d['x']-d['d']}
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = {1: [({'x': 10, 'a': 2, 'd': 3, 'g': 4, 'annual_done': False, 'diurnal_done': False}, {'geocentric_apparent': 16, 'topocentric_apparent': 19, 'annual_only_once': 12, 'diurnal_only_once': 13, 'catalog_from_geocentric': 4, 'geocentric_from_topocentric': 7}), ({'x': 10, 'a': 2, 'd': 3, 'g': 4, 'annual_done': True, 'diurnal_done': False}, {'geocentric_apparent': 16, 'topocentric_apparent': 19, 'annual_only_once': 10, 'diurnal_only_once': 13, 'catalog_from_geocentric': 4, 'geocentric_from_topocentric': 7}), ({'x': 10, 'a': 2, 'd': 3, 'g': 4, 'annual_done': False, 'diurnal_done': True}, {'geocentric_apparent': 16, 'topocentric_apparent': 19, 'annual_only_once': 12, 'diurnal_only_once': 10, 'catalog_from_geocentric': 4, 'geocentric_from_topocentric': 7}), ({'x': 10, 'a': 0, 'd': 0, 'g': 0, 'annual_done': False, 'diurnal_done': False}, {'geocentric_apparent': 10, 'topocentric_apparent': 10, 'annual_only_once': 10, 'diurnal_only_once': 10, 'catalog_from_geocentric': 10, 'geocentric_from_topocentric': 10}), ({'x': 10, 'a': -2, 'd': -1, 'g': 4, 'annual_done': False, 'diurnal_done': False}, {'geocentric_apparent': 12, 'topocentric_apparent': 11, 'annual_only_once': 8, 'diurnal_only_once': 9, 'catalog_from_geocentric': 8, 'geocentric_from_topocentric': 11}), ({'x': 10, 'a': 2, 'd': 3, 'g': 4, 'annual_done': True, 'diurnal_done': True}, {'geocentric_apparent': 16, 'topocentric_apparent': 19, 'annual_only_once': 10, 'diurnal_only_once': 10, 'catalog_from_geocentric': 4, 'geocentric_from_topocentric': 7})], 2: [({'x': 11, 'a': 2, 'd': 3, 'g': 4, 'annual_done': False, 'diurnal_done': False}, {'geocentric_apparent': 17, 'topocentric_apparent': 20, 'annual_only_once': 13, 'diurnal_only_once': 14, 'catalog_from_geocentric': 5, 'geocentric_from_topocentric': 8}), ({'x': 11, 'a': 2, 'd': 3, 'g': 4, 'annual_done': True, 'diurnal_done': False}, {'geocentric_apparent': 17, 'topocentric_apparent': 20, 'annual_only_once': 11, 'diurnal_only_once': 14, 'catalog_from_geocentric': 5, 'geocentric_from_topocentric': 8}), ({'x': 11, 'a': 2, 'd': 3, 'g': 4, 'annual_done': False, 'diurnal_done': True}, {'geocentric_apparent': 17, 'topocentric_apparent': 20, 'annual_only_once': 13, 'diurnal_only_once': 11, 'catalog_from_geocentric': 5, 'geocentric_from_topocentric': 8}), ({'x': 11, 'a': 0, 'd': 0, 'g': 0, 'annual_done': False, 'diurnal_done': False}, {'geocentric_apparent': 11, 'topocentric_apparent': 11, 'annual_only_once': 11, 'diurnal_only_once': 11, 'catalog_from_geocentric': 11, 'geocentric_from_topocentric': 11}), ({'x': 11, 'a': -2, 'd': -1, 'g': 4, 'annual_done': False, 'diurnal_done': False}, {'geocentric_apparent': 13, 'topocentric_apparent': 12, 'annual_only_once': 9, 'diurnal_only_once': 10, 'catalog_from_geocentric': 9, 'geocentric_from_topocentric': 12}), ({'x': 11, 'a': 2, 'd': 3, 'g': 4, 'annual_done': True, 'diurnal_done': True}, {'geocentric_apparent': 17, 'topocentric_apparent': 20, 'annual_only_once': 11, 'diurnal_only_once': 11, 'catalog_from_geocentric': 5, 'geocentric_from_topocentric': 8})], 3: [({'x': 12, 'a': 2, 'd': 3, 'g': 4, 'annual_done': False, 'diurnal_done': False}, {'geocentric_apparent': 18, 'topocentric_apparent': 21, 'annual_only_once': 14, 'diurnal_only_once': 15, 'catalog_from_geocentric': 6, 'geocentric_from_topocentric': 9}), ({'x': 12, 'a': 2, 'd': 3, 'g': 4, 'annual_done': True, 'diurnal_done': False}, {'geocentric_apparent': 18, 'topocentric_apparent': 21, 'annual_only_once': 12, 'diurnal_only_once': 15, 'catalog_from_geocentric': 6, 'geocentric_from_topocentric': 9}), ({'x': 12, 'a': 2, 'd': 3, 'g': 4, 'annual_done': False, 'diurnal_done': True}, {'geocentric_apparent': 18, 'topocentric_apparent': 21, 'annual_only_once': 14, 'diurnal_only_once': 12, 'catalog_from_geocentric': 6, 'geocentric_from_topocentric': 9}), ({'x': 12, 'a': 0, 'd': 0, 'g': 0, 'annual_done': False, 'diurnal_done': False}, {'geocentric_apparent': 12, 'topocentric_apparent': 12, 'annual_only_once': 12, 'diurnal_only_once': 12, 'catalog_from_geocentric': 12, 'geocentric_from_topocentric': 12}), ({'x': 12, 'a': -2, 'd': -1, 'g': 4, 'annual_done': False, 'diurnal_done': False}, {'geocentric_apparent': 14, 'topocentric_apparent': 13, 'annual_only_once': 10, 'diurnal_only_once': 11, 'catalog_from_geocentric': 10, 'geocentric_from_topocentric': 13}), ({'x': 12, 'a': 2, 'd': 3, 'g': 4, 'annual_done': True, 'diurnal_done': True}, {'geocentric_apparent': 18, 'topocentric_apparent': 21, 'annual_only_once': 12, 'diurnal_only_once': 12, 'catalog_from_geocentric': 6, 'geocentric_from_topocentric': 9})], 4: [({'x': 13, 'a': 2, 'd': 3, 'g': 4, 'annual_done': False, 'diurnal_done': False}, {'geocentric_apparent': 19, 'topocentric_apparent': 22, 'annual_only_once': 15, 'diurnal_only_once': 16, 'catalog_from_geocentric': 7, 'geocentric_from_topocentric': 10}), ({'x': 13, 'a': 2, 'd': 3, 'g': 4, 'annual_done': True, 'diurnal_done': False}, {'geocentric_apparent': 19, 'topocentric_apparent': 22, 'annual_only_once': 13, 'diurnal_only_once': 16, 'catalog_from_geocentric': 7, 'geocentric_from_topocentric': 10}), ({'x': 13, 'a': 2, 'd': 3, 'g': 4, 'annual_done': False, 'diurnal_done': True}, {'geocentric_apparent': 19, 'topocentric_apparent': 22, 'annual_only_once': 15, 'diurnal_only_once': 13, 'catalog_from_geocentric': 7, 'geocentric_from_topocentric': 10}), ({'x': 13, 'a': 0, 'd': 0, 'g': 0, 'annual_done': False, 'diurnal_done': False}, {'geocentric_apparent': 13, 'topocentric_apparent': 13, 'annual_only_once': 13, 'diurnal_only_once': 13, 'catalog_from_geocentric': 13, 'geocentric_from_topocentric': 13}), ({'x': 13, 'a': -2, 'd': -1, 'g': 4, 'annual_done': False, 'diurnal_done': False}, {'geocentric_apparent': 15, 'topocentric_apparent': 14, 'annual_only_once': 11, 'diurnal_only_once': 12, 'catalog_from_geocentric': 11, 'geocentric_from_topocentric': 14}), ({'x': 13, 'a': 2, 'd': 3, 'g': 4, 'annual_done': True, 'diurnal_done': True}, {'geocentric_apparent': 19, 'topocentric_apparent': 22, 'annual_only_once': 13, 'diurnal_only_once': 13, 'catalog_from_geocentric': 7, 'geocentric_from_topocentric': 10})], 5: [({'x': 14, 'a': 2, 'd': 3, 'g': 4, 'annual_done': False, 'diurnal_done': False}, {'geocentric_apparent': 20, 'topocentric_apparent': 23, 'annual_only_once': 16, 'diurnal_only_once': 17, 'catalog_from_geocentric': 8, 'geocentric_from_topocentric': 11}), ({'x': 14, 'a': 2, 'd': 3, 'g': 4, 'annual_done': True, 'diurnal_done': False}, {'geocentric_apparent': 20, 'topocentric_apparent': 23, 'annual_only_once': 14, 'diurnal_only_once': 17, 'catalog_from_geocentric': 8, 'geocentric_from_topocentric': 11}), ({'x': 14, 'a': 2, 'd': 3, 'g': 4, 'annual_done': False, 'diurnal_done': True}, {'geocentric_apparent': 20, 'topocentric_apparent': 23, 'annual_only_once': 16, 'diurnal_only_once': 14, 'catalog_from_geocentric': 8, 'geocentric_from_topocentric': 11}), ({'x': 14, 'a': 0, 'd': 0, 'g': 0, 'annual_done': False, 'diurnal_done': False}, {'geocentric_apparent': 14, 'topocentric_apparent': 14, 'annual_only_once': 14, 'diurnal_only_once': 14, 'catalog_from_geocentric': 14, 'geocentric_from_topocentric': 14}), ({'x': 14, 'a': -2, 'd': -1, 'g': 4, 'annual_done': False, 'diurnal_done': False}, {'geocentric_apparent': 16, 'topocentric_apparent': 15, 'annual_only_once': 12, 'diurnal_only_once': 13, 'catalog_from_geocentric': 12, 'geocentric_from_topocentric': 15}), ({'x': 14, 'a': 2, 'd': 3, 'g': 4, 'annual_done': True, 'diurnal_done': True}, {'geocentric_apparent': 20, 'topocentric_apparent': 23, 'annual_only_once': 14, 'diurnal_only_once': 14, 'catalog_from_geocentric': 8, 'geocentric_from_topocentric': 11})]}
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)

prompt:
The adapter reports an incorrect annual only once while other fields remain valid.

Reduced astrometric place pipeline uses supplied additive corrections annual a, diurnal d, and deflection g. Catalog place x is uncorrected; geocentric apparent includes a+g; topocentric apparent additionally includes d. Inverse adapters must remove only corrections already included. No correction is physically calculated. Output fields are defined by: geocentric_apparent = d['x']+d['a']+d['g']; topocentric_apparent = d['x']+d['a']+d['g']+d['d']; annual_only_once = d['x'] if d['annual_done'] else d['x']+d['a']; diurnal_only_once = d['x'] if d['diurnal_done'] else d['x']+d['d']; catalog_from_geocentric = d['x']-d['a']-d['g']; geocentric_from_topocentric = d['x']-d['d']

split: open-access


broken_source:
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(d):
    return {'geocentric_apparent': d['x']+d['a']+d['g'], 'topocentric_apparent': d['x']+d['a']+d['g']+d['d'], 'annual_only_once': d['x'] if d['annual_done'] else d['x']+d['a'], 'diurnal_only_once': d['x']+d['d'], 'catalog_from_geocentric': d['x']-d['a']-d['g'], 'geocentric_from_topocentric': d['x']-d['d']}
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = {1: [({'x': 10, 'a': 2, 'd': 3, 'g': 4, 'annual_done': False, 'diurnal_done': False}, {'geocentric_apparent': 16, 'topocentric_apparent': 19, 'annual_only_once': 12, 'diurnal_only_once': 13, 'catalog_from_geocentric': 4, 'geocentric_from_topocentric': 7}), ({'x': 10, 'a': 2, 'd': 3, 'g': 4, 'annual_done': True, 'diurnal_done': False}, {'geocentric_apparent': 16, 'topocentric_apparent': 19, 'annual_only_once': 10, 'diurnal_only_once': 13, 'catalog_from_geocentric': 4, 'geocentric_from_topocentric': 7}), ({'x': 10, 'a': 2, 'd': 3, 'g': 4, 'annual_done': False, 'diurnal_done': True}, {'geocentric_apparent': 16, 'topocentric_apparent': 19, 'annual_only_once': 12, 'diurnal_only_once': 10, 'catalog_from_geocentric': 4, 'geocentric_from_topocentric': 7}), ({'x': 10, 'a': 0, 'd': 0, 'g': 0, 'annual_done': False, 'diurnal_done': False}, {'geocentric_apparent': 10, 'topocentric_apparent': 10, 'annual_only_once': 10, 'diurnal_only_once': 10, 'catalog_from_geocentric': 10, 'geocentric_from_topocentric': 10}), ({'x': 10, 'a': -2, 'd': -1, 'g': 4, 'annual_done': False, 'diurnal_done': False}, {'geocentric_apparent': 12, 'topocentric_apparent': 11, 'annual_only_once': 8, 'diurnal_only_once': 9, 'catalog_from_geocentric': 8, 'geocentric_from_topocentric': 11}), ({'x': 10, 'a': 2, 'd': 3, 'g': 4, 'annual_done': True, 'diurnal_done': True}, {'geocentric_apparent': 16, 'topocentric_apparent': 19, 'annual_only_once': 10, 'diurnal_only_once': 10, 'catalog_from_geocentric': 4, 'geocentric_from_topocentric': 7})], 2: [({'x': 11, 'a': 2, 'd': 3, 'g': 4, 'annual_done': False, 'diurnal_done': False}, {'geocentric_apparent': 17, 'topocentric_apparent': 20, 'annual_only_once': 13, 'diurnal_only_once': 14, 'catalog_from_geocentric': 5, 'geocentric_from_topocentric': 8}), ({'x': 11, 'a': 2, 'd': 3, 'g': 4, 'annual_done': True, 'diurnal_done': False}, {'geocentric_apparent': 17, 'topocentric_apparent': 20, 'annual_only_once': 11, 'diurnal_only_once': 14, 'catalog_from_geocentric': 5, 'geocentric_from_topocentric': 8}), ({'x': 11, 'a': 2, 'd': 3, 'g': 4, 'annual_done': False, 'diurnal_done': True}, {'geocentric_apparent': 17, 'topocentric_apparent': 20, 'annual_only_once': 13, 'diurnal_only_once': 11, 'catalog_from_geocentric': 5, 'geocentric_from_topocentric': 8}), ({'x': 11, 'a': 0, 'd': 0, 'g': 0, 'annual_done': False, 'diurnal_done': False}, {'geocentric_apparent': 11, 'topocentric_apparent': 11, 'annual_only_once': 11, 'diurnal_only_once': 11, 'catalog_from_geocentric': 11, 'geocentric_from_topocentric': 11}), ({'x': 11, 'a': -2, 'd': -1, 'g': 4, 'annual_done': False, 'diurnal_done': False}, {'geocentric_apparent': 13, 'topocentric_apparent': 12, 'annual_only_once': 9, 'diurnal_only_once': 10, 'catalog_from_geocentric': 9, 'geocentric_from_topocentric': 12}), ({'x': 11, 'a': 2, 'd': 3, 'g': 4, 'annual_done': True, 'diurnal_done': True}, {'geocentric_apparent': 17, 'topocentric_apparent': 20, 'annual_only_once': 11, 'diurnal_only_once': 11, 'catalog_from_geocentric': 5, 'geocentric_from_topocentric': 8})], 3: [({'x': 12, 'a': 2, 'd': 3, 'g': 4, 'annual_done': False, 'diurnal_done': False}, {'geocentric_apparent': 18, 'topocentric_apparent': 21, 'annual_only_once': 14, 'diurnal_only_once': 15, 'catalog_from_geocentric': 6, 'geocentric_from_topocentric': 9}), ({'x': 12, 'a': 2, 'd': 3, 'g': 4, 'annual_done': True, 'diurnal_done': False}, {'geocentric_apparent': 18, 'topocentric_apparent': 21, 'annual_only_once': 12, 'diurnal_only_once': 15, 'catalog_from_geocentric': 6, 'geocentric_from_topocentric': 9}), ({'x': 12, 'a': 2, 'd': 3, 'g': 4, 'annual_done': False, 'diurnal_done': True}, {'geocentric_apparent': 18, 'topocentric_apparent': 21, 'annual_only_once': 14, 'diurnal_only_once': 12, 'catalog_from_geocentric': 6, 'geocentric_from_topocentric': 9}), ({'x': 12, 'a': 0, 'd': 0, 'g': 0, 'annual_done': False, 'diurnal_done': False}, {'geocentric_apparent': 12, 'topocentric_apparent': 12, 'annual_only_once': 12, 'diurnal_only_once': 12, 'catalog_from_geocentric': 12, 'geocentric_from_topocentric': 12}), ({'x': 12, 'a': -2, 'd': -1, 'g': 4, 'annual_done': False, 'diurnal_done': False}, {'geocentric_apparent': 14, 'topocentric_apparent': 13, 'annual_only_once': 10, 'diurnal_only_once': 11, 'catalog_from_geocentric': 10, 'geocentric_from_topocentric': 13}), ({'x': 12, 'a': 2, 'd': 3, 'g': 4, 'annual_done': True, 'diurnal_done': True}, {'geocentric_apparent': 18, 'topocentric_apparent': 21, 'annual_only_once': 12, 'diurnal_only_once': 12, 'catalog_from_geocentric': 6, 'geocentric_from_topocentric': 9})], 4: [({'x': 13, 'a': 2, 'd': 3, 'g': 4, 'annual_done': False, 'diurnal_done': False}, {'geocentric_apparent': 19, 'topocentric_apparent': 22, 'annual_only_once': 15, 'diurnal_only_once': 16, 'catalog_from_geocentric': 7, 'geocentric_from_topocentric': 10}), ({'x': 13, 'a': 2, 'd': 3, 'g': 4, 'annual_done': True, 'diurnal_done': False}, {'geocentric_apparent': 19, 'topocentric_apparent': 22, 'annual_only_once': 13, 'diurnal_only_once': 16, 'catalog_from_geocentric': 7, 'geocentric_from_topocentric': 10}), ({'x': 13, 'a': 2, 'd': 3, 'g': 4, 'annual_done': False, 'diurnal_done': True}, {'geocentric_apparent': 19, 'topocentric_apparent': 22, 'annual_only_once': 15, 'diurnal_only_once': 13, 'catalog_from_geocentric': 7, 'geocentric_from_topocentric': 10}), ({'x': 13, 'a': 0, 'd': 0, 'g': 0, 'annual_done': False, 'diurnal_done': False}, {'geocentric_apparent': 13, 'topocentric_apparent': 13, 'annual_only_once': 13, 'diurnal_only_once': 13, 'catalog_from_geocentric': 13, 'geocentric_from_topocentric': 13}), ({'x': 13, 'a': -2, 'd': -1, 'g': 4, 'annual_done': False, 'diurnal_done': False}, {'geocentric_apparent': 15, 'topocentric_apparent': 14, 'annual_only_once': 11, 'diurnal_only_once': 12, 'catalog_from_geocentric': 11, 'geocentric_from_topocentric': 14}), ({'x': 13, 'a': 2, 'd': 3, 'g': 4, 'annual_done': True, 'diurnal_done': True}, {'geocentric_apparent': 19, 'topocentric_apparent': 22, 'annual_only_once': 13, 'diurnal_only_once': 13, 'catalog_from_geocentric': 7, 'geocentric_from_topocentric': 10})], 5: [({'x': 14, 'a': 2, 'd': 3, 'g': 4, 'annual_done': False, 'diurnal_done': False}, {'geocentric_apparent': 20, 'topocentric_apparent': 23, 'annual_only_once': 16, 'diurnal_only_once': 17, 'catalog_from_geocentric': 8, 'geocentric_from_topocentric': 11}), ({'x': 14, 'a': 2, 'd': 3, 'g': 4, 'annual_done': True, 'diurnal_done': False}, {'geocentric_apparent': 20, 'topocentric_apparent': 23, 'annual_only_once': 14, 'diurnal_only_once': 17, 'catalog_from_geocentric': 8, 'geocentric_from_topocentric': 11}), ({'x': 14, 'a': 2, 'd': 3, 'g': 4, 'annual_done': False, 'diurnal_done': True}, {'geocentric_apparent': 20, 'topocentric_apparent': 23, 'annual_only_once': 16, 'diurnal_only_once': 14, 'catalog_from_geocentric': 8, 'geocentric_from_topocentric': 11}), ({'x': 14, 'a': 0, 'd': 0, 'g': 0, 'annual_done': False, 'diurnal_done': False}, {'geocentric_apparent': 14, 'topocentric_apparent': 14, 'annual_only_once': 14, 'diurnal_only_once': 14, 'catalog_from_geocentric': 14, 'geocentric_from_topocentric': 14}), ({'x': 14, 'a': -2, 'd': -1, 'g': 4, 'annual_done': False, 'diurnal_done': False}, {'geocentric_apparent': 16, 'topocentric_apparent': 15, 'annual_only_once': 12, 'diurnal_only_once': 13, 'catalog_from_geocentric': 12, 'geocentric_from_topocentric': 15}), ({'x': 14, 'a': 2, 'd': 3, 'g': 4, 'annual_done': True, 'diurnal_done': True}, {'geocentric_apparent': 20, 'topocentric_apparent': 23, 'annual_only_once': 14, 'diurnal_only_once': 14, 'catalog_from_geocentric': 8, 'geocentric_from_topocentric': 11})]}
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)

evaluation_group: astro-aberration-correction-provenance

source:
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(d):
    return {'geocentric_apparent': d['x']+d['a']+d['g'], 'topocentric_apparent': d['x']+d['a']+d['g']+d['d'], 'annual_only_once': d['x'] if d['annual_done'] else d['x']+d['a'], 'diurnal_only_once': d['x'] if d['annual_done'] else d['x']+d['d'], 'catalog_from_geocentric': d['x']-d['a']-d['g'], 'geocentric_from_topocentric': d['x']-d['d']}
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = {1: [({'x': 10, 'a': 2, 'd': 3, 'g': 4, 'annual_done': False, 'diurnal_done': False}, {'geocentric_apparent': 16, 'topocentric_apparent': 19, 'annual_only_once': 12, 'diurnal_only_once': 13, 'catalog_from_geocentric': 4, 'geocentric_from_topocentric': 7}), ({'x': 10, 'a': 2, 'd': 3, 'g': 4, 'annual_done': True, 'diurnal_done': False}, {'geocentric_apparent': 16, 'topocentric_apparent': 19, 'annual_only_once': 10, 'diurnal_only_once': 13, 'catalog_from_geocentric': 4, 'geocentric_from_topocentric': 7}), ({'x': 10, 'a': 2, 'd': 3, 'g': 4, 'annual_done': False, 'diurnal_done': True}, {'geocentric_apparent': 16, 'topocentric_apparent': 19, 'annual_only_once': 12, 'diurnal_only_once': 10, 'catalog_from_geocentric': 4, 'geocentric_from_topocentric': 7}), ({'x': 10, 'a': 0, 'd': 0, 'g': 0, 'annual_done': False, 'diurnal_done': False}, {'geocentric_apparent': 10, 'topocentric_apparent': 10, 'annual_only_once': 10, 'diurnal_only_once': 10, 'catalog_from_geocentric': 10, 'geocentric_from_topocentric': 10}), ({'x': 10, 'a': -2, 'd': -1, 'g': 4, 'annual_done': False, 'diurnal_done': False}, {'geocentric_apparent': 12, 'topocentric_apparent': 11, 'annual_only_once': 8, 'diurnal_only_once': 9, 'catalog_from_geocentric': 8, 'geocentric_from_topocentric': 11}), ({'x': 10, 'a': 2, 'd': 3, 'g': 4, 'annual_done': True, 'diurnal_done': True}, {'geocentric_apparent': 16, 'topocentric_apparent': 19, 'annual_only_once': 10, 'diurnal_only_once': 10, 'catalog_from_geocentric': 4, 'geocentric_from_topocentric': 7})], 2: [({'x': 11, 'a': 2, 'd': 3, 'g': 4, 'annual_done': False, 'diurnal_done': False}, {'geocentric_apparent': 17, 'topocentric_apparent': 20, 'annual_only_once': 13, 'diurnal_only_once': 14, 'catalog_from_geocentric': 5, 'geocentric_from_topocentric': 8}), ({'x': 11, 'a': 2, 'd': 3, 'g': 4, 'annual_done': True, 'diurnal_done': False}, {'geocentric_apparent': 17, 'topocentric_apparent': 20, 'annual_only_once': 11, 'diurnal_only_once': 14, 'catalog_from_geocentric': 5, 'geocentric_from_topocentric': 8}), ({'x': 11, 'a': 2, 'd': 3, 'g': 4, 'annual_done': False, 'diurnal_done': True}, {'geocentric_apparent': 17, 'topocentric_apparent': 20, 'annual_only_once': 13, 'diurnal_only_once': 11, 'catalog_from_geocentric': 5, 'geocentric_from_topocentric': 8}), ({'x': 11, 'a': 0, 'd': 0, 'g': 0, 'annual_done': False, 'diurnal_done': False}, {'geocentric_apparent': 11, 'topocentric_apparent': 11, 'annual_only_once': 11, 'diurnal_only_once': 11, 'catalog_from_geocentric': 11, 'geocentric_from_topocentric': 11}), ({'x': 11, 'a': -2, 'd': -1, 'g': 4, 'annual_done': False, 'diurnal_done': False}, {'geocentric_apparent': 13, 'topocentric_apparent': 12, 'annual_only_once': 9, 'diurnal_only_once': 10, 'catalog_from_geocentric': 9, 'geocentric_from_topocentric': 12}), ({'x': 11, 'a': 2, 'd': 3, 'g': 4, 'annual_done': True, 'diurnal_done': True}, {'geocentric_apparent': 17, 'topocentric_apparent': 20, 'annual_only_once': 11, 'diurnal_only_once': 11, 'catalog_from_geocentric': 5, 'geocentric_from_topocentric': 8})], 3: [({'x': 12, 'a': 2, 'd': 3, 'g': 4, 'annual_done': False, 'diurnal_done': False}, {'geocentric_apparent': 18, 'topocentric_apparent': 21, 'annual_only_once': 14, 'diurnal_only_once': 15, 'catalog_from_geocentric': 6, 'geocentric_from_topocentric': 9}), ({'x': 12, 'a': 2, 'd': 3, 'g': 4, 'annual_done': True, 'diurnal_done': False}, {'geocentric_apparent': 18, 'topocentric_apparent': 21, 'annual_only_once': 12, 'diurnal_only_once': 15, 'catalog_from_geocentric': 6, 'geocentric_from_topocentric': 9}), ({'x': 12, 'a': 2, 'd': 3, 'g': 4, 'annual_done': False, 'diurnal_done': True}, {'geocentric_apparent': 18, 'topocentric_apparent': 21, 'annual_only_once': 14, 'diurnal_only_once': 12, 'catalog_from_geocentric': 6, 'geocentric_from_topocentric': 9}), ({'x': 12, 'a': 0, 'd': 0, 'g': 0, 'annual_done': False, 'diurnal_done': False}, {'geocentric_apparent': 12, 'topocentric_apparent': 12, 'annual_only_once': 12, 'diurnal_only_once': 12, 'catalog_from_geocentric': 12, 'geocentric_from_topocentric': 12}), ({'x': 12, 'a': -2, 'd': -1, 'g': 4, 'annual_done': False, 'diurnal_done': False}, {'geocentric_apparent': 14, 'topocentric_apparent': 13, 'annual_only_once': 10, 'diurnal_only_once': 11, 'catalog_from_geocentric': 10, 'geocentric_from_topocentric': 13}), ({'x': 12, 'a': 2, 'd': 3, 'g': 4, 'annual_done': True, 'diurnal_done': True}, {'geocentric_apparent': 18, 'topocentric_apparent': 21, 'annual_only_once': 12, 'diurnal_only_once': 12, 'catalog_from_geocentric': 6, 'geocentric_from_topocentric': 9})], 4: [({'x': 13, 'a': 2, 'd': 3, 'g': 4, 'annual_done': False, 'diurnal_done': False}, {'geocentric_apparent': 19, 'topocentric_apparent': 22, 'annual_only_once': 15, 'diurnal_only_once': 16, 'catalog_from_geocentric': 7, 'geocentric_from_topocentric': 10}), ({'x': 13, 'a': 2, 'd': 3, 'g': 4, 'annual_done': True, 'diurnal_done': False}, {'geocentric_apparent': 19, 'topocentric_apparent': 22, 'annual_only_once': 13, 'diurnal_only_once': 16, 'catalog_from_geocentric': 7, 'geocentric_from_topocentric': 10}), ({'x': 13, 'a': 2, 'd': 3, 'g': 4, 'annual_done': False, 'diurnal_done': True}, {'geocentric_apparent': 19, 'topocentric_apparent': 22, 'annual_only_once': 15, 'diurnal_only_once': 13, 'catalog_from_geocentric': 7, 'geocentric_from_topocentric': 10}), ({'x': 13, 'a': 0, 'd': 0, 'g': 0, 'annual_done': False, 'diurnal_done': False}, {'geocentric_apparent': 13, 'topocentric_apparent': 13, 'annual_only_once': 13, 'diurnal_only_once': 13, 'catalog_from_geocentric': 13, 'geocentric_from_topocentric': 13}), ({'x': 13, 'a': -2, 'd': -1, 'g': 4, 'annual_done': False, 'diurnal_done': False}, {'geocentric_apparent': 15, 'topocentric_apparent': 14, 'annual_only_once': 11, 'diurnal_only_once': 12, 'catalog_from_geocentric': 11, 'geocentric_from_topocentric': 14}), ({'x': 13, 'a': 2, 'd': 3, 'g': 4, 'annual_done': True, 'diurnal_done': True}, {'geocentric_apparent': 19, 'topocentric_apparent': 22, 'annual_only_once': 13, 'diurnal_only_once': 13, 'catalog_from_geocentric': 7, 'geocentric_from_topocentric': 10})], 5: [({'x': 14, 'a': 2, 'd': 3, 'g': 4, 'annual_done': False, 'diurnal_done': False}, {'geocentric_apparent': 20, 'topocentric_apparent': 23, 'annual_only_once': 16, 'diurnal_only_once': 17, 'catalog_from_geocentric': 8, 'geocentric_from_topocentric': 11}), ({'x': 14, 'a': 2, 'd': 3, 'g': 4, 'annual_done': True, 'diurnal_done': False}, {'geocentric_apparent': 20, 'topocentric_apparent': 23, 'annual_only_once': 14, 'diurnal_only_once': 17, 'catalog_from_geocentric': 8, 'geocentric_from_topocentric': 11}), ({'x': 14, 'a': 2, 'd': 3, 'g': 4, 'annual_done': False, 'diurnal_done': True}, {'geocentric_apparent': 20, 'topocentric_apparent': 23, 'annual_only_once': 16, 'diurnal_only_once': 14, 'catalog_from_geocentric': 8, 'geocentric_from_topocentric': 11}), ({'x': 14, 'a': 0, 'd': 0, 'g': 0, 'annual_done': False, 'diurnal_done': False}, {'geocentric_apparent': 14, 'topocentric_apparent': 14, 'annual_only_once': 14, 'diurnal_only_once': 14, 'catalog_from_geocentric': 14, 'geocentric_from_topocentric': 14}), ({'x': 14, 'a': -2, 'd': -1, 'g': 4, 'annual_done': False, 'diurnal_done': False}, {'geocentric_apparent': 16, 'topocentric_apparent': 15, 'annual_only_once': 12, 'diurnal_only_once': 13, 'catalog_from_geocentric': 12, 'geocentric_from_topocentric': 15}), ({'x': 14, 'a': 2, 'd': 3, 'g': 4, 'annual_done': True, 'diurnal_done': True}, {'geocentric_apparent': 20, 'topocentric_apparent': 23, 'annual_only_once': 14, 'diurnal_only_once': 14, 'catalog_from_geocentric': 8, 'geocentric_from_topocentric': 11})]}
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)

prompt:
The adapter reports an incorrect diurnal only once while other fields remain valid.

Reduced astrometric place pipeline uses supplied additive corrections annual a, diurnal d, and deflection g. Catalog place x is uncorrected; geocentric apparent includes a+g; topocentric apparent additionally includes d. Inverse adapters must remove only corrections already included. No correction is physically calculated. Output fields are defined by: geocentric_apparent = d['x']+d['a']+d['g']; topocentric_apparent = d['x']+d['a']+d['g']+d['d']; annual_only_once = d['x'] if d['annual_done'] else d['x']+d['a']; diurnal_only_once = d['x'] if d['diurnal_done'] else d['x']+d['d']; catalog_from_geocentric = d['x']-d['a']-d['g']; geocentric_from_topocentric = d['x']-d['d']

split: open-access


broken_source:
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(d):
    return {'geocentric_apparent': d['x']+d['a']+d['g'], 'topocentric_apparent': d['x']+d['a']+d['g']+d['d'], 'annual_only_once': d['x'] if d['annual_done'] else d['x']+d['a'], 'diurnal_only_once': d['x'] if d['diurnal_done'] else d['x']+d['d'], 'catalog_from_geocentric': d['x']-d['a']-d['g']-d['d'], 'geocentric_from_topocentric': d['x']-d['d']}
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = {1: [({'x': 10, 'a': 2, 'd': 3, 'g': 4, 'annual_done': False, 'diurnal_done': False}, {'geocentric_apparent': 16, 'topocentric_apparent': 19, 'annual_only_once': 12, 'diurnal_only_once': 13, 'catalog_from_geocentric': 4, 'geocentric_from_topocentric': 7}), ({'x': 10, 'a': 2, 'd': 3, 'g': 4, 'annual_done': True, 'diurnal_done': False}, {'geocentric_apparent': 16, 'topocentric_apparent': 19, 'annual_only_once': 10, 'diurnal_only_once': 13, 'catalog_from_geocentric': 4, 'geocentric_from_topocentric': 7}), ({'x': 10, 'a': 2, 'd': 3, 'g': 4, 'annual_done': False, 'diurnal_done': True}, {'geocentric_apparent': 16, 'topocentric_apparent': 19, 'annual_only_once': 12, 'diurnal_only_once': 10, 'catalog_from_geocentric': 4, 'geocentric_from_topocentric': 7}), ({'x': 10, 'a': 0, 'd': 0, 'g': 0, 'annual_done': False, 'diurnal_done': False}, {'geocentric_apparent': 10, 'topocentric_apparent': 10, 'annual_only_once': 10, 'diurnal_only_once': 10, 'catalog_from_geocentric': 10, 'geocentric_from_topocentric': 10}), ({'x': 10, 'a': -2, 'd': -1, 'g': 4, 'annual_done': False, 'diurnal_done': False}, {'geocentric_apparent': 12, 'topocentric_apparent': 11, 'annual_only_once': 8, 'diurnal_only_once': 9, 'catalog_from_geocentric': 8, 'geocentric_from_topocentric': 11}), ({'x': 10, 'a': 2, 'd': 3, 'g': 4, 'annual_done': True, 'diurnal_done': True}, {'geocentric_apparent': 16, 'topocentric_apparent': 19, 'annual_only_once': 10, 'diurnal_only_once': 10, 'catalog_from_geocentric': 4, 'geocentric_from_topocentric': 7})], 2: [({'x': 11, 'a': 2, 'd': 3, 'g': 4, 'annual_done': False, 'diurnal_done': False}, {'geocentric_apparent': 17, 'topocentric_apparent': 20, 'annual_only_once': 13, 'diurnal_only_once': 14, 'catalog_from_geocentric': 5, 'geocentric_from_topocentric': 8}), ({'x': 11, 'a': 2, 'd': 3, 'g': 4, 'annual_done': True, 'diurnal_done': False}, {'geocentric_apparent': 17, 'topocentric_apparent': 20, 'annual_only_once': 11, 'diurnal_only_once': 14, 'catalog_from_geocentric': 5, 'geocentric_from_topocentric': 8}), ({'x': 11, 'a': 2, 'd': 3, 'g': 4, 'annual_done': False, 'diurnal_done': True}, {'geocentric_apparent': 17, 'topocentric_apparent': 20, 'annual_only_once': 13, 'diurnal_only_once': 11, 'catalog_from_geocentric': 5, 'geocentric_from_topocentric': 8}), ({'x': 11, 'a': 0, 'd': 0, 'g': 0, 'annual_done': False, 'diurnal_done': False}, {'geocentric_apparent': 11, 'topocentric_apparent': 11, 'annual_only_once': 11, 'diurnal_only_once': 11, 'catalog_from_geocentric': 11, 'geocentric_from_topocentric': 11}), ({'x': 11, 'a': -2, 'd': -1, 'g': 4, 'annual_done': False, 'diurnal_done': False}, {'geocentric_apparent': 13, 'topocentric_apparent': 12, 'annual_only_once': 9, 'diurnal_only_once': 10, 'catalog_from_geocentric': 9, 'geocentric_from_topocentric': 12}), ({'x': 11, 'a': 2, 'd': 3, 'g': 4, 'annual_done': True, 'diurnal_done': True}, {'geocentric_apparent': 17, 'topocentric_apparent': 20, 'annual_only_once': 11, 'diurnal_only_once': 11, 'catalog_from_geocentric': 5, 'geocentric_from_topocentric': 8})], 3: [({'x': 12, 'a': 2, 'd': 3, 'g': 4, 'annual_done': False, 'diurnal_done': False}, {'geocentric_apparent': 18, 'topocentric_apparent': 21, 'annual_only_once': 14, 'diurnal_only_once': 15, 'catalog_from_geocentric': 6, 'geocentric_from_topocentric': 9}), ({'x': 12, 'a': 2, 'd': 3, 'g': 4, 'annual_done': True, 'diurnal_done': False}, {'geocentric_apparent': 18, 'topocentric_apparent': 21, 'annual_only_once': 12, 'diurnal_only_once': 15, 'catalog_from_geocentric': 6, 'geocentric_from_topocentric': 9}), ({'x': 12, 'a': 2, 'd': 3, 'g': 4, 'annual_done': False, 'diurnal_done': True}, {'geocentric_apparent': 18, 'topocentric_apparent': 21, 'annual_only_once': 14, 'diurnal_only_once': 12, 'catalog_from_geocentric': 6, 'geocentric_from_topocentric': 9}), ({'x': 12, 'a': 0, 'd': 0, 'g': 0, 'annual_done': False, 'diurnal_done': False}, {'geocentric_apparent': 12, 'topocentric_apparent': 12, 'annual_only_once': 12, 'diurnal_only_once': 12, 'catalog_from_geocentric': 12, 'geocentric_from_topocentric': 12}), ({'x': 12, 'a': -2, 'd': -1, 'g': 4, 'annual_done': False, 'diurnal_done': False}, {'geocentric_apparent': 14, 'topocentric_apparent': 13, 'annual_only_once': 10, 'diurnal_only_once': 11, 'catalog_from_geocentric': 10, 'geocentric_from_topocentric': 13}), ({'x': 12, 'a': 2, 'd': 3, 'g': 4, 'annual_done': True, 'diurnal_done': True}, {'geocentric_apparent': 18, 'topocentric_apparent': 21, 'annual_only_once': 12, 'diurnal_only_once': 12, 'catalog_from_geocentric': 6, 'geocentric_from_topocentric': 9})], 4: [({'x': 13, 'a': 2, 'd': 3, 'g': 4, 'annual_done': False, 'diurnal_done': False}, {'geocentric_apparent': 19, 'topocentric_apparent': 22, 'annual_only_once': 15, 'diurnal_only_once': 16, 'catalog_from_geocentric': 7, 'geocentric_from_topocentric': 10}), ({'x': 13, 'a': 2, 'd': 3, 'g': 4, 'annual_done': True, 'diurnal_done': False}, {'geocentric_apparent': 19, 'topocentric_apparent': 22, 'annual_only_once': 13, 'diurnal_only_once': 16, 'catalog_from_geocentric': 7, 'geocentric_from_topocentric': 10}), ({'x': 13, 'a': 2, 'd': 3, 'g': 4, 'annual_done': False, 'diurnal_done': True}, {'geocentric_apparent': 19, 'topocentric_apparent': 22, 'annual_only_once': 15, 'diurnal_only_once': 13, 'catalog_from_geocentric': 7, 'geocentric_from_topocentric': 10}), ({'x': 13, 'a': 0, 'd': 0, 'g': 0, 'annual_done': False, 'diurnal_done': False}, {'geocentric_apparent': 13, 'topocentric_apparent': 13, 'annual_only_once': 13, 'diurnal_only_once': 13, 'catalog_from_geocentric': 13, 'geocentric_from_topocentric': 13}), ({'x': 13, 'a': -2, 'd': -1, 'g': 4, 'annual_done': False, 'diurnal_done': False}, {'geocentric_apparent': 15, 'topocentric_apparent': 14, 'annual_only_once': 11, 'diurnal_only_once': 12, 'catalog_from_geocentric': 11, 'geocentric_from_topocentric': 14}), ({'x': 13, 'a': 2, 'd': 3, 'g': 4, 'annual_done': True, 'diurnal_done': True}, {'geocentric_apparent': 19, 'topocentric_apparent': 22, 'annual_only_once': 13, 'diurnal_only_once': 13, 'catalog_from_geocentric': 7, 'geocentric_from_topocentric': 10})], 5: [({'x': 14, 'a': 2, 'd': 3, 'g': 4, 'annual_done': False, 'diurnal_done': False}, {'geocentric_apparent': 20, 'topocentric_apparent': 23, 'annual_only_once': 16, 'diurnal_only_once': 17, 'catalog_from_geocentric': 8, 'geocentric_from_topocentric': 11}), ({'x': 14, 'a': 2, 'd': 3, 'g': 4, 'annual_done': True, 'diurnal_done': False}, {'geocentric_apparent': 20, 'topocentric_apparent': 23, 'annual_only_once': 14, 'diurnal_only_once': 17, 'catalog_from_geocentric': 8, 'geocentric_from_topocentric': 11}), ({'x': 14, 'a': 2, 'd': 3, 'g': 4, 'annual_done': False, 'diurnal_done': True}, {'geocentric_apparent': 20, 'topocentric_apparent': 23, 'annual_only_once': 16, 'diurnal_only_once': 14, 'catalog_from_geocentric': 8, 'geocentric_from_topocentric': 11}), ({'x': 14, 'a': 0, 'd': 0, 'g': 0, 'annual_done': False, 'diurnal_done': False}, {'geocentric_apparent': 14, 'topocentric_apparent': 14, 'annual_only_once': 14, 'diurnal_only_once': 14, 'catalog_from_geocentric': 14, 'geocentric_from_topocentric': 14}), ({'x': 14, 'a': -2, 'd': -1, 'g': 4, 'annual_done': False, 'diurnal_done': False}, {'geocentric_apparent': 16, 'topocentric_apparent': 15, 'annual_only_once': 12, 'diurnal_only_once': 13, 'catalog_from_geocentric': 12, 'geocentric_from_topocentric': 15}), ({'x': 14, 'a': 2, 'd': 3, 'g': 4, 'annual_done': True, 'diurnal_done': True}, {'geocentric_apparent': 20, 'topocentric_apparent': 23, 'annual_only_once': 14, 'diurnal_only_once': 14, 'catalog_from_geocentric': 8, 'geocentric_from_topocentric': 11})]}
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)

evaluation_group: astro-aberration-correction-provenance

source:
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(d):
    return {'geocentric_apparent': d['x']+d['a']+d['g'], 'topocentric_apparent': d['x']+d['a']+d['g']+d['d'], 'annual_only_once': d['x'] if d['annual_done'] else d['x']+d['a'], 'diurnal_only_once': d['x'] if d['diurnal_done'] else d['x']+d['d'], 'catalog_from_geocentric': d['x']-d['a'], 'geocentric_from_topocentric': d['x']-d['d']}
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = {1: [({'x': 10, 'a': 2, 'd': 3, 'g': 4, 'annual_done': False, 'diurnal_done': False}, {'geocentric_apparent': 16, 'topocentric_apparent': 19, 'annual_only_once': 12, 'diurnal_only_once': 13, 'catalog_from_geocentric': 4, 'geocentric_from_topocentric': 7}), ({'x': 10, 'a': 2, 'd': 3, 'g': 4, 'annual_done': True, 'diurnal_done': False}, {'geocentric_apparent': 16, 'topocentric_apparent': 19, 'annual_only_once': 10, 'diurnal_only_once': 13, 'catalog_from_geocentric': 4, 'geocentric_from_topocentric': 7}), ({'x': 10, 'a': 2, 'd': 3, 'g': 4, 'annual_done': False, 'diurnal_done': True}, {'geocentric_apparent': 16, 'topocentric_apparent': 19, 'annual_only_once': 12, 'diurnal_only_once': 10, 'catalog_from_geocentric': 4, 'geocentric_from_topocentric': 7}), ({'x': 10, 'a': 0, 'd': 0, 'g': 0, 'annual_done': False, 'diurnal_done': False}, {'geocentric_apparent': 10, 'topocentric_apparent': 10, 'annual_only_once': 10, 'diurnal_only_once': 10, 'catalog_from_geocentric': 10, 'geocentric_from_topocentric': 10}), ({'x': 10, 'a': -2, 'd': -1, 'g': 4, 'annual_done': False, 'diurnal_done': False}, {'geocentric_apparent': 12, 'topocentric_apparent': 11, 'annual_only_once': 8, 'diurnal_only_once': 9, 'catalog_from_geocentric': 8, 'geocentric_from_topocentric': 11}), ({'x': 10, 'a': 2, 'd': 3, 'g': 4, 'annual_done': True, 'diurnal_done': True}, {'geocentric_apparent': 16, 'topocentric_apparent': 19, 'annual_only_once': 10, 'diurnal_only_once': 10, 'catalog_from_geocentric': 4, 'geocentric_from_topocentric': 7})], 2: [({'x': 11, 'a': 2, 'd': 3, 'g': 4, 'annual_done': False, 'diurnal_done': False}, {'geocentric_apparent': 17, 'topocentric_apparent': 20, 'annual_only_once': 13, 'diurnal_only_once': 14, 'catalog_from_geocentric': 5, 'geocentric_from_topocentric': 8}), ({'x': 11, 'a': 2, 'd': 3, 'g': 4, 'annual_done': True, 'diurnal_done': False}, {'geocentric_apparent': 17, 'topocentric_apparent': 20, 'annual_only_once': 11, 'diurnal_only_once': 14, 'catalog_from_geocentric': 5, 'geocentric_from_topocentric': 8}), ({'x': 11, 'a': 2, 'd': 3, 'g': 4, 'annual_done': False, 'diurnal_done': True}, {'geocentric_apparent': 17, 'topocentric_apparent': 20, 'annual_only_once': 13, 'diurnal_only_once': 11, 'catalog_from_geocentric': 5, 'geocentric_from_topocentric': 8}), ({'x': 11, 'a': 0, 'd': 0, 'g': 0, 'annual_done': False, 'diurnal_done': False}, {'geocentric_apparent': 11, 'topocentric_apparent': 11, 'annual_only_once': 11, 'diurnal_only_once': 11, 'catalog_from_geocentric': 11, 'geocentric_from_topocentric': 11}), ({'x': 11, 'a': -2, 'd': -1, 'g': 4, 'annual_done': False, 'diurnal_done': False}, {'geocentric_apparent': 13, 'topocentric_apparent': 12, 'annual_only_once': 9, 'diurnal_only_once': 10, 'catalog_from_geocentric': 9, 'geocentric_from_topocentric': 12}), ({'x': 11, 'a': 2, 'd': 3, 'g': 4, 'annual_done': True, 'diurnal_done': True}, {'geocentric_apparent': 17, 'topocentric_apparent': 20, 'annual_only_once': 11, 'diurnal_only_once': 11, 'catalog_from_geocentric': 5, 'geocentric_from_topocentric': 8})], 3: [({'x': 12, 'a': 2, 'd': 3, 'g': 4, 'annual_done': False, 'diurnal_done': False}, {'geocentric_apparent': 18, 'topocentric_apparent': 21, 'annual_only_once': 14, 'diurnal_only_once': 15, 'catalog_from_geocentric': 6, 'geocentric_from_topocentric': 9}), ({'x': 12, 'a': 2, 'd': 3, 'g': 4, 'annual_done': True, 'diurnal_done': False}, {'geocentric_apparent': 18, 'topocentric_apparent': 21, 'annual_only_once': 12, 'diurnal_only_once': 15, 'catalog_from_geocentric': 6, 'geocentric_from_topocentric': 9}), ({'x': 12, 'a': 2, 'd': 3, 'g': 4, 'annual_done': False, 'diurnal_done': True}, {'geocentric_apparent': 18, 'topocentric_apparent': 21, 'annual_only_once': 14, 'diurnal_only_once': 12, 'catalog_from_geocentric': 6, 'geocentric_from_topocentric': 9}), ({'x': 12, 'a': 0, 'd': 0, 'g': 0, 'annual_done': False, 'diurnal_done': False}, {'geocentric_apparent': 12, 'topocentric_apparent': 12, 'annual_only_once': 12, 'diurnal_only_once': 12, 'catalog_from_geocentric': 12, 'geocentric_from_topocentric': 12}), ({'x': 12, 'a': -2, 'd': -1, 'g': 4, 'annual_done': False, 'diurnal_done': False}, {'geocentric_apparent': 14, 'topocentric_apparent': 13, 'annual_only_once': 10, 'diurnal_only_once': 11, 'catalog_from_geocentric': 10, 'geocentric_from_topocentric': 13}), ({'x': 12, 'a': 2, 'd': 3, 'g': 4, 'annual_done': True, 'diurnal_done': True}, {'geocentric_apparent': 18, 'topocentric_apparent': 21, 'annual_only_once': 12, 'diurnal_only_once': 12, 'catalog_from_geocentric': 6, 'geocentric_from_topocentric': 9})], 4: [({'x': 13, 'a': 2, 'd': 3, 'g': 4, 'annual_done': False, 'diurnal_done': False}, {'geocentric_apparent': 19, 'topocentric_apparent': 22, 'annual_only_once': 15, 'diurnal_only_once': 16, 'catalog_from_geocentric': 7, 'geocentric_from_topocentric': 10}), ({'x': 13, 'a': 2, 'd': 3, 'g': 4, 'annual_done': True, 'diurnal_done': False}, {'geocentric_apparent': 19, 'topocentric_apparent': 22, 'annual_only_once': 13, 'diurnal_only_once': 16, 'catalog_from_geocentric': 7, 'geocentric_from_topocentric': 10}), ({'x': 13, 'a': 2, 'd': 3, 'g': 4, 'annual_done': False, 'diurnal_done': True}, {'geocentric_apparent': 19, 'topocentric_apparent': 22, 'annual_only_once': 15, 'diurnal_only_once': 13, 'catalog_from_geocentric': 7, 'geocentric_from_topocentric': 10}), ({'x': 13, 'a': 0, 'd': 0, 'g': 0, 'annual_done': False, 'diurnal_done': False}, {'geocentric_apparent': 13, 'topocentric_apparent': 13, 'annual_only_once': 13, 'diurnal_only_once': 13, 'catalog_from_geocentric': 13, 'geocentric_from_topocentric': 13}), ({'x': 13, 'a': -2, 'd': -1, 'g': 4, 'annual_done': False, 'diurnal_done': False}, {'geocentric_apparent': 15, 'topocentric_apparent': 14, 'annual_only_once': 11, 'diurnal_only_once': 12, 'catalog_from_geocentric': 11, 'geocentric_from_topocentric': 14}), ({'x': 13, 'a': 2, 'd': 3, 'g': 4, 'annual_done': True, 'diurnal_done': True}, {'geocentric_apparent': 19, 'topocentric_apparent': 22, 'annual_only_once': 13, 'diurnal_only_once': 13, 'catalog_from_geocentric': 7, 'geocentric_from_topocentric': 10})], 5: [({'x': 14, 'a': 2, 'd': 3, 'g': 4, 'annual_done': False, 'diurnal_done': False}, {'geocentric_apparent': 20, 'topocentric_apparent': 23, 'annual_only_once': 16, 'diurnal_only_once': 17, 'catalog_from_geocentric': 8, 'geocentric_from_topocentric': 11}), ({'x': 14, 'a': 2, 'd': 3, 'g': 4, 'annual_done': True, 'diurnal_done': False}, {'geocentric_apparent': 20, 'topocentric_apparent': 23, 'annual_only_once': 14, 'diurnal_only_once': 17, 'catalog_from_geocentric': 8, 'geocentric_from_topocentric': 11}), ({'x': 14, 'a': 2, 'd': 3, 'g': 4, 'annual_done': False, 'diurnal_done': True}, {'geocentric_apparent': 20, 'topocentric_apparent': 23, 'annual_only_once': 16, 'diurnal_only_once': 14, 'catalog_from_geocentric': 8, 'geocentric_from_topocentric': 11}), ({'x': 14, 'a': 0, 'd': 0, 'g': 0, 'annual_done': False, 'diurnal_done': False}, {'geocentric_apparent': 14, 'topocentric_apparent': 14, 'annual_only_once': 14, 'diurnal_only_once': 14, 'catalog_from_geocentric': 14, 'geocentric_from_topocentric': 14}), ({'x': 14, 'a': -2, 'd': -1, 'g': 4, 'annual_done': False, 'diurnal_done': False}, {'geocentric_apparent': 16, 'topocentric_apparent': 15, 'annual_only_once': 12, 'diurnal_only_once': 13, 'catalog_from_geocentric': 12, 'geocentric_from_topocentric': 15}), ({'x': 14, 'a': 2, 'd': 3, 'g': 4, 'annual_done': True, 'diurnal_done': True}, {'geocentric_apparent': 20, 'topocentric_apparent': 23, 'annual_only_once': 14, 'diurnal_only_once': 14, 'catalog_from_geocentric': 8, 'geocentric_from_topocentric': 11})]}
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)

prompt:
The adapter reports an incorrect catalog from geocentric while other fields remain valid.

Reduced astrometric place pipeline uses supplied additive corrections annual a, diurnal d, and deflection g. Catalog place x is uncorrected; geocentric apparent includes a+g; topocentric apparent additionally includes d. Inverse adapters must remove only corrections already included. No correction is physically calculated. Output fields are defined by: geocentric_apparent = d['x']+d['a']+d['g']; topocentric_apparent = d['x']+d['a']+d['g']+d['d']; annual_only_once = d['x'] if d['annual_done'] else d['x']+d['a']; diurnal_only_once = d['x'] if d['diurnal_done'] else d['x']+d['d']; catalog_from_geocentric = d['x']-d['a']-d['g']; geocentric_from_topocentric = d['x']-d['d']

split: open-access


broken_source:
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(d):
    return {'geocentric_apparent': d['x']+d['a']+d['g'], 'topocentric_apparent': d['x']+d['a']+d['g']+d['d'], 'annual_only_once': d['x'] if d['annual_done'] else d['x']+d['a'], 'diurnal_only_once': d['x'] if d['diurnal_done'] else d['x']+d['d'], 'catalog_from_geocentric': d['x']-d['a']-d['g'], 'geocentric_from_topocentric': d['x']-d['a']-d['d']}
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = {1: [({'x': 10, 'a': 2, 'd': 3, 'g': 4, 'annual_done': False, 'diurnal_done': False}, {'geocentric_apparent': 16, 'topocentric_apparent': 19, 'annual_only_once': 12, 'diurnal_only_once': 13, 'catalog_from_geocentric': 4, 'geocentric_from_topocentric': 7}), ({'x': 10, 'a': 2, 'd': 3, 'g': 4, 'annual_done': True, 'diurnal_done': False}, {'geocentric_apparent': 16, 'topocentric_apparent': 19, 'annual_only_once': 10, 'diurnal_only_once': 13, 'catalog_from_geocentric': 4, 'geocentric_from_topocentric': 7}), ({'x': 10, 'a': 2, 'd': 3, 'g': 4, 'annual_done': False, 'diurnal_done': True}, {'geocentric_apparent': 16, 'topocentric_apparent': 19, 'annual_only_once': 12, 'diurnal_only_once': 10, 'catalog_from_geocentric': 4, 'geocentric_from_topocentric': 7}), ({'x': 10, 'a': 0, 'd': 0, 'g': 0, 'annual_done': False, 'diurnal_done': False}, {'geocentric_apparent': 10, 'topocentric_apparent': 10, 'annual_only_once': 10, 'diurnal_only_once': 10, 'catalog_from_geocentric': 10, 'geocentric_from_topocentric': 10}), ({'x': 10, 'a': -2, 'd': -1, 'g': 4, 'annual_done': False, 'diurnal_done': False}, {'geocentric_apparent': 12, 'topocentric_apparent': 11, 'annual_only_once': 8, 'diurnal_only_once': 9, 'catalog_from_geocentric': 8, 'geocentric_from_topocentric': 11}), ({'x': 10, 'a': 2, 'd': 3, 'g': 4, 'annual_done': True, 'diurnal_done': True}, {'geocentric_apparent': 16, 'topocentric_apparent': 19, 'annual_only_once': 10, 'diurnal_only_once': 10, 'catalog_from_geocentric': 4, 'geocentric_from_topocentric': 7})], 2: [({'x': 11, 'a': 2, 'd': 3, 'g': 4, 'annual_done': False, 'diurnal_done': False}, {'geocentric_apparent': 17, 'topocentric_apparent': 20, 'annual_only_once': 13, 'diurnal_only_once': 14, 'catalog_from_geocentric': 5, 'geocentric_from_topocentric': 8}), ({'x': 11, 'a': 2, 'd': 3, 'g': 4, 'annual_done': True, 'diurnal_done': False}, {'geocentric_apparent': 17, 'topocentric_apparent': 20, 'annual_only_once': 11, 'diurnal_only_once': 14, 'catalog_from_geocentric': 5, 'geocentric_from_topocentric': 8}), ({'x': 11, 'a': 2, 'd': 3, 'g': 4, 'annual_done': False, 'diurnal_done': True}, {'geocentric_apparent': 17, 'topocentric_apparent': 20, 'annual_only_once': 13, 'diurnal_only_once': 11, 'catalog_from_geocentric': 5, 'geocentric_from_topocentric': 8}), ({'x': 11, 'a': 0, 'd': 0, 'g': 0, 'annual_done': False, 'diurnal_done': False}, {'geocentric_apparent': 11, 'topocentric_apparent': 11, 'annual_only_once': 11, 'diurnal_only_once': 11, 'catalog_from_geocentric': 11, 'geocentric_from_topocentric': 11}), ({'x': 11, 'a': -2, 'd': -1, 'g': 4, 'annual_done': False, 'diurnal_done': False}, {'geocentric_apparent': 13, 'topocentric_apparent': 12, 'annual_only_once': 9, 'diurnal_only_once': 10, 'catalog_from_geocentric': 9, 'geocentric_from_topocentric': 12}), ({'x': 11, 'a': 2, 'd': 3, 'g': 4, 'annual_done': True, 'diurnal_done': True}, {'geocentric_apparent': 17, 'topocentric_apparent': 20, 'annual_only_once': 11, 'diurnal_only_once': 11, 'catalog_from_geocentric': 5, 'geocentric_from_topocentric': 8})], 3: [({'x': 12, 'a': 2, 'd': 3, 'g': 4, 'annual_done': False, 'diurnal_done': False}, {'geocentric_apparent': 18, 'topocentric_apparent': 21, 'annual_only_once': 14, 'diurnal_only_once': 15, 'catalog_from_geocentric': 6, 'geocentric_from_topocentric': 9}), ({'x': 12, 'a': 2, 'd': 3, 'g': 4, 'annual_done': True, 'diurnal_done': False}, {'geocentric_apparent': 18, 'topocentric_apparent': 21, 'annual_only_once': 12, 'diurnal_only_once': 15, 'catalog_from_geocentric': 6, 'geocentric_from_topocentric': 9}), ({'x': 12, 'a': 2, 'd': 3, 'g': 4, 'annual_done': False, 'diurnal_done': True}, {'geocentric_apparent': 18, 'topocentric_apparent': 21, 'annual_only_once': 14, 'diurnal_only_once': 12, 'catalog_from_geocentric': 6, 'geocentric_from_topocentric': 9}), ({'x': 12, 'a': 0, 'd': 0, 'g': 0, 'annual_done': False, 'diurnal_done': False}, {'geocentric_apparent': 12, 'topocentric_apparent': 12, 'annual_only_once': 12, 'diurnal_only_once': 12, 'catalog_from_geocentric': 12, 'geocentric_from_topocentric': 12}), ({'x': 12, 'a': -2, 'd': -1, 'g': 4, 'annual_done': False, 'diurnal_done': False}, {'geocentric_apparent': 14, 'topocentric_apparent': 13, 'annual_only_once': 10, 'diurnal_only_once': 11, 'catalog_from_geocentric': 10, 'geocentric_from_topocentric': 13}), ({'x': 12, 'a': 2, 'd': 3, 'g': 4, 'annual_done': True, 'diurnal_done': True}, {'geocentric_apparent': 18, 'topocentric_apparent': 21, 'annual_only_once': 12, 'diurnal_only_once': 12, 'catalog_from_geocentric': 6, 'geocentric_from_topocentric': 9})], 4: [({'x': 13, 'a': 2, 'd': 3, 'g': 4, 'annual_done': False, 'diurnal_done': False}, {'geocentric_apparent': 19, 'topocentric_apparent': 22, 'annual_only_once': 15, 'diurnal_only_once': 16, 'catalog_from_geocentric': 7, 'geocentric_from_topocentric': 10}), ({'x': 13, 'a': 2, 'd': 3, 'g': 4, 'annual_done': True, 'diurnal_done': False}, {'geocentric_apparent': 19, 'topocentric_apparent': 22, 'annual_only_once': 13, 'diurnal_only_once': 16, 'catalog_from_geocentric': 7, 'geocentric_from_topocentric': 10}), ({'x': 13, 'a': 2, 'd': 3, 'g': 4, 'annual_done': False, 'diurnal_done': True}, {'geocentric_apparent': 19, 'topocentric_apparent': 22, 'annual_only_once': 15, 'diurnal_only_once': 13, 'catalog_from_geocentric': 7, 'geocentric_from_topocentric': 10}), ({'x': 13, 'a': 0, 'd': 0, 'g': 0, 'annual_done': False, 'diurnal_done': False}, {'geocentric_apparent': 13, 'topocentric_apparent': 13, 'annual_only_once': 13, 'diurnal_only_once': 13, 'catalog_from_geocentric': 13, 'geocentric_from_topocentric': 13}), ({'x': 13, 'a': -2, 'd': -1, 'g': 4, 'annual_done': False, 'diurnal_done': False}, {'geocentric_apparent': 15, 'topocentric_apparent': 14, 'annual_only_once': 11, 'diurnal_only_once': 12, 'catalog_from_geocentric': 11, 'geocentric_from_topocentric': 14}), ({'x': 13, 'a': 2, 'd': 3, 'g': 4, 'annual_done': True, 'diurnal_done': True}, {'geocentric_apparent': 19, 'topocentric_apparent': 22, 'annual_only_once': 13, 'diurnal_only_once': 13, 'catalog_from_geocentric': 7, 'geocentric_from_topocentric': 10})], 5: [({'x': 14, 'a': 2, 'd': 3, 'g': 4, 'annual_done': False, 'diurnal_done': False}, {'geocentric_apparent': 20, 'topocentric_apparent': 23, 'annual_only_once': 16, 'diurnal_only_once': 17, 'catalog_from_geocentric': 8, 'geocentric_from_topocentric': 11}), ({'x': 14, 'a': 2, 'd': 3, 'g': 4, 'annual_done': True, 'diurnal_done': False}, {'geocentric_apparent': 20, 'topocentric_apparent': 23, 'annual_only_once': 14, 'diurnal_only_once': 17, 'catalog_from_geocentric': 8, 'geocentric_from_topocentric': 11}), ({'x': 14, 'a': 2, 'd': 3, 'g': 4, 'annual_done': False, 'diurnal_done': True}, {'geocentric_apparent': 20, 'topocentric_apparent': 23, 'annual_only_once': 16, 'diurnal_only_once': 14, 'catalog_from_geocentric': 8, 'geocentric_from_topocentric': 11}), ({'x': 14, 'a': 0, 'd': 0, 'g': 0, 'annual_done': False, 'diurnal_done': False}, {'geocentric_apparent': 14, 'topocentric_apparent': 14, 'annual_only_once': 14, 'diurnal_only_once': 14, 'catalog_from_geocentric': 14, 'geocentric_from_topocentric': 14}), ({'x': 14, 'a': -2, 'd': -1, 'g': 4, 'annual_done': False, 'diurnal_done': False}, {'geocentric_apparent': 16, 'topocentric_apparent': 15, 'annual_only_once': 12, 'diurnal_only_once': 13, 'catalog_from_geocentric': 12, 'geocentric_from_topocentric': 15}), ({'x': 14, 'a': 2, 'd': 3, 'g': 4, 'annual_done': True, 'diurnal_done': True}, {'geocentric_apparent': 20, 'topocentric_apparent': 23, 'annual_only_once': 14, 'diurnal_only_once': 14, 'catalog_from_geocentric': 8, 'geocentric_from_topocentric': 11})]}
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)

evaluation_group: astro-aberration-correction-provenance

source:
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(d):
    return {'geocentric_apparent': d['x']+d['a']+d['g'], 'topocentric_apparent': d['x']+d['a']+d['g']+d['d'], 'annual_only_once': d['x'] if d['annual_done'] else d['x']+d['a'], 'diurnal_only_once': d['x'] if d['diurnal_done'] else d['x']+d['d'], 'catalog_from_geocentric': d['x']-d['a']-d['g'], 'geocentric_from_topocentric': d['x']+d['d']}
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = {1: [({'x': 10, 'a': 2, 'd': 3, 'g': 4, 'annual_done': False, 'diurnal_done': False}, {'geocentric_apparent': 16, 'topocentric_apparent': 19, 'annual_only_once': 12, 'diurnal_only_once': 13, 'catalog_from_geocentric': 4, 'geocentric_from_topocentric': 7}), ({'x': 10, 'a': 2, 'd': 3, 'g': 4, 'annual_done': True, 'diurnal_done': False}, {'geocentric_apparent': 16, 'topocentric_apparent': 19, 'annual_only_once': 10, 'diurnal_only_once': 13, 'catalog_from_geocentric': 4, 'geocentric_from_topocentric': 7}), ({'x': 10, 'a': 2, 'd': 3, 'g': 4, 'annual_done': False, 'diurnal_done': True}, {'geocentric_apparent': 16, 'topocentric_apparent': 19, 'annual_only_once': 12, 'diurnal_only_once': 10, 'catalog_from_geocentric': 4, 'geocentric_from_topocentric': 7}), ({'x': 10, 'a': 0, 'd': 0, 'g': 0, 'annual_done': False, 'diurnal_done': False}, {'geocentric_apparent': 10, 'topocentric_apparent': 10, 'annual_only_once': 10, 'diurnal_only_once': 10, 'catalog_from_geocentric': 10, 'geocentric_from_topocentric': 10}), ({'x': 10, 'a': -2, 'd': -1, 'g': 4, 'annual_done': False, 'diurnal_done': False}, {'geocentric_apparent': 12, 'topocentric_apparent': 11, 'annual_only_once': 8, 'diurnal_only_once': 9, 'catalog_from_geocentric': 8, 'geocentric_from_topocentric': 11}), ({'x': 10, 'a': 2, 'd': 3, 'g': 4, 'annual_done': True, 'diurnal_done': True}, {'geocentric_apparent': 16, 'topocentric_apparent': 19, 'annual_only_once': 10, 'diurnal_only_once': 10, 'catalog_from_geocentric': 4, 'geocentric_from_topocentric': 7})], 2: [({'x': 11, 'a': 2, 'd': 3, 'g': 4, 'annual_done': False, 'diurnal_done': False}, {'geocentric_apparent': 17, 'topocentric_apparent': 20, 'annual_only_once': 13, 'diurnal_only_once': 14, 'catalog_from_geocentric': 5, 'geocentric_from_topocentric': 8}), ({'x': 11, 'a': 2, 'd': 3, 'g': 4, 'annual_done': True, 'diurnal_done': False}, {'geocentric_apparent': 17, 'topocentric_apparent': 20, 'annual_only_once': 11, 'diurnal_only_once': 14, 'catalog_from_geocentric': 5, 'geocentric_from_topocentric': 8}), ({'x': 11, 'a': 2, 'd': 3, 'g': 4, 'annual_done': False, 'diurnal_done': True}, {'geocentric_apparent': 17, 'topocentric_apparent': 20, 'annual_only_once': 13, 'diurnal_only_once': 11, 'catalog_from_geocentric': 5, 'geocentric_from_topocentric': 8}), ({'x': 11, 'a': 0, 'd': 0, 'g': 0, 'annual_done': False, 'diurnal_done': False}, {'geocentric_apparent': 11, 'topocentric_apparent': 11, 'annual_only_once': 11, 'diurnal_only_once': 11, 'catalog_from_geocentric': 11, 'geocentric_from_topocentric': 11}), ({'x': 11, 'a': -2, 'd': -1, 'g': 4, 'annual_done': False, 'diurnal_done': False}, {'geocentric_apparent': 13, 'topocentric_apparent': 12, 'annual_only_once': 9, 'diurnal_only_once': 10, 'catalog_from_geocentric': 9, 'geocentric_from_topocentric': 12}), ({'x': 11, 'a': 2, 'd': 3, 'g': 4, 'annual_done': True, 'diurnal_done': True}, {'geocentric_apparent': 17, 'topocentric_apparent': 20, 'annual_only_once': 11, 'diurnal_only_once': 11, 'catalog_from_geocentric': 5, 'geocentric_from_topocentric': 8})], 3: [({'x': 12, 'a': 2, 'd': 3, 'g': 4, 'annual_done': False, 'diurnal_done': False}, {'geocentric_apparent': 18, 'topocentric_apparent': 21, 'annual_only_once': 14, 'diurnal_only_once': 15, 'catalog_from_geocentric': 6, 'geocentric_from_topocentric': 9}), ({'x': 12, 'a': 2, 'd': 3, 'g': 4, 'annual_done': True, 'diurnal_done': False}, {'geocentric_apparent': 18, 'topocentric_apparent': 21, 'annual_only_once': 12, 'diurnal_only_once': 15, 'catalog_from_geocentric': 6, 'geocentric_from_topocentric': 9}), ({'x': 12, 'a': 2, 'd': 3, 'g': 4, 'annual_done': False, 'diurnal_done': True}, {'geocentric_apparent': 18, 'topocentric_apparent': 21, 'annual_only_once': 14, 'diurnal_only_once': 12, 'catalog_from_geocentric': 6, 'geocentric_from_topocentric': 9}), ({'x': 12, 'a': 0, 'd': 0, 'g': 0, 'annual_done': False, 'diurnal_done': False}, {'geocentric_apparent': 12, 'topocentric_apparent': 12, 'annual_only_once': 12, 'diurnal_only_once': 12, 'catalog_from_geocentric': 12, 'geocentric_from_topocentric': 12}), ({'x': 12, 'a': -2, 'd': -1, 'g': 4, 'annual_done': False, 'diurnal_done': False}, {'geocentric_apparent': 14, 'topocentric_apparent': 13, 'annual_only_once': 10, 'diurnal_only_once': 11, 'catalog_from_geocentric': 10, 'geocentric_from_topocentric': 13}), ({'x': 12, 'a': 2, 'd': 3, 'g': 4, 'annual_done': True, 'diurnal_done': True}, {'geocentric_apparent': 18, 'topocentric_apparent': 21, 'annual_only_once': 12, 'diurnal_only_once': 12, 'catalog_from_geocentric': 6, 'geocentric_from_topocentric': 9})], 4: [({'x': 13, 'a': 2, 'd': 3, 'g': 4, 'annual_done': False, 'diurnal_done': False}, {'geocentric_apparent': 19, 'topocentric_apparent': 22, 'annual_only_once': 15, 'diurnal_only_once': 16, 'catalog_from_geocentric': 7, 'geocentric_from_topocentric': 10}), ({'x': 13, 'a': 2, 'd': 3, 'g': 4, 'annual_done': True, 'diurnal_done': False}, {'geocentric_apparent': 19, 'topocentric_apparent': 22, 'annual_only_once': 13, 'diurnal_only_once': 16, 'catalog_from_geocentric': 7, 'geocentric_from_topocentric': 10}), ({'x': 13, 'a': 2, 'd': 3, 'g': 4, 'annual_done': False, 'diurnal_done': True}, {'geocentric_apparent': 19, 'topocentric_apparent': 22, 'annual_only_once': 15, 'diurnal_only_once': 13, 'catalog_from_geocentric': 7, 'geocentric_from_topocentric': 10}), ({'x': 13, 'a': 0, 'd': 0, 'g': 0, 'annual_done': False, 'diurnal_done': False}, {'geocentric_apparent': 13, 'topocentric_apparent': 13, 'annual_only_once': 13, 'diurnal_only_once': 13, 'catalog_from_geocentric': 13, 'geocentric_from_topocentric': 13}), ({'x': 13, 'a': -2, 'd': -1, 'g': 4, 'annual_done': False, 'diurnal_done': False}, {'geocentric_apparent': 15, 'topocentric_apparent': 14, 'annual_only_once': 11, 'diurnal_only_once': 12, 'catalog_from_geocentric': 11, 'geocentric_from_topocentric': 14}), ({'x': 13, 'a': 2, 'd': 3, 'g': 4, 'annual_done': True, 'diurnal_done': True}, {'geocentric_apparent': 19, 'topocentric_apparent': 22, 'annual_only_once': 13, 'diurnal_only_once': 13, 'catalog_from_geocentric': 7, 'geocentric_from_topocentric': 10})], 5: [({'x': 14, 'a': 2, 'd': 3, 'g': 4, 'annual_done': False, 'diurnal_done': False}, {'geocentric_apparent': 20, 'topocentric_apparent': 23, 'annual_only_once': 16, 'diurnal_only_once': 17, 'catalog_from_geocentric': 8, 'geocentric_from_topocentric': 11}), ({'x': 14, 'a': 2, 'd': 3, 'g': 4, 'annual_done': True, 'diurnal_done': False}, {'geocentric_apparent': 20, 'topocentric_apparent': 23, 'annual_only_once': 14, 'diurnal_only_once': 17, 'catalog_from_geocentric': 8, 'geocentric_from_topocentric': 11}), ({'x': 14, 'a': 2, 'd': 3, 'g': 4, 'annual_done': False, 'diurnal_done': True}, {'geocentric_apparent': 20, 'topocentric_apparent': 23, 'annual_only_once': 16, 'diurnal_only_once': 14, 'catalog_from_geocentric': 8, 'geocentric_from_topocentric': 11}), ({'x': 14, 'a': 0, 'd': 0, 'g': 0, 'annual_done': False, 'diurnal_done': False}, {'geocentric_apparent': 14, 'topocentric_apparent': 14, 'annual_only_once': 14, 'diurnal_only_once': 14, 'catalog_from_geocentric': 14, 'geocentric_from_topocentric': 14}), ({'x': 14, 'a': -2, 'd': -1, 'g': 4, 'annual_done': False, 'diurnal_done': False}, {'geocentric_apparent': 16, 'topocentric_apparent': 15, 'annual_only_once': 12, 'diurnal_only_once': 13, 'catalog_from_geocentric': 12, 'geocentric_from_topocentric': 15}), ({'x': 14, 'a': 2, 'd': 3, 'g': 4, 'annual_done': True, 'diurnal_done': True}, {'geocentric_apparent': 20, 'topocentric_apparent': 23, 'annual_only_once': 14, 'diurnal_only_once': 14, 'catalog_from_geocentric': 8, 'geocentric_from_topocentric': 11})]}
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)

prompt:
The adapter reports an incorrect geocentric from topocentric while other fields remain valid.

Reduced astrometric place pipeline uses supplied additive corrections annual a, diurnal d, and deflection g. Catalog place x is uncorrected; geocentric apparent includes a+g; topocentric apparent additionally includes d. Inverse adapters must remove only corrections already included. No correction is physically calculated. Output fields are defined by: geocentric_apparent = d['x']+d['a']+d['g']; topocentric_apparent = d['x']+d['a']+d['g']+d['d']; annual_only_once = d['x'] if d['annual_done'] else d['x']+d['a']; diurnal_only_once = d['x'] if d['diurnal_done'] else d['x']+d['d']; catalog_from_geocentric = d['x']-d['a']-d['g']; geocentric_from_topocentric = d['x']-d['d']

split: open-access