pyreduce-astro 0.6.0b1__tar.gz → 0.6.0b3__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 (152) hide show
  1. {pyreduce_astro-0.6.0b1 → pyreduce_astro-0.6.0b3}/PKG-INFO +2 -1
  2. {pyreduce_astro-0.6.0b1 → pyreduce_astro-0.6.0b3}/pyproject.toml +9 -2
  3. {pyreduce_astro-0.6.0b1 → pyreduce_astro-0.6.0b3}/pyreduce/__init__.py +12 -3
  4. {pyreduce_astro-0.6.0b1 → pyreduce_astro-0.6.0b3}/pyreduce/extract.py +6 -4
  5. {pyreduce_astro-0.6.0b1 → pyreduce_astro-0.6.0b3}/pyreduce/instruments/andes.json +2 -0
  6. {pyreduce_astro-0.6.0b1 → pyreduce_astro-0.6.0b3}/pyreduce/instruments/andes.py +3 -1
  7. {pyreduce_astro-0.6.0b1 → pyreduce_astro-0.6.0b3}/pyreduce/reduce.py +1 -1
  8. pyreduce_astro-0.6.0b3/pyreduce/settings/settings_ANDES.json +89 -0
  9. {pyreduce_astro-0.6.0b1 → pyreduce_astro-0.6.0b3}/.gitignore +0 -0
  10. {pyreduce_astro-0.6.0b1 → pyreduce_astro-0.6.0b3}/LICENSE +0 -0
  11. {pyreduce_astro-0.6.0b1 → pyreduce_astro-0.6.0b3}/README.md +0 -0
  12. {pyreduce_astro-0.6.0b1 → pyreduce_astro-0.6.0b3}/hatch_build.py +0 -0
  13. {pyreduce_astro-0.6.0b1 → pyreduce_astro-0.6.0b3}/pyreduce/__main__.py +0 -0
  14. {pyreduce_astro-0.6.0b1 → pyreduce_astro-0.6.0b3}/pyreduce/clib/__init__.py +0 -0
  15. {pyreduce_astro-0.6.0b1 → pyreduce_astro-0.6.0b3}/pyreduce/clib/build_extract.py +0 -0
  16. {pyreduce_astro-0.6.0b1 → pyreduce_astro-0.6.0b3}/pyreduce/clib/slit_func_2d_xi_zeta_bd.c +0 -0
  17. {pyreduce_astro-0.6.0b1 → pyreduce_astro-0.6.0b3}/pyreduce/clib/slit_func_2d_xi_zeta_bd.h +0 -0
  18. {pyreduce_astro-0.6.0b1 → pyreduce_astro-0.6.0b3}/pyreduce/clib/slit_func_bd.c +0 -0
  19. {pyreduce_astro-0.6.0b1 → pyreduce_astro-0.6.0b3}/pyreduce/clib/slit_func_bd.h +0 -0
  20. {pyreduce_astro-0.6.0b1 → pyreduce_astro-0.6.0b3}/pyreduce/clipnflip.py +0 -0
  21. {pyreduce_astro-0.6.0b1 → pyreduce_astro-0.6.0b3}/pyreduce/combine_frames.py +0 -0
  22. {pyreduce_astro-0.6.0b1 → pyreduce_astro-0.6.0b3}/pyreduce/configuration.py +0 -0
  23. {pyreduce_astro-0.6.0b1 → pyreduce_astro-0.6.0b3}/pyreduce/continuum_normalization.py +0 -0
  24. {pyreduce_astro-0.6.0b1 → pyreduce_astro-0.6.0b3}/pyreduce/cwrappers.py +0 -0
  25. {pyreduce_astro-0.6.0b1 → pyreduce_astro-0.6.0b3}/pyreduce/datasets.py +0 -0
  26. {pyreduce_astro-0.6.0b1 → pyreduce_astro-0.6.0b3}/pyreduce/echelle.py +0 -0
  27. {pyreduce_astro-0.6.0b1 → pyreduce_astro-0.6.0b3}/pyreduce/estimate_background_scatter.py +0 -0
  28. {pyreduce_astro-0.6.0b1 → pyreduce_astro-0.6.0b3}/pyreduce/extraction_width.py +0 -0
  29. {pyreduce_astro-0.6.0b1 → pyreduce_astro-0.6.0b3}/pyreduce/instruments/__init__.py +0 -0
  30. {pyreduce_astro-0.6.0b1 → pyreduce_astro-0.6.0b3}/pyreduce/instruments/common.json +0 -0
  31. {pyreduce_astro-0.6.0b1 → pyreduce_astro-0.6.0b3}/pyreduce/instruments/common.py +0 -0
  32. {pyreduce_astro-0.6.0b1 → pyreduce_astro-0.6.0b3}/pyreduce/instruments/crires_plus.json +0 -0
  33. {pyreduce_astro-0.6.0b1 → pyreduce_astro-0.6.0b3}/pyreduce/instruments/crires_plus.py +0 -0
  34. {pyreduce_astro-0.6.0b1 → pyreduce_astro-0.6.0b3}/pyreduce/instruments/filters.py +0 -0
  35. {pyreduce_astro-0.6.0b1 → pyreduce_astro-0.6.0b3}/pyreduce/instruments/harpn.json +0 -0
  36. {pyreduce_astro-0.6.0b1 → pyreduce_astro-0.6.0b3}/pyreduce/instruments/harpn.py +0 -0
  37. {pyreduce_astro-0.6.0b1 → pyreduce_astro-0.6.0b3}/pyreduce/instruments/harps.json +0 -0
  38. {pyreduce_astro-0.6.0b1 → pyreduce_astro-0.6.0b3}/pyreduce/instruments/harps.py +0 -0
  39. {pyreduce_astro-0.6.0b1 → pyreduce_astro-0.6.0b3}/pyreduce/instruments/instrument_info.py +0 -0
  40. {pyreduce_astro-0.6.0b1 → pyreduce_astro-0.6.0b3}/pyreduce/instruments/instrument_schema.json +0 -0
  41. {pyreduce_astro-0.6.0b1 → pyreduce_astro-0.6.0b3}/pyreduce/instruments/jwst_miri.json +0 -0
  42. {pyreduce_astro-0.6.0b1 → pyreduce_astro-0.6.0b3}/pyreduce/instruments/jwst_miri.py +0 -0
  43. {pyreduce_astro-0.6.0b1 → pyreduce_astro-0.6.0b3}/pyreduce/instruments/jwst_niriss.json +0 -0
  44. {pyreduce_astro-0.6.0b1 → pyreduce_astro-0.6.0b3}/pyreduce/instruments/jwst_niriss.py +0 -0
  45. {pyreduce_astro-0.6.0b1 → pyreduce_astro-0.6.0b3}/pyreduce/instruments/lick_apf.json +0 -0
  46. {pyreduce_astro-0.6.0b1 → pyreduce_astro-0.6.0b3}/pyreduce/instruments/lick_apf.py +0 -0
  47. {pyreduce_astro-0.6.0b1 → pyreduce_astro-0.6.0b3}/pyreduce/instruments/mcdonald.json +0 -0
  48. {pyreduce_astro-0.6.0b1 → pyreduce_astro-0.6.0b3}/pyreduce/instruments/mcdonald.py +0 -0
  49. {pyreduce_astro-0.6.0b1 → pyreduce_astro-0.6.0b3}/pyreduce/instruments/metis_ifu.json +0 -0
  50. {pyreduce_astro-0.6.0b1 → pyreduce_astro-0.6.0b3}/pyreduce/instruments/metis_ifu.py +0 -0
  51. {pyreduce_astro-0.6.0b1 → pyreduce_astro-0.6.0b3}/pyreduce/instruments/metis_lss.json +0 -0
  52. {pyreduce_astro-0.6.0b1 → pyreduce_astro-0.6.0b3}/pyreduce/instruments/metis_lss.py +0 -0
  53. {pyreduce_astro-0.6.0b1 → pyreduce_astro-0.6.0b3}/pyreduce/instruments/micado.json +0 -0
  54. {pyreduce_astro-0.6.0b1 → pyreduce_astro-0.6.0b3}/pyreduce/instruments/micado.py +0 -0
  55. {pyreduce_astro-0.6.0b1 → pyreduce_astro-0.6.0b3}/pyreduce/instruments/neid.json +0 -0
  56. {pyreduce_astro-0.6.0b1 → pyreduce_astro-0.6.0b3}/pyreduce/instruments/neid.py +0 -0
  57. {pyreduce_astro-0.6.0b1 → pyreduce_astro-0.6.0b3}/pyreduce/instruments/nirspec.json +0 -0
  58. {pyreduce_astro-0.6.0b1 → pyreduce_astro-0.6.0b3}/pyreduce/instruments/nirspec.py +0 -0
  59. {pyreduce_astro-0.6.0b1 → pyreduce_astro-0.6.0b3}/pyreduce/instruments/nte.json +0 -0
  60. {pyreduce_astro-0.6.0b1 → pyreduce_astro-0.6.0b3}/pyreduce/instruments/nte.py +0 -0
  61. {pyreduce_astro-0.6.0b1 → pyreduce_astro-0.6.0b3}/pyreduce/instruments/uves.json +0 -0
  62. {pyreduce_astro-0.6.0b1 → pyreduce_astro-0.6.0b3}/pyreduce/instruments/uves.py +0 -0
  63. {pyreduce_astro-0.6.0b1 → pyreduce_astro-0.6.0b3}/pyreduce/instruments/xshooter.json +0 -0
  64. {pyreduce_astro-0.6.0b1 → pyreduce_astro-0.6.0b3}/pyreduce/instruments/xshooter.py +0 -0
  65. {pyreduce_astro-0.6.0b1 → pyreduce_astro-0.6.0b3}/pyreduce/make_shear.py +0 -0
  66. {pyreduce_astro-0.6.0b1 → pyreduce_astro-0.6.0b3}/pyreduce/masks/mask_crires_plus_det1.fits.gz +0 -0
  67. {pyreduce_astro-0.6.0b1 → pyreduce_astro-0.6.0b3}/pyreduce/masks/mask_crires_plus_det2.fits.gz +0 -0
  68. {pyreduce_astro-0.6.0b1 → pyreduce_astro-0.6.0b3}/pyreduce/masks/mask_crires_plus_det3.fits.gz +0 -0
  69. {pyreduce_astro-0.6.0b1 → pyreduce_astro-0.6.0b3}/pyreduce/masks/mask_ctio_chiron.fits.gz +0 -0
  70. {pyreduce_astro-0.6.0b1 → pyreduce_astro-0.6.0b3}/pyreduce/masks/mask_elodie.fits.gz +0 -0
  71. {pyreduce_astro-0.6.0b1 → pyreduce_astro-0.6.0b3}/pyreduce/masks/mask_feros3.fits.gz +0 -0
  72. {pyreduce_astro-0.6.0b1 → pyreduce_astro-0.6.0b3}/pyreduce/masks/mask_flames_giraffe.fits.gz +0 -0
  73. {pyreduce_astro-0.6.0b1 → pyreduce_astro-0.6.0b3}/pyreduce/masks/mask_harps_blue.fits.gz +0 -0
  74. {pyreduce_astro-0.6.0b1 → pyreduce_astro-0.6.0b3}/pyreduce/masks/mask_harps_red.fits.gz +0 -0
  75. {pyreduce_astro-0.6.0b1 → pyreduce_astro-0.6.0b3}/pyreduce/masks/mask_hds_blue.fits.gz +0 -0
  76. {pyreduce_astro-0.6.0b1 → pyreduce_astro-0.6.0b3}/pyreduce/masks/mask_hds_red.fits.gz +0 -0
  77. {pyreduce_astro-0.6.0b1 → pyreduce_astro-0.6.0b3}/pyreduce/masks/mask_het_hrs_2x5.fits.gz +0 -0
  78. {pyreduce_astro-0.6.0b1 → pyreduce_astro-0.6.0b3}/pyreduce/masks/mask_jwst_miri_lrs_slitless.fits.gz +0 -0
  79. {pyreduce_astro-0.6.0b1 → pyreduce_astro-0.6.0b3}/pyreduce/masks/mask_jwst_niriss_gr700xd.fits.gz +0 -0
  80. {pyreduce_astro-0.6.0b1 → pyreduce_astro-0.6.0b3}/pyreduce/masks/mask_lick_apf_.fits.gz +0 -0
  81. {pyreduce_astro-0.6.0b1 → pyreduce_astro-0.6.0b3}/pyreduce/masks/mask_mcdonald.fits.gz +0 -0
  82. {pyreduce_astro-0.6.0b1 → pyreduce_astro-0.6.0b3}/pyreduce/masks/mask_nes.fits.gz +0 -0
  83. {pyreduce_astro-0.6.0b1 → pyreduce_astro-0.6.0b3}/pyreduce/masks/mask_nirspec_nirspec.fits.gz +0 -0
  84. {pyreduce_astro-0.6.0b1 → pyreduce_astro-0.6.0b3}/pyreduce/masks/mask_sarg.fits.gz +0 -0
  85. {pyreduce_astro-0.6.0b1 → pyreduce_astro-0.6.0b3}/pyreduce/masks/mask_sarg_2x2a.fits.gz +0 -0
  86. {pyreduce_astro-0.6.0b1 → pyreduce_astro-0.6.0b3}/pyreduce/masks/mask_sarg_2x2b.fits.gz +0 -0
  87. {pyreduce_astro-0.6.0b1 → pyreduce_astro-0.6.0b3}/pyreduce/masks/mask_subaru_hds_red.fits.gz +0 -0
  88. {pyreduce_astro-0.6.0b1 → pyreduce_astro-0.6.0b3}/pyreduce/masks/mask_uves_blue.fits.gz +0 -0
  89. {pyreduce_astro-0.6.0b1 → pyreduce_astro-0.6.0b3}/pyreduce/masks/mask_uves_blue_binned_2_2.fits.gz +0 -0
  90. {pyreduce_astro-0.6.0b1 → pyreduce_astro-0.6.0b3}/pyreduce/masks/mask_uves_middle.fits.gz +0 -0
  91. {pyreduce_astro-0.6.0b1 → pyreduce_astro-0.6.0b3}/pyreduce/masks/mask_uves_middle_2x2_split.fits.gz +0 -0
  92. {pyreduce_astro-0.6.0b1 → pyreduce_astro-0.6.0b3}/pyreduce/masks/mask_uves_middle_binned_2_2.fits.gz +0 -0
  93. {pyreduce_astro-0.6.0b1 → pyreduce_astro-0.6.0b3}/pyreduce/masks/mask_uves_red.fits.gz +0 -0
  94. {pyreduce_astro-0.6.0b1 → pyreduce_astro-0.6.0b3}/pyreduce/masks/mask_uves_red_2x2.fits.gz +0 -0
  95. {pyreduce_astro-0.6.0b1 → pyreduce_astro-0.6.0b3}/pyreduce/masks/mask_uves_red_2x2_split.fits.gz +0 -0
  96. {pyreduce_astro-0.6.0b1 → pyreduce_astro-0.6.0b3}/pyreduce/masks/mask_uves_red_binned_2_2.fits.gz +0 -0
  97. {pyreduce_astro-0.6.0b1 → pyreduce_astro-0.6.0b3}/pyreduce/masks/mask_xshooter_nir.fits.gz +0 -0
  98. {pyreduce_astro-0.6.0b1 → pyreduce_astro-0.6.0b3}/pyreduce/rectify.py +0 -0
  99. {pyreduce_astro-0.6.0b1 → pyreduce_astro-0.6.0b3}/pyreduce/settings/settings_CRIRES_PLUS.json +0 -0
  100. {pyreduce_astro-0.6.0b1 → pyreduce_astro-0.6.0b3}/pyreduce/settings/settings_HARPN.json +0 -0
  101. {pyreduce_astro-0.6.0b1 → pyreduce_astro-0.6.0b3}/pyreduce/settings/settings_HARPS.json +0 -0
  102. {pyreduce_astro-0.6.0b1 → pyreduce_astro-0.6.0b3}/pyreduce/settings/settings_JWST_MIRI.json +0 -0
  103. {pyreduce_astro-0.6.0b1 → pyreduce_astro-0.6.0b3}/pyreduce/settings/settings_JWST_NIRISS.json +0 -0
  104. {pyreduce_astro-0.6.0b1 → pyreduce_astro-0.6.0b3}/pyreduce/settings/settings_LICK_APF.json +0 -0
  105. {pyreduce_astro-0.6.0b1 → pyreduce_astro-0.6.0b3}/pyreduce/settings/settings_MCDONALD.json +0 -0
  106. {pyreduce_astro-0.6.0b1 → pyreduce_astro-0.6.0b3}/pyreduce/settings/settings_METIS_IFU.json +0 -0
  107. {pyreduce_astro-0.6.0b1 → pyreduce_astro-0.6.0b3}/pyreduce/settings/settings_METIS_LSS.json +0 -0
  108. {pyreduce_astro-0.6.0b1 → pyreduce_astro-0.6.0b3}/pyreduce/settings/settings_MICADO.json +0 -0
  109. {pyreduce_astro-0.6.0b1 → pyreduce_astro-0.6.0b3}/pyreduce/settings/settings_NEID.json +0 -0
  110. {pyreduce_astro-0.6.0b1 → pyreduce_astro-0.6.0b3}/pyreduce/settings/settings_NIRSPEC.json +0 -0
  111. {pyreduce_astro-0.6.0b1 → pyreduce_astro-0.6.0b3}/pyreduce/settings/settings_NTE.json +0 -0
  112. {pyreduce_astro-0.6.0b1 → pyreduce_astro-0.6.0b3}/pyreduce/settings/settings_UVES.json +0 -0
  113. {pyreduce_astro-0.6.0b1 → pyreduce_astro-0.6.0b3}/pyreduce/settings/settings_XSHOOTER.json +0 -0
  114. {pyreduce_astro-0.6.0b1 → pyreduce_astro-0.6.0b3}/pyreduce/settings/settings_pyreduce.json +0 -0
  115. {pyreduce_astro-0.6.0b1 → pyreduce_astro-0.6.0b3}/pyreduce/settings/settings_schema.json +0 -0
  116. {pyreduce_astro-0.6.0b1 → pyreduce_astro-0.6.0b3}/pyreduce/tools/__init__.py +0 -0
  117. {pyreduce_astro-0.6.0b1 → pyreduce_astro-0.6.0b3}/pyreduce/tools/combine.py +0 -0
  118. {pyreduce_astro-0.6.0b1 → pyreduce_astro-0.6.0b3}/pyreduce/trace_orders.py +0 -0
  119. {pyreduce_astro-0.6.0b1 → pyreduce_astro-0.6.0b3}/pyreduce/util.py +0 -0
  120. {pyreduce_astro-0.6.0b1 → pyreduce_astro-0.6.0b3}/pyreduce/wavecal/MICADO_HK_3arcsec_chip5.npz +0 -0
  121. {pyreduce_astro-0.6.0b1 → pyreduce_astro-0.6.0b3}/pyreduce/wavecal/atlas/thar.fits +0 -0
  122. {pyreduce_astro-0.6.0b1 → pyreduce_astro-0.6.0b3}/pyreduce/wavecal/atlas/thar_list.txt +0 -0
  123. {pyreduce_astro-0.6.0b1 → pyreduce_astro-0.6.0b3}/pyreduce/wavecal/atlas/une.fits +0 -0
  124. {pyreduce_astro-0.6.0b1 → pyreduce_astro-0.6.0b3}/pyreduce/wavecal/convert.py +0 -0
  125. {pyreduce_astro-0.6.0b1 → pyreduce_astro-0.6.0b3}/pyreduce/wavecal/crires_plus_J1228_Open_det1.npz +0 -0
  126. {pyreduce_astro-0.6.0b1 → pyreduce_astro-0.6.0b3}/pyreduce/wavecal/crires_plus_J1228_Open_det2.npz +0 -0
  127. {pyreduce_astro-0.6.0b1 → pyreduce_astro-0.6.0b3}/pyreduce/wavecal/crires_plus_J1228_Open_det3.npz +0 -0
  128. {pyreduce_astro-0.6.0b1 → pyreduce_astro-0.6.0b3}/pyreduce/wavecal/harpn_harpn_2D.npz +0 -0
  129. {pyreduce_astro-0.6.0b1 → pyreduce_astro-0.6.0b3}/pyreduce/wavecal/harps_blue_2D.npz +0 -0
  130. {pyreduce_astro-0.6.0b1 → pyreduce_astro-0.6.0b3}/pyreduce/wavecal/harps_blue_pol_2D.npz +0 -0
  131. {pyreduce_astro-0.6.0b1 → pyreduce_astro-0.6.0b3}/pyreduce/wavecal/harps_red_2D.npz +0 -0
  132. {pyreduce_astro-0.6.0b1 → pyreduce_astro-0.6.0b3}/pyreduce/wavecal/harps_red_pol_2D.npz +0 -0
  133. {pyreduce_astro-0.6.0b1 → pyreduce_astro-0.6.0b3}/pyreduce/wavecal/mcdonald.npz +0 -0
  134. {pyreduce_astro-0.6.0b1 → pyreduce_astro-0.6.0b3}/pyreduce/wavecal/metis_lss_l_2D.npz +0 -0
  135. {pyreduce_astro-0.6.0b1 → pyreduce_astro-0.6.0b3}/pyreduce/wavecal/metis_lss_m_2D.npz +0 -0
  136. {pyreduce_astro-0.6.0b1 → pyreduce_astro-0.6.0b3}/pyreduce/wavecal/nirspec_K2.npz +0 -0
  137. {pyreduce_astro-0.6.0b1 → pyreduce_astro-0.6.0b3}/pyreduce/wavecal/uves_blue_360nm_2D.npz +0 -0
  138. {pyreduce_astro-0.6.0b1 → pyreduce_astro-0.6.0b3}/pyreduce/wavecal/uves_blue_390nm_2D.npz +0 -0
  139. {pyreduce_astro-0.6.0b1 → pyreduce_astro-0.6.0b3}/pyreduce/wavecal/uves_blue_437nm_2D.npz +0 -0
  140. {pyreduce_astro-0.6.0b1 → pyreduce_astro-0.6.0b3}/pyreduce/wavecal/uves_middle_2x2_2D.npz +0 -0
  141. {pyreduce_astro-0.6.0b1 → pyreduce_astro-0.6.0b3}/pyreduce/wavecal/uves_middle_565nm_2D.npz +0 -0
  142. {pyreduce_astro-0.6.0b1 → pyreduce_astro-0.6.0b3}/pyreduce/wavecal/uves_middle_580nm_2D.npz +0 -0
  143. {pyreduce_astro-0.6.0b1 → pyreduce_astro-0.6.0b3}/pyreduce/wavecal/uves_middle_600nm_2D.npz +0 -0
  144. {pyreduce_astro-0.6.0b1 → pyreduce_astro-0.6.0b3}/pyreduce/wavecal/uves_middle_665nm_2D.npz +0 -0
  145. {pyreduce_astro-0.6.0b1 → pyreduce_astro-0.6.0b3}/pyreduce/wavecal/uves_middle_860nm_2D.npz +0 -0
  146. {pyreduce_astro-0.6.0b1 → pyreduce_astro-0.6.0b3}/pyreduce/wavecal/uves_red_580nm_2D.npz +0 -0
  147. {pyreduce_astro-0.6.0b1 → pyreduce_astro-0.6.0b3}/pyreduce/wavecal/uves_red_600nm_2D.npz +0 -0
  148. {pyreduce_astro-0.6.0b1 → pyreduce_astro-0.6.0b3}/pyreduce/wavecal/uves_red_665nm_2D.npz +0 -0
  149. {pyreduce_astro-0.6.0b1 → pyreduce_astro-0.6.0b3}/pyreduce/wavecal/uves_red_760nm_2D.npz +0 -0
  150. {pyreduce_astro-0.6.0b1 → pyreduce_astro-0.6.0b3}/pyreduce/wavecal/uves_red_860nm_2D.npz +0 -0
  151. {pyreduce_astro-0.6.0b1 → pyreduce_astro-0.6.0b3}/pyreduce/wavecal/xshooter_nir.npz +0 -0
  152. {pyreduce_astro-0.6.0b1 → pyreduce_astro-0.6.0b3}/pyreduce/wavelength_calibration.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pyreduce-astro
