exosim 2.2.2__tar.gz → 2.2.4__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 (180) hide show
  1. {exosim-2.2.2 → exosim-2.2.4}/CHANGELOG.rst +36 -0
  2. {exosim-2.2.2 → exosim-2.2.4}/CITATION.cff +2 -2
  3. {exosim-2.2.2 → exosim-2.2.4}/PKG-INFO +1 -1
  4. {exosim-2.2.2 → exosim-2.2.4}/codemeta.json +2 -2
  5. {exosim-2.2.2 → exosim-2.2.4}/src/exosim/models/channel.py +34 -20
  6. {exosim-2.2.2 → exosim-2.2.4}/src/exosim/tasks/radiometric/estimate_apertures.py +2 -1
  7. {exosim-2.2.2 → exosim-2.2.4}/src/exosim/utils/aperture.py +4 -3
  8. {exosim-2.2.2 → exosim-2.2.4}/src/exosim.egg-info/PKG-INFO +1 -1
  9. exosim-2.2.4/src/exosim.egg-info/scm_version.json +8 -0
  10. exosim-2.2.2/src/exosim.egg-info/scm_version.json +0 -8
  11. {exosim-2.2.2 → exosim-2.2.4}/.gitignore +0 -0
  12. {exosim-2.2.2 → exosim-2.2.4}/CODE_OF_CONDUCT.md +0 -0
  13. {exosim-2.2.2 → exosim-2.2.4}/LICENSE +0 -0
  14. {exosim-2.2.2 → exosim-2.2.4}/MANIFEST.in +0 -0
  15. {exosim-2.2.2 → exosim-2.2.4}/README.md +0 -0
  16. {exosim-2.2.2 → exosim-2.2.4}/RELEASING.md +0 -0
  17. {exosim-2.2.2 → exosim-2.2.4}/pyproject.toml +0 -0
  18. {exosim-2.2.2 → exosim-2.2.4}/scripts/changelog_extract.py +0 -0
  19. {exosim-2.2.2 → exosim-2.2.4}/scripts/release.py +0 -0
  20. {exosim-2.2.2 → exosim-2.2.4}/setup.cfg +0 -0
  21. {exosim-2.2.2 → exosim-2.2.4}/src/exosim/__about__.py +0 -0
  22. {exosim-2.2.2 → exosim-2.2.4}/src/exosim/__init__.py +0 -0
  23. {exosim-2.2.2 → exosim-2.2.4}/src/exosim/data/Zodi_map.hdf5 +0 -0
  24. {exosim-2.2.2 → exosim-2.2.4}/src/exosim/exosim.py +0 -0
  25. {exosim-2.2.2 → exosim-2.2.4}/src/exosim/log/__init__.py +0 -0
  26. {exosim-2.2.2 → exosim-2.2.4}/src/exosim/log/logger.py +0 -0
  27. {exosim-2.2.2 → exosim-2.2.4}/src/exosim/log/structlog_config.py +0 -0
  28. {exosim-2.2.2 → exosim-2.2.4}/src/exosim/models/__init__.py +0 -0
  29. {exosim-2.2.2 → exosim-2.2.4}/src/exosim/models/signal.py +0 -0
  30. {exosim-2.2.2 → exosim-2.2.4}/src/exosim/models/utils/__init__.py +0 -0
  31. {exosim-2.2.2 → exosim-2.2.4}/src/exosim/models/utils/cached_data.py +0 -0
  32. {exosim-2.2.2 → exosim-2.2.4}/src/exosim/output/__init__.py +0 -0
  33. {exosim-2.2.2 → exosim-2.2.4}/src/exosim/output/hdf5/__init__.py +0 -0
  34. {exosim-2.2.2 → exosim-2.2.4}/src/exosim/output/hdf5/hdf5.py +0 -0
  35. {exosim-2.2.2 → exosim-2.2.4}/src/exosim/output/hdf5/utils.py +0 -0
  36. {exosim-2.2.2 → exosim-2.2.4}/src/exosim/output/output.py +0 -0
  37. {exosim-2.2.2 → exosim-2.2.4}/src/exosim/output/set_output.py +0 -0
  38. {exosim-2.2.2 → exosim-2.2.4}/src/exosim/output/utils.py +0 -0
  39. {exosim-2.2.2 → exosim-2.2.4}/src/exosim/plots/__init__.py +0 -0
  40. {exosim-2.2.2 → exosim-2.2.4}/src/exosim/plots/focal_plane_plotter.py +0 -0
  41. {exosim-2.2.2 → exosim-2.2.4}/src/exosim/plots/ndrs_plotter.py +0 -0
  42. {exosim-2.2.2 → exosim-2.2.4}/src/exosim/plots/plotter.py +0 -0
  43. {exosim-2.2.2 → exosim-2.2.4}/src/exosim/plots/radiometric_plotter.py +0 -0
  44. {exosim-2.2.2 → exosim-2.2.4}/src/exosim/plots/sub_exposures_plotter.py +0 -0
  45. {exosim-2.2.2 → exosim-2.2.4}/src/exosim/plots/utils.py +0 -0
  46. {exosim-2.2.2 → exosim-2.2.4}/src/exosim/py.typed +0 -0
  47. {exosim-2.2.2 → exosim-2.2.4}/src/exosim/recipes/__init__.py +0 -0
  48. {exosim-2.2.2 → exosim-2.2.4}/src/exosim/recipes/create_focal_plane.py +0 -0
  49. {exosim-2.2.2 → exosim-2.2.4}/src/exosim/recipes/create_ndrs.py +0 -0
  50. {exosim-2.2.2 → exosim-2.2.4}/src/exosim/recipes/create_sub_exposures.py +0 -0
  51. {exosim-2.2.2 → exosim-2.2.4}/src/exosim/recipes/radiometric_model.py +0 -0
  52. {exosim-2.2.2 → exosim-2.2.4}/src/exosim/recipes/simulate_observation.py +0 -0
  53. {exosim-2.2.2 → exosim-2.2.4}/src/exosim/tasks/__init__.py +0 -0
  54. {exosim-2.2.2 → exosim-2.2.4}/src/exosim/tasks/astrosignal/__init__.py +0 -0
  55. {exosim-2.2.2 → exosim-2.2.4}/src/exosim/tasks/astrosignal/apply_astronomical_signal.py +0 -0
  56. {exosim-2.2.2 → exosim-2.2.4}/src/exosim/tasks/astrosignal/estimate_astronomical_signal.py +0 -0
  57. {exosim-2.2.2 → exosim-2.2.4}/src/exosim/tasks/astrosignal/estimate_planetary_signal.py +0 -0
  58. {exosim-2.2.2 → exosim-2.2.4}/src/exosim/tasks/astrosignal/find_astronomical_signals.py +0 -0
  59. {exosim-2.2.2 → exosim-2.2.4}/src/exosim/tasks/chain_task.py +0 -0
  60. {exosim-2.2.2 → exosim-2.2.4}/src/exosim/tasks/detector/__init__.py +0 -0
  61. {exosim-2.2.2 → exosim-2.2.4}/src/exosim/tasks/detector/accumulate_sub_exposures.py +0 -0
  62. {exosim-2.2.2 → exosim-2.2.4}/src/exosim/tasks/detector/add_constant_dark_current.py +0 -0
  63. {exosim-2.2.2 → exosim-2.2.4}/src/exosim/tasks/detector/add_cosmic_rays.py +0 -0
  64. {exosim-2.2.2 → exosim-2.2.4}/src/exosim/tasks/detector/add_dark_current_map_numpy.py +0 -0
  65. {exosim-2.2.2 → exosim-2.2.4}/src/exosim/tasks/detector/add_gain_drift.py +0 -0
  66. {exosim-2.2.2 → exosim-2.2.4}/src/exosim/tasks/detector/add_ktc.py +0 -0
  67. {exosim-2.2.2 → exosim-2.2.4}/src/exosim/tasks/detector/add_read_noise.py +0 -0
  68. {exosim-2.2.2 → exosim-2.2.4}/src/exosim/tasks/detector/add_read_noise_map_numpy.py +0 -0
  69. {exosim-2.2.2 → exosim-2.2.4}/src/exosim/tasks/detector/add_shot_noise.py +0 -0
  70. {exosim-2.2.2 → exosim-2.2.4}/src/exosim/tasks/detector/analog_to_digital.py +0 -0
  71. {exosim-2.2.2 → exosim-2.2.4}/src/exosim/tasks/detector/apply_dead_pixel_map.py +0 -0
  72. {exosim-2.2.2 → exosim-2.2.4}/src/exosim/tasks/detector/apply_dead_pixel_map_numpy.py +0 -0
  73. {exosim-2.2.2 → exosim-2.2.4}/src/exosim/tasks/detector/apply_pixels_non_linearity.py +0 -0
  74. {exosim-2.2.2 → exosim-2.2.4}/src/exosim/tasks/detector/apply_simple_saturation.py +0 -0
  75. {exosim-2.2.2 → exosim-2.2.4}/src/exosim/tasks/detector/load_pixels_non_linearity_map.py +0 -0
  76. {exosim-2.2.2 → exosim-2.2.4}/src/exosim/tasks/detector/load_pixels_non_linearity_map_numpy.py +0 -0
  77. {exosim-2.2.2 → exosim-2.2.4}/src/exosim/tasks/detector/merge_groups.py +0 -0
  78. {exosim-2.2.2 → exosim-2.2.4}/src/exosim/tasks/foregrounds/__init__.py +0 -0
  79. {exosim-2.2.2 → exosim-2.2.4}/src/exosim/tasks/foregrounds/estimate_zodi.py +0 -0
  80. {exosim-2.2.2 → exosim-2.2.4}/src/exosim/tasks/instrument/__init__.py +0 -0
  81. {exosim-2.2.2 → exosim-2.2.4}/src/exosim/tasks/instrument/apply_intra_pixel_response_function.py +0 -0
  82. {exosim-2.2.2 → exosim-2.2.4}/src/exosim/tasks/instrument/compute_saturation.py +0 -0
  83. {exosim-2.2.2 → exosim-2.2.4}/src/exosim/tasks/instrument/compute_solid_angle.py +0 -0
  84. {exosim-2.2.2 → exosim-2.2.4}/src/exosim/tasks/instrument/compute_sources_pointing_offset.py +0 -0
  85. {exosim-2.2.2 → exosim-2.2.4}/src/exosim/tasks/instrument/create_focal_plane.py +0 -0
  86. {exosim-2.2.2 → exosim-2.2.4}/src/exosim/tasks/instrument/create_focal_plane_array.py +0 -0
  87. {exosim-2.2.2 → exosim-2.2.4}/src/exosim/tasks/instrument/create_intrapixel_response_function.py +0 -0
  88. {exosim-2.2.2 → exosim-2.2.4}/src/exosim/tasks/instrument/create_oversampled_intrapixel_response_function.py +0 -0
  89. {exosim-2.2.2 → exosim-2.2.4}/src/exosim/tasks/instrument/foregrounds_to_focal_plane.py +0 -0
  90. {exosim-2.2.2 → exosim-2.2.4}/src/exosim/tasks/instrument/load_psf.py +0 -0
  91. {exosim-2.2.2 → exosim-2.2.4}/src/exosim/tasks/instrument/load_psf_paos.py +0 -0
  92. {exosim-2.2.2 → exosim-2.2.4}/src/exosim/tasks/instrument/load_psf_paos_time_interp.py +0 -0
  93. {exosim-2.2.2 → exosim-2.2.4}/src/exosim/tasks/instrument/load_responsivity.py +0 -0
  94. {exosim-2.2.2 → exosim-2.2.4}/src/exosim/tasks/instrument/load_wavelength_solution.py +0 -0
  95. {exosim-2.2.2 → exosim-2.2.4}/src/exosim/tasks/instrument/populate_focal_plane.py +0 -0
  96. {exosim-2.2.2 → exosim-2.2.4}/src/exosim/tasks/instrument/propagate_foregrounds.py +0 -0
  97. {exosim-2.2.2 → exosim-2.2.4}/src/exosim/tasks/instrument/propagate_sources.py +0 -0
  98. {exosim-2.2.2 → exosim-2.2.4}/src/exosim/tasks/load/__init__.py +0 -0
  99. {exosim-2.2.2 → exosim-2.2.4}/src/exosim/tasks/load/load_optical_element.py +0 -0
  100. {exosim-2.2.2 → exosim-2.2.4}/src/exosim/tasks/load/load_optical_element_hdf5.py +0 -0
  101. {exosim-2.2.2 → exosim-2.2.4}/src/exosim/tasks/load/load_options.py +0 -0
  102. {exosim-2.2.2 → exosim-2.2.4}/src/exosim/tasks/load/load_source_list.py +0 -0
  103. {exosim-2.2.2 → exosim-2.2.4}/src/exosim/tasks/parse/__init__.py +0 -0
  104. {exosim-2.2.2 → exosim-2.2.4}/src/exosim/tasks/parse/parse_optical_element.py +0 -0
  105. {exosim-2.2.2 → exosim-2.2.4}/src/exosim/tasks/parse/parse_path.py +0 -0
  106. {exosim-2.2.2 → exosim-2.2.4}/src/exosim/tasks/parse/parse_source.py +0 -0
  107. {exosim-2.2.2 → exosim-2.2.4}/src/exosim/tasks/parse/parse_zodi.py +0 -0
  108. {exosim-2.2.2 → exosim-2.2.4}/src/exosim/tasks/radiometric/__init__.py +0 -0
  109. {exosim-2.2.2 → exosim-2.2.4}/src/exosim/tasks/radiometric/aperture_photometry.py +0 -0
  110. {exosim-2.2.2 → exosim-2.2.4}/src/exosim/tasks/radiometric/compute_constant_dark_current_noise.py +0 -0
  111. {exosim-2.2.2 → exosim-2.2.4}/src/exosim/tasks/radiometric/compute_constant_read_noise.py +0 -0
  112. {exosim-2.2.2 → exosim-2.2.4}/src/exosim/tasks/radiometric/compute_custom_noise.py +0 -0
  113. {exosim-2.2.2 → exosim-2.2.4}/src/exosim/tasks/radiometric/compute_integration_time.py +0 -0
  114. {exosim-2.2.2 → exosim-2.2.4}/src/exosim/tasks/radiometric/compute_observation_efficiency.py +0 -0
  115. {exosim-2.2.2 → exosim-2.2.4}/src/exosim/tasks/radiometric/compute_observation_efficiency_from_dead_time.py +0 -0
  116. {exosim-2.2.2 → exosim-2.2.4}/src/exosim/tasks/radiometric/compute_photon_noise.py +0 -0
  117. {exosim-2.2.2 → exosim-2.2.4}/src/exosim/tasks/radiometric/compute_signals_channel.py +0 -0
  118. {exosim-2.2.2 → exosim-2.2.4}/src/exosim/tasks/radiometric/compute_sub_frg_signals_channel.py +0 -0
  119. {exosim-2.2.2 → exosim-2.2.4}/src/exosim/tasks/radiometric/compute_total_noise.py +0 -0
  120. {exosim-2.2.2 → exosim-2.2.4}/src/exosim/tasks/radiometric/estimate_spectral_binning.py +0 -0
  121. {exosim-2.2.2 → exosim-2.2.4}/src/exosim/tasks/radiometric/load_apertures.py +0 -0
  122. {exosim-2.2.2 → exosim-2.2.4}/src/exosim/tasks/radiometric/multiaccum.py +0 -0
  123. {exosim-2.2.2 → exosim-2.2.4}/src/exosim/tasks/radiometric/saturation_channel.py +0 -0
  124. {exosim-2.2.2 → exosim-2.2.4}/src/exosim/tasks/radiometric/utils/__init__.py +0 -0
  125. {exosim-2.2.2 → exosim-2.2.4}/src/exosim/tasks/radiometric/utils/compute_multiaccum.py +0 -0
  126. {exosim-2.2.2 → exosim-2.2.4}/src/exosim/tasks/radiometric/utils/compute_noise_column.py +0 -0
  127. {exosim-2.2.2 → exosim-2.2.4}/src/exosim/tasks/radiometric/utils/compute_photon_noise.py +0 -0
  128. {exosim-2.2.2 → exosim-2.2.4}/src/exosim/tasks/radiometric/utils/compute_saturation.py +0 -0
  129. {exosim-2.2.2 → exosim-2.2.4}/src/exosim/tasks/radiometric/utils/create_table.py +0 -0
  130. {exosim-2.2.2 → exosim-2.2.4}/src/exosim/tasks/radiometric/utils/update_total_noise.py +0 -0
  131. {exosim-2.2.2 → exosim-2.2.4}/src/exosim/tasks/sed/__init__.py +0 -0
  132. {exosim-2.2.2 → exosim-2.2.4}/src/exosim/tasks/sed/create_custom_source.py +0 -0
  133. {exosim-2.2.2 → exosim-2.2.4}/src/exosim/tasks/sed/create_planck_star.py +0 -0
  134. {exosim-2.2.2 → exosim-2.2.4}/src/exosim/tasks/sed/download_sed.py +0 -0
  135. {exosim-2.2.2 → exosim-2.2.4}/src/exosim/tasks/sed/load_custom.py +0 -0
  136. {exosim-2.2.2 → exosim-2.2.4}/src/exosim/tasks/sed/load_phoenix.py +0 -0
  137. {exosim-2.2.2 → exosim-2.2.4}/src/exosim/tasks/sed/prepare_sed.py +0 -0
  138. {exosim-2.2.2 → exosim-2.2.4}/src/exosim/tasks/subexposures/__init__.py +0 -0
  139. {exosim-2.2.2 → exosim-2.2.4}/src/exosim/tasks/subexposures/add_foregrounds.py +0 -0
  140. {exosim-2.2.2 → exosim-2.2.4}/src/exosim/tasks/subexposures/apply_qe_map.py +0 -0
  141. {exosim-2.2.2 → exosim-2.2.4}/src/exosim/tasks/subexposures/compute_reading_scheme.py +0 -0
  142. {exosim-2.2.2 → exosim-2.2.4}/src/exosim/tasks/subexposures/estimate_ch_jitter.py +0 -0
  143. {exosim-2.2.2 → exosim-2.2.4}/src/exosim/tasks/subexposures/estimate_pointing_jitter.py +0 -0
  144. {exosim-2.2.2 → exosim-2.2.4}/src/exosim/tasks/subexposures/instantaneous_read_out.py +0 -0
  145. {exosim-2.2.2 → exosim-2.2.4}/src/exosim/tasks/subexposures/load_ils.py +0 -0
  146. {exosim-2.2.2 → exosim-2.2.4}/src/exosim/tasks/subexposures/load_qe_map.py +0 -0
  147. {exosim-2.2.2 → exosim-2.2.4}/src/exosim/tasks/subexposures/load_qe_map_numpy.py +0 -0
  148. {exosim-2.2.2 → exosim-2.2.4}/src/exosim/tasks/subexposures/prepare_instantaneous_read_out.py +0 -0
  149. {exosim-2.2.2 → exosim-2.2.4}/src/exosim/tasks/task.py +0 -0
  150. {exosim-2.2.2 → exosim-2.2.4}/src/exosim/tools/__init__.py +0 -0
  151. {exosim-2.2.2 → exosim-2.2.4}/src/exosim/tools/adc_gain_estimator.py +0 -0
  152. {exosim-2.2.2 → exosim-2.2.4}/src/exosim/tools/dark_current_map.py +0 -0
  153. {exosim-2.2.2 → exosim-2.2.4}/src/exosim/tools/dead_pixels_map.py +0 -0
  154. {exosim-2.2.2 → exosim-2.2.4}/src/exosim/tools/exosim_tool.py +0 -0
  155. {exosim-2.2.2 → exosim-2.2.4}/src/exosim/tools/pixels_non_linearity.py +0 -0
  156. {exosim-2.2.2 → exosim-2.2.4}/src/exosim/tools/pixels_non_linearity_from_correction.py +0 -0
  157. {exosim-2.2.2 → exosim-2.2.4}/src/exosim/tools/quantum_efficiency_map.py +0 -0
  158. {exosim-2.2.2 → exosim-2.2.4}/src/exosim/tools/readout_scheme_calculator.py +0 -0
  159. {exosim-2.2.2 → exosim-2.2.4}/src/exosim/utils/__init__.py +0 -0
  160. {exosim-2.2.2 → exosim-2.2.4}/src/exosim/utils/ascii_arts.py +0 -0
  161. {exosim-2.2.2 → exosim-2.2.4}/src/exosim/utils/binning.py +0 -0
  162. {exosim-2.2.2 → exosim-2.2.4}/src/exosim/utils/checks.py +0 -0
  163. {exosim-2.2.2 → exosim-2.2.4}/src/exosim/utils/convolution.py +0 -0
  164. {exosim-2.2.2 → exosim-2.2.4}/src/exosim/utils/focal_plane_locations.py +0 -0
  165. {exosim-2.2.2 → exosim-2.2.4}/src/exosim/utils/grids.py +0 -0
  166. {exosim-2.2.2 → exosim-2.2.4}/src/exosim/utils/iterators.py +0 -0
  167. {exosim-2.2.2 → exosim-2.2.4}/src/exosim/utils/klass_factory.py +0 -0
  168. {exosim-2.2.2 → exosim-2.2.4}/src/exosim/utils/operations.py +0 -0
  169. {exosim-2.2.2 → exosim-2.2.4}/src/exosim/utils/output_cleaners.py +0 -0
  170. {exosim-2.2.2 → exosim-2.2.4}/src/exosim/utils/prepare_recipes.py +0 -0
  171. {exosim-2.2.2 → exosim-2.2.4}/src/exosim/utils/psf.py +0 -0
  172. {exosim-2.2.2 → exosim-2.2.4}/src/exosim/utils/run_config.py +0 -0
  173. {exosim-2.2.2 → exosim-2.2.4}/src/exosim/utils/timed_class.py +0 -0
  174. {exosim-2.2.2 → exosim-2.2.4}/src/exosim/utils/types.py +0 -0
  175. {exosim-2.2.2 → exosim-2.2.4}/src/exosim.egg-info/SOURCES.txt +0 -0
  176. {exosim-2.2.2 → exosim-2.2.4}/src/exosim.egg-info/dependency_links.txt +0 -0
  177. {exosim-2.2.2 → exosim-2.2.4}/src/exosim.egg-info/entry_points.txt +0 -0
  178. {exosim-2.2.2 → exosim-2.2.4}/src/exosim.egg-info/requires.txt +0 -0
  179. {exosim-2.2.2 → exosim-2.2.4}/src/exosim.egg-info/scm_file_list.json +0 -0
  180. {exosim-2.2.2 → exosim-2.2.4}/src/exosim.egg-info/top_level.txt +0 -0
