Skip to main content
Sandbox Physics
Interstellar dust, infrared light and polarization

Interstellar dust · L3

Recompute a DustPedia infrared colour comparison

This tutorial produces a conditional colour comparison from actual galaxy photometry. You will fetch two named catalog rows and two small instrument files, check their identities, then fit one unchanged NGC4254 record. NGC0628 supplies a useful refusal: a positive flux with a major quality flag is not automatically suitable data.

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.py

Reading: 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.py

Reading: 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 Sν∝ν−1S_\nu\propto\nu^{-1}. The model integrates R(ν)ϵ(ν)Sν dνR(\nu)\epsilon(\nu)S_\nu\,d\nu 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 00, −1.7-1.7 and −2-2. 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 1.97×10−51.97\times10^{-5}. The original strict redundant-frequency-coordinate diagnostic fails at its stated target; using the alternative coordinate changes band predictions by only about 3.62×10−123.62\times10^{-12}. 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.py

Reading: 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 23.54 K23.54\,\mathrm K, 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-plots

Reading: 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

Exercises and explanations

  1. Your query SHA differs from an earlier reader’s, but only the two declared timestamp lines changed. What should the receipt report?

    Read the explanation

    It should report your actual raw SHA and the matching timestamp-normalized identity separately. Reusing the earlier raw SHA would be false. Any non-timestamp difference must fail the frozen identity check rather than being normalized away.

  2. A positive PACS flux has a major N flag. Can it be used as an ordinary clean point because the optimizer accepts it?

    Read the explanation

    No. The source marks it unsuitable for general use, independently of its sign or the optimizer. The tutorial retains the refusal. Minor flags require a separately justified conditional use; they are not equivalent to no flag.

Try the prediction

Follow the same dust from absorbed light to thermal emission

  1. Export a model cloud, then compare the meaning of its cell temperatures with the observer-frame colour parameters in your real-data output.
  2. Use a transparent and a shielded cloud to see why a mixture of temperatures can arise even before grain-size variations are added.
  3. Write three sentences naming the real tutorial’s input, model choice and strongest remaining degeneracy. Include one source-quality or response limitation.

Standalone scientific materials

Download the scientific ZIP · Read the setup and calculation scope

Download the local real-data plot script

The ZIP recomputes ten offline scientific steps. The optional real exercise fetches four fixed source files locally; its reader plot script generates figures from that saved record.

Sources and calculation scope

  1. Clark et al., DustPedia photometry, arXiv:1708.05335v1

    Sections 2.1.1, 3.5–3.7, 4, 6.3.1 and 7.1: HIPE 13, reference spectrum, matched apertures, source flags, already-included calibration errors and aperture correction. No source-image re-reduction or flag clearance is claimed.

  2. DustPedia aperture-photometry catalog J/A+A/609/A37

    Reader-local fixed NGC0628/NGC4254 queries through the official CfA VizieR mirror. Only declared query timestamps are excluded from the frozen identity. Raw and derived real tables are not redistributed while rights remain unresolved.

  3. Griffin et al., SPIRE photometer calibration, arXiv:1306.1778v1

    Sections 2–3 and 6, equations 1/8–12/18–25: energy response, reference spectrum and point/extended beam distinctions. Power-law beam scenarios are conditional approximations, not an exact native catalog beam.

  4. ESA SPIRE context 14.3 RSRF and aperture-efficiency products

    Exactly SPIRE_phot_RSRF_14_3.fits and SPIRE_phot_apertureEfficiency_14_3.fits, with fixed complete-file hashes. Context 14.3 differs from internal product versions 3 and 1. Reader fetch only; no uncleared response arrays are redistributed.

  5. Dust absorption, heat and polarization: standalone science

    MIT scientific code plus separately licensed CC0 native inputs. Ten genuinely recomputed offline steps, retained coarse-grid failures, independent volume/Planck references and optional first-network real exercise. The site supplement records a later successful real first acquisition; the frozen archive remains unchanged.

FeedbackSomething broken, confusing, or missing on this page?Tell us
What kind of feedback?

Sent with this page’s address, its Lab ID, the site language and your device type. Please leave out personal details. Feedback is kept for up to 12 months.Privacy policy