exosim 2.2.3__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 (179) hide show
  1. {exosim-2.2.3 → exosim-2.2.4}/CHANGELOG.rst +16 -0
  2. {exosim-2.2.3 → exosim-2.2.4}/CITATION.cff +1 -1
  3. {exosim-2.2.3 → exosim-2.2.4}/PKG-INFO +1 -1
  4. {exosim-2.2.3 → exosim-2.2.4}/codemeta.json +1 -1
  5. {exosim-2.2.3 → exosim-2.2.4}/src/exosim/models/channel.py +34 -20
  6. {exosim-2.2.3 → exosim-2.2.4}/src/exosim.egg-info/PKG-INFO +1 -1
  7. {exosim-2.2.3 → exosim-2.2.4}/src/exosim.egg-info/scm_version.json +2 -2
  8. {exosim-2.2.3 → exosim-2.2.4}/.gitignore +0 -0
  9. {exosim-2.2.3 → exosim-2.2.4}/CODE_OF_CONDUCT.md +0 -0
  10. {exosim-2.2.3 → exosim-2.2.4}/LICENSE +0 -0
  11. {exosim-2.2.3 → exosim-2.2.4}/MANIFEST.in +0 -0
  12. {exosim-2.2.3 → exosim-2.2.4}/README.md +0 -0
  13. {exosim-2.2.3 → exosim-2.2.4}/RELEASING.md +0 -0
  14. {exosim-2.2.3 → exosim-2.2.4}/pyproject.toml +0 -0
  15. {exosim-2.2.3 → exosim-2.2.4}/scripts/changelog_extract.py +0 -0
  16. {exosim-2.2.3 → exosim-2.2.4}/scripts/release.py +0 -0
  17. {exosim-2.2.3 → exosim-2.2.4}/setup.cfg +0 -0
  18. {exosim-2.2.3 → exosim-2.2.4}/src/exosim/__about__.py +0 -0
  19. {exosim-2.2.3 → exosim-2.2.4}/src/exosim/__init__.py +0 -0
  20. {exosim-2.2.3 → exosim-2.2.4}/src/exosim/data/Zodi_map.hdf5 +0 -0
  21. {exosim-2.2.3 → exosim-2.2.4}/src/exosim/exosim.py +0 -0
  22. {exosim-2.2.3 → exosim-2.2.4}/src/exosim/log/__init__.py +0 -0
  23. {exosim-2.2.3 → exosim-2.2.4}/src/exosim/log/logger.py +0 -0
  24. {exosim-2.2.3 → exosim-2.2.4}/src/exosim/log/structlog_config.py +0 -0
  25. {exosim-2.2.3 → exosim-2.2.4}/src/exosim/models/__init__.py +0 -0
  26. {exosim-2.2.3 → exosim-2.2.4}/src/exosim/models/signal.py +0 -0
  27. {exosim-2.2.3 → exosim-2.2.4}/src/exosim/models/utils/__init__.py +0 -0
  28. {exosim-2.2.3 → exosim-2.2.4}/src/exosim/models/utils/cached_data.py +0 -0
  29. {exosim-2.2.3 → exosim-2.2.4}/src/exosim/output/__init__.py +0 -0
  30. {exosim-2.2.3 → exosim-2.2.4}/src/exosim/output/hdf5/__init__.py +0 -0
  31. {exosim-2.2.3 → exosim-2.2.4}/src/exosim/output/hdf5/hdf5.py +0 -0
  32. {exosim-2.2.3 → exosim-2.2.4}/src/exosim/output/hdf5/utils.py +0 -0
  33. {exosim-2.2.3 → exosim-2.2.4}/src/exosim/output/output.py +0 -0
  34. {exosim-2.2.3 → exosim-2.2.4}/src/exosim/output/set_output.py +0 -0
  35. {exosim-2.2.3 → exosim-2.2.4}/src/exosim/output/utils.py +0 -0
  36. {exosim-2.2.3 → exosim-2.2.4}/src/exosim/plots/__init__.py +0 -0
  37. {exosim-2.2.3 → exosim-2.2.4}/src/exosim/plots/focal_plane_plotter.py +0 -0
  38. {exosim-2.2.3 → exosim-2.2.4}/src/exosim/plots/ndrs_plotter.py +0 -0
  39. {exosim-2.2.3 → exosim-2.2.4}/src/exosim/plots/plotter.py +0 -0
  40. {exosim-2.2.3 → exosim-2.2.4}/src/exosim/plots/radiometric_plotter.py +0 -0
  41. {exosim-2.2.3 → exosim-2.2.4}/src/exosim/plots/sub_exposures_plotter.py +0 -0
  42. {exosim-2.2.3 → exosim-2.2.4}/src/exosim/plots/utils.py +0 -0
  43. {exosim-2.2.3 → exosim-2.2.4}/src/exosim/py.typed +0 -0
  44. {exosim-2.2.3 → exosim-2.2.4}/src/exosim/recipes/__init__.py +0 -0
  45. {exosim-2.2.3 → exosim-2.2.4}/src/exosim/recipes/create_focal_plane.py +0 -0
  46. {exosim-2.2.3 → exosim-2.2.4}/src/exosim/recipes/create_ndrs.py +0 -0
  47. {exosim-2.2.3 → exosim-2.2.4}/src/exosim/recipes/create_sub_exposures.py +0 -0
  48. {exosim-2.2.3 → exosim-2.2.4}/src/exosim/recipes/radiometric_model.py +0 -0
  49. {exosim-2.2.3 → exosim-2.2.4}/src/exosim/recipes/simulate_observation.py +0 -0
  50. {exosim-2.2.3 → exosim-2.2.4}/src/exosim/tasks/__init__.py +0 -0
  51. {exosim-2.2.3 → exosim-2.2.4}/src/exosim/tasks/astrosignal/__init__.py +0 -0
  52. {exosim-2.2.3 → exosim-2.2.4}/src/exosim/tasks/astrosignal/apply_astronomical_signal.py +0 -0
  53. {exosim-2.2.3 → exosim-2.2.4}/src/exosim/tasks/astrosignal/estimate_astronomical_signal.py +0 -0
  54. {exosim-2.2.3 → exosim-2.2.4}/src/exosim/tasks/astrosignal/estimate_planetary_signal.py +0 -0
  55. {exosim-2.2.3 → exosim-2.2.4}/src/exosim/tasks/astrosignal/find_astronomical_signals.py +0 -0
  56. {exosim-2.2.3 → exosim-2.2.4}/src/exosim/tasks/chain_task.py +0 -0
  57. {exosim-2.2.3 → exosim-2.2.4}/src/exosim/tasks/detector/__init__.py +0 -0
  58. {exosim-2.2.3 → exosim-2.2.4}/src/exosim/tasks/detector/accumulate_sub_exposures.py +0 -0
  59. {exosim-2.2.3 → exosim-2.2.4}/src/exosim/tasks/detector/add_constant_dark_current.py +0 -0
  60. {exosim-2.2.3 → exosim-2.2.4}/src/exosim/tasks/detector/add_cosmic_rays.py +0 -0
  61. {exosim-2.2.3 → exosim-2.2.4}/src/exosim/tasks/detector/add_dark_current_map_numpy.py +0 -0
  62. {exosim-2.2.3 → exosim-2.2.4}/src/exosim/tasks/detector/add_gain_drift.py +0 -0
  63. {exosim-2.2.3 → exosim-2.2.4}/src/exosim/tasks/detector/add_ktc.py +0 -0
  64. {exosim-2.2.3 → exosim-2.2.4}/src/exosim/tasks/detector/add_read_noise.py +0 -0
  65. {exosim-2.2.3 → exosim-2.2.4}/src/exosim/tasks/detector/add_read_noise_map_numpy.py +0 -0
  66. {exosim-2.2.3 → exosim-2.2.4}/src/exosim/tasks/detector/add_shot_noise.py +0 -0
  67. {exosim-2.2.3 → exosim-2.2.4}/src/exosim/tasks/detector/analog_to_digital.py +0 -0
  68. {exosim-2.2.3 → exosim-2.2.4}/src/exosim/tasks/detector/apply_dead_pixel_map.py +0 -0
  69. {exosim-2.2.3 → exosim-2.2.4}/src/exosim/tasks/detector/apply_dead_pixel_map_numpy.py +0 -0
  70. {exosim-2.2.3 → exosim-2.2.4}/src/exosim/tasks/detector/apply_pixels_non_linearity.py +0 -0
  71. {exosim-2.2.3 → exosim-2.2.4}/src/exosim/tasks/detector/apply_simple_saturation.py +0 -0
  72. {exosim-2.2.3 → exosim-2.2.4}/src/exosim/tasks/detector/load_pixels_non_linearity_map.py +0 -0
  73. {exosim-2.2.3 → exosim-2.2.4}/src/exosim/tasks/detector/load_pixels_non_linearity_map_numpy.py +0 -0
  74. {exosim-2.2.3 → exosim-2.2.4}/src/exosim/tasks/detector/merge_groups.py +0 -0
  75. {exosim-2.2.3 → exosim-2.2.4}/src/exosim/tasks/foregrounds/__init__.py +0 -0
  76. {exosim-2.2.3 → exosim-2.2.4}/src/exosim/tasks/foregrounds/estimate_zodi.py +0 -0
  77. {exosim-2.2.3 → exosim-2.2.4}/src/exosim/tasks/instrument/__init__.py +0 -0
  78. {exosim-2.2.3 → exosim-2.2.4}/src/exosim/tasks/instrument/apply_intra_pixel_response_function.py +0 -0
  79. {exosim-2.2.3 → exosim-2.2.4}/src/exosim/tasks/instrument/compute_saturation.py +0 -0
  80. {exosim-2.2.3 → exosim-2.2.4}/src/exosim/tasks/instrument/compute_solid_angle.py +0 -0
  81. {exosim-2.2.3 → exosim-2.2.4}/src/exosim/tasks/instrument/compute_sources_pointing_offset.py +0 -0
  82. {exosim-2.2.3 → exosim-2.2.4}/src/exosim/tasks/instrument/create_focal_plane.py +0 -0
  83. {exosim-2.2.3 → exosim-2.2.4}/src/exosim/tasks/instrument/create_focal_plane_array.py +0 -0
  84. {exosim-2.2.3 → exosim-2.2.4}/src/exosim/tasks/instrument/create_intrapixel_response_function.py +0 -0
  85. {exosim-2.2.3 → exosim-2.2.4}/src/exosim/tasks/instrument/create_oversampled_intrapixel_response_function.py +0 -0
  86. {exosim-2.2.3 → exosim-2.2.4}/src/exosim/tasks/instrument/foregrounds_to_focal_plane.py +0 -0
  87. {exosim-2.2.3 → exosim-2.2.4}/src/exosim/tasks/instrument/load_psf.py +0 -0
  88. {exosim-2.2.3 → exosim-2.2.4}/src/exosim/tasks/instrument/load_psf_paos.py +0 -0
  89. {exosim-2.2.3 → exosim-2.2.4}/src/exosim/tasks/instrument/load_psf_paos_time_interp.py +0 -0
  90. {exosim-2.2.3 → exosim-2.2.4}/src/exosim/tasks/instrument/load_responsivity.py +0 -0
  91. {exosim-2.2.3 → exosim-2.2.4}/src/exosim/tasks/instrument/load_wavelength_solution.py +0 -0
  92. {exosim-2.2.3 → exosim-2.2.4}/src/exosim/tasks/instrument/populate_focal_plane.py +0 -0
  93. {exosim-2.2.3 → exosim-2.2.4}/src/exosim/tasks/instrument/propagate_foregrounds.py +0 -0
  94. {exosim-2.2.3 → exosim-2.2.4}/src/exosim/tasks/instrument/propagate_sources.py +0 -0
  95. {exosim-2.2.3 → exosim-2.2.4}/src/exosim/tasks/load/__init__.py +0 -0
  96. {exosim-2.2.3 → exosim-2.2.4}/src/exosim/tasks/load/load_optical_element.py +0 -0
  97. {exosim-2.2.3 → exosim-2.2.4}/src/exosim/tasks/load/load_optical_element_hdf5.py +0 -0
  98. {exosim-2.2.3 → exosim-2.2.4}/src/exosim/tasks/load/load_options.py +0 -0
  99. {exosim-2.2.3 → exosim-2.2.4}/src/exosim/tasks/load/load_source_list.py +0 -0
  100. {exosim-2.2.3 → exosim-2.2.4}/src/exosim/tasks/parse/__init__.py +0 -0
  101. {exosim-2.2.3 → exosim-2.2.4}/src/exosim/tasks/parse/parse_optical_element.py +0 -0
  102. {exosim-2.2.3 → exosim-2.2.4}/src/exosim/tasks/parse/parse_path.py +0 -0
  103. {exosim-2.2.3 → exosim-2.2.4}/src/exosim/tasks/parse/parse_source.py +0 -0
  104. {exosim-2.2.3 → exosim-2.2.4}/src/exosim/tasks/parse/parse_zodi.py +0 -0
  105. {exosim-2.2.3 → exosim-2.2.4}/src/exosim/tasks/radiometric/__init__.py +0 -0
  106. {exosim-2.2.3 → exosim-2.2.4}/src/exosim/tasks/radiometric/aperture_photometry.py +0 -0
  107. {exosim-2.2.3 → exosim-2.2.4}/src/exosim/tasks/radiometric/compute_constant_dark_current_noise.py +0 -0
  108. {exosim-2.2.3 → exosim-2.2.4}/src/exosim/tasks/radiometric/compute_constant_read_noise.py +0 -0
  109. {exosim-2.2.3 → exosim-2.2.4}/src/exosim/tasks/radiometric/compute_custom_noise.py +0 -0
  110. {exosim-2.2.3 → exosim-2.2.4}/src/exosim/tasks/radiometric/compute_integration_time.py +0 -0
  111. {exosim-2.2.3 → exosim-2.2.4}/src/exosim/tasks/radiometric/compute_observation_efficiency.py +0 -0
  112. {exosim-2.2.3 → exosim-2.2.4}/src/exosim/tasks/radiometric/compute_observation_efficiency_from_dead_time.py +0 -0
  113. {exosim-2.2.3 → exosim-2.2.4}/src/exosim/tasks/radiometric/compute_photon_noise.py +0 -0
  114. {exosim-2.2.3 → exosim-2.2.4}/src/exosim/tasks/radiometric/compute_signals_channel.py +0 -0
  115. {exosim-2.2.3 → exosim-2.2.4}/src/exosim/tasks/radiometric/compute_sub_frg_signals_channel.py +0 -0
  116. {exosim-2.2.3 → exosim-2.2.4}/src/exosim/tasks/radiometric/compute_total_noise.py +0 -0
  117. {exosim-2.2.3 → exosim-2.2.4}/src/exosim/tasks/radiometric/estimate_apertures.py +0 -0
  118. {exosim-2.2.3 → exosim-2.2.4}/src/exosim/tasks/radiometric/estimate_spectral_binning.py +0 -0
  119. {exosim-2.2.3 → exosim-2.2.4}/src/exosim/tasks/radiometric/load_apertures.py +0 -0
  120. {exosim-2.2.3 → exosim-2.2.4}/src/exosim/tasks/radiometric/multiaccum.py +0 -0
  121. {exosim-2.2.3 → exosim-2.2.4}/src/exosim/tasks/radiometric/saturation_channel.py +0 -0
  122. {exosim-2.2.3 → exosim-2.2.4}/src/exosim/tasks/radiometric/utils/__init__.py +0 -0
  123. {exosim-2.2.3 → exosim-2.2.4}/src/exosim/tasks/radiometric/utils/compute_multiaccum.py +0 -0
  124. {exosim-2.2.3 → exosim-2.2.4}/src/exosim/tasks/radiometric/utils/compute_noise_column.py +0 -0
  125. {exosim-2.2.3 → exosim-2.2.4}/src/exosim/tasks/radiometric/utils/compute_photon_noise.py +0 -0
  126. {exosim-2.2.3 → exosim-2.2.4}/src/exosim/tasks/radiometric/utils/compute_saturation.py +0 -0
  127. {exosim-2.2.3 → exosim-2.2.4}/src/exosim/tasks/radiometric/utils/create_table.py +0 -0
  128. {exosim-2.2.3 → exosim-2.2.4}/src/exosim/tasks/radiometric/utils/update_total_noise.py +0 -0
  129. {exosim-2.2.3 → exosim-2.2.4}/src/exosim/tasks/sed/__init__.py +0 -0
  130. {exosim-2.2.3 → exosim-2.2.4}/src/exosim/tasks/sed/create_custom_source.py +0 -0
  131. {exosim-2.2.3 → exosim-2.2.4}/src/exosim/tasks/sed/create_planck_star.py +0 -0
  132. {exosim-2.2.3 → exosim-2.2.4}/src/exosim/tasks/sed/download_sed.py +0 -0
  133. {exosim-2.2.3 → exosim-2.2.4}/src/exosim/tasks/sed/load_custom.py +0 -0
  134. {exosim-2.2.3 → exosim-2.2.4}/src/exosim/tasks/sed/load_phoenix.py +0 -0
  135. {exosim-2.2.3 → exosim-2.2.4}/src/exosim/tasks/sed/prepare_sed.py +0 -0
  136. {exosim-2.2.3 → exosim-2.2.4}/src/exosim/tasks/subexposures/__init__.py +0 -0
  137. {exosim-2.2.3 → exosim-2.2.4}/src/exosim/tasks/subexposures/add_foregrounds.py +0 -0
  138. {exosim-2.2.3 → exosim-2.2.4}/src/exosim/tasks/subexposures/apply_qe_map.py +0 -0
  139. {exosim-2.2.3 → exosim-2.2.4}/src/exosim/tasks/subexposures/compute_reading_scheme.py +0 -0
  140. {exosim-2.2.3 → exosim-2.2.4}/src/exosim/tasks/subexposures/estimate_ch_jitter.py +0 -0
  141. {exosim-2.2.3 → exosim-2.2.4}/src/exosim/tasks/subexposures/estimate_pointing_jitter.py +0 -0
  142. {exosim-2.2.3 → exosim-2.2.4}/src/exosim/tasks/subexposures/instantaneous_read_out.py +0 -0
  143. {exosim-2.2.3 → exosim-2.2.4}/src/exosim/tasks/subexposures/load_ils.py +0 -0
  144. {exosim-2.2.3 → exosim-2.2.4}/src/exosim/tasks/subexposures/load_qe_map.py +0 -0
  145. {exosim-2.2.3 → exosim-2.2.4}/src/exosim/tasks/subexposures/load_qe_map_numpy.py +0 -0
  146. {exosim-2.2.3 → exosim-2.2.4}/src/exosim/tasks/subexposures/prepare_instantaneous_read_out.py +0 -0
  147. {exosim-2.2.3 → exosim-2.2.4}/src/exosim/tasks/task.py +0 -0
  148. {exosim-2.2.3 → exosim-2.2.4}/src/exosim/tools/__init__.py +0 -0
  149. {exosim-2.2.3 → exosim-2.2.4}/src/exosim/tools/adc_gain_estimator.py +0 -0
  150. {exosim-2.2.3 → exosim-2.2.4}/src/exosim/tools/dark_current_map.py +0 -0
  151. {exosim-2.2.3 → exosim-2.2.4}/src/exosim/tools/dead_pixels_map.py +0 -0
  152. {exosim-2.2.3 → exosim-2.2.4}/src/exosim/tools/exosim_tool.py +0 -0
  153. {exosim-2.2.3 → exosim-2.2.4}/src/exosim/tools/pixels_non_linearity.py +0 -0
  154. {exosim-2.2.3 → exosim-2.2.4}/src/exosim/tools/pixels_non_linearity_from_correction.py +0 -0
  155. {exosim-2.2.3 → exosim-2.2.4}/src/exosim/tools/quantum_efficiency_map.py +0 -0
  156. {exosim-2.2.3 → exosim-2.2.4}/src/exosim/tools/readout_scheme_calculator.py +0 -0
  157. {exosim-2.2.3 → exosim-2.2.4}/src/exosim/utils/__init__.py +0 -0
  158. {exosim-2.2.3 → exosim-2.2.4}/src/exosim/utils/aperture.py +0 -0
  159. {exosim-2.2.3 → exosim-2.2.4}/src/exosim/utils/ascii_arts.py +0 -0
  160. {exosim-2.2.3 → exosim-2.2.4}/src/exosim/utils/binning.py +0 -0
  161. {exosim-2.2.3 → exosim-2.2.4}/src/exosim/utils/checks.py +0 -0
  162. {exosim-2.2.3 → exosim-2.2.4}/src/exosim/utils/convolution.py +0 -0
  163. {exosim-2.2.3 → exosim-2.2.4}/src/exosim/utils/focal_plane_locations.py +0 -0
  164. {exosim-2.2.3 → exosim-2.2.4}/src/exosim/utils/grids.py +0 -0
  165. {exosim-2.2.3 → exosim-2.2.4}/src/exosim/utils/iterators.py +0 -0
  166. {exosim-2.2.3 → exosim-2.2.4}/src/exosim/utils/klass_factory.py +0 -0
  167. {exosim-2.2.3 → exosim-2.2.4}/src/exosim/utils/operations.py +0 -0
  168. {exosim-2.2.3 → exosim-2.2.4}/src/exosim/utils/output_cleaners.py +0 -0
  169. {exosim-2.2.3 → exosim-2.2.4}/src/exosim/utils/prepare_recipes.py +0 -0
  170. {exosim-2.2.3 → exosim-2.2.4}/src/exosim/utils/psf.py +0 -0
  171. {exosim-2.2.3 → exosim-2.2.4}/src/exosim/utils/run_config.py +0 -0
  172. {exosim-2.2.3 → exosim-2.2.4}/src/exosim/utils/timed_class.py +0 -0
  173. {exosim-2.2.3 → exosim-2.2.4}/src/exosim/utils/types.py +0 -0
  174. {exosim-2.2.3 → exosim-2.2.4}/src/exosim.egg-info/SOURCES.txt +0 -0
  175. {exosim-2.2.3 → exosim-2.2.4}/src/exosim.egg-info/dependency_links.txt +0 -0
  176. {exosim-2.2.3 → exosim-2.2.4}/src/exosim.egg-info/entry_points.txt +0 -0
  177. {exosim-2.2.3 → exosim-2.2.4}/src/exosim.egg-info/requires.txt +0 -0
  178. {exosim-2.2.3 → exosim-2.2.4}/src/exosim.egg-info/scm_file_list.json +0 -0
  179. {exosim-2.2.3 → exosim-2.2.4}/src/exosim.egg-info/top_level.txt +0 -0
@@ -12,6 +12,20 @@ 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
+
15
29
  .. _changelog-2.2.3:
16
30
 
17
31
  [2.2.3_] - Elliptical aperture area
@@ -304,5 +318,7 @@ Cleaned repository
304
318
 
305
319
  .. _2.2.3: https://github.com/arielmission-space/ExoSim2.0/releases/tag/v2.2.3
306
320
 
321
+ .. _2.2.4: https://github.com/arielmission-space/ExoSim2.0/releases/tag/v2.2.4
322
+
307
323
  .. _keepachangelog: https://keepachangelog.com/en/1.0.0/
308
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.3
21
+ version: 2.2.4
22
22
  date-released: 2026-11-13
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: exosim
3
- Version: 2.2.3
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,7 +40,7 @@
40
40
  "license": "https://spdx.org/licenses/BSD-3-Clause",
41
41
  "name": "ExoSim2",
42
42
  "programmingLanguage": "Python 3",
43
- "version": "2.2.3",
43
+ "version": "2.2.4",
44
44
  "codemeta:contIntegration": {
45
45
  "id": "https://app.codecov.io/gh/arielmission-space/ExoSim2-public"
46
46
  },
@@ -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
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: exosim
3
- Version: 2.2.3
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>
@@ -1,7 +1,7 @@
1
1
  {
2
- "tag": "2.2.3",
2
+ "tag": "2.2.4",
3
3
  "distance": 0,
4
- "node": "g2c8bbdef",
4
+ "node": "g4b1c5c05",
5
5
  "dirty": false,
6
6
  "branch": "HEAD",
7
7
  "node_date": "2026-11-13"
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