@@ -12,6 +12,38 @@ Unreleased changes live as fragments in ``changelog.d/`` and are merged here by
12
12
 
13
13
  .. scriv-insert-here
14
14
 
15
+ .. _changelog-2.2.4:
16
+
17
+ [2.2.4_] - Rescale sources API
18
+ ==============================
19
+
20
+ Added
21
+ -----
22
+
23
+ - ``Channel.rescale_sources()`` and ``Channel.rescale_radiances()``: the two
24
+ halves of ``Channel.rescale_contributions()``, which now calls both and
25
+ behaves as before. A pipeline that propagates the sources a second time
26
+ (for example after ``define_sources``) can rescale only the sources, without
27
+ multiplying the path radiances by the wavelength step again.
28
+
29
+ .. _changelog-2.2.3:
30
+
31
+ [2.2.3_] - Elliptical aperture area
32
+ ===================================
33
+
34
+ Fixed
35
+ -----
36
+
37
+ - elliptical apertures: ``aperture_size`` (the pixel count used by
38
+ ``ComputeConstantDarkCurrentNoise`` and ``ComputeConstantReadNoise``) was
39
+ computed as :math:`\pi (a/2)(b/2)`, four times smaller than the area
40
+ integrated by the photometry, which uses ``a`` and ``b`` as the semi-axes of
41
+ the ``photutils`` ``EllipticalAperture``. It is now :math:`\pi a b`.
42
+ ``find_elliptical_aperture`` likewise returns :math:`\pi a b` as its area
43
+ (it returned ``a * b``) and its docstring now states that the sizes are
44
+ semi-axes. Aperture tables generated with earlier versions have a wrong
45
+ ``aperture_size`` for elliptical rows and should be regenerated
46
+
15
47
  .. _changelog-2.2.2:
16
48
 
17
49
  [2.2.2_] - Fix ACES solar-metallicity SED download
@@ -284,5 +316,9 @@ Cleaned repository
284
316
 
285
317
  .. _2.2.2: https://github.com/arielmission-space/ExoSim2.0/releases/tag/v2.2.2
286
318
 
319
+ .. _2.2.3: https://github.com/arielmission-space/ExoSim2.0/releases/tag/v2.2.3
320
+
321
+ .. _2.2.4: https://github.com/arielmission-space/ExoSim2.0/releases/tag/v2.2.4
322
+
287
323
  .. _keepachangelog: https://keepachangelog.com/en/1.0.0/
288
324
  .. _semver: https://semver.org/spec/v2.0.0.html
@@ -18,5 +18,5 @@ authors:
18
18
 
19
19
  title: "ExoSim 2: the new exoplanet observation simulator applied to the Ariel space mission"
20
20
  doi: 10.1007/s10686-024-09976-2
21
- version: 2.2.2
22
- date-released: 2026-11-12
21
+ version: 2.2.4
22
+ date-released: 2026-11-13
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: exosim
3
- Version: 2.2.2
3
+ Version: 2.2.4
4
4
  Summary: ExoSim 2 is the next generation of the Exoplanet Observation Simulator (ExoSim) tailored for spectro-photometric observations of transiting exoplanets from space, ground, and sub-orbital platforms. This software is a complete rewrite implemented in Python 3, embracing object-oriented design principles.