3
- Version: 0.6.0b1
3
+ Version: 0.6.0b3
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.readthedocs.io
@@ -41,6 +41,7 @@ Requires-Dist: pre-commit>=3.5.0; extra == 'dev'
41
41
  Requires-Dist: pytest-cov>=4.1.0; extra == 'dev'
42
42
  Requires-Dist: pytest>=7.4.0; extra == 'dev'
43
43
  Requires-Dist: ruff>=0.8.0; extra == 'dev'
44
+ Requires-Dist: setuptools; extra == 'dev'
44
45
  Requires-Dist: sphinx>=7.2.0; extra == 'dev'
45
46
  Description-Content-Type: text/markdown
46
47
 
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "pyreduce-astro"
7
- version = "0.6.0b1"
7
+ version = "0.6.0b3"
8
8
  requires-python = ">=3.11"
9
9
  description = "A data reduction package for echelle spectrographs"
10
10
  readme = "README.md"
@@ -52,6 +52,7 @@ dev = [
52
52
  "pytest>=7.4.0",
53
53
  "pytest-cov>=4.1.0",
54
54
  "sphinx>=7.2.0",
55
+ "setuptools", # Required for CFFI compilation in tests (Python 3.12+)
55
56
  ]
56
57
 
57
58
  [project.urls]
