One ShapePipe workflow for data and image sims
@martinkilbinger ci sta già lavorando.
Dal 12/9/2026.
Valutazione
Questa issue non è ancora stata valutata.
Descrizione
The image-sims ShapePipe run is a separate orchestrator (example/cfis_image_sims plus the *_canfar_v2.0.bash dispatcher, driven from sp_validation's image_sims.smk), and the config cleanup that came with the data workflow (#847, #852) has broken it: its default.* symlinks dangle and it selects mask configs that no longer exist. Meanwhile the Snakemake workflow (#852) does everything the sims need — chunked ngmix, node-local vignette staging, completeness checks, resume, the run report — and the sims get none of it.
Target: sims are a branch of the one workflow, not a sibling.
rules/image_sims.smkin the main tree. Two config keys select the branch:kind: data|sims(where the pixels come from and how they're named) andpsf_model: psfex|mccd|fake. They stay separate so sims can also run the real PSF chain once the star-injected grids exist.- The sims delta is small: a few
_simsini variants underworkflow/config/cfis/, one new rule (tile_fake_psf), andtile_uncompress/exp_psfskipped for sims. Everything else is the data DAG unchanged. - Each shear branch (
1z2z,1p2z, …) is one campaign: fivesp runs over the same sky with different input roots. sp_validation's sims workflow drives ShapePipe — its m-bias DAG callssp runper branch, then reads only the campaign products (#879'sfinal_cat_<campaign>.hdf5plus a run manifest), never ShapePipe's run tree. - The workflow runs on both nibi and candide.
- Gone:
example/cfis_image_sims, the bash dispatcher (after a deprecation release — they're packaged entry points), and sp_validation'sim_init/im_pipeline/im_mergewith their ShapePipe-internal config keys.
Steps — each becomes a sub-issue when we're ready to pick it up:
sp run --config-fileand a candide profile (shapepipe). No dependencies; this is the two-machine work.- #879 (in progress). The sims branch stacks on its
final_cat_merge. - The sims branch (shapepipe):
kind/psf_modelkeys,_simsini variants,tile_fake_psf, the two elided rules. Acceptance: one tile ofgrid_3throughsp run, compared against the existing catalogue. - The boundary (sp_validation): run manifest,
im_shapepipecallingsp runper branch,cat_configreading the manifest;im_init/im_pipeline/im_mergeand their keys removed. The comprehensive catalogue comes from the v2 hdf5 readers (CosmoStat/sp_validation#343) rather thanextract_info.py(CosmoStat/sp_validation#294). - Deprecate
example/cfis_image_simsand the bash dispatcher (shapepipe), one release later removal.
Supersedes the pipeline half of CosmoStat/sp_validation#284 / #285 / #287; related: #870, #885.
Rule table (data vs sims)
| Rule | data | sims | Parameterisation |
|---|---|---|---|
tile_get_images |
✓ | ✓ | config_tile_Git_{kind}.ini (INPUT_PATH, INPUT_FILE_PATTERN, INPUT_NUMBERING \d{3}\.\d{3} vs \d{3}-\d{3}, INPUT_FILE_EXT, OUTPUT_FILE_PATTERN). Plus a rule-side change: get_images_runner matches tile_numbers.txt, which unit_pre writes in dot format; sims need the dashed id, so unit_pre branches on kind (or exports a third var). Not ini-only. |
tile_uncompress |
✓ | — | Elided for sims (weights ship uncompressed); sims' Sx reads the weight from Git directly. Works because A's inis use fixed absolute INPUT_DIRs. Kills bit 2. |
tile_find_exposures |
✓ | ✓ | config_tile_Fe_{kind}.ini — not one ini. Verified diff: FILE_PATTERN CFIS_image→CFIS_simu_image, COLNUM 3→2, EXP_PREFIX p→simu_image-. Those two are FITS-HISTORY parsing facts, they define the tile↔exposure edge build_index.py consumes, and getting them wrong yields a wrong or empty exposure list silently. |
exp_get_images |
✓ | ✓ | config_exp_Gie_{kind}.ini (patterns + roots). |
exp_split |
✓ | ✓ | One ini; FILE_EXT → $SP_IMG_EXT. N_HDU = 40 identical. |
exp_psf |
✓ | only if psf_model != fake |
Unchanged for data (post-#888). A sims × psfex variant is a fourth ini — see §2.1. |
tile_fake_psf (new) |
— | only if psf_model == fake |
Tile-level, between tile_detect and tile_vignets. Must join the tile_shape group — fake_psf_runner writes galaxy_psf*.sqlite, the store ngmix reads at random per object per epoch, which is exactly what node-local NVMe staging exists for; outside the group it lands on NFS. Joining means inheriting the group's resource contract, and NGMIX_VIGNET_DIR hardcodes run_sp_tile_PiViVi, so any sims PiViVi variant keeps that RUN_NAME. |
tile_exp_forest, tile_merge_headers |
✓ | ✓ | Unchanged (config_tile_Mh_exp_{kind}.ini for WARN_MISSING_EXP/INPUT_DIR). |
tile_detect |
✓ | ✓ | config_tile_Sx_{kind}.ini (weight source, image pattern). |
tile_vignets |
✓ | ✓ | config_tile_PiViVi_{psf_model}.ini gains a fake variant (vignetmakers only). |
tile_ngmix |
✓ | ✓ | Both keys: PSF-source dir on psf_model, background inputs + BKG_SUB on kind. Chunking, ngmix_ranges.json, the tile_shape group apply unchanged — sims gain parallel ngmix, their compute bottleneck, for free. |
tile_merge_cats, tile_make_cat |
✓ | ✓ | config_tile_Mc.ini carries no psf suffix on the data side; sims' config_tile_Mc_psfex.ini folds into it. |
clean_exposure, clean_tile |
✓ | ✓ | Unchanged. |
final_cat_merge (#879) |
✓ | ✓ | Already the campaign-merge rule; sims inherit it. |
— Fable on behalf of Cail
- Lingua principale
- Python
- Stelle
- 18
- Fork
- 14
- Merge medio
- 8h 40m
- PR unite (30g)
- 10
Guida per i contributori
Apri la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di CosmoStat/shapepipe
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 84/100
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 78/100
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 55/100
Tutte le issue di CosmoStat/shapepipe
Issue simili
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
xinnan-tech/xiaozhi-fde-talk#263 ·
-
rules
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 90/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
huggingface/Repo2RLEnv#163 · 1 commento ·
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 95/100
huggingface/sentence-transformers#4074 ·
-
comp/dashboard invalid P3
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
NousResearch/hermes-agent#121143 ·