5
5
  Author: E. Pascale, A. Bocchieri, A. Lorenzani, A. Papageorgiou
6
6
  Author-email: "L. V. Mugnai" <mugnail@cardiff.ac.uk>
@@ -40,12 +40,12 @@
40
40
  "license": "https://spdx.org/licenses/BSD-3-Clause",
41
41
  "name": "ExoSim2",
42
42
  "programmingLanguage": "Python 3",
43
- "version": "2.2.2",
43
+ "version": "2.2.4",
44
44
  "codemeta:contIntegration": {
45
45
  "id": "https://app.codecov.io/gh/arielmission-space/ExoSim2-public"
46
46
  },
47
47
  "continuousIntegration": "https://app.codecov.io/gh/arielmission-space/ExoSim2-public",
48
48
  "issueTracker": "https://github.com/arielmission-space/ExoSim2-public/issues",
49
49
  "referencePublication": "https://link.springer.com/article/10.1007/s10686-024-09976-2",
50
- "dateModified": "2026-11-12"
50
+ "dateModified": "2026-11-13"
51
51
  }
@@ -252,38 +252,52 @@ class Channel(log.Logger):
252
252
  self.bkg_focal_plane = focal_plane.copy(dataset_name="bkg_focal_plane")
253
253
  return focal_plane