@@ -147,10 +148,16 @@ known-first-party = ["pyreduce"]
147
148
  [tool.pytest.ini_options]
148
149
  minversion = "7.0"
149
150
  addopts = "-ra -q --strict-markers"
150
- testpaths = ["tests"]
151
+ testpaths = ["test"]
151
152
  python_files = ["test_*.py", "*_test.py"]
152
153
  python_classes = ["Test*"]
153
154
  python_functions = ["test_*"]
155
+ markers = [
156
+ "unit: Fast unit tests with synthetic data (no downloads)",
157
+ "instrument: Integration tests using real instrument datasets",
158
+ "slow: Tests taking >5 seconds",
159
+ "downloads: Tests that download sample datasets",
160
+ ]
154
161
 
155
162
  # Coverage configuration
156
163
  [tool.coverage.run]
@@ -4,7 +4,7 @@ except ImportError: # for Python<3.8
4
4
  from importlib_metadata import PackageNotFoundError, version
5
5
 
6
6
  try:
7
- __version__ = version(__name__)
7
+ __version__ = version("pyreduce-astro")
8
8
  except PackageNotFoundError:
9
9
  __version__ = "unknown"
10
10
 
@@ -54,5 +54,14 @@ logger.addHandler(console)
54
54
  del logging
55
55
  # do not del tqdm, it is needed in the Log Handler
