pyreduce-astro 0.7a6__tar.gz → 0.7b1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/CHANGELOG.md +31 -0
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/CLAUDE.md +57 -3
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/PKG-INFO +2 -3
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/README.md +1 -1
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/examples/aj_example.py +43 -3
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/examples/crires_plus_example.py +3 -4
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/examples/custom_instrument_example.py +1 -1
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/examples/harpn_example.py +1 -1
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/examples/harps_example.py +1 -1
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/examples/harps_gridsearch.py +2 -2
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/examples/just_one_swath.py +1 -1
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/examples/jwst_miri_example.py +1 -1
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/examples/jwst_niriss_example.py +1 -1
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/examples/lick_apf_example.py +5 -5
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/examples/mcdonald_example.py +1 -1
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/examples/metis_ifu_example.py +1 -1
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/examples/metis_lss_example.py +1 -1
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/examples/micado_example.py +3 -3
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/examples/neid_example.py +1 -1
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/examples/nirspec_example.py +1 -1
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/examples/toes_example.py +3 -3
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/examples/uves_callfunc.py +1 -1
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/examples/uves_example.py +1 -1
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/examples/xshooter_example.py +2 -2
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyproject.toml +4 -2
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/__main__.py +136 -29
- pyreduce_astro-0.7b1/pyreduce/clib/build_extract.py +80 -0
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/configuration.py +20 -0
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/cwrappers.py +26 -40
- pyreduce_astro-0.7b1/pyreduce/datasets.py +190 -0
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/estimate_background_scatter.py +8 -8
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/extract.py +180 -181
- pyreduce_astro-0.7a6/pyreduce/extraction_width.py → pyreduce_astro-0.7b1/pyreduce/extraction_height.py +4 -4
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/instruments/common.py +36 -19
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/instruments/crires_plus.py +25 -0
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/instruments/jwst_niriss.py +2 -10
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/pipeline.py +1 -5
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/rectify.py +14 -14
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/reduce.py +93 -68
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/settings/settings_AJ.json +1 -1
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/settings/settings_ANDES.json +7 -7
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/settings/settings_CRIRES_PLUS.json +11 -13
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/settings/settings_HARPN.json +7 -7
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/settings/settings_HARPS.json +9 -8
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/settings/settings_JWST_MIRI.json +6 -6
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/settings/settings_JWST_NIRISS.json +6 -6
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/settings/settings_LICK_APF.json +12 -11
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/settings/settings_MCDONALD.json +6 -6
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/settings/settings_METIS_IFU.json +9 -9
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/settings/settings_METIS_LSS.json +9 -9
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/settings/settings_MICADO.json +9 -9
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/settings/settings_NEID.json +7 -7
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/settings/settings_NIRSPEC.json +6 -6
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/settings/settings_NTE.json +7 -7
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/settings/settings_UVES.json +4 -4
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/settings/settings_XSHOOTER.json +6 -6
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/settings/settings_pyreduce.json +12 -11
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/settings/settings_schema.json +25 -11
- pyreduce_astro-0.7b1/pyreduce/slit_curve.py +739 -0
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/uv.lock +132 -129
- pyreduce_astro-0.7a6/pyreduce/clib/build_extract.py +0 -75
- pyreduce_astro-0.7a6/pyreduce/datasets.py +0 -238
- pyreduce_astro-0.7a6/pyreduce/make_shear.py +0 -607
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/.gitattributes +0 -0
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/.gitignore +0 -0
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/.pre-commit-config.yaml +0 -0
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/.python-version +0 -0
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/.readthedocs.yaml +0 -0
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/AGENTS.md +0 -0
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/LICENSE +0 -0
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/hatch_build.py +0 -0
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/__init__.py +0 -0
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/cli.py +0 -0
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/clib/__init__.py +0 -0
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/clib/slit_func_2d_xi_zeta_bd.c +0 -0
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/clib/slit_func_2d_xi_zeta_bd.h +0 -0
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/clib/slit_func_bd.c +0 -0
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/clib/slit_func_bd.h +0 -0
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/clipnflip.py +0 -0
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/combine_frames.py +0 -0
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/continuum_normalization.py +0 -0
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/echelle.py +0 -0
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/instruments/__init__.py +0 -0
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/instruments/aj.py +0 -0
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/instruments/aj.yaml +0 -0
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/instruments/andes.py +0 -0
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/instruments/andes.yaml +0 -0
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/instruments/common.yaml +0 -0
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/instruments/crires_plus.yaml +0 -0
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/instruments/filters.py +0 -0
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/instruments/harpn.py +0 -0
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/instruments/harpn.yaml +0 -0
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/instruments/harps.py +0 -0
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/instruments/harps.yaml +0 -0
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/instruments/instrument_info.py +0 -0
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/instruments/jwst_miri.py +0 -0
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/instruments/jwst_miri.yaml +0 -0
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/instruments/jwst_niriss.yaml +0 -0
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/instruments/lick_apf.py +0 -0
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/instruments/lick_apf.yaml +0 -0
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/instruments/mcdonald.py +0 -0
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/instruments/mcdonald.yaml +0 -0
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/instruments/metis_ifu.py +0 -0
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/instruments/metis_ifu.yaml +0 -0
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/instruments/metis_lss.py +0 -0
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/instruments/metis_lss.yaml +0 -0
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/instruments/micado.py +0 -0
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/instruments/micado.yaml +0 -0
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/instruments/models.py +0 -0
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/instruments/neid.py +0 -0
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/instruments/neid.yaml +0 -0
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/instruments/nirspec.py +0 -0
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/instruments/nirspec.yaml +0 -0
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/instruments/nte.py +0 -0
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/instruments/nte.yaml +0 -0
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/instruments/uves.py +0 -0
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/instruments/uves.yaml +0 -0
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/instruments/xshooter.py +0 -0
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/instruments/xshooter.yaml +0 -0
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/masks/mask_crires_plus_det1.fits.gz +0 -0
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/masks/mask_crires_plus_det2.fits.gz +0 -0
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/masks/mask_crires_plus_det3.fits.gz +0 -0
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/masks/mask_ctio_chiron.fits.gz +0 -0
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/masks/mask_elodie.fits.gz +0 -0
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/masks/mask_feros3.fits.gz +0 -0
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/masks/mask_flames_giraffe.fits.gz +0 -0
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/masks/mask_harps_blue.fits.gz +0 -0
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/masks/mask_harps_red.fits.gz +0 -0
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/masks/mask_hds_blue.fits.gz +0 -0
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/masks/mask_hds_red.fits.gz +0 -0
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/masks/mask_het_hrs_2x5.fits.gz +0 -0
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/masks/mask_jwst_miri_lrs_slitless.fits.gz +0 -0
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/masks/mask_jwst_niriss_gr700xd.fits.gz +0 -0
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/masks/mask_lick_apf_.fits.gz +0 -0
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/masks/mask_mcdonald.fits.gz +0 -0
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/masks/mask_nes.fits.gz +0 -0
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/masks/mask_nirspec_nirspec.fits.gz +0 -0
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/masks/mask_sarg.fits.gz +0 -0
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/masks/mask_sarg_2x2a.fits.gz +0 -0
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/masks/mask_sarg_2x2b.fits.gz +0 -0
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/masks/mask_subaru_hds_red.fits.gz +0 -0
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/masks/mask_uves_blue.fits.gz +0 -0
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/masks/mask_uves_blue_binned_2_2.fits.gz +0 -0
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/masks/mask_uves_middle.fits.gz +0 -0
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/masks/mask_uves_middle_2x2_split.fits.gz +0 -0
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/masks/mask_uves_middle_binned_2_2.fits.gz +0 -0
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/masks/mask_uves_red.fits.gz +0 -0
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/masks/mask_uves_red_2x2.fits.gz +0 -0
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/masks/mask_uves_red_2x2_split.fits.gz +0 -0
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/masks/mask_uves_red_binned_2_2.fits.gz +0 -0
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/masks/mask_xshooter_nir.fits.gz +0 -0
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/tools/__init__.py +0 -0
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/tools/combine.py +0 -0
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/trace.py +0 -0
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/util.py +0 -0
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/wavecal/MICADO_HK_3arcsec_chip5.npz +0 -0
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/wavecal/atlas/thar.fits +0 -0
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/wavecal/atlas/thar_list.txt +0 -0
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/wavecal/atlas/une.fits +0 -0
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/wavecal/convert.py +0 -0
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/wavecal/crires_plus_J1228_det1.npz +0 -0
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/wavecal/crires_plus_J1228_det2.npz +0 -0
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/wavecal/crires_plus_J1228_det3.npz +0 -0
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/wavecal/harpn_harpn_2D.npz +0 -0
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/wavecal/harps_blue_2D.npz +0 -0
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/wavecal/harps_blue_pol_2D.npz +0 -0
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/wavecal/harps_red_2D.npz +0 -0
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/wavecal/harps_red_pol_2D.npz +0 -0
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/wavecal/mcdonald.npz +0 -0
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/wavecal/metis_lss_l_2D.npz +0 -0
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/wavecal/metis_lss_m_2D.npz +0 -0
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/wavecal/nirspec_K2.npz +0 -0
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/wavecal/uves_blue_360nm_2D.npz +0 -0
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/wavecal/uves_blue_390nm_2D.npz +0 -0
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/wavecal/uves_blue_437nm_2D.npz +0 -0
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/wavecal/uves_middle_2x2_2D.npz +0 -0
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/wavecal/uves_middle_565nm_2D.npz +0 -0
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/wavecal/uves_middle_580nm_2D.npz +0 -0
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/wavecal/uves_middle_600nm_2D.npz +0 -0
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/wavecal/uves_middle_665nm_2D.npz +0 -0
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/wavecal/uves_middle_860nm_2D.npz +0 -0
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/wavecal/uves_red_580nm_2D.npz +0 -0
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/wavecal/uves_red_600nm_2D.npz +0 -0
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/wavecal/uves_red_665nm_2D.npz +0 -0
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/wavecal/uves_red_760nm_2D.npz +0 -0
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/wavecal/uves_red_860nm_2D.npz +0 -0
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/wavecal/xshooter_nir.npz +0 -0
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/wavelength_calibration.py +0 -0
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/tools/argon.line +0 -0
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/tools/bpm_creator.py +0 -0
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/tools/create_wavelength_guess.py +0 -0
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/tools/download_files.py +0 -0
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/tools/ipy_startup.py +0 -0
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/tools/neon.lin +0 -0
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/tools/neon.line +0 -0
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/tools/pymultispec.py +0 -0
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/tools/thar.npz +0 -0
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/tools/wavecal_creator.py +0 -0
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/tools/wavecal_creator_from_existing.py +0 -0
- {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/tools/xshooter_nir.json +0 -0
|
@@ -1,6 +1,37 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
3
|
|
|
4
|
+
## [0.7b1] - 2026-01-06
|
|
5
|
+
|
|
6
|
+
### Changed
|
|
7
|
+
- **Curvature algorithm rewrite**: Replace 2D model fitting with row-tracking method for better robustness
|
|
8
|
+
- Rename `make_shear.py` to `slit_curve.py`
|
|
9
|
+
- Rename curvature coefficients: `tilt`/`shear` → `p1`/`p2` throughout codebase
|
|
10
|
+
- Rename `arc_extraction` to `simple_extraction`
|
|
11
|
+
- Split curvature `extraction_height` into separate `extraction_height` and `curve_height` parameters
|
|
12
|
+
- Save file renamed from `.shear.npz` to `.curve.npz`
|
|
13
|
+
|
|
14
|
+
### Added
|
|
15
|
+
- `discover_channels()` for automatic channel detection from data files
|
|
16
|
+
- CLI: `--target` is now optional; loops over all targets if not specified
|
|
17
|
+
- CLI: Uses `$REDUCE_DATA` for base_dir, reads default input_dir from config
|
|
18
|
+
- Comprehensive CLI test coverage
|
|
19
|
+
|
|
20
|
+
### Fixed
|
|
21
|
+
- Curvature step index error when traces are removed during processing
|
|
22
|
+
- Validate base_dir and input_dir exist with clear error messages
|
|
23
|
+
- File sorting to correctly loop over all nights when not specified
|
|
24
|
+
- CLI dynamic dependency loading for step commands
|
|
25
|
+
|
|
26
|
+
## [0.7a7] - 2026-01-04
|
|
27
|
+
|
|
28
|
+
### Added
|
|
29
|
+
- `--settings` option for CLI to override reduction parameters from JSON file
|
|
30
|
+
|
|
31
|
+
### Changed
|
|
32
|
+
- Rename `extraction_width` to `extraction_height` in settings (clarifies coordinate system)
|
|
33
|
+
- Rename `orders` to `traces` in extract.py internal API
|
|
34
|
+
|
|
4
35
|
## [0.7a6] - 2026-01-03
|
|
5
36
|
|
|
6
37
|
### Added
|
|
@@ -54,6 +54,16 @@ pyreduce/
|
|
|
54
54
|
└── slit_func_2d_xi_zeta_bd.c
|
|
55
55
|
```
|
|
56
56
|
|
|
57
|
+
## Image Coordinate Convention
|
|
58
|
+
|
|
59
|
+
PyReduce uses the convention that **dispersion runs horizontally (along x-axis)** and **cross-dispersion runs vertically (along y-axis)**. The `clipnflip()` function in `instruments/common.py` rotates and flips raw images to ensure this orientation.
|
|
60
|
+
|
|
61
|
+
This means:
|
|
62
|
+
- **Columns (x)** = wavelength/dispersion direction
|
|
63
|
+
- **Rows (y)** = spatial/cross-dispersion direction
|
|
64
|
+
- **Traces** are polynomial functions of x, giving y-position
|
|
65
|
+
- **`extraction_height`** refers to pixels above/below each trace (in y)
|
|
66
|
+
|
|
57
67
|
## Pipeline Steps
|
|
58
68
|
|
|
59
69
|
The reduction pipeline consists of these steps (in typical order):
|
|
@@ -64,7 +74,7 @@ The reduction pipeline consists of these steps (in typical order):
|
|
|
64
74
|
| `bias` | `Bias` | Combine bias frames into master bias |
|
|
65
75
|
| `flat` | `Flat` | Combine flat frames, subtract bias |
|
|
66
76
|
| `trace` | `OrderTracing` | Trace echelle order positions on flat |
|
|
67
|
-
| `curvature` | `SlitCurvatureDetermination` | Measure slit
|
|
77
|
+
| `curvature` | `SlitCurvatureDetermination` | Measure slit curvature from arc lamp |
|
|
68
78
|
| `scatter` | `BackgroundScatter` | Model inter-order scattered light |
|
|
69
79
|
| `norm_flat` | `NormalizeFlatField` | Normalize flat, extract blaze function |
|
|
70
80
|
| `wavecal_master` | `WavelengthCalibrationMaster` | Extract wavelength calibration spectrum |
|
|
@@ -145,7 +155,7 @@ Defines HOW to reduce - algorithm parameters per step:
|
|
|
145
155
|
"filter_size": 120
|
|
146
156
|
},
|
|
147
157
|
"norm_flat": {
|
|
148
|
-
"
|
|
158
|
+
"extraction_height": 0.5,
|
|
149
159
|
"smooth_slitfunction": 1,
|
|
150
160
|
"oversampling": 10
|
|
151
161
|
},
|
|
@@ -156,7 +166,7 @@ Defines HOW to reduce - algorithm parameters per step:
|
|
|
156
166
|
},
|
|
157
167
|
"science": {
|
|
158
168
|
"extraction_method": "optimal",
|
|
159
|
-
"
|
|
169
|
+
"extraction_height": 0.5,
|
|
160
170
|
"oversampling": 10
|
|
161
171
|
}
|
|
162
172
|
}
|
|
@@ -250,12 +260,16 @@ uv run reduce list-steps
|
|
|
250
260
|
|
|
251
261
|
```bash
|
|
252
262
|
uv sync # Install dependencies
|
|
263
|
+
uv run reduce-build # Compile C extensions
|
|
264
|
+
uv run reduce-clean # Remove compiled extensions
|
|
253
265
|
uv run pre-commit install # Setup hooks (once)
|
|
254
266
|
uv run pytest -m unit # Fast unit tests
|
|
255
267
|
uv run pytest --instrument=UVES # Test single instrument
|
|
256
268
|
uv run ruff check --fix . # Lint and fix
|
|
257
269
|
```
|
|
258
270
|
|
|
271
|
+
After a fresh clone or `rm -rf .venv`, run `uv sync && uv run reduce-build` to set up.
|
|
272
|
+
|
|
259
273
|
### Adding Instruments
|
|
260
274
|
|
|
261
275
|
1. Create `pyreduce/instruments/name.yaml` with detector/header config
|
|
@@ -283,3 +297,43 @@ uv run ruff check --fix . # Lint and fix
|
|
|
283
297
|
| `pyreduce/instruments/models.py` | Pydantic config models |
|
|
284
298
|
| `pyreduce/clib/*.c` | C code for slit function decomposition |
|
|
285
299
|
| `hatch_build.py` | CFFI extension build hook |
|
|
300
|
+
|
|
301
|
+
## Release Process
|
|
302
|
+
|
|
303
|
+
To release a new version (e.g., `0.7a6`):
|
|
304
|
+
|
|
305
|
+
1. **Update documentation** for any renamed steps, new CLI options, etc:
|
|
306
|
+
- `README.md` - Quick start examples
|
|
307
|
+
- `docs/cli.md` - CLI reference
|
|
308
|
+
- `docs/index.md`, `docs/howto.md`, `docs/examples.md` - Usage examples
|
|
309
|
+
- `docs/configuration_file.md` - Config key names
|
|
310
|
+
|
|
311
|
+
2. **Update CHANGELOG.md** with release date and changes
|
|
312
|
+
|
|
313
|
+
3. **Update version** in `pyproject.toml`
|
|
314
|
+
|
|
315
|
+
3a. **sync** - run `uv sync` to get the new version into uv.lock
|
|
316
|
+
|
|
317
|
+
4. **Update example headers** - all `examples/*.py` have PEP 723 metadata:
|
|
318
|
+
```python
|
|
319
|
+
# /// script
|
|
320
|
+
# dependencies = ["pyreduce-astro>=0.7a6"]
|
|
321
|
+
# ///
|
|
322
|
+
```
|
|
323
|
+
|
|
324
|
+
5. **Commit, tag, and push**:
|
|
325
|
+
```bash
|
|
326
|
+
git add -A && git commit -m "Release v0.7a6"
|
|
327
|
+
git tag v0.7a6
|
|
328
|
+
git push && git push --tags
|
|
329
|
+
```
|
|
330
|
+
|
|
331
|
+
6. **Monitor GitHub Actions** - the tag push triggers:
|
|
332
|
+
- Tests on Python 3.13
|
|
333
|
+
- Wheel builds (Linux, Windows, macOS)
|
|
334
|
+
- PyPI upload
|
|
335
|
+
- GitHub Release creation
|
|
336
|
+
|
|
337
|
+
```bash
|
|
338
|
+
gh run watch # watch the triggered workflow
|
|
339
|
+
```
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: pyreduce-astro
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.7b1
|
|
4
4
|
Summary: A data reduction package for echelle spectrographs
|
|
5
5
|
Project-URL: Homepage, https://github.com/ivh/PyReduce
|
|
6
6
|
Project-URL: Documentation, https://pyreduce-astro.readthedocs.io
|
|
@@ -37,7 +37,6 @@ Requires-Dist: scikit-image>=0.22.0
|
|
|
37
37
|
Requires-Dist: scipy>=1.11.0
|
|
38
38
|
Requires-Dist: spectres>=2.2.0
|
|
39
39
|
Requires-Dist: tqdm>=4.66.0
|
|
40
|
-
Requires-Dist: wget>=3.2
|
|
41
40
|
Description-Content-Type: text/markdown
|
|
42
41
|
|
|
43
42
|
[](https://github.com/ivh/PyReduce/actions/workflows/python-publish.yml)
|
|
@@ -101,4 +100,4 @@ Full documentation at [ReadTheDocs](https://pyreduce-astro.readthedocs.io/).
|
|
|
101
100
|
|
|
102
101
|
## Output
|
|
103
102
|
|
|
104
|
-
PyReduce creates `.
|
|
103
|
+
PyReduce creates `.fits` files (standard FITS with binary table extension). Headers include original keywords plus PyReduce-specific ones prefixed with `e_`.
|
|
@@ -59,4 +59,4 @@ Full documentation at [ReadTheDocs](https://pyreduce-astro.readthedocs.io/).
|
|
|
59
59
|
|
|
60
60
|
## Output
|
|
61
61
|
|
|
62
|
-
PyReduce creates `.
|
|
62
|
+
PyReduce creates `.fits` files (standard FITS with binary table extension). Headers include original keywords plus PyReduce-specific ones prefixed with `e_`.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# /// script
|
|
2
2
|
# requires-python = ">=3.13"
|
|
3
|
-
# dependencies = ["pyreduce-astro>=0.
|
|
3
|
+
# dependencies = ["pyreduce-astro>=0.7b1"]
|
|
4
4
|
# ///
|
|
5
5
|
"""
|
|
6
6
|
AJ instrument example: Fiber bundle tracing with direct function calls.
|
|
@@ -26,6 +26,7 @@ import os
|
|
|
26
26
|
|
|
27
27
|
import numpy as np
|
|
28
28
|
|
|
29
|
+
from pyreduce.extract import extract
|
|
29
30
|
from pyreduce.instruments.instrument_info import load_instrument
|
|
30
31
|
from pyreduce.trace import group_and_refit, merge_traces, trace
|
|
31
32
|
|
|
@@ -41,6 +42,7 @@ orders_file = os.path.join(raw_dir, "ANDES_75fibre_J_orders.npz")
|
|
|
41
42
|
# Output
|
|
42
43
|
output_dir = os.path.expanduser("~/REDUCE_DATA/AJ/reduced")
|
|
43
44
|
output_file = os.path.join(output_dir, "fiber_traces.npz")
|
|
45
|
+
output_blaze = os.path.join(output_dir, "fiber_blaze.npz")
|
|
44
46
|
|
|
45
47
|
# Load order centers from npz file
|
|
46
48
|
orders_data = np.load(orders_file)
|
|
@@ -65,7 +67,7 @@ trace_params = {
|
|
|
65
67
|
"border_width": 0,
|
|
66
68
|
"manual": False,
|
|
67
69
|
"auto_merge_threshold": 1.0,
|
|
68
|
-
"merge_min_threshold": 0.
|
|
70
|
+
"merge_min_threshold": 1.0, # 1.0 disables merging entirely
|
|
69
71
|
"sigma": 0,
|
|
70
72
|
"plot": 1,
|
|
71
73
|
}
|
|
@@ -90,6 +92,10 @@ print(f" Shape: {img_even.shape}, dtype: {img_even.dtype}")
|
|
|
90
92
|
print(f"Loading {file_odd}...")
|
|
91
93
|
img_odd, head_odd = instrument.load_fits(file_odd, channel=channel, extension=0)
|
|
92
94
|
|
|
95
|
+
# Combine even and odd flats for extraction
|
|
96
|
+
img_combined = img_even.astype(np.float64) + img_odd.astype(np.float64)
|
|
97
|
+
print(f"Combined flat shape: {img_combined.shape}")
|
|
98
|
+
|
|
93
99
|
# --- Step 2: Trace each flat independently ---
|
|
94
100
|
print("\nTracing even-illuminated fibers...")
|
|
95
101
|
traces_even, cr_even = trace(
|
|
@@ -166,4 +172,38 @@ else:
|
|
|
166
172
|
save_dict["column_range"] = all_cr
|
|
167
173
|
|
|
168
174
|
np.savez(output_file, **save_dict)
|
|
169
|
-
print(f"\nSaved to: {output_file}")
|
|
175
|
+
print(f"\nSaved traces to: {output_file}")
|
|
176
|
+
|
|
177
|
+
# --- Step 6: Extract spectra from all fiber traces ---
|
|
178
|
+
# Flatten all traces into a single orders array for extraction
|
|
179
|
+
all_traces = np.vstack([traces_by_order[k] for k in sorted(traces_by_order.keys())])
|
|
180
|
+
all_cr = np.vstack([cr_by_order[k] for k in sorted(cr_by_order.keys())])
|
|
181
|
+
print(f"\nExtracting {len(all_traces)} fiber traces...")
|
|
182
|
+
|
|
183
|
+
# Extraction parameters
|
|
184
|
+
extract_params = {
|
|
185
|
+
"extraction_height": 0.5,
|
|
186
|
+
"lambda_sf": 0.1, # smooth_slitfunction
|
|
187
|
+
"lambda_sp": 0, # smooth_spectrum
|
|
188
|
+
"osample": 10, # oversampling
|
|
189
|
+
"swath_width": 200,
|
|
190
|
+
"plot": 1,
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
norm, spec, blaze, unc = extract(
|
|
194
|
+
img_combined,
|
|
195
|
+
all_traces,
|
|
196
|
+
column_range=all_cr,
|
|
197
|
+
extraction_type="normalize",
|
|
198
|
+
gain=1.0,
|
|
199
|
+
readnoise=0.0,
|
|
200
|
+
dark=0.0,
|
|
201
|
+
**extract_params,
|
|
202
|
+
)
|
|
203
|
+
|
|
204
|
+
print(f" Extracted blaze shape: {blaze.shape}")
|
|
205
|
+
print(f" Normalized flat shape: {norm.shape}")
|
|
206
|
+
|
|
207
|
+
# Save extraction results
|
|
208
|
+
np.savez(output_blaze, blaze=blaze, norm=norm, spec=spec, unc=unc)
|
|
209
|
+
print(f"Saved blaze to: {output_blaze}")
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# /// script
|
|
2
2
|
# requires-python = ">=3.13"
|
|
3
|
-
# dependencies = ["pyreduce-astro>=0.
|
|
3
|
+
# dependencies = ["pyreduce-astro>=0.7b1"]
|
|
4
4
|
# ///
|
|
5
5
|
"""
|
|
6
6
|
Simple usage example for PyReduce
|
|
@@ -21,14 +21,14 @@ steps = (
|
|
|
21
21
|
# "bias",
|
|
22
22
|
# "flat",
|
|
23
23
|
# "trace",
|
|
24
|
-
|
|
24
|
+
"curvature",
|
|
25
25
|
# "scatter",
|
|
26
26
|
# "norm_flat",
|
|
27
27
|
# "wavecal_master",
|
|
28
28
|
# "wavecal_init",
|
|
29
29
|
# "wavecal",
|
|
30
30
|
# "freq_comb_master",
|
|
31
|
-
"freq_comb",
|
|
31
|
+
# "freq_comb",
|
|
32
32
|
# "science",
|
|
33
33
|
# "continuum",
|
|
34
34
|
# "finalize",
|
|
@@ -48,6 +48,5 @@ Pipeline.from_instrument(
|
|
|
48
48
|
base_dir=base_dir,
|
|
49
49
|
input_dir=input_dir,
|
|
50
50
|
output_dir=output_dir,
|
|
51
|
-
allow_calibration_only=True,
|
|
52
51
|
# order_range=(0, 4),
|
|
53
52
|
).run()
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# /// script
|
|
2
2
|
# requires-python = ">=3.13"
|
|
3
|
-
# dependencies = ["pyreduce-astro>=0.
|
|
3
|
+
# dependencies = ["pyreduce-astro>=0.7b1"]
|
|
4
4
|
# ///
|
|
5
5
|
import os.path
|
|
6
6
|
|
|
@@ -71,7 +71,7 @@ kwargs_comb["nstep"] = 0
|
|
|
71
71
|
kwargs["plot"] = False
|
|
72
72
|
|
|
73
73
|
|
|
74
|
-
for key in ["extraction_method", "
|
|
74
|
+
for key in ["extraction_method", "extraction_height", "extraction_cutoff"]:
|
|
75
75
|
del kwargs_comb[key]
|
|
76
76
|
del kwargs[key]
|
|
77
77
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# /// script
|
|
2
2
|
# requires-python = ">=3.13"
|
|
3
|
-
# dependencies = ["pyreduce-astro>=0.
|
|
3
|
+
# dependencies = ["pyreduce-astro>=0.7b1"]
|
|
4
4
|
# ///
|
|
5
5
|
"""
|
|
6
6
|
Simple usage example for PyReduce
|
|
@@ -17,9 +17,9 @@ night = None
|
|
|
17
17
|
channel = ""
|
|
18
18
|
steps = (
|
|
19
19
|
"bias",
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
20
|
+
"flat",
|
|
21
|
+
"trace",
|
|
22
|
+
"norm_flat",
|
|
23
23
|
# "wavecal",
|
|
24
24
|
# "curvature",
|
|
25
25
|
"science",
|
|
@@ -42,5 +42,5 @@ Pipeline.from_instrument(
|
|
|
42
42
|
input_dir=input_dir,
|
|
43
43
|
output_dir=output_dir,
|
|
44
44
|
# order_range=(0, 25),
|
|
45
|
-
plot=
|
|
45
|
+
plot=1,
|
|
46
46
|
).run()
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# /// script
|
|
2
2
|
# requires-python = ">=3.13"
|
|
3
|
-
# dependencies = ["pyreduce-astro>=0.
|
|
3
|
+
# dependencies = ["pyreduce-astro>=0.7b1"]
|
|
4
4
|
# ///
|
|
5
5
|
"""
|
|
6
6
|
Simple usage example for PyReduce
|
|
@@ -48,11 +48,11 @@ config = pyreduce.configuration.get_configuration_for_instrument(instrument)
|
|
|
48
48
|
|
|
49
49
|
|
|
50
50
|
# config["trace"]["noise"] = 100
|
|
51
|
-
# config["curvature"]["
|
|
51
|
+
# config["curvature"]["extraction_height"] = 350 # curvature can still be improved with this and the following parameters
|
|
52
52
|
# config["curvature"]["peak_threshold"] =10
|
|
53
53
|
# config["curvature"]["peak_width"] =2 #CHECK 6 also works and detects one less line
|
|
54
54
|
# config["curvature"]["window_width"] = 5
|
|
55
|
-
# config["wavecal"]["
|
|
55
|
+
# config["wavecal"]["extraction_height"] = 350
|
|
56
56
|
|
|
57
57
|
# NOTE: micado.thar_master.fits (created and controlled by wavecal_master) is NOT overwritten if any parameter in the steps in or before it are changed. Thus it has to be deleted before running PyReduce again.
|
|
58
58
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# /// script
|
|
2
2
|
# requires-python = ">=3.13"
|
|
3
|
-
# dependencies = ["pyreduce-astro>=0.
|
|
3
|
+
# dependencies = ["pyreduce-astro>=0.7b1"]
|
|
4
4
|
# ///
|
|
5
5
|
import numpy as np
|
|
6
6
|
|
|
@@ -90,7 +90,7 @@ config["trace"]["min_width"] = 200
|
|
|
90
90
|
config["trace"]["manual"] = True
|
|
91
91
|
config["norm_flat"]["oversampling"] = 8 # Subpixel scale for slit function modelling
|
|
92
92
|
config["norm_flat"]["swath_width"] = 400 # Extraction swath width (columns)
|
|
93
|
-
config["wavecal_master"]["
|
|
93
|
+
config["wavecal_master"]["extraction_height"] = 2
|
|
94
94
|
config["wavecal_master"]["collapse_function"] = "sum"
|
|
95
95
|
config["wavecal_master"]["bias_scaling"] = "number_of_files"
|
|
96
96
|
config["wavecal"]["medium"] = "vac"
|
|
@@ -102,7 +102,7 @@ config["science"]["oversampling"] = 8 # Subpixel scale for slit function modell
|
|
|
102
102
|
config["science"]["swath_width"] = 400 # Extraction swath width (columns)
|
|
103
103
|
config["science"]["smooth_slitfunction"] = 1.0 # Smoothing of the slit function
|
|
104
104
|
config["science"]["smooth_spectrum"] = 1.0e-6 # Smoothing in spectral direction
|
|
105
|
-
config["science"]["
|
|
105
|
+
config["science"]["extraction_height"] = [5, 5] # Extraction slit height (rows)
|
|
106
106
|
config["science"]["bias_scaling"] = "number_of_files"
|
|
107
107
|
|
|
108
108
|
# Since we can't find the files ourselves (at least not without defining the criteria we are looking for)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# /// script
|
|
2
2
|
# requires-python = ">=3.13"
|
|
3
|
-
# dependencies = ["pyreduce-astro>=0.
|
|
3
|
+
# dependencies = ["pyreduce-astro>=0.7b1"]
|
|
4
4
|
# ///
|
|
5
5
|
"""
|
|
6
6
|
Simple usage example for PyReduce
|
|
@@ -41,7 +41,7 @@ input_dir = "raw"
|
|
|
41
41
|
output_dir = "reduced"
|
|
42
42
|
|
|
43
43
|
config = get_configuration_for_instrument(instrument)
|
|
44
|
-
# config["science"]["extraction_method"] = "
|
|
44
|
+
# config["science"]["extraction_method"] = "simple"
|
|
45
45
|
# config["science"]["extraction_cutoff"] = 0
|
|
46
46
|
|
|
47
47
|
Pipeline.from_instrument(
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "pyreduce-astro"
|
|
3
|
-
version = "0.
|
|
3
|
+
version = "0.7b1"
|
|
4
4
|
requires-python = ">=3.13"
|
|
5
5
|
description = "A data reduction package for echelle spectrographs"
|
|
6
6
|
readme = "README.md"
|
|
@@ -42,7 +42,6 @@ dependencies = [
|
|
|
42
42
|
"python-dateutil>=2.8.0",
|
|
43
43
|
"scikit-image>=0.22.0",
|
|
44
44
|
"tqdm>=4.66.0",
|
|
45
|
-
"wget>=3.2",
|
|
46
45
|
"Pillow>=10.0.0",
|
|
47
46
|
]
|
|
48
47
|
|
|
@@ -55,6 +54,7 @@ dev = [
|
|
|
55
54
|
"sphinx>=7.2.0",
|
|
56
55
|
"ipython>=9.8.0",
|
|
57
56
|
"myst-parser",
|
|
57
|
+
"setuptools",
|
|
58
58
|
]
|
|
59
59
|
|
|
60
60
|
[project.urls]
|
|
@@ -65,6 +65,8 @@ Issues = "https://github.com/ivh/PyReduce/issues"
|
|
|
65
65
|
|
|
66
66
|
[project.scripts]
|
|
67
67
|
reduce = "pyreduce.__main__:main"
|
|
68
|
+
reduce-build = "pyreduce.clib.build_extract:build"
|
|
69
|
+
reduce-clean = "pyreduce.clib.build_extract:clean"
|
|
68
70
|
|
|
69
71
|
[build-system]
|
|
70
72
|
requires = ["hatchling>=1.25.0", "cffi>=1.17.1", "setuptools"]
|