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.
Files changed (200) hide show
  1. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/CHANGELOG.md +31 -0
  2. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/CLAUDE.md +57 -3
  3. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/PKG-INFO +2 -3
  4. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/README.md +1 -1
  5. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/examples/aj_example.py +43 -3
  6. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/examples/crires_plus_example.py +3 -4
  7. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/examples/custom_instrument_example.py +1 -1
  8. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/examples/harpn_example.py +1 -1
  9. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/examples/harps_example.py +1 -1
  10. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/examples/harps_gridsearch.py +2 -2
  11. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/examples/just_one_swath.py +1 -1
  12. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/examples/jwst_miri_example.py +1 -1
  13. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/examples/jwst_niriss_example.py +1 -1
  14. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/examples/lick_apf_example.py +5 -5
  15. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/examples/mcdonald_example.py +1 -1
  16. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/examples/metis_ifu_example.py +1 -1
  17. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/examples/metis_lss_example.py +1 -1
  18. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/examples/micado_example.py +3 -3
  19. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/examples/neid_example.py +1 -1
  20. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/examples/nirspec_example.py +1 -1
  21. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/examples/toes_example.py +3 -3
  22. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/examples/uves_callfunc.py +1 -1
  23. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/examples/uves_example.py +1 -1
  24. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/examples/xshooter_example.py +2 -2
  25. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyproject.toml +4 -2
  26. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/__main__.py +136 -29
  27. pyreduce_astro-0.7b1/pyreduce/clib/build_extract.py +80 -0
  28. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/configuration.py +20 -0
  29. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/cwrappers.py +26 -40
  30. pyreduce_astro-0.7b1/pyreduce/datasets.py +190 -0
  31. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/estimate_background_scatter.py +8 -8
  32. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/extract.py +180 -181
  33. pyreduce_astro-0.7a6/pyreduce/extraction_width.py → pyreduce_astro-0.7b1/pyreduce/extraction_height.py +4 -4
  34. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/instruments/common.py +36 -19
  35. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/instruments/crires_plus.py +25 -0
  36. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/instruments/jwst_niriss.py +2 -10
  37. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/pipeline.py +1 -5
  38. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/rectify.py +14 -14
  39. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/reduce.py +93 -68
  40. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/settings/settings_AJ.json +1 -1
  41. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/settings/settings_ANDES.json +7 -7
  42. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/settings/settings_CRIRES_PLUS.json +11 -13
  43. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/settings/settings_HARPN.json +7 -7
  44. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/settings/settings_HARPS.json +9 -8
  45. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/settings/settings_JWST_MIRI.json +6 -6
  46. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/settings/settings_JWST_NIRISS.json +6 -6
  47. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/settings/settings_LICK_APF.json +12 -11
  48. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/settings/settings_MCDONALD.json +6 -6
  49. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/settings/settings_METIS_IFU.json +9 -9
  50. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/settings/settings_METIS_LSS.json +9 -9
  51. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/settings/settings_MICADO.json +9 -9
  52. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/settings/settings_NEID.json +7 -7
  53. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/settings/settings_NIRSPEC.json +6 -6
  54. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/settings/settings_NTE.json +7 -7
  55. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/settings/settings_UVES.json +4 -4
  56. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/settings/settings_XSHOOTER.json +6 -6
  57. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/settings/settings_pyreduce.json +12 -11
  58. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/settings/settings_schema.json +25 -11
  59. pyreduce_astro-0.7b1/pyreduce/slit_curve.py +739 -0
  60. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/uv.lock +132 -129
  61. pyreduce_astro-0.7a6/pyreduce/clib/build_extract.py +0 -75
  62. pyreduce_astro-0.7a6/pyreduce/datasets.py +0 -238
  63. pyreduce_astro-0.7a6/pyreduce/make_shear.py +0 -607
  64. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/.gitattributes +0 -0
  65. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/.gitignore +0 -0
  66. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/.pre-commit-config.yaml +0 -0
  67. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/.python-version +0 -0
  68. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/.readthedocs.yaml +0 -0
  69. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/AGENTS.md +0 -0
  70. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/LICENSE +0 -0
  71. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/hatch_build.py +0 -0
  72. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/__init__.py +0 -0
  73. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/cli.py +0 -0
  74. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/clib/__init__.py +0 -0
  75. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/clib/slit_func_2d_xi_zeta_bd.c +0 -0
  76. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/clib/slit_func_2d_xi_zeta_bd.h +0 -0
  77. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/clib/slit_func_bd.c +0 -0
  78. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/clib/slit_func_bd.h +0 -0
  79. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/clipnflip.py +0 -0
  80. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/combine_frames.py +0 -0
  81. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/continuum_normalization.py +0 -0
  82. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/echelle.py +0 -0
  83. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/instruments/__init__.py +0 -0
  84. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/instruments/aj.py +0 -0
  85. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/instruments/aj.yaml +0 -0
  86. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/instruments/andes.py +0 -0
  87. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/instruments/andes.yaml +0 -0
  88. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/instruments/common.yaml +0 -0
  89. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/instruments/crires_plus.yaml +0 -0
  90. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/instruments/filters.py +0 -0
  91. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/instruments/harpn.py +0 -0
  92. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/instruments/harpn.yaml +0 -0
  93. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/instruments/harps.py +0 -0
  94. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/instruments/harps.yaml +0 -0
  95. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/instruments/instrument_info.py +0 -0
  96. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/instruments/jwst_miri.py +0 -0
  97. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/instruments/jwst_miri.yaml +0 -0
  98. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/instruments/jwst_niriss.yaml +0 -0
  99. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/instruments/lick_apf.py +0 -0
  100. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/instruments/lick_apf.yaml +0 -0
  101. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/instruments/mcdonald.py +0 -0
  102. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/instruments/mcdonald.yaml +0 -0
  103. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/instruments/metis_ifu.py +0 -0
  104. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/instruments/metis_ifu.yaml +0 -0
  105. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/instruments/metis_lss.py +0 -0
  106. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/instruments/metis_lss.yaml +0 -0
  107. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/instruments/micado.py +0 -0
  108. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/instruments/micado.yaml +0 -0
  109. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/instruments/models.py +0 -0
  110. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/instruments/neid.py +0 -0
  111. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/instruments/neid.yaml +0 -0
  112. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/instruments/nirspec.py +0 -0
  113. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/instruments/nirspec.yaml +0 -0
  114. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/instruments/nte.py +0 -0
  115. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/instruments/nte.yaml +0 -0
  116. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/instruments/uves.py +0 -0
  117. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/instruments/uves.yaml +0 -0
  118. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/instruments/xshooter.py +0 -0
  119. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/instruments/xshooter.yaml +0 -0
  120. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/masks/mask_crires_plus_det1.fits.gz +0 -0
  121. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/masks/mask_crires_plus_det2.fits.gz +0 -0
  122. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/masks/mask_crires_plus_det3.fits.gz +0 -0
  123. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/masks/mask_ctio_chiron.fits.gz +0 -0
  124. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/masks/mask_elodie.fits.gz +0 -0
  125. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/masks/mask_feros3.fits.gz +0 -0
  126. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/masks/mask_flames_giraffe.fits.gz +0 -0
  127. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/masks/mask_harps_blue.fits.gz +0 -0
  128. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/masks/mask_harps_red.fits.gz +0 -0
  129. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/masks/mask_hds_blue.fits.gz +0 -0
  130. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/masks/mask_hds_red.fits.gz +0 -0
  131. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/masks/mask_het_hrs_2x5.fits.gz +0 -0
  132. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/masks/mask_jwst_miri_lrs_slitless.fits.gz +0 -0
  133. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/masks/mask_jwst_niriss_gr700xd.fits.gz +0 -0
  134. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/masks/mask_lick_apf_.fits.gz +0 -0
  135. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/masks/mask_mcdonald.fits.gz +0 -0
  136. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/masks/mask_nes.fits.gz +0 -0
  137. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/masks/mask_nirspec_nirspec.fits.gz +0 -0
  138. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/masks/mask_sarg.fits.gz +0 -0
  139. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/masks/mask_sarg_2x2a.fits.gz +0 -0
  140. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/masks/mask_sarg_2x2b.fits.gz +0 -0
  141. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/masks/mask_subaru_hds_red.fits.gz +0 -0
  142. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/masks/mask_uves_blue.fits.gz +0 -0
  143. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/masks/mask_uves_blue_binned_2_2.fits.gz +0 -0
  144. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/masks/mask_uves_middle.fits.gz +0 -0
  145. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/masks/mask_uves_middle_2x2_split.fits.gz +0 -0
  146. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/masks/mask_uves_middle_binned_2_2.fits.gz +0 -0
  147. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/masks/mask_uves_red.fits.gz +0 -0
  148. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/masks/mask_uves_red_2x2.fits.gz +0 -0
  149. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/masks/mask_uves_red_2x2_split.fits.gz +0 -0
  150. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/masks/mask_uves_red_binned_2_2.fits.gz +0 -0
  151. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/masks/mask_xshooter_nir.fits.gz +0 -0
  152. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/tools/__init__.py +0 -0
  153. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/tools/combine.py +0 -0
  154. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/trace.py +0 -0
  155. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/util.py +0 -0
  156. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/wavecal/MICADO_HK_3arcsec_chip5.npz +0 -0
  157. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/wavecal/atlas/thar.fits +0 -0
  158. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/wavecal/atlas/thar_list.txt +0 -0
  159. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/wavecal/atlas/une.fits +0 -0
  160. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/wavecal/convert.py +0 -0
  161. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/wavecal/crires_plus_J1228_det1.npz +0 -0
  162. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/wavecal/crires_plus_J1228_det2.npz +0 -0
  163. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/wavecal/crires_plus_J1228_det3.npz +0 -0
  164. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/wavecal/harpn_harpn_2D.npz +0 -0
  165. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/wavecal/harps_blue_2D.npz +0 -0
  166. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/wavecal/harps_blue_pol_2D.npz +0 -0
  167. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/wavecal/harps_red_2D.npz +0 -0
  168. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/wavecal/harps_red_pol_2D.npz +0 -0
  169. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/wavecal/mcdonald.npz +0 -0
  170. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/wavecal/metis_lss_l_2D.npz +0 -0
  171. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/wavecal/metis_lss_m_2D.npz +0 -0
  172. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/wavecal/nirspec_K2.npz +0 -0
  173. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/wavecal/uves_blue_360nm_2D.npz +0 -0
  174. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/wavecal/uves_blue_390nm_2D.npz +0 -0
  175. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/wavecal/uves_blue_437nm_2D.npz +0 -0
  176. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/wavecal/uves_middle_2x2_2D.npz +0 -0
  177. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/wavecal/uves_middle_565nm_2D.npz +0 -0
  178. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/wavecal/uves_middle_580nm_2D.npz +0 -0
  179. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/wavecal/uves_middle_600nm_2D.npz +0 -0
  180. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/wavecal/uves_middle_665nm_2D.npz +0 -0
  181. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/wavecal/uves_middle_860nm_2D.npz +0 -0
  182. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/wavecal/uves_red_580nm_2D.npz +0 -0
  183. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/wavecal/uves_red_600nm_2D.npz +0 -0
  184. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/wavecal/uves_red_665nm_2D.npz +0 -0
  185. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/wavecal/uves_red_760nm_2D.npz +0 -0
  186. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/wavecal/uves_red_860nm_2D.npz +0 -0
  187. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/wavecal/xshooter_nir.npz +0 -0
  188. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/pyreduce/wavelength_calibration.py +0 -0
  189. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/tools/argon.line +0 -0
  190. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/tools/bpm_creator.py +0 -0
  191. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/tools/create_wavelength_guess.py +0 -0
  192. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/tools/download_files.py +0 -0
  193. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/tools/ipy_startup.py +0 -0
  194. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/tools/neon.lin +0 -0
  195. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/tools/neon.line +0 -0
  196. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/tools/pymultispec.py +0 -0
  197. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/tools/thar.npz +0 -0
  198. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/tools/wavecal_creator.py +0 -0
  199. {pyreduce_astro-0.7a6 → pyreduce_astro-0.7b1}/tools/wavecal_creator_from_existing.py +0 -0
  200. {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 tilt/shear from arc lamp |
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
- "extraction_width": 0.5,
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
- "extraction_width": 0.5,
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.7a6
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
  [![CI](https://github.com/ivh/PyReduce/actions/workflows/python-publish.yml/badge.svg)](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 `.ech` files (standard FITS with binary table extension). Headers include original keywords plus PyReduce-specific ones prefixed with `e_`.
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 `.ech` files (standard FITS with binary table extension). Headers include original keywords plus PyReduce-specific ones prefixed with `e_`.
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.7a6"]
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.1,
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.7a6"]
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
- # "curvature",
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.7a6"]
3
+ # dependencies = ["pyreduce-astro>=0.7b1"]
4
4
  # ///
5
5
  """
6
6
  Simple usage example for PyReduce
@@ -1,6 +1,6 @@
1
1
  # /// script
2
2
  # requires-python = ">=3.13"
3
- # dependencies = ["pyreduce-astro>=0.7a6"]
3
+ # dependencies = ["pyreduce-astro>=0.7b1"]
4
4
  # ///
5
5
  """
6
6
  Simple usage example for PyReduce
@@ -1,6 +1,6 @@
1
1
  # /// script
2
2
  # requires-python = ">=3.13"
3
- # dependencies = ["pyreduce-astro>=0.7a6"]
3
+ # dependencies = ["pyreduce-astro>=0.7b1"]
4
4
  # ///
5
5
  """
6
6
  Simple usage example for PyReduce
@@ -1,6 +1,6 @@
1
1
  # /// script
2
2
  # requires-python = ">=3.13"
3
- # dependencies = ["pyreduce-astro>=0.7a6"]
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", "extraction_width", "extraction_cutoff"]:
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.7a6"]
3
+ # dependencies = ["pyreduce-astro>=0.7b1"]
4
4
  # ///
5
5
  import matplotlib.pyplot as plt
6
6
  import numpy as np
@@ -1,6 +1,6 @@
1
1
  # /// script
2
2
  # requires-python = ">=3.13"
3
- # dependencies = ["pyreduce-astro>=0.7a6"]
3
+ # dependencies = ["pyreduce-astro>=0.7b1"]
4
4
  # ///
5
5
  """
6
6
  Simple usage example for PyReduce
@@ -1,6 +1,6 @@
1
1
  # /// script
2
2
  # requires-python = ">=3.13"
3
- # dependencies = ["pyreduce-astro>=0.7a6"]
3
+ # dependencies = ["pyreduce-astro>=0.7b1"]
4
4
  # ///
5
5
  """
6
6
  Simple usage example for PyReduce
@@ -1,6 +1,6 @@
1
1
  # /// script
2
2
  # requires-python = ">=3.13"
3
- # dependencies = ["pyreduce-astro>=0.7a6"]
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
- # "flat",
21
- # "trace",
22
- # "norm_flat",
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=0,
45
+ plot=1,
46
46
  ).run()
@@ -1,6 +1,6 @@
1
1
  # /// script
2
2
  # requires-python = ">=3.13"
3
- # dependencies = ["pyreduce-astro>=0.7a6"]
3
+ # dependencies = ["pyreduce-astro>=0.7b1"]
4
4
  # ///
5
5
  """
6
6
  Simple usage example for PyReduce
@@ -1,6 +1,6 @@
1
1
  # /// script
2
2
  # requires-python = ">=3.13"
3
- # dependencies = ["pyreduce-astro>=0.7a6"]
3
+ # dependencies = ["pyreduce-astro>=0.7b1"]
4
4
  # ///
5
5
  """
6
6
  Simple usage example for PyReduce
@@ -1,6 +1,6 @@
1
1
  # /// script
2
2
  # requires-python = ">=3.13"
3
- # dependencies = ["pyreduce-astro>=0.7a6"]
3
+ # dependencies = ["pyreduce-astro>=0.7b1"]
4
4
  # ///
5
5
  """
6
6
  Simple usage example for PyReduce
@@ -1,6 +1,6 @@
1
1
  # /// script
2
2
  # requires-python = ">=3.13"
3
- # dependencies = ["pyreduce-astro>=0.7a6"]
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"]["extraction_width"] = 350 # curvature can still be improved with this and the following parameters
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"]["extraction_width"] = 350
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.7a6"]
3
+ # dependencies = ["pyreduce-astro>=0.7b1"]
4
4
  # ///
5
5
  """
6
6
  NEID reduction example
@@ -1,6 +1,6 @@
1
1
  # /// script
2
2
  # requires-python = ">=3.13"
3
- # dependencies = ["pyreduce-astro>=0.7a6"]
3
+ # dependencies = ["pyreduce-astro>=0.7b1"]
4
4
  # ///
5
5
  """
6
6
  Simple usage example for PyReduce
@@ -1,6 +1,6 @@
1
1
  # /// script
2
2
  # requires-python = ">=3.13"
3
- # dependencies = ["pyreduce-astro>=0.7a6"]
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"]["extraction_width"] = 2
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"]["extraction_width"] = [5, 5] # Extraction slit height (rows)
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.7a6"]
3
+ # dependencies = ["pyreduce-astro>=0.7b1"]
4
4
  # ///
5
5
  """
6
6
  Example showing direct function calls for each step.
@@ -1,6 +1,6 @@
1
1
  # /// script
2
2
  # requires-python = ">=3.13"
3
- # dependencies = ["pyreduce-astro>=0.7a6"]
3
+ # dependencies = ["pyreduce-astro>=0.7b1"]
4
4
  # ///
5
5
  """
6
6
  Simple usage example for PyReduce
@@ -1,6 +1,6 @@
1
1
  # /// script
2
2
  # requires-python = ">=3.13"
3
- # dependencies = ["pyreduce-astro>=0.7a6"]
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"] = "arc"
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.7a6"
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"]