254
254
 
255
- # todo change into a more clearer name
256
- def rescale_contributions(self) -> None:
255
+ def _focal_plane_wavelength_step(self) -> u.Quantity:
256
+ """Wavelength width of each focal-plane spectral column."""
257
+ x_wav_osr = self.focal_plane.spectral
258
+ d_x_wav_osr = np.zeros_like(x_wav_osr)
259
+ idx = np.where(x_wav_osr > 0.0)
260
+ d_x_wav_osr[idx] = np.gradient(x_wav_osr[idx])
261
+ if np.any(d_x_wav_osr < 0):
262
+ d_x_wav_osr *= -1.0
263
+ return d_x_wav_osr * self.focal_plane.spectral_units
264
+
265
+ def rescale_sources(self) -> None:
257
266
  """
258
- It updated the contributions (sources and path)
259
- by rebinning them to the wavelength solution grid
260
- and multiplying them by the wl solution gradient
267
+ It rebins the sources onto the focal-plane wavelength grid and
268
+ multiplies them by the wavelength width of each column, turning
269
+ spectral densities into signals per column. Each source must be
270
+ rescaled once, after it has been propagated.
261
271
  """
262
-
263
- def wl_gradient(x_wav_osr):
264
- d_x_wav_osr = np.zeros_like(x_wav_osr)
265
- idx = np.where(x_wav_osr > 0.0)
266
- d_x_wav_osr[idx] = np.gradient(x_wav_osr[idx])
267
- if np.any(d_x_wav_osr < 0):
268
- d_x_wav_osr *= -1.0
269
- return d_x_wav_osr
270
-
271
- d_spectral_wl = (
272
- wl_gradient(self.focal_plane.spectral) * self.focal_plane.spectral_units
273
- )
274
-
275
- # multiply sources by gradient
276
272
  if self.sources:
273
+ d_spectral_wl = self._focal_plane_wavelength_step()
277
274
  for source in self.sources:
278
275
  self.sources[source].spectral_rebin(self.focal_plane.spectral)
279
276
  self.sources[source] *= d_spectral_wl
280
277
 
281
- # multiply radiances by gradient
278
+ def rescale_radiances(self) -> None:
279
+ """
280
+ It rebins the path radiances (foregrounds and optical-element
281
+ emission) onto the focal-plane wavelength grid and multiplies them
282
+ by the wavelength width of each column. The radiances must be
283
+ rescaled once: when the sources are propagated again (for example
284
+ after :meth:`define_sources`), use :meth:`rescale_sources` only.
285
+ """
282
286
  if self.path:
287
+ d_spectral_wl = self._focal_plane_wavelength_step()
283
288
  for rad in [k for k in self.path if "radiance" in k]:
284
289
  self.path[rad].spectral_rebin(self.focal_plane.spectral)
285
290
  self.path[rad] *= d_spectral_wl
286
291
 
292
+ def rescale_contributions(self) -> None:
293
+ """
294
+ It rescales the sources and the path radiances onto the focal-plane
295
+ wavelength grid: :meth:`rescale_sources` followed by
296
+ :meth:`rescale_radiances`.
297
+ """
298
+ self.rescale_sources()
299
+ self.rescale_radiances()
300
+
287
301
  @property
