Skip to content

spsingularity/XDC

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

XDC — Cross-Depth measurement of correlated selection bias

Code and paper for "The observable dependence of correlated selection bias in JWST high-redshift galaxies: a model-independent cross-depth measurement" (draft in paper/xdc.pdf).

Survey depth is an exclusion restriction — a variable that changes detection but not the true property. This lets us measure, model-independently, how correlated selection bias propagates into every SED-inferred galaxy property, by comparing the same JADES galaxies imaged (degraded) to two depths and refitting the SED at each depth. The bias is strongly observable-dependent: for stellar mass it is small and negative (the high-$z$ mass function is buffered, not inflated), near the limit galaxies are biased younger/bluer/dust-poorer/higher-sSFR, and the sign of the mass bias flips at the Balmer break so it depends on the survey's selection band.

Layout

  • paper/ — LaTeX source (xdc.tex, xdc.bib), the two committed figures, and the built PDF
  • code/ — analysis scripts and requirements.txt
  • results/ — small *.npz outputs of the analysis, committed so the figures rebuild without data
  • data/ — where to obtain the public JADES catalogue (see data/README.md; *.fits are gitignored)

Quick start

One command rebuilds the figures from the committed results and compiles the PDF — no data download and no SED-fitting install needed:

./reproduce.sh          # -> paper/xdc.pdf   (needs only LaTeX + numpy/scipy/matplotlib)
./reproduce.sh all      # rerun the full eazy analysis first (needs the JADES catalogue + eazy)

Override the interpreter with PYTHON=/path/to/python ./reproduce.sh (e.g. a conda env with eazy).

Build the paper

The paper targets RAS Techniques and Instruments (RASTI); its class files (rasti.cls, rasti.bst) are bundled in paper/. The figures and their input results/*.npz are committed, so the paper builds with no data and no SED-fitting install:

cd paper && pdflatex xdc && bibtex xdc && pdflatex xdc && pdflatex xdc

To regenerate the figures from the committed results:

python3 code/make_figures.py         # reads results/*.npz -> paper/figs/*.pdf

Run the analysis

Requires Python ≥ 3.10 and eazy for the SED refitting:

pip install -r code/requirements.txt
python3 -c "import eazy; eazy.fetch_eazy_photoz()"     # one-time: fetch templates + filter curves

The real-data runners take the JADES catalogue path as their first argument (download instructions in data/README.md). Each writes a one-line summary; set XDC_SAVE=<file>.npz to persist the arrays the figures use. The estimator validation needs no data.

Reproducing the paper

Every number and figure is regenerated by one script:

Paper item Script Data
§2–3 matched-overlap estimator: null test + confounds, on mocks test_crossdepth_nulltest.py
§4.1 two-depth stellar-mass bias (net $-0.019$ dex; buffered) run_jades_mass_crossdepth.py JADES
§4.2 response spectrum across SED quantities (Table 1) run_jades_response_spectrum.py JADES
§4.3 mass-bias vs selection-band rest wavelength; Balmer-break flip (Fig. 2) run_jades_band_response.py (FSPS + XDC_TEMPL=…/tweak_spline.param) JADES
§4.4 UV-flux boost, the positive-sign contrast ($8.7\sigma$) run_jades_crossdepth.py JADES
Figures 1–2 make_figures.py (from results/*.npz)
Table 2 (forecast) analytic $N_{\rm pair}^{-1/2}$ scaling of the §4.1 measurement (see caption)

Example — regenerate the committed results:

CAT=data/jades_dr5_gds_phot.fits
XDC_SAVE=results/mass_matched.npz python3 code/run_jades_mass_crossdepth.py $CAT
XDC_SAVE=results/spectrum.npz     python3 code/run_jades_response_spectrum.py $CAT
XDC_SAVE=results/band_qsf.npz     python3 code/run_jades_band_response.py $CAT
EZ=$(python3 -c "import os,eazy;print(os.path.join(os.path.dirname(eazy.__file__),'data','eazy-photoz','templates'))")
XDC_TEMPL=$EZ/spline_templates_v2/tweak_spline.param XDC_SAVE=results/band_spline.npz \
  python3 code/run_jades_band_response.py $CAT

The runners are seeded, so reruns reproduce the committed numbers.

Citation

Archived on Zenodo: doi:10.5281/zenodo.21400942 (concept DOI — always resolves to the latest version). Metadata for citation managers is in CITATION.cff.

License

Code is under the MIT License (see LICENSE). The manuscript text and figures in paper/ (xdc.tex, xdc.pdf, figs/) are under CC-BY-4.0 (see paper/LICENSE). The bundled RASTI class files (rasti.cls, rasti.bst) are OUP/RAS property, redistributed only to allow the manuscript to compile.

About

A model-independent cross-depth consistency test for selection bias in the high-z galaxy mass/luminosity function

Resources

License

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors