Skip to content

Commit d3a27fb

Browse files
author
Menlo Innovations - CAVA Project
committed
Harrison L3 2748 - GSTU/EYEA - Lo: Include ESA steps 5-7 in ISN product
1 parent 2221760 commit d3a27fb

2 files changed

Lines changed: 37 additions & 46 deletions

File tree

imap_l3_processing/lo/lo_processor.py

Lines changed: 15 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -69,31 +69,22 @@ def perform_spectral_fit(data: RectangularIntensityMapData, spectral_index_range
6969
)
7070

7171

72-
def slice_energy_range(data: ISNRateData) -> ISNRateData:
73-
energy_mask = np.logical_and(data.energy >= data.energy[0], data.energy < data.energy[4])
74-
75-
return dataclasses.replace(data,
76-
energy=data.energy[energy_mask],
77-
energy_delta_plus=data.energy_delta_plus[energy_mask],
78-
energy_delta_minus=data.energy_delta_minus[energy_mask],
79-
energy_label=data.energy_label[energy_mask],
80-
exposure_factor=data.exposure_factor[:, energy_mask, :, :],
81-
obs_date=data.obs_date[:, energy_mask, :, :],
82-
obs_date_range=data.obs_date_range[:, energy_mask],
83-
ena_intensity=data.ena_intensity[:, energy_mask, :, :],
84-
ena_intensity_sys_err=data.ena_intensity_sys_err[:, energy_mask, :, :],
85-
ena_intensity_stat_uncert=data.ena_intensity_stat_uncert[:, energy_mask, :, :],
86-
bg_rate=data.bg_rate[:, energy_mask, :, :],
87-
bg_rate_stat_uncert=data.bg_rate_stat_uncert[:, energy_mask, :, :],
88-
bg_rate_sys_err=data.bg_rate_sys_err[:, energy_mask, :, :],
89-
ena_count_rate=data.ena_count_rate[:, energy_mask, :, :],
90-
ena_count_rate_stat_uncert=data.ena_count_rate_stat_uncert[:, energy_mask, :, :],
91-
)
72+
def isn_background_subtraction(isn_rate_data: ISNRateData) -> ISNBackgroundSubtractedMapData:
73+
energy_mask = np.logical_and(isn_rate_data.energy >= isn_rate_data.energy[0],
74+
isn_rate_data.energy < isn_rate_data.energy[4])
9275

76+
isn_rate_background_subtracted = isn_rate_data.ena_count_rate
77+
isn_bg_subtracted_stat_err = isn_rate_data.ena_count_rate_stat_uncert
9378

94-
def isn_background_subtraction(isn_rate_data: ISNRateData) -> ISNBackgroundSubtractedMapData:
95-
isn_rate_data = slice_energy_range(isn_rate_data)
96-
isn_rate_background_subtracted = isn_rate_data.ena_count_rate - isn_rate_data.bg_rate
79+
isn_rate_background_subtracted[:, energy_mask, :, :] = (
80+
isn_rate_data.ena_count_rate[:, energy_mask, :, :] -
81+
isn_rate_data.bg_rate[:, energy_mask, :, :]
82+
)
83+
84+
isn_bg_subtracted_stat_err[:, energy_mask, :, :] = np.sqrt(
85+
np.square(isn_rate_data.ena_count_rate_stat_uncert[:, energy_mask, :, :]) +
86+
np.square(isn_rate_data.bg_rate_stat_uncert[:, energy_mask, :, :])
87+
)
9788

9889
map_data = ISNBackgroundSubtractedData(
9990
epoch=isn_rate_data.epoch,
@@ -117,8 +108,7 @@ def isn_background_subtraction(isn_rate_data: ISNRateData) -> ISNBackgroundSubtr
117108
latitude=isn_rate_data.latitude,
118109
longitude=isn_rate_data.longitude,
119110
isn_bg_rate_subtracted=isn_rate_background_subtracted,
120-
isn_bg_rate_subtracted_stat_uncert=np.sqrt(np.square(isn_rate_data.ena_count_rate_stat_uncert) + np.square(
121-
isn_rate_data.bg_rate_stat_uncert)),
111+
isn_bg_rate_subtracted_stat_uncert=isn_bg_subtracted_stat_err,
122112
isn_bg_rate_subtracted_sys_err=isn_rate_data.bg_rate_sys_err
123113
)
124114

tests/lo/test_lo_processor.py

Lines changed: 22 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -217,34 +217,35 @@ def test_isn_background_subtraction(self):
217217
ena_intensity_stat_uncert=np.arange(1 * 7 * 60 * 30).reshape((1, 7, 60, 30)) * 9,
218218
bg_rate_sys_err=np.arange(1 * 7 * 60 * 30).reshape((1, 7, 60, 30)) * 11,
219219
ena_count_rate=np.ones((1, 7, 60, 30)) * 3,
220-
bg_rate=np.ones((1, 7, 60, 30)),
220+
bg_rate=np.ones((1, 7, 60, 30)) * 2,
221221
bg_rate_stat_uncert=np.ones((1, 7, 60, 30)) * 3,
222222
ena_count_rate_stat_uncert=np.ones((1, 7, 60, 30)) * 2,
223223
)
224224
actual_map_data: ISNBackgroundSubtractedMapData = isn_background_subtraction(input_data)
225225
actual_isn_rate_map_data: ISNBackgroundSubtractedData = actual_map_data.isn_rate_map_data
226226