288
302
  def target_source(self):
289
303
  # TODO test this
@@ -223,7 +223,8 @@ class EstimateApertures(Task):
223
223
  if shape == "rectangular":
224
224
  aperture_size = np.array(dwl) * np.array(dsp)
225
225
  elif shape == "elliptical":
226
- aperture_size = np.pi * (np.array(dwl) / 2) * (np.array(dsp) / 2)
226
+ # dwl and dsp are the semi-axes (a, b) of the photutils EllipticalAperture
227
+ aperture_size = np.pi * np.array(dwl) * np.array(dsp)
227
228
  else:
228
229
  aperture_size = np.array(dsp) # fallback generico
229
230
 
@@ -115,9 +115,10 @@ def find_elliptical_aperture(ima, desired_ene, center=None):
115
115
  Returns
116
116
  -------
117
117
  (float, float)
118
- sizes of the elliptical aperture (h,w)
118
+ semi-axes (a, b) of the elliptical aperture, in pixels, as used by
119
+ :class:`photutils.aperture.EllipticalAperture`
119
120
  float
120
- number of pixels in the aperture
121
+ area of the aperture in pixels, :math:`\\pi a b`
121
122
  float
122
123
  encircled energy collected by the aperture
123
124
 
@@ -172,7 +173,7 @@ def find_elliptical_aperture(ima, desired_ene, center=None):
172
173
 
