Begin outside the repository
Download the independent Python package and unpack it into a new directory. It contains original scientific programs, fixed scalar inputs, synthetic measurements and documentation. It contains no interactive Engine, original PDF or observed-star table. Verify its inventory before running a producer. Each output command requires a new filename, preserving earlier results for comparison.
python science/verify_package.py
python science/make_records.py --save-every .005 --output results/recordsReading: Independent one-zone chemical-evolution Python materials
Separate physical snapshots from birth integration
The first producer actually solves four specified histories. Its fourteen state fields follow gas, locked stellar mass, wind, and magnesium and iron inventories. Time is in gigayears and the mass scale corresponds to an initial billion solar masses. Full physical snapshots are stored every 0.05 gigayears; every 0.005-gigayear stellar birth interval is retained separately.
The reference producer solves again with tighter differential-equation tolerances and 0.0025-gigayear birth intervals. It computes the full fine trajectory in memory, then archives all fine birth groups, actual per-field maxima and a hash of that full fine record. It does not label an archive of maxima as an archive of the complete fine bulk arrays.
Positive four-point and eight-point Gaussian time integrals provide a separate check of the observation operator. They interpolate fine gas and element masses before taking logarithms, and use the analytic formation-rate weights. This checks the observation integration over that chemical solution; it is not a third independently solved galaxy model.
python science/make_reference.py --records results/records --output results/reference
python science/validate.py --records results/records --reference results/reference --output results/validation.jsonReading: Independent one-zone chemical-evolution Python materials
Read a failure before reading a pass
Earlier 0.02 and 0.01-gigayear birth intervals changed the per-star log densities by a mean absolute value up to 0.08499, exceeding the preregistered 0.01 gate. Inventory conservation passed, but the observation integral did not. That failure is retained.
With the same histories and declared error scenarios, the 0.005 versus 0.0025 comparison gives a maximum about 0.00549 in the finite synthetic and real-sample checks. Four-point to eight-point positive integration changes are of order a few parts in ten million. These are tests of those histories and scenarios, not a uniform certificate for every continuous formation history.
The validator also checks the normalized delay kernel, independent source integrals, an analytic gas solution, gas and element inventories, and mathematical wind and mixing controls. The output names each check and the calculation it tests; the finite-history scope is recorded with the result.
Reading: Independent one-zone chemical-evolution Python materials
Compare saved measurements with saved populations
The supplied file contains 96 original synthetic measurements. The comparison program receives neither their generating ages nor a truth label identifying a candidate. It calculates normalized two-dimensional mixture densities from the four saved birth distributions.
Each candidate is evaluated for three assumed correlations and for zero shift or a separate 0.1-dex shift in one model axis at a time. The measurements themselves are preserved. A fixed identifier rule reserves suffixes divisible by five: the synthetic sample has 77 training and 19 withheld measurements. This reproducible partition is not a coverage calibration. There is no parameter optimizer or posterior model probability in this four-candidate comparison.
python science/compare.py --records results/records --output results/synthetic-comparison.jsonReading: Independent one-zone chemical-evolution Python materials
Fetch and extract the exact source locally
The optional source is Hill and collaborators, arXiv:1812.01486v2. The named downloader checks the actual body size and SHA-256 and has no automatic retry, mirror or upload. An explicitly supplied matching cache can test the offline extraction path; that is not evidence of a new network fetch.
The extractor reads Table C5 in both layout and raw text modes. It requires the same 99 unique stellar identifiers and the same values in every extracted field. Ninety-six rows have finite iron abundance, magnesium-to-iron ratio and positive errors in both coordinates. The missing-value markers remain in the other three rows, leaving a complete local table of 99 stars.
python science/fetch_hill.py --output reader-private/hill-v2.pdf
python science/extract_hill.py --pdf reader-private/hill-v2.pdf --output reader-private/hill-observations.jsonReading: Hill et al., VLT/FLAMES high-resolution chemical abundances in Sculptor, arXiv:1812.01486v2 · Independent one-zone chemical-evolution Python materials
Keep the real-sample assumptions visible
The observing methods describe a central FLAMES field 25 arcminutes in diameter and upper red-giant targets brighter than -band magnitude 17.5, followed by membership and spectral-quality selection. A radius description in the conclusions differs from that wording. The observing-method definition supplies the selection description used here.
Birth-mass weighting is not a recovered present-day red-giant selection function. The paper also does not supply the full per-star covariance required for this two-coordinate comparison. The three correlations remain assumptions. The preceding chapter explains why shared iron errors can cause negative correlation, but does not manufacture a measured covariance for these stars.
The model solar fractions use the fixed VICE/Asplund convention. A numerical Hill-to-model solar-zero-point transformation has not been established here. We keep the original coordinates and display zero shift alongside separate model-axis sensitivity shifts. The same identifier rule splits the real 96 rows into 80 training and 16 withheld measurements. Scores under these assumptions are conditional descriptive densities, not calibrated likelihoods or uniquely recovered ages.
python science/compare.py --records results/records --data reader-private/hill-observations.json --output reader-private/hill-comparison.json
python science/make_reference.py --records results/records --real-data reader-private/hill-observations.json --output reader-private/reference-with-hillReading: Hill et al., VLT/FLAMES high-resolution chemical abundances in Sculptor, arXiv:1812.01486v2 · VICE v1.3.1 fixed effective yields and solar reference · Independent one-zone chemical-evolution Python materials
What to preserve for the next investigation
Keep the inputs, verified code inventory, four saved records and the validation and comparison outputs. They contain the inputs needed to recompute every reported score. Any observed-star plot should be produced locally from the extracted measurements; this public reader only displays original synthetic figures.
The useful next step is a testable red-giant selection model, shared abundance errors and an explicit solar-reference conversion. Those ingredients are needed to calibrate a comparison across a broader family of histories.
Reading: Independent one-zone chemical-evolution Python materials