227-
np.testing.assert_array_equal(actual_isn_rate_map_data.ena_count_rate, np.ones((1, 4, 60, 30)) * 3)
228-
np.testing.assert_array_equal(actual_isn_rate_map_data.bg_rate, np.ones((1, 4, 60, 30)))
229-
np.testing.assert_array_equal(actual_isn_rate_map_data.isn_bg_rate_subtracted, np.ones((1, 4, 60, 30)) * 2)
230-
231-
np.testing.assert_array_equal(actual_isn_rate_map_data.bg_rate_stat_uncert, np.ones((1, 4, 60, 30)) * 3)
232-
np.testing.assert_array_equal(actual_isn_rate_map_data.ena_count_rate_stat_uncert, np.ones((1, 4, 60, 30)) * 2)
233-
np.testing.assert_array_equal(actual_isn_rate_map_data.isn_bg_rate_subtracted_stat_uncert,
234-
np.ones((1, 4, 60, 30)) * np.sqrt(13))
235-
236-
np.testing.assert_array_equal(actual_isn_rate_map_data.energy, np.array([1, 2, 3, 4]))
237-
np.testing.assert_array_equal(actual_isn_rate_map_data.energy_delta_plus, np.full(4, 12))
238-
np.testing.assert_array_equal(actual_isn_rate_map_data.energy_delta_minus, np.full(4, 13))
239-
np.testing.assert_array_equal(actual_isn_rate_map_data.energy_label, np.full(4, 14))
240-
np.testing.assert_array_equal(actual_isn_rate_map_data.exposure_factor, input_data.exposure_factor[:, :4, ...])
241-
np.testing.assert_array_equal(actual_isn_rate_map_data.obs_date, input_data.obs_date[:, :4, ...])
242-
np.testing.assert_array_equal(actual_isn_rate_map_data.obs_date_range, input_data.obs_date_range[:, :4, ...])
243-
np.testing.assert_array_equal(actual_isn_rate_map_data.ena_intensity, input_data.ena_intensity[:, :4, ...])
227+
np.testing.assert_array_equal(actual_isn_rate_map_data.ena_count_rate, input_data.ena_count_rate)
228+
229+
expected_isn_bg_rate_subtracted = np.concat(((np.ones((1, 4, 60, 30))), input_data.ena_count_rate[:, 4:, :,:]), axis=1)
230+
expected_isn_bg_rate_subtracted_stat_uncert = np.concat((np.ones((1, 4, 60, 30)) * np.sqrt(13), input_data.ena_count_rate_stat_uncert[:, 4:, :, :]), axis=1)
231+
232+
np.testing.assert_array_equal(actual_isn_rate_map_data.isn_bg_rate_subtracted, expected_isn_bg_rate_subtracted)
233+
np.testing.assert_array_equal(actual_isn_rate_map_data.isn_bg_rate_subtracted_stat_uncert, expected_isn_bg_rate_subtracted_stat_uncert)
234+
np.testing.assert_array_equal(actual_isn_rate_map_data.bg_rate_stat_uncert, input_data.bg_rate_stat_uncert)
235+
np.testing.assert_array_equal(actual_isn_rate_map_data.ena_count_rate_stat_uncert, input_data.ena_count_rate_stat_uncert)
236+
237+
np.testing.assert_array_equal(actual_isn_rate_map_data.energy, input_data.energy)
238+
np.testing.assert_array_equal(actual_isn_rate_map_data.energy_delta_plus, input_data.energy_delta_plus)
239+
np.testing.assert_array_equal(actual_isn_rate_map_data.energy_delta_minus, input_data.energy_delta_minus)
240+
np.testing.assert_array_equal(actual_isn_rate_map_data.energy_label, input_data.energy_label)
241+
np.testing.assert_array_equal(actual_isn_rate_map_data.exposure_factor, input_data.exposure_factor)
242+
np.testing.assert_array_equal(actual_isn_rate_map_data.obs_date, input_data.obs_date)
243+
np.testing.assert_array_equal(actual_isn_rate_map_data.obs_date_range, input_data.obs_date_range)
244+
np.testing.assert_array_equal(actual_isn_rate_map_data.ena_intensity, input_data.ena_intensity)
244245
np.testing.assert_array_equal(actual_isn_rate_map_data.ena_intensity_stat_uncert,
245-
input_data.ena_intensity_stat_uncert[:, :4, ...])
246-
np.testing.assert_array_equal(actual_isn_rate_map_data.bg_rate, input_data.bg_rate[:, :4, ...])
247-
np.testing.assert_array_equal(actual_isn_rate_map_data.bg_rate_sys_err, input_data.bg_rate_sys_err[:, :4, ...])
246+
input_data.ena_intensity_stat_uncert)
247+
np.testing.assert_array_equal(actual_isn_rate_map_data.bg_rate, input_data.bg_rate)
248+
np.testing.assert_array_equal(actual_isn_rate_map_data.bg_rate_sys_err, input_data.bg_rate_sys_err)
248249
np.testing.assert_array_equal(actual_isn_rate_map_data.bg_rate_sys_err,
249250
actual_isn_rate_map_data.isn_bg_rate_subtracted_sys_err)
250251

0 commit comments

Comments
 (0)