173
174
  a = res.x[0]
174
175
  b = res.x[1]
175
- return (a, b), a * b, ene_func(center, a, b, ima)
176
+ return (a, b), np.pi * a * b, ene_func(center, a, b, ima)
176
177
 
177
178
 
178
179
  def find_bin_aperture(ima, desired_ene, spatial_with, center=None):
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: exosim
3
- Version: 2.2.2
3
+ Version: 2.2.4
4
4
  Summary: ExoSim 2 is the next generation of the Exoplanet Observation Simulator (ExoSim) tailored for spectro-photometric observations of transiting exoplanets from space, ground, and sub-orbital platforms. This software is a complete rewrite implemented in Python 3, embracing object-oriented design principles.
5
5
  Author: E. Pascale, A. Bocchieri, A. Lorenzani, A. Papageorgiou
6
6
  Author-email: "L. V. Mugnai" <mugnail@cardiff.ac.uk>
@@ -0,0 +1,8 @@
1
+ {
2
+ "tag": "2.2.4",
3
+ "distance": 0,
4
+ "node": "g4b1c5c05",
5
+ "dirty": false,
6
+ "branch": "HEAD",
7
+ "node_date": "2026-11-13"
8
+ }
@@ -1,8 +0,0 @@
1
- {
2
- "tag": "2.2.2",
3
- "distance": 0,
4
- "node": "g6cbdedbd",
5
- "dirty": false,
6
- "branch": "HEAD",
7
- "node_date": "2026-11-12"
8
- }
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes