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
- clean_cube.npy — all 14 soil runs, calibrated, corrupt scans zeroed. Python pickle of a dict: run ID → (masses[204] = m/z 12–215, spectra[scans × 204], (lander, sample, oven °C, purge)). Load with
numpy.load(path, allow_pickle=True).item().9.4 MB - all_runs_calibrated.npy — the same cube before the corrupt-scan filter.9.4 MB
- run10039_calibrated.csv — run 10039 (the chlorobenzene run), one row per scan, columns m/z 12–215, lander scale; a
goodflag marks scans that pass the corrupt-scan filter.0.9 MB - viking_gcms_runs.csv — run table: run ID, lander, sample, oven temperature, purge, scan counts, source tape file.1 kB
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
- viking_gcms_scripts.zip — all analysis scripts (Python 3, NumPy, SciPy, Matplotlib, ReportLab). Paths inside assume the repository clone at
~/nvme-8tb-2/VikingGCMS/GCMS-decoding-effort; editREPO/RAW/CSVat the top of each script for your layout.62 kB
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
- Viking_GCMS_Reanalysis_Report_v2.pdf — technical report, revision 2 (7 September 2026), with the corrected D/H budget, temperature table and Figure 1.PDF
- Viking_GCMS_Reanalysis_Report_v1.pdf — the original 5 July 2026 report, kept unchanged for the record; superseded where the errata say so.0.6 MB
- RESULTS.md — the running results log from the analysis sessions, with the September corrections marked in place.17 kB
- viking_gcms_notes.zip — reconstruction notes, error-check notes and the results log.17 kB
Source data and repository
- github.com/CHandmer/GCMS-decoding-effort — fork with the raw
.PHYStapes, recovered CSVs, microfilm frames for run 10039, the 2019 decode notebooks and the v1 report. - github.com/marsviking/GCMS-decoding-effort — the community restoration project this work builds on.
- NSSDCA data set IDs PSPG-00072 (microfilm) and the digital folders 5289, 5631 (Viking 1), 5388, 5967 (Viking 2).
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.