Add resumable all-sky 2MASS acquisition

This commit is contained in:
wyj committed 2026-08-26 20:04:08 -04:00
1 parent 388055c01e
commit 747f8eb695
6 files changed
+362 -7

No files matched your search

+24
View File
@@ -50,5 +50,29 @@ python3 scripts/process_2mass_psc.py \
The resulting M44 CSV contains 7,802 sources after the documented three-band
photometry and `rd_flg` selection.
## Full-sky acquisition
`scripts/download_2mass_psc_all_sky.py` provides a resumable full-sky
acquisition without asking IRSA for a cone larger than 1 degree. Inspect its
storage plan before starting the long download:
```sh
python3 scripts/download_2mass_psc_all_sky.py --plan
python3 scripts/download_2mass_psc_all_sky.py --download --workers 2
```
It covers each latitude band with integer-RA cone sectors, wider at high
latitudes, while outputs are cleaned and retained by unique 1-degree RA/Dec
ownership cells. Cone overlap cannot create duplicate stars. Temporary raw
tables and cleaning intermediates are stored under `/tmp/2mass_psc_all_sky/`
and deleted after each successful cover. The generated full-sky catalogue has
one CSV per ownership cell under `processed/all_sky/`, named
`tile_raRRR_decDDD.csv`. `RRR` is
`floor(RA_deg mod 360)` and `DDD` is `min(179, floor(Dec_deg + 90))`; the
corresponding range is `[RRR, RRR+1) x [DDD-90, DDD-89)` degrees. It is
intentionally not a single CSV because that would duplicate a roughly 15--17
GiB result during merging.
See that directory's README for restart and raw-retention behavior.
Provenance: [IRSA Gator program interface](https://irsa.ipac.caltech.edu/docs/howto/gator_prog_interface.html),
[2MASS PSC column descriptions](https://irsa.ipac.caltech.edu/2MASS/download/allsky/format_psc.html).
+8 -5
View File
@@ -13,11 +13,14 @@ the source-sky direction.
## Quality selection
All three J/H/Ks magnitudes must be finite and every character of `rd_flg` must
be `1`, `2`, or `3`. These are the 2MASS default-magnitude origins that
generally indicate the best detections, photometry, and astrometry. Thus the
script rejects nondetections/upper limits (`0`), poor aperture photometry (`4`),
inconsistent band deblends (`6`), and missing brightness estimates (`9`).
RA/Dec must be finite and inside their ICRS ranges; all three J/H/Ks magnitudes
must be finite; and every character of `rd_flg` must be `1`, `2`, or `3`.
These are the 2MASS default-magnitude origins that generally indicate the best
detections, photometry, and astrometry. Thus the script rejects
nondetections/upper limits (`0`), poor aperture photometry (`4`), inconsistent
band deblends (`6`), and missing brightness estimates (`9`).
The IPAC literal `null` is treated as a missing numeric value, the same as a
blank field, and is therefore rejected by these finite-value checks.
## Two-parameter fit
+41
View File
@@ -0,0 +1,41 @@
# Full-sky 2MASS PSC output
This directory is generated, not versioned. Create it with:
```sh
python3 scripts/download_2mass_psc_all_sky.py --plan
python3 scripts/download_2mass_psc_all_sky.py --download --workers 2
```
The acquisition uses fixed final integer indices: `ra_index = 0..359` and
`dec_index = 0..179`. Each ownership cell is `[ra_index, ra_index + 1) x
[dec_index - 90, dec_index - 89)` in ICRS degrees, except that `dec_index=179`
also owns Dec `+90`. To avoid polar over-fetch, each latitude band is acquired
through wider integer-RA cover sectors. A cover owns a disjoint run of final
tiles and its one-degree cone contains every point it owns; cone overlap is
therefore discarded by ownership rather than a whole-sky de-duplication table.
Raw responses and cleaning intermediates are in `/tmp/2mass_psc_all_sky/` and
are deleted after each successful cover. `.done/` makes reruns resume after
completed final tiles.
Downloads stay serial to be considerate of IRSA, while `--workers N` cleans up
to `N` already-downloaded covers in parallel. The queue is bounded to `N`, so
temporary raw/intermediate storage cannot grow without bound. Start with
`--workers 2`; increase it only if CPU and `/tmp` headroom remain available.
Each atomic output CSV uses the renderer's four-column CSV format and has a
name such as `tile_ra129_dec109.csv`, which means RA `[129, 130)` and Dec
`[19, 20)` degrees. For any coordinate, use
`ra_index = floor(RA_deg mod 360)` and
`dec_index = min(179, floor(Dec_deg + 90))` to select the filename directly.
It applies the same three-band `rd_flg`/photometry selection and blackbody fit
as the sample processor. The downloader fails if an IRSA response reaches
`--outrows`, so crowded fields cannot be silently truncated. It deletes raw
tile tables after successful cleaning unless `--keep-raw` is passed.
The two existing fields imply roughly 15--17 GiB of cleaned CSV for the full
PSC. Their raw response rows imply 70--75 GiB if every source appeared once.
The cover grid uses substantially fewer cone areas than the old fixed-grid
fetcher, but retaining every overlapping raw response would still need roughly
190--210 GiB. The default bounded pipeline only needs up to `--workers` raw
responses and intermediates in addition to final output.