Get the scientific package into an empty directory
Download dust-transfer-science-v1.zip from the materials below and extract it into an empty directory. Enter its dust-transfer-science folder. The archive contains newly written scientific code and complete licensed native model inputs; it contains no website Engine or real photometry table.
The first command below creates an isolated environment. Installing ordinary dependencies is a separate network step. The final command then actually computes ten scientific steps offline, including transfer, cooling, independent references and refinement checks. It does not load completed numerical results. Use a new extraction for another fresh replay because the script deliberately refuses a directory with existing results.
The frozen archive is 1,824,340 bytes, with SHA-256 4f77beb30dc9c53b74039ca64d6738e6c7047788710854b39efba0a94fb7a843. Its original README predates the later live-reader test; the setup supplement here records that later test without changing the archive’s scientific inputs.
python3 -m venv .venv
.venv/bin/python -m pip install -r requirements.txt
PYTHONDONTWRITEBYTECODE=1 .venv/bin/python replay.pyReading: Dust absorption, heat and polarization: standalone science
Make the first real-source request explicitly
The following is an additional online step, not part of the offline replay. It requests exactly NGC0628 and NGC4254 from the fixed DustPedia aperture-photometry table through the CfA VizieR mirror, plus the complete ESA context 14.3 SPIRE RSRF and aperture-efficiency files. The acquisition has a total response-body cap of 91,360 bytes and no fallback to a whole catalog, image or alternate product.
In the later live-reader test, these four requests received 85,612 bytes and passed the saved-source analysis. Two earlier attempts timed out before receiving any body bytes; those failures remain in the research record. If the archive is unavailable, the acquisition fails visibly and the analysis waits for the fixed source.
The catalog service inserts a query date. The reader records the actual raw SHA of your received response and validates a separate frozen identity that omits only its two declared query-timestamp lines. A changed flux, flag, column or any other metadata is not accepted as a harmless timestamp change. The ESA files are checked against complete fixed-byte hashes.
PYTHONDONTWRITEBYTECODE=1 .venv/bin/python scripts/astronomy/ac35/acquire_real_exercise.py --accept-first-network-acquisition
PYTHONDONTWRITEBYTECODE=1 .venv/bin/python scripts/astronomy/ac35/verify_reader_identity.pyReading: Clark et al., DustPedia photometry, arXiv:1708.05335v1 · DustPedia aperture-photometry catalog J/A+A/609/A37 · ESA SPIRE context 14.3 RSRF and aperture-efficiency products · Dust absorption, heat and polarization: standalone science
Inspect the observation before choosing a model
Read the locally saved acquisition receipt and native row. Check the galaxy name, instrument, nominal wavelength, flux in Jy, quoted error and quality flag together. A negative error in this catalog can indicate that only calibration uncertainty was available; it is not a usable negative Gaussian standard deviation.
NGC0628 has major PACS coverage flags. The attempted general-use five-band fit is refused and saved as a negative case. NGC4254 has three unflagged SPIRE entries and minor PACS coverage flags. Its clean three-band comparison is the main example; its five-band extension must retain the minor flags and monochromatic PACS approximation.
Clark’s photometry uses matched galaxy apertures with band-dependent point-spread broadening, background subtraction and aperture corrections. The published corrections are already in the fluxes. Sample-average correction percentages are not new multipliers to apply to these rows. Without source-image inspection, minor flags remain conditions on every use of these fluxes.
Reading: Clark et al., DustPedia photometry, arXiv:1708.05335v1
Audit the band convention
Run the two response checks below. SPIRE’s reference spectrum is . The model integrates and divides by the corresponding reference-spectrum integral. For the declared extended-map approximation, the same frequency-dependent beam factor must appear consistently in numerator and reference denominator.
The exercise compares beam powers , and . Zero is a point-response comparison; the others are extended-map approximations, not the exact original HIPE 13 beam. Context 14.3, internal RSRF product 3 and efficiency product 1 are distinct versions. Their availability does not prove exact equivalence to every catalog calibration detail.
Small negative estimated RSRF baseline samples are preserved. A positive-truncation sensitivity changes sampled band predictions by at most . The original strict redundant-frequency-coordinate diagnostic fails at its stated target; using the alternative coordinate changes band predictions by only about . Both facts are retained. Neither number measures real calibration uncertainty.
No PACS response was acquired. An exact five-band response calculation would need those missing curves. Here, the separately labeled PACS approximation is tested by band removal and model-gain scenarios.
PYTHONDONTWRITEBYTECODE=1 .venv/bin/python scripts/astronomy/ac35/audit_spire_response.py
PYTHONDONTWRITEBYTECODE=1 .venv/bin/python scripts/astronomy/ac35/verify_band_numerics.pyReading: Griffin et al., SPIRE photometer calibration, arXiv:1306.1778v1 · ESA SPIRE context 14.3 RSRF and aperture-efficiency products · Clark et al., DustPedia photometry, arXiv:1708.05335v1
Fit the same saved row and draw your own comparison
Run the fit command below. Its actual-saved-record.json preserves the input selected from the native row. conditional-comparison.json records response, fixed slope, covariance scenario, single-temperature result, positive two-temperature grid and explicit zero-amplitude boundary. Each scenario uses the same observations; simulated cloud data never replace them.
Download plot-dust-photometry.py from the materials below into this extracted directory, then run the second command. It reads only your locally generated JSON and grid arrays. It creates a band-flux comparison and a temperature-pair distance map under reader-plots. The plotted source values stay in your working directory; neither source rows nor their derived real-data figures are shipped in this site’s package.
For a worked reading, choose clean-SPIRE-extended-approximation-beta2-diagonal. Confirm the single colour parameter near , then compare the low- and intermediate-cold-temperature representative mixtures. Locate the output’s gridPairsWithinDistanceOneOfGridMinimum field. The broad set is a model-degeneracy display, not a confidence contour.
Now inspect twoComponentBestIncludingBoundary in a minor-PACS case. If the single-component boundary wins, the unused temperature is null and its amplitude zero. Compare that with the retained strictly positive grid: you should be able to explain why a discrete search was once slightly worse without claiming that a nested model is physically worse.
PYTHONDONTWRITEBYTECODE=1 .venv/bin/python scripts/astronomy/ac35/fit_real_photometry.py --output real-exercise-results
PYTHONDONTWRITEBYTECODE=1 .venv/bin/python plot-dust-photometry.py --results real-exercise-results --output reader-plotsReading: Dust absorption, heat and polarization: standalone science
Write a result that another person can evaluate
A useful result names the saved source identity, selected flags, fixed slope, beam approximation and covariance scenario. Report an observer-frame colour temperature and Jy normalization. No redshift or distance is fixed here, so do not convert them into a physical rest-frame temperature or dust mass.
Compare the slope, common-calibration and band-removal cases. Keep numerical quadrature errors separate from response-model choices and source-quality limitations. The adopted covariance scenarios are not a measured covariance matrix; a weighted distance is not a validated real-data probability.
The original tables and ESA response files are fetched locally because redistribution rights were not established. A successful query or an openly readable paper is not permission to republish those arrays. You can still reproduce the calculation from fixed named sources, with every acquisition and derived plot explicitly recorded.
Reading: Dust absorption, heat and polarization: standalone science · Clark et al., DustPedia photometry, arXiv:1708.05335v1 · Griffin et al., SPIRE photometer calibration, arXiv:1306.1778v1