pyreduce-astro 0.6.0b5__tar.gz → 0.7a1__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 (178) hide show
  1. {pyreduce_astro-0.6.0b5 → pyreduce_astro-0.7a1}/.gitignore +3 -0
  2. pyreduce_astro-0.7a1/PKG-INFO +114 -0
  3. pyreduce_astro-0.7a1/README.md +62 -0
  4. {pyreduce_astro-0.6.0b5 → pyreduce_astro-0.7a1}/pyproject.toml +28 -8
  5. pyreduce_astro-0.7a1/pyreduce/__main__.py +206 -0
  6. pyreduce_astro-0.7a1/pyreduce/cli.py +342 -0
  7. {pyreduce_astro-0.6.0b5 → pyreduce_astro-0.7a1}/pyreduce/combine_frames.py +46 -40
  8. {pyreduce_astro-0.6.0b5 → pyreduce_astro-0.7a1}/pyreduce/configuration.py +6 -1
  9. {pyreduce_astro-0.6.0b5 → pyreduce_astro-0.7a1}/pyreduce/continuum_normalization.py +3 -3
  10. {pyreduce_astro-0.6.0b5 → pyreduce_astro-0.7a1}/pyreduce/datasets.py +12 -5
  11. {pyreduce_astro-0.6.0b5 → pyreduce_astro-0.7a1}/pyreduce/estimate_background_scatter.py +2 -1
  12. {pyreduce_astro-0.6.0b5 → pyreduce_astro-0.7a1}/pyreduce/extract.py +2 -1
  13. pyreduce_astro-0.7a1/pyreduce/instruments/aj.py +9 -0
  14. pyreduce_astro-0.7a1/pyreduce/instruments/aj.yaml +51 -0
  15. {pyreduce_astro-0.6.0b5 → pyreduce_astro-0.7a1}/pyreduce/instruments/andes.py +17 -17
  16. pyreduce_astro-0.7a1/pyreduce/instruments/andes.yaml +72 -0
  17. {pyreduce_astro-0.6.0b5 → pyreduce_astro-0.7a1}/pyreduce/instruments/common.py +153 -117
  18. pyreduce_astro-0.7a1/pyreduce/instruments/common.yaml +57 -0
  19. {pyreduce_astro-0.6.0b5 → pyreduce_astro-0.7a1}/pyreduce/instruments/crires_plus.py +17 -17
  20. pyreduce_astro-0.7a1/pyreduce/instruments/crires_plus.yaml +101 -0
  21. {pyreduce_astro-0.6.0b5 → pyreduce_astro-0.7a1}/pyreduce/instruments/filters.py +1 -1
  22. {pyreduce_astro-0.6.0b5 → pyreduce_astro-0.7a1}/pyreduce/instruments/harpn.py +19 -17
  23. pyreduce_astro-0.7a1/pyreduce/instruments/harpn.yaml +140 -0
  24. {pyreduce_astro-0.6.0b5 → pyreduce_astro-0.7a1}/pyreduce/instruments/harps.py +19 -17
  25. pyreduce_astro-0.7a1/pyreduce/instruments/harps.yaml +144 -0
  26. {pyreduce_astro-0.6.0b5 → pyreduce_astro-0.7a1}/pyreduce/instruments/instrument_info.py +14 -14
  27. {pyreduce_astro-0.6.0b5 → pyreduce_astro-0.7a1}/pyreduce/instruments/jwst_miri.py +4 -4
  28. pyreduce_astro-0.7a1/pyreduce/instruments/jwst_miri.yaml +53 -0
  29. {pyreduce_astro-0.6.0b5 → pyreduce_astro-0.7a1}/pyreduce/instruments/jwst_niriss.py +8 -8
  30. pyreduce_astro-0.7a1/pyreduce/instruments/jwst_niriss.yaml +60 -0
  31. {pyreduce_astro-0.6.0b5 → pyreduce_astro-0.7a1}/pyreduce/instruments/lick_apf.py +3 -3
  32. pyreduce_astro-0.7a1/pyreduce/instruments/lick_apf.yaml +60 -0
  33. {pyreduce_astro-0.6.0b5 → pyreduce_astro-0.7a1}/pyreduce/instruments/mcdonald.py +8 -8
  34. pyreduce_astro-0.7a1/pyreduce/instruments/mcdonald.yaml +56 -0
  35. {pyreduce_astro-0.6.0b5 → pyreduce_astro-0.7a1}/pyreduce/instruments/metis_ifu.py +7 -7
  36. pyreduce_astro-0.7a1/pyreduce/instruments/metis_ifu.yaml +62 -0
  37. {pyreduce_astro-0.6.0b5 → pyreduce_astro-0.7a1}/pyreduce/instruments/metis_lss.py +7 -7
  38. pyreduce_astro-0.7a1/pyreduce/instruments/metis_lss.yaml +62 -0
  39. {pyreduce_astro-0.6.0b5 → pyreduce_astro-0.7a1}/pyreduce/instruments/micado.py +5 -5
  40. pyreduce_astro-0.7a1/pyreduce/instruments/micado.yaml +62 -0
  41. pyreduce_astro-0.7a1/pyreduce/instruments/models.py +257 -0
  42. {pyreduce_astro-0.6.0b5 → pyreduce_astro-0.7a1}/pyreduce/instruments/neid.py +19 -17
  43. pyreduce_astro-0.7a1/pyreduce/instruments/neid.yaml +61 -0
  44. {pyreduce_astro-0.6.0b5 → pyreduce_astro-0.7a1}/pyreduce/instruments/nirspec.py +12 -12
  45. pyreduce_astro-0.7a1/pyreduce/instruments/nirspec.yaml +63 -0
  46. {pyreduce_astro-0.6.0b5 → pyreduce_astro-0.7a1}/pyreduce/instruments/nte.py +7 -7
  47. pyreduce_astro-0.7a1/pyreduce/instruments/nte.yaml +55 -0
  48. {pyreduce_astro-0.6.0b5 → pyreduce_astro-0.7a1}/pyreduce/instruments/uves.py +9 -9
  49. pyreduce_astro-0.7a1/pyreduce/instruments/uves.yaml +65 -0
  50. {pyreduce_astro-0.6.0b5 → pyreduce_astro-0.7a1}/pyreduce/instruments/xshooter.py +6 -6
  51. pyreduce_astro-0.7a1/pyreduce/instruments/xshooter.yaml +63 -0
  52. {pyreduce_astro-0.6.0b5 → pyreduce_astro-0.7a1}/pyreduce/make_shear.py +3 -2
  53. pyreduce_astro-0.7a1/pyreduce/pipeline.py +619 -0
  54. {pyreduce_astro-0.6.0b5 → pyreduce_astro-0.7a1}/pyreduce/reduce.py +90 -230
  55. pyreduce_astro-0.7a1/pyreduce/settings/settings_AJ.json +19 -0
  56. {pyreduce_astro-0.6.0b5 → pyreduce_astro-0.7a1}/pyreduce/settings/settings_ANDES.json +1 -1
  57. {pyreduce_astro-0.6.0b5 → pyreduce_astro-0.7a1}/pyreduce/settings/settings_CRIRES_PLUS.json +1 -1
  58. {pyreduce_astro-0.6.0b5 → pyreduce_astro-0.7a1}/pyreduce/settings/settings_HARPN.json +1 -1
  59. {pyreduce_astro-0.6.0b5 → pyreduce_astro-0.7a1}/pyreduce/settings/settings_HARPS.json +1 -1
  60. {pyreduce_astro-0.6.0b5 → pyreduce_astro-0.7a1}/pyreduce/settings/settings_JWST_MIRI.json +1 -1
  61. {pyreduce_astro-0.6.0b5 → pyreduce_astro-0.7a1}/pyreduce/settings/settings_JWST_NIRISS.json +1 -1
  62. {pyreduce_astro-0.6.0b5 → pyreduce_astro-0.7a1}/pyreduce/settings/settings_LICK_APF.json +2 -2
  63. {pyreduce_astro-0.6.0b5 → pyreduce_astro-0.7a1}/pyreduce/settings/settings_MCDONALD.json +1 -1
  64. {pyreduce_astro-0.6.0b5 → pyreduce_astro-0.7a1}/pyreduce/settings/settings_METIS_IFU.json +1 -1
  65. {pyreduce_astro-0.6.0b5 → pyreduce_astro-0.7a1}/pyreduce/settings/settings_METIS_LSS.json +1 -1
  66. {pyreduce_astro-0.6.0b5 → pyreduce_astro-0.7a1}/pyreduce/settings/settings_MICADO.json +1 -1
  67. {pyreduce_astro-0.6.0b5 → pyreduce_astro-0.7a1}/pyreduce/settings/settings_NEID.json +1 -1
  68. {pyreduce_astro-0.6.0b5 → pyreduce_astro-0.7a1}/pyreduce/settings/settings_NIRSPEC.json +2 -2
  69. {pyreduce_astro-0.6.0b5 → pyreduce_astro-0.7a1}/pyreduce/settings/settings_NTE.json +1 -1
  70. {pyreduce_astro-0.6.0b5 → pyreduce_astro-0.7a1}/pyreduce/settings/settings_UVES.json +1 -1
  71. {pyreduce_astro-0.6.0b5 → pyreduce_astro-0.7a1}/pyreduce/settings/settings_XSHOOTER.json +1 -1
  72. {pyreduce_astro-0.6.0b5 → pyreduce_astro-0.7a1}/pyreduce/settings/settings_pyreduce.json +8 -2
  73. {pyreduce_astro-0.6.0b5 → pyreduce_astro-0.7a1}/pyreduce/settings/settings_schema.json +27 -4
  74. {pyreduce_astro-0.6.0b5 → pyreduce_astro-0.7a1}/pyreduce/tools/combine.py +2 -2
  75. pyreduce_astro-0.6.0b5/pyreduce/trace_orders.py → pyreduce_astro-0.7a1/pyreduce/trace.py +364 -30
  76. {pyreduce_astro-0.6.0b5 → pyreduce_astro-0.7a1}/pyreduce/util.py +82 -4
  77. {pyreduce_astro-0.6.0b5 → pyreduce_astro-0.7a1}/pyreduce/wavelength_calibration.py +12 -14
  78. pyreduce_astro-0.6.0b5/PKG-INFO +0 -113
  79. pyreduce_astro-0.6.0b5/README.md +0 -66
  80. pyreduce_astro-0.6.0b5/pyreduce/__main__.py +0 -106
  81. pyreduce_astro-0.6.0b5/pyreduce/instruments/andes.json +0 -61
  82. pyreduce_astro-0.6.0b5/pyreduce/instruments/common.json +0 -46
  83. pyreduce_astro-0.6.0b5/pyreduce/instruments/crires_plus.json +0 -63
  84. pyreduce_astro-0.6.0b5/pyreduce/instruments/harpn.json +0 -136
  85. pyreduce_astro-0.6.0b5/pyreduce/instruments/harps.json +0 -155
  86. pyreduce_astro-0.6.0b5/pyreduce/instruments/instrument_schema.json +0 -221
  87. pyreduce_astro-0.6.0b5/pyreduce/instruments/jwst_miri.json +0 -53
  88. pyreduce_astro-0.6.0b5/pyreduce/instruments/jwst_niriss.json +0 -52
  89. pyreduce_astro-0.6.0b5/pyreduce/instruments/lick_apf.json +0 -53
  90. pyreduce_astro-0.6.0b5/pyreduce/instruments/mcdonald.json +0 -59
  91. pyreduce_astro-0.6.0b5/pyreduce/instruments/metis_ifu.json +0 -63
  92. pyreduce_astro-0.6.0b5/pyreduce/instruments/metis_lss.json +0 -65
  93. pyreduce_astro-0.6.0b5/pyreduce/instruments/micado.json +0 -53
  94. pyreduce_astro-0.6.0b5/pyreduce/instruments/neid.json +0 -51
  95. pyreduce_astro-0.6.0b5/pyreduce/instruments/nirspec.json +0 -56
  96. pyreduce_astro-0.6.0b5/pyreduce/instruments/nte.json +0 -47
  97. pyreduce_astro-0.6.0b5/pyreduce/instruments/uves.json +0 -59
  98. pyreduce_astro-0.6.0b5/pyreduce/instruments/xshooter.json +0 -66
  99. {pyreduce_astro-0.6.0b5 → pyreduce_astro-0.7a1}/LICENSE +0 -0
  100. {pyreduce_astro-0.6.0b5 → pyreduce_astro-0.7a1}/hatch_build.py +0 -0
  101. {pyreduce_astro-0.6.0b5 → pyreduce_astro-0.7a1}/pyreduce/__init__.py +0 -0
  102. {pyreduce_astro-0.6.0b5 → pyreduce_astro-0.7a1}/pyreduce/clib/__init__.py +0 -0
  103. {pyreduce_astro-0.6.0b5 → pyreduce_astro-0.7a1}/pyreduce/clib/build_extract.py +0 -0
  104. {pyreduce_astro-0.6.0b5 → pyreduce_astro-0.7a1}/pyreduce/clib/slit_func_2d_xi_zeta_bd.c +0 -0
  105. {pyreduce_astro-0.6.0b5 → pyreduce_astro-0.7a1}/pyreduce/clib/slit_func_2d_xi_zeta_bd.h +0 -0
  106. {pyreduce_astro-0.6.0b5 → pyreduce_astro-0.7a1}/pyreduce/clib/slit_func_bd.c +0 -0
  107. {pyreduce_astro-0.6.0b5 → pyreduce_astro-0.7a1}/pyreduce/clib/slit_func_bd.h +0 -0
  108. {pyreduce_astro-0.6.0b5 → pyreduce_astro-0.7a1}/pyreduce/clipnflip.py +0 -0
  109. {pyreduce_astro-0.6.0b5 → pyreduce_astro-0.7a1}/pyreduce/cwrappers.py +0 -0
  110. {pyreduce_astro-0.6.0b5 → pyreduce_astro-0.7a1}/pyreduce/echelle.py +0 -0
  111. {pyreduce_astro-0.6.0b5 → pyreduce_astro-0.7a1}/pyreduce/extraction_width.py +0 -0
  112. {pyreduce_astro-0.6.0b5 → pyreduce_astro-0.7a1}/pyreduce/instruments/__init__.py +0 -0
  113. {pyreduce_astro-0.6.0b5 → pyreduce_astro-0.7a1}/pyreduce/masks/mask_crires_plus_det1.fits.gz +0 -0
  114. {pyreduce_astro-0.6.0b5 → pyreduce_astro-0.7a1}/pyreduce/masks/mask_crires_plus_det2.fits.gz +0 -0
  115. {pyreduce_astro-0.6.0b5 → pyreduce_astro-0.7a1}/pyreduce/masks/mask_crires_plus_det3.fits.gz +0 -0
  116. {pyreduce_astro-0.6.0b5 → pyreduce_astro-0.7a1}/pyreduce/masks/mask_ctio_chiron.fits.gz +0 -0
  117. {pyreduce_astro-0.6.0b5 → pyreduce_astro-0.7a1}/pyreduce/masks/mask_elodie.fits.gz +0 -0
  118. {pyreduce_astro-0.6.0b5 → pyreduce_astro-0.7a1}/pyreduce/masks/mask_feros3.fits.gz +0 -0
  119. {pyreduce_astro-0.6.0b5 → pyreduce_astro-0.7a1}/pyreduce/masks/mask_flames_giraffe.fits.gz +0 -0
  120. {pyreduce_astro-0.6.0b5 → pyreduce_astro-0.7a1}/pyreduce/masks/mask_harps_blue.fits.gz +0 -0
  121. {pyreduce_astro-0.6.0b5 → pyreduce_astro-0.7a1}/pyreduce/masks/mask_harps_red.fits.gz +0 -0
  122. {pyreduce_astro-0.6.0b5 → pyreduce_astro-0.7a1}/pyreduce/masks/mask_hds_blue.fits.gz +0 -0
  123. {pyreduce_astro-0.6.0b5 → pyreduce_astro-0.7a1}/pyreduce/masks/mask_hds_red.fits.gz +0 -0
  124. {pyreduce_astro-0.6.0b5 → pyreduce_astro-0.7a1}/pyreduce/masks/mask_het_hrs_2x5.fits.gz +0 -0
  125. {pyreduce_astro-0.6.0b5 → pyreduce_astro-0.7a1}/pyreduce/masks/mask_jwst_miri_lrs_slitless.fits.gz +0 -0
  126. {pyreduce_astro-0.6.0b5 → pyreduce_astro-0.7a1}/pyreduce/masks/mask_jwst_niriss_gr700xd.fits.gz +0 -0
  127. {pyreduce_astro-0.6.0b5 → pyreduce_astro-0.7a1}/pyreduce/masks/mask_lick_apf_.fits.gz +0 -0
  128. {pyreduce_astro-0.6.0b5 → pyreduce_astro-0.7a1}/pyreduce/masks/mask_mcdonald.fits.gz +0 -0
  129. {pyreduce_astro-0.6.0b5 → pyreduce_astro-0.7a1}/pyreduce/masks/mask_nes.fits.gz +0 -0
  130. {pyreduce_astro-0.6.0b5 → pyreduce_astro-0.7a1}/pyreduce/masks/mask_nirspec_nirspec.fits.gz +0 -0
  131. {pyreduce_astro-0.6.0b5 → pyreduce_astro-0.7a1}/pyreduce/masks/mask_sarg.fits.gz +0 -0
  132. {pyreduce_astro-0.6.0b5 → pyreduce_astro-0.7a1}/pyreduce/masks/mask_sarg_2x2a.fits.gz +0 -0
  133. {pyreduce_astro-0.6.0b5 → pyreduce_astro-0.7a1}/pyreduce/masks/mask_sarg_2x2b.fits.gz +0 -0
  134. {pyreduce_astro-0.6.0b5 → pyreduce_astro-0.7a1}/pyreduce/masks/mask_subaru_hds_red.fits.gz +0 -0
  135. {pyreduce_astro-0.6.0b5 → pyreduce_astro-0.7a1}/pyreduce/masks/mask_uves_blue.fits.gz +0 -0
  136. {pyreduce_astro-0.6.0b5 → pyreduce_astro-0.7a1}/pyreduce/masks/mask_uves_blue_binned_2_2.fits.gz +0 -0
  137. {pyreduce_astro-0.6.0b5 → pyreduce_astro-0.7a1}/pyreduce/masks/mask_uves_middle.fits.gz +0 -0
  138. {pyreduce_astro-0.6.0b5 → pyreduce_astro-0.7a1}/pyreduce/masks/mask_uves_middle_2x2_split.fits.gz +0 -0
  139. {pyreduce_astro-0.6.0b5 → pyreduce_astro-0.7a1}/pyreduce/masks/mask_uves_middle_binned_2_2.fits.gz +0 -0
  140. {pyreduce_astro-0.6.0b5 → pyreduce_astro-0.7a1}/pyreduce/masks/mask_uves_red.fits.gz +0 -0
  141. {pyreduce_astro-0.6.0b5 → pyreduce_astro-0.7a1}/pyreduce/masks/mask_uves_red_2x2.fits.gz +0 -0
  142. {pyreduce_astro-0.6.0b5 → pyreduce_astro-0.7a1}/pyreduce/masks/mask_uves_red_2x2_split.fits.gz +0 -0
  143. {pyreduce_astro-0.6.0b5 → pyreduce_astro-0.7a1}/pyreduce/masks/mask_uves_red_binned_2_2.fits.gz +0 -0
  144. {pyreduce_astro-0.6.0b5 → pyreduce_astro-0.7a1}/pyreduce/masks/mask_xshooter_nir.fits.gz +0 -0
  145. {pyreduce_astro-0.6.0b5 → pyreduce_astro-0.7a1}/pyreduce/rectify.py +0 -0
  146. {pyreduce_astro-0.6.0b5 → pyreduce_astro-0.7a1}/pyreduce/tools/__init__.py +0 -0
  147. {pyreduce_astro-0.6.0b5 → pyreduce_astro-0.7a1}/pyreduce/wavecal/MICADO_HK_3arcsec_chip5.npz +0 -0
  148. {pyreduce_astro-0.6.0b5 → pyreduce_astro-0.7a1}/pyreduce/wavecal/atlas/thar.fits +0 -0
  149. {pyreduce_astro-0.6.0b5 → pyreduce_astro-0.7a1}/pyreduce/wavecal/atlas/thar_list.txt +0 -0
  150. {pyreduce_astro-0.6.0b5 → pyreduce_astro-0.7a1}/pyreduce/wavecal/atlas/une.fits +0 -0
  151. {pyreduce_astro-0.6.0b5 → pyreduce_astro-0.7a1}/pyreduce/wavecal/convert.py +0 -0
  152. {pyreduce_astro-0.6.0b5 → pyreduce_astro-0.7a1}/pyreduce/wavecal/crires_plus_J1228_Open_det1.npz +0 -0
  153. {pyreduce_astro-0.6.0b5 → pyreduce_astro-0.7a1}/pyreduce/wavecal/crires_plus_J1228_Open_det2.npz +0 -0
  154. {pyreduce_astro-0.6.0b5 → pyreduce_astro-0.7a1}/pyreduce/wavecal/crires_plus_J1228_Open_det3.npz +0 -0
  155. {pyreduce_astro-0.6.0b5 → pyreduce_astro-0.7a1}/pyreduce/wavecal/harpn_harpn_2D.npz +0 -0
  156. {pyreduce_astro-0.6.0b5 → pyreduce_astro-0.7a1}/pyreduce/wavecal/harps_blue_2D.npz +0 -0
  157. {pyreduce_astro-0.6.0b5 → pyreduce_astro-0.7a1}/pyreduce/wavecal/harps_blue_pol_2D.npz +0 -0
  158. {pyreduce_astro-0.6.0b5 → pyreduce_astro-0.7a1}/pyreduce/wavecal/harps_red_2D.npz +0 -0
  159. {pyreduce_astro-0.6.0b5 → pyreduce_astro-0.7a1}/pyreduce/wavecal/harps_red_pol_2D.npz +0 -0
  160. {pyreduce_astro-0.6.0b5 → pyreduce_astro-0.7a1}/pyreduce/wavecal/mcdonald.npz +0 -0
  161. {pyreduce_astro-0.6.0b5 → pyreduce_astro-0.7a1}/pyreduce/wavecal/metis_lss_l_2D.npz +0 -0
  162. {pyreduce_astro-0.6.0b5 → pyreduce_astro-0.7a1}/pyreduce/wavecal/metis_lss_m_2D.npz +0 -0
  163. {pyreduce_astro-0.6.0b5 → pyreduce_astro-0.7a1}/pyreduce/wavecal/nirspec_K2.npz +0 -0
  164. {pyreduce_astro-0.6.0b5 → pyreduce_astro-0.7a1}/pyreduce/wavecal/uves_blue_360nm_2D.npz +0 -0
  165. {pyreduce_astro-0.6.0b5 → pyreduce_astro-0.7a1}/pyreduce/wavecal/uves_blue_390nm_2D.npz +0 -0
  166. {pyreduce_astro-0.6.0b5 → pyreduce_astro-0.7a1}/pyreduce/wavecal/uves_blue_437nm_2D.npz +0 -0
  167. {pyreduce_astro-0.6.0b5 → pyreduce_astro-0.7a1}/pyreduce/wavecal/uves_middle_2x2_2D.npz +0 -0
  168. {pyreduce_astro-0.6.0b5 → pyreduce_astro-0.7a1}/pyreduce/wavecal/uves_middle_565nm_2D.npz +0 -0
  169. {pyreduce_astro-0.6.0b5 → pyreduce_astro-0.7a1}/pyreduce/wavecal/uves_middle_580nm_2D.npz +0 -0
  170. {pyreduce_astro-0.6.0b5 → pyreduce_astro-0.7a1}/pyreduce/wavecal/uves_middle_600nm_2D.npz +0 -0
  171. {pyreduce_astro-0.6.0b5 → pyreduce_astro-0.7a1}/pyreduce/wavecal/uves_middle_665nm_2D.npz +0 -0
  172. {pyreduce_astro-0.6.0b5 → pyreduce_astro-0.7a1}/pyreduce/wavecal/uves_middle_860nm_2D.npz +0 -0
  173. {pyreduce_astro-0.6.0b5 → pyreduce_astro-0.7a1}/pyreduce/wavecal/uves_red_580nm_2D.npz +0 -0
  174. {pyreduce_astro-0.6.0b5 → pyreduce_astro-0.7a1}/pyreduce/wavecal/uves_red_600nm_2D.npz +0 -0
  175. {pyreduce_astro-0.6.0b5 → pyreduce_astro-0.7a1}/pyreduce/wavecal/uves_red_665nm_2D.npz +0 -0
  176. {pyreduce_astro-0.6.0b5 → pyreduce_astro-0.7a1}/pyreduce/wavecal/uves_red_760nm_2D.npz +0 -0
  177. {pyreduce_astro-0.6.0b5 → pyreduce_astro-0.7a1}/pyreduce/wavecal/uves_red_860nm_2D.npz +0 -0
  178. {pyreduce_astro-0.6.0b5 → pyreduce_astro-0.7a1}/pyreduce/wavecal/xshooter_nir.npz +0 -0
@@ -17,3 +17,6 @@ esorex.log
17
17
  pyesorex.log
18
18
  test/test_outputs
19
19
  docs/_build/
20
+ .claude
21
+ debug/
22
+ idl/
@@ -0,0 +1,114 @@
1
+ Metadata-Version: 2.4
2
+ Name: pyreduce-astro
3
+ Version: 0.7a1
4
+ Summary: A data reduction package for echelle spectrographs
5
+ Project-URL: Homepage, https://github.com/ivh/PyReduce
6
+ Project-URL: Documentation, https://pyreduce-astro.readthedocs.io
7
+ Project-URL: Repository, https://github.com/ivh/PyReduce
8
+ Project-URL: Issues, https://github.com/ivh/PyReduce/issues
9
+ Author: Nikolai Piskunov, Thomas Marquart, Ansgar Wehrhahn
10
+ Maintainer-email: Thomas Marquart <thomas.marquart@astro.uu.se>
11
+ License: GPL-3.0-or-later
12
+ License-File: LICENSE
13
+ Classifier: Development Status :: 4 - Beta
14
+ Classifier: Intended Audience :: Science/Research
15
+ Classifier: License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)
16
+ Classifier: Programming Language :: C
17
+ Classifier: Programming Language :: Python :: 3
18
+ Classifier: Programming Language :: Python :: 3.11
19
+ Classifier: Programming Language :: Python :: 3.12
20
+ Classifier: Programming Language :: Python :: 3.13
21
+ Classifier: Programming Language :: Python :: 3.14
22
+ Classifier: Topic :: Scientific/Engineering :: Astronomy
23
+ Requires-Python: >=3.11
24
+ Requires-Dist: astropy>=5.3.0
25
+ Requires-Dist: cffi>=1.17.1
26
+ Requires-Dist: click>=8.1.0
27
+ Requires-Dist: colorlog>=6.8.0
28
+ Requires-Dist: corner>=2.2.0
29
+ Requires-Dist: emcee>=3.1.0
30
+ Requires-Dist: joblib>=1.3.0
31
+ Requires-Dist: jsonschema>=4.20.0
32
+ Requires-Dist: matplotlib>=3.8.0
33
+ Requires-Dist: numpy>=1.26.0
34
+ Requires-Dist: pillow>=10.0.0
35
+ Requires-Dist: pydantic>=2.5.0
36
+ Requires-Dist: python-dateutil>=2.8.0
37
+ Requires-Dist: pyyaml>=6.0.0
38
+ Requires-Dist: scikit-image>=0.22.0
39
+ Requires-Dist: scipy>=1.11.0
40
+ Requires-Dist: spectres>=2.2.0
41
+ Requires-Dist: tqdm>=4.66.0
42
+ Requires-Dist: wget>=3.2
43
+ Provides-Extra: dev
44
+ Requires-Dist: myst-parser>=3.0.0; extra == 'dev'
45
+ Requires-Dist: pre-commit>=3.5.0; extra == 'dev'
46
+ Requires-Dist: pytest-cov>=4.1.0; extra == 'dev'
47
+ Requires-Dist: pytest>=7.4.0; extra == 'dev'
48
+ Requires-Dist: ruff>=0.8.0; extra == 'dev'
49
+ Requires-Dist: setuptools; extra == 'dev'
50
+ Requires-Dist: sphinx>=7.2.0; extra == 'dev'
51
+ Description-Content-Type: text/markdown
52
+
53
+ [![CI](https://github.com/ivh/PyReduce/actions/workflows/python-publish.yml/badge.svg)](https://github.com/ivh/PyReduce/actions/workflows/python-publish.yml)
54
+ [![Documentation Status](https://readthedocs.org/projects/pyreduce-astro/badge/?version=latest)](https://pyreduce-astro.readthedocs.io/en/latest/?badge=latest)
55
+ [![Python 3.11+](https://img.shields.io/badge/python-3.11+-blue.svg)](https://www.python.org/downloads/)
56
+
57
+ # PyReduce
58
+
59
+ A data reduction pipeline for echelle spectrographs (HARPS, UVES, XSHOOTER, CRIRES+, JWST/NIRISS, and more).
60
+
61
+ Based on the [REDUCE](http://www.astro.uu.se/~piskunov/RESEARCH/REDUCE/) package. See the papers:
62
+ - Piskunov & Valenti (2001) [doi:10.1051/0004-6361:20020175](https://doi.org/10.1051/0004-6361:20020175)
63
+ - Piskunov, Wehrhahn & Marquart (2021) [doi:10.1051/0004-6361/202038293](https://doi.org/10.1051/0004-6361/202038293)
64
+
65
+ ## Installation
66
+
67
+ ```bash
68
+ # Using uv (recommended)
69
+ uv add pyreduce-astro
70
+
71
+ # Or pip
72
+ pip install pyreduce-astro
73
+ ```
74
+
75
+ For development:
76
+ ```bash
77
+ git clone https://github.com/ivh/PyReduce
78
+ cd PyReduce
79
+ uv sync
80
+ ```
81
+
82
+ ## Quick Start
83
+
84
+ ```bash
85
+ # Download sample data
86
+ uv run reduce download UVES
87
+
88
+ # Run reduction
89
+ uv run reduce run UVES HD132205 --steps bias,flat,orders,science
90
+
91
+ # Or run individual steps
92
+ uv run reduce bias UVES HD132205
93
+ uv run reduce flat UVES HD132205
94
+ ```
95
+
96
+ Or use the Python API:
97
+ ```python
98
+ from pyreduce.pipeline import Pipeline
99
+
100
+ Pipeline.from_instrument(
101
+ instrument="UVES",
102
+ target="HD132205",
103
+ night="2010-04-01",
104
+ arm="middle",
105
+ ).run()
106
+ ```
107
+
108
+ ## Documentation
109
+
110
+ Full documentation at [ReadTheDocs](https://pyreduce-astro.readthedocs.io/).
111
+
112
+ ## Output
113
+
114
+ PyReduce creates `.ech` files (standard FITS with binary table extension). Headers include original keywords plus PyReduce-specific ones prefixed with `e_`.
@@ -0,0 +1,62 @@
1
+ [![CI](https://github.com/ivh/PyReduce/actions/workflows/python-publish.yml/badge.svg)](https://github.com/ivh/PyReduce/actions/workflows/python-publish.yml)
2
+ [![Documentation Status](https://readthedocs.org/projects/pyreduce-astro/badge/?version=latest)](https://pyreduce-astro.readthedocs.io/en/latest/?badge=latest)
3
+ [![Python 3.11+](https://img.shields.io/badge/python-3.11+-blue.svg)](https://www.python.org/downloads/)
4
+
5
+ # PyReduce
6
+
7
+ A data reduction pipeline for echelle spectrographs (HARPS, UVES, XSHOOTER, CRIRES+, JWST/NIRISS, and more).
8
+
9
+ Based on the [REDUCE](http://www.astro.uu.se/~piskunov/RESEARCH/REDUCE/) package. See the papers:
10
+ - Piskunov & Valenti (2001) [doi:10.1051/0004-6361:20020175](https://doi.org/10.1051/0004-6361:20020175)
11
+ - Piskunov, Wehrhahn & Marquart (2021) [doi:10.1051/0004-6361/202038293](https://doi.org/10.1051/0004-6361/202038293)
12
+
13
+ ## Installation
14
+
15
+ ```bash
16
+ # Using uv (recommended)
17
+ uv add pyreduce-astro
18
+
19
+ # Or pip
20
+ pip install pyreduce-astro
21
+ ```
22
+
23
+ For development:
24
+ ```bash
25
+ git clone https://github.com/ivh/PyReduce
26
+ cd PyReduce
27
+ uv sync
28
+ ```
29
+
30
+ ## Quick Start
31
+
32
+ ```bash
33
+ # Download sample data
34
+ uv run reduce download UVES
35
+
36
+ # Run reduction
37
+ uv run reduce run UVES HD132205 --steps bias,flat,orders,science
38
+
39
+ # Or run individual steps
40
+ uv run reduce bias UVES HD132205
41
+ uv run reduce flat UVES HD132205
42
+ ```
43
+
44
+ Or use the Python API:
45
+ ```python
46
+ from pyreduce.pipeline import Pipeline
47
+
48
+ Pipeline.from_instrument(
49
+ instrument="UVES",
50
+ target="HD132205",
51
+ night="2010-04-01",
52
+ arm="middle",
53
+ ).run()
54
+ ```
55
+
56
+ ## Documentation
57
+
58
+ Full documentation at [ReadTheDocs](https://pyreduce-astro.readthedocs.io/).
59
+
60
+ ## Output
61
+
62
+ PyReduce creates `.ech` files (standard FITS with binary table extension). Headers include original keywords plus PyReduce-specific ones prefixed with `e_`.
@@ -4,15 +4,18 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "pyreduce-astro"
7
- version = "0.6.0b5"
7
+ version = "0.7a1"
8
8
  requires-python = ">=3.11"
9
9
  description = "A data reduction package for echelle spectrographs"
10
10
  readme = "README.md"
11
11
  authors = [
12
- {name = "Thomas Marquart", email = "thomas.marquart@astro.uu.se"},
13
12
  {name = "Nikolai Piskunov"},
13
+ {name = "Thomas Marquart"},
14
14
  {name = "Ansgar Wehrhahn"}
15
15
  ]
16
+ maintainers = [
17
+ {name = "Thomas Marquart", email = "thomas.marquart@astro.uu.se"}
18
+ ]
16
19
  license = {text = "GPL-3.0-or-later"}
17
20
  classifiers = [
18
21
  "Development Status :: 4 - Beta",
@@ -23,10 +26,12 @@ classifiers = [
23
26
  "Programming Language :: Python :: 3.11",
24
27
  "Programming Language :: Python :: 3.12",
25
28
  "Programming Language :: Python :: 3.13",
29
+ "Programming Language :: Python :: 3.14",
26
30
  "Topic :: Scientific/Engineering :: Astronomy",
27
31
  ]
28
32
 
29
33
  dependencies = [
34
+ "click>=8.1.0",
30
35
  "cffi>=1.17.1",
31
36
  "numpy>=1.26.0",
32
37
  "matplotlib>=3.8.0",
@@ -37,6 +42,8 @@ dependencies = [
37
42
  "emcee>=3.1.0",
38
43
  "joblib>=1.3.0",
39
44
  "jsonschema>=4.20.0",
45
+ "pyyaml>=6.0.0",
46
+ "pydantic>=2.5.0",
40
47
  "spectres>=2.2.0",
41
48
  "python-dateutil>=2.8.0",
42
49
  "scikit-image>=0.22.0",
@@ -52,6 +59,7 @@ dev = [
52
59
  "pytest>=7.4.0",
53
60
  "pytest-cov>=4.1.0",
54
61
  "sphinx>=7.2.0",
62
+ "myst-parser>=3.0.0",
55
63
  "setuptools", # Required for CFFI compilation in tests (Python 3.12+)
56
64
  ]
57
65
 
@@ -61,6 +69,9 @@ Documentation = "https://pyreduce-astro.readthedocs.io"
61
69
  Repository = "https://github.com/ivh/PyReduce"
62
70
  Issues = "https://github.com/ivh/PyReduce/issues"
63
71
 
72
+ [project.scripts]
73
+ reduce = "pyreduce.__main__:main"
74
+
64
75
  # Hatch build configuration
65
76
  [tool.hatch.build]
66
77
  packages = ["pyreduce"]
@@ -160,6 +171,10 @@ markers = [
160
171
  "slow: Tests taking >5 seconds",
161
172
  "downloads: Tests that download sample datasets",
162
173
  ]
174
+ filterwarnings = [
175
+ "ignore:The following header keyword is invalid:astropy.utils.exceptions.AstropyUserWarning",
176
+ "ignore:Invalid 'BLANK' keyword:astropy.io.fits.verify.VerifyWarning",
177
+ ]
163
178
 
164
179
  # Coverage configuration
165
180
  [tool.coverage.run]
@@ -186,16 +201,21 @@ dev = [
186
201
  "pytest>=7.4.0",
187
202
  "pytest-cov>=4.1.0",
188
203
  "sphinx>=7.2.0",
204
+ "ipython>=9.8.0",
189
205
  ]
190
206
 
191
207
  # cibuildwheel configuration for building platform-specific wheels
192
208
  [tool.cibuildwheel]
193
- # Build for Python 3.11, 3.12, 3.13 on common platforms
194
- build = "cp311-* cp312-* cp313-*"
195
-
196
- # Skip musllinux (use manylinux instead) and 32-bit builds
209
+ build = "cp311-* cp312-* cp313-* cp314-*"
197
210
  skip = "*-musllinux_* *-win32 *-manylinux_i686"
198
-
199
- # Test the built wheels
200
211
  test-command = "pytest {project}/test -m unit"
201
212
  test-requires = ["pytest"]
213
+
214
+ [tool.cibuildwheel.linux]
215
+ archs = ["x86_64"]
216
+
217
+ [tool.cibuildwheel.macos]
218
+ archs = ["arm64"]
219
+
220
+ [tool.cibuildwheel.windows]
221
+ archs = ["AMD64"]
@@ -0,0 +1,206 @@
1
+ """
2
+ PyReduce command-line interface.
3
+
4
+ Usage:
5
+ uv run reduce --help
6
+ uv run reduce run UVES HD132205 --night 2010-04-01
7
+ uv run reduce run UVES HD132205 --steps bias,flat,orders
8
+ uv run reduce bias UVES HD132205
9
+ uv run reduce combine --output combined.fits *.final.fits
10
+ """
11
+
12
+ import click
13
+
14
+ from . import datasets
15
+ from .configuration import get_configuration_for_instrument
16
+ from .reduce import main as reduce_main
17
+ from .tools.combine import combine as tools_combine
18
+
19
+ ALL_STEPS = (
20
+ "bias",
21
+ "flat",
22
+ "orders",
23
+ "curvature",
24
+ "scatter",
25
+ "norm_flat",
26
+ "wavecal_master",
27
+ "wavecal_init",
28
+ "wavecal",
29
+ "freq_comb_master",
30
+ "freq_comb",
31
+ "science",
32
+ "continuum",
33
+ "finalize",
34
+ )
35
+
36
+
37
+ @click.group()
38
+ @click.version_option(package_name="pyreduce-astro")
39
+ def cli():
40
+ """PyReduce - Echelle spectrograph data reduction pipeline."""
41
+ pass
42
+
43
+
44
+ @cli.command()
45
+ @click.argument("instrument")
46
+ @click.argument("target")
47
+ @click.option("--night", "-n", default=None, help="Observation night (YYYY-MM-DD)")
48
+ @click.option("--arm", "-a", default=None, help="Instrument arm/detector")
49
+ @click.option(
50
+ "--steps",
51
+ "-s",
52
+ default=None,
53
+ help="Comma-separated steps to run (default: all)",
54
+ )
55
+ @click.option(
56
+ "--base-dir",
57
+ "-b",
58
+ default=None,
59
+ help="Base directory for data (default: $REDUCE_DATA or ~/REDUCE_DATA)",
60
+ )
61
+ @click.option(
62
+ "--input-dir", "-i", default="raw", help="Input directory relative to base"
63
+ )
64
+ @click.option(
65
+ "--output-dir", "-o", default="reduced", help="Output directory relative to base"
66
+ )
67
+ @click.option(
68
+ "--plot", "-p", default=0, help="Plot level (0=none, 1=save, 2=interactive)"
69
+ )
70
+ @click.option(
71
+ "--order-range",
72
+ default=None,
73
+ help="Order range to process (e.g., '1,21')",
74
+ )
75
+ def run(
76
+ instrument,
77
+ target,
78
+ night,
79
+ arm,
80
+ steps,
81
+ base_dir,
82
+ input_dir,
83
+ output_dir,
84
+ plot,
85
+ order_range,
86
+ ):
87
+ """Run the reduction pipeline.
88
+
89
+ INSTRUMENT: Name of the instrument (e.g., UVES, HARPS, XSHOOTER)
90
+ TARGET: Target star name or regex pattern
91
+ """
92
+ # Parse steps
93
+ if steps:
94
+ steps = tuple(s.strip() for s in steps.split(","))
95
+ else:
96
+ steps = "all"
97
+
98
+ # Parse order range
99
+ if order_range:
100
+ parts = order_range.split(",")
101
+ order_range = (int(parts[0]), int(parts[1]))
102
+
103
+ # Load configuration
104
+ config = get_configuration_for_instrument(instrument)
105
+
106
+ # Run reduction
107
+ reduce_main(
108
+ instrument=instrument,
109
+ target=target,
110
+ night=night,
111
+ arms=arm,
112
+ steps=steps,
113
+ base_dir=base_dir or "",
114
+ input_dir=input_dir,
115
+ output_dir=output_dir,
116
+ configuration=config,
117
+ order_range=order_range,
118
+ plot=plot,
119
+ )
120
+
121
+
122
+ @cli.command()
123
+ @click.argument("files", nargs=-1, required=True)
124
+ @click.option("--output", "-o", default="combined.fits", help="Output filename")
125
+ @click.option("--plot", "-p", default=None, type=int, help="Plot specific order")
126
+ def combine(files, output, plot):
127
+ """Combine multiple reduced spectra.
128
+
129
+ FILES: Input .final.fits files to combine
130
+ """
131
+ tools_combine(list(files), output, plot=plot)
132
+
133
+
134
+ @cli.command()
135
+ @click.argument("instrument")
136
+ def download(instrument):
137
+ """Download sample dataset for an instrument.
138
+
139
+ INSTRUMENT: Name of the instrument (e.g., UVES, HARPS)
140
+ """
141
+ instrument = instrument.upper()
142
+ dataset_func = getattr(datasets, instrument, None)
143
+ if dataset_func is None:
144
+ available = [
145
+ name
146
+ for name in dir(datasets)
147
+ if name.isupper() and not name.startswith("_")
148
+ ]
149
+ raise click.ClickException(
150
+ f"Unknown instrument '{instrument}'. Available: {', '.join(available)}"
151
+ )
152
+ path = dataset_func()
153
+ click.echo(f"Dataset downloaded to: {path}")
154
+
155
+
156
+ @cli.command("list-steps")
157
+ def list_steps():
158
+ """List all available reduction steps."""
159
+ click.echo("Available reduction steps:")
160
+ for step in ALL_STEPS:
161
+ click.echo(f" - {step}")
162
+
163
+
164
+ def make_step_command(step_name):
165
+ """Factory to create a command for a single step."""
166
+
167
+ @click.command(name=step_name)
168
+ @click.argument("instrument")
169
+ @click.argument("target")
170
+ @click.option("--night", "-n", default=None, help="Observation night")
171
+ @click.option("--arm", "-a", default=None, help="Instrument arm")
172
+ @click.option("--base-dir", "-b", default=None, help="Base directory")
173
+ @click.option("--input-dir", "-i", default="raw", help="Input directory")
174
+ @click.option("--output-dir", "-o", default="reduced", help="Output directory")
175
+ @click.option("--plot", "-p", default=0, help="Plot level")
176
+ def cmd(instrument, target, night, arm, base_dir, input_dir, output_dir, plot):
177
+ config = get_configuration_for_instrument(instrument)
178
+ reduce_main(
179
+ instrument=instrument,
180
+ target=target,
181
+ night=night,
182
+ arms=arm,
183
+ steps=(step_name,),
184
+ base_dir=base_dir or "",
185
+ input_dir=input_dir,
186
+ output_dir=output_dir,
187
+ configuration=config,
188
+ plot=plot,
189
+ )
190
+
191
+ cmd.__doc__ = f"Run the '{step_name}' step."
192
+ return cmd
193
+
194
+
195
+ # Register individual step commands
196
+ for _step in ALL_STEPS:
197
+ cli.add_command(make_step_command(_step))
198
+
199
+
200
+ def main():
201
+ """Entry point for the CLI."""
202
+ cli()
203
+
204
+
205
+ if __name__ == "__main__":
206
+ main()