56
56
 
57
- # Load externally available modules
58
- from . import configuration, datasets, reduce, util
57
+
58
+ # Lazy loading for faster imports
59
+ def __getattr__(name):
60
+ """Lazy load submodules on first access."""
61
+ if name in ("configuration", "datasets", "reduce", "util"):
62
+ import importlib
63
+
64
+ module = importlib.import_module(f".{name}", __name__)
65
+ globals()[name] = module
66
+ return module
67
+ raise AttributeError(f"module {__name__!r} has no attribute {name!r}")
@@ -405,6 +405,8 @@ def fix_column_range(column_range, orders, extraction_width, nrow, ncol):
405
405
  -------
406
406
  column_range : array[nord, 2]
407
407
  updated column range
408
+ orders : array[nord, degree]
409
+ order tracing coefficients (may have rows removed if no valid pixels)
408
410
  """
409
411
 
410
412
  ix = np.arange(ncol)
@@ -426,7 +428,7 @@ def fix_column_range(column_range, orders, extraction_width, nrow, ncol):
426
428
 
427
429
  if len(points_in_image) == 0:
428
430
  # print(y_bot, y_top,nrow, ncol, points_in_image)
429
- logger.warn(
431
+ logger.warning(
430
432
  f"No pixels are completely within the extraction width for order {i}, removing it."
431
433
  )
432
434
  to_remove += [i]
@@ -452,9 +454,9 @@ def fix_column_range(column_range, orders, extraction_width, nrow, ncol):
452
454
  column_range[0] = column_range[1]
453
455
  column_range[-1] = column_range[-2]
454
456
 
455
- for i in to_remove:
456
- np.delete(column_range, i, axis=0)
457
- np.delete(orders, i, axis=0)
457
+ if to_remove:
458
+ column_range = np.delete(column_range, to_remove, axis=0)
459
+ orders = np.delete(orders, to_remove, axis=0)
458
460
 
459
461
  return column_range, orders
460
462
 
@@ -8,8 +8,10 @@
8
8
  "date_format": "fits",
9
9
  "id_mode": "ESO INS MODE",
10
10
  "id_band": "ESO INS WLEN ID",
11
+ "id_decker": "ESO INS OPTI8 ID",
11
12
  "id_lamp": "ESO INS1 LAMP? ID",
12
13
  "modes": ["SL", "IFU"],
14
+ "deckers": ["Open", "pos1", "pos2"],
13
15
  "bands": ["UBV", "RIZ", "YJH", "K"],
14
16
  "settings": ["B", "V", "R", "IZ", "Y", "J", "H", "K"],
15
17
  "chips": ["det1"],
@@ -45,8 +45,10 @@ class ANDES(Instrument):
45
45
  return modes
46
46
 
47
47
  def parse_mode(self, mode):
48
- pattern = r"([YJHKLM]\d{4})(_(Open|pos1|pos2))?_det(\d)"
48
+ pattern = r"([A-Z]+)(_(Open|pos1|pos2))?_det(\d)"
49
49
  match = re.match(pattern, mode, flags=re.IGNORECASE)
50
+ if not match:
51
+ raise ValueError(f"Invalid mode format: {mode}")
50
52
  band = match.group(1).upper()
51
53
  if match.group(3) is not None:
52
54
  decker = match.group(3).lower().capitalize()
@@ -562,7 +562,7 @@ class Bias(Step):
562
562
  hdus.writeto(
563
563
  self.savefile,
564
564
  overwrite=True,
565
- output_verify="fix", # "silentfix+ignore",
565
+ output_verify="silentfix+ignore",
566
566
  )
567
567
  logger.info("Created master bias file: %s", self.savefile)
568
568
 
@@ -0,0 +1,89 @@
1
+ {
2
+ "__instrument__": "ANDES",
3
+ "instrument": {},
4
+ "bias": {
5
+ "degree": 1
6
+ },
7
+ "flat": {
8
+ "bias_scaling": "exposure_time"
9
+ },
10
+ "orders": {
11
+ "degree": 3,
12
+ "degree_before_merge": 1,
13
+ "filter_size": 100,
14
+ "min_cluster": 200000,
15
+ "border_width": 0,
16
+ "noise": 0,
17
+ "manual": false,
18
+ "auto_merge_threshold": 1,
19
+ "merge_min_threshold": 0.9,
20
+ "bias_scaling": "exposure_time"
21
+ },
22
+ "scatter": {
23
+ "extraction_width": 0.45,
24
+ "border_width": 50,
25
+ "bias_scaling": "exposure_time"
26
+ },
27
+ "norm_flat": {
28
+ "smooth_slitfunction": 2,
29
+ "smooth_spectrum": 0,
30
+ "extraction_width": 100,
31
+ "oversampling": 12,
32
+ "swath_width": 200,
33
+ "threshold": 1000
34
+ },
35
+ "wavecal_master": {
36
+ "extraction_method": "optimal",
37
+ "extraction_width": 100,
38
+ "oversampling": 5,
39
+ "swath_width": 2000,
40
+ "smooth_slitfunction": 1,
41
+ "smooth_spectrum": 1e-7,
42
+ "extraction_cutoff": 20,
43
+ "bias_scaling": "exposure_time"
44
+ },
45
+ "wavecal_init": {
46
+ "element": "UNe",
47
+ "medium": "vac",
48
+ "cutoff": 5,
49
+ "smoothing": 1
50
+ },
51
+ "wavecal": {
52
+ "threshold": 100,
53
+ "closing": 0,
54
+ "dimensionality": "2D",
55
+ "element": null,
56
+ "degree": [5,5],
57
+ "manual": false
58
+ },
59
+ "freq_comb_master": {
60
+ "extraction_width": 10,
61
+ "bias_scaling": "exposure_time"
62
+ },
63
+ "freq_comb": {
64
+ "threshold": 100,
65
+ "dimensionality": "2D",
66
+ "degree": [8, 8]
67
+ },
68
+ "curvature": {
69
+ "peak_threshold": 1,
70
+ "window_width": 15,
71
+ "extraction_width": 100,
72
+ "dimensionality": "2D",
73
+ "degree": [
74
+ 1,
75
+ 1
76
+ ],
77
+ "curv_degree": 1,
78
+ "peak_function": "lorentzian",
79
+ "bias_scaling": "exposure_time"
80
+ },
81
+ "science": {
82
+ "oversampling": 1,
83
+ "extraction_width": 10,
84
+ "swath_width": 300,
85
+ "smooth_slitfunction": 0.1,
86
+ "smooth_spectrum": 0,
87
+ "bias_scaling": "exposure_time"
88
+ }
89
+ }