CoSE · NASA astromaterials

What NASA's astromaterials archives actually hold

ares-curation is a FAIR client for NASA's ARES/JSC catalogues — the Apollo lunar sample collection, the PDS archive of sample photographs, the ARES planetary-simulant table and Astromaterials 3D. It joins them on the sample number and reports which samples each one actually covers.

Source on GitHub · built for AstroRegolith

The coverage of 2,511 Apollo and Luna samples

1,581photographed
720compendium entry
1,495thin section
223D scanned

The archives do not cover the same material, and the material most relevant to growing plants is the least documented: soils are photographed at 25% (208 of 818) against 63% for the collection as a whole.

MissionSamplesPhotographed%
Apollo 11805771%
Apollo 12776483%
Apollo 1423416470%
Apollo 1548032768%
Apollo 1684456467%
Apollo 1775640554%
Luna 161500%
Luna 201500%
Luna 241000%

The Luna 16/20/24 samples (40 in total) have no photographs here because the PDS Apollo volumes do not cover them — an archive boundary, not a gap.

The gap lands on a real experiment

NASA's OSD-476 grew Arabidopsis thaliana in Apollo regolith, and its deposited metadata names the material to the split. Two of the three soils are photographed and have compendium entries. The third does not.

SampleMissionTypeReturned PristinityPhotosCompendium
10084Apollo 11Soil · Unsieved3830.0 g60.082%5yes
12070Apollo 12Soil · Unsieved1102.0 g80.235%44yes
70051Apollo 17Soil · <1 mm1438.0 g80.453%0no
Apollo 70051 cannot be seen. It has no entry in the PDS Apollo sample photograph archive and no Lunar Sample Compendium entry. Checked three ways before the absence was claimed: no key anywhere under the Apollo 17 PDS volume, a “No data available” result from NASA's own photo search, and HTTP 404 on its compendium PDF while 10084 and 12070 both return one.

Defects found in the published sources

These are corrected and recorded rather than silently normalised, and each is reproduced by a test in the repository.

The ARES simulant table mislabels a row

NASA's published table names this row “CSM-LHT-1”, repeating the row above it, while its photographs are all CSM-LMT-1.jpg and its Representative Planetary Surface reads “Lunar Mare”. The parser corrects it to CSM-LMT-1 and keeps the published name on the record.

Two PDS index labels disagree with their own data

Each PDS volume publishes its own manifest. Two of the six declare a row count their file does not contain, and one declares a record format it does not use:

VolumeIndexActual format Declared rowsParsed
A11VIS_0001INDEX.TABfixed2,5002,500—
A12VIS_0001INDEX.TABfixed5,1075,107—
A14VIS_0001INDEX.TABfixed4,5144,514—
A15VIS_0001IMGINDEX.TABcsv2,2268,950label disagrees
A16VIS_0001INDEX.TABfixed8,1788,176label disagrees
A17VIS_0001INDEX.TABfixed5,7135,713—

In both cases the file is internally consistent and the label is stale — demonstrated by reconciling each file's byte count against its parsed records, rather than asserted.

SAMPLE_ID is not always one sample

Some photographs show several samples ("10017, 10018, 10019, 10020") and some Apollo 15 records use a wildcard for a group ("154XX"). Multi-sample photographs are attributed to every sample they show; wildcards are kept out of the join rather than expanded into associations the archive never asserted. Getting this wrong under-counted photographed samples by 125.

Two rules the client keeps

A fetch either returns real bytes from NASA or raises. There is no synthetic fallback and no mock path; a test scans the source tree for the machinery such a fallback needs and fails if it appears.

Assert the operation changed something. Each step guards its postcondition — and that row-count guard is what caught the two archive defects above.

robots.txt

curator.jsc.nasa.gov/robots.txt is a blanket Disallow: /. NASA separately publishes REST APIs on that host for programmatic use, and those are the only paths this client calls there — it refuses anything else on that host. The compendium index is opt-in behind a flag, fetched once, and no PDF is ever mirrored: compendium entries are linked, not copied.