Viking GCMS Reanalysis

Data and code

Everything needed to reproduce the results: the decoded and calibrated data cubes, the analysis scripts, the reports and the working notes. The raw NSSDCA tapes, the 2019 recovered CSVs and the microfilm frames are in the GitHub repository.

Decoded data

Intensities are on one scale per lander, with the water full-scale clip equal to the microfilm value 7.90 × 1010 (see methods §5). These are the September 2026 (v2) cubes; the July cubes, which used an inconsistent per-run anchoring, are superseded.

Code

Reproduction order: verify_decode.py and probe_vl2.py (decode check), capstone.py cal (mass calibration), map_runids.py (run IDs; slow), decode_ibm_tape.py then batch_decode.py then make_clean_cube.py (cubes), temp_calib.py, final_discovery.py, sulfur_hunt.py, dh_rigorous.py (D/H budget), make_figures.py and make_report.py.

Reports and notes

Source data and repository

Citing

Handmer, C. (2026). Decoding, verification and calibrated reanalysis of the Viking Lander GCMS digital dataset, revision 2. viking.caseyhandmer.com. Please also cite Biemann et al. 1977 for the data and Guzman et al. 2018 for the chlorobenzene identification.