imap-processing 0.7.0__py3-none-any.whl → 0.9.0__py3-none-any.whl

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.

Potentially problematic release.


This version of imap-processing might be problematic. Click here for more details.

Files changed (172) hide show
  1. imap_processing/__init__.py +1 -1
  2. imap_processing/_version.py +2 -2
  3. imap_processing/ccsds/excel_to_xtce.py +36 -2
  4. imap_processing/cdf/config/imap_codice_global_cdf_attrs.yaml +1 -1
  5. imap_processing/cdf/config/imap_codice_l1a_variable_attrs.yaml +145 -30
  6. imap_processing/cdf/config/imap_glows_l1b_variable_attrs.yaml +36 -36
  7. imap_processing/cdf/config/imap_hi_variable_attrs.yaml +136 -9
  8. imap_processing/cdf/config/imap_hit_global_cdf_attrs.yaml +14 -0
  9. imap_processing/cdf/config/imap_hit_l1a_variable_attrs.yaml +63 -1
  10. imap_processing/cdf/config/imap_hit_l1b_variable_attrs.yaml +9 -0
  11. imap_processing/cdf/config/imap_idex_global_cdf_attrs.yaml +14 -7
  12. imap_processing/cdf/config/imap_idex_l1a_variable_attrs.yaml +577 -235
  13. imap_processing/cdf/config/imap_idex_l1b_variable_attrs.yaml +326 -0
  14. imap_processing/cdf/config/imap_lo_l1a_variable_attrs.yaml +33 -23
  15. imap_processing/cdf/config/imap_mag_l1_variable_attrs.yaml +24 -28
  16. imap_processing/cdf/config/imap_ultra_l1a_variable_attrs.yaml +1 -0
  17. imap_processing/cdf/config/imap_ultra_l1b_variable_attrs.yaml +137 -79
  18. imap_processing/cdf/config/imap_variable_schema.yaml +13 -0
  19. imap_processing/cdf/imap_cdf_manager.py +31 -27
  20. imap_processing/cdf/utils.py +3 -5
  21. imap_processing/cli.py +25 -14
  22. imap_processing/codice/codice_l1a.py +153 -63
  23. imap_processing/codice/constants.py +10 -10
  24. imap_processing/codice/decompress.py +10 -11
  25. imap_processing/codice/utils.py +1 -0
  26. imap_processing/glows/l1a/glows_l1a.py +1 -2
  27. imap_processing/glows/l1b/glows_l1b.py +3 -3
  28. imap_processing/glows/l1b/glows_l1b_data.py +59 -37
  29. imap_processing/glows/l2/glows_l2_data.py +123 -0
  30. imap_processing/hi/l1a/hi_l1a.py +4 -4
  31. imap_processing/hi/l1a/histogram.py +107 -109
  32. imap_processing/hi/l1a/science_direct_event.py +92 -225
  33. imap_processing/hi/l1b/hi_l1b.py +85 -11
  34. imap_processing/hi/l1c/hi_l1c.py +23 -1
  35. imap_processing/hi/packet_definitions/TLM_HI_COMBINED_SCI.xml +3994 -0
  36. imap_processing/hi/utils.py +1 -1
  37. imap_processing/hit/hit_utils.py +221 -0
  38. imap_processing/hit/l0/constants.py +118 -0
  39. imap_processing/hit/l0/decom_hit.py +100 -156
  40. imap_processing/hit/l1a/hit_l1a.py +170 -184
  41. imap_processing/hit/l1b/hit_l1b.py +33 -153
  42. imap_processing/ialirt/l0/process_codicelo.py +153 -0
  43. imap_processing/ialirt/l0/process_hit.py +5 -5
  44. imap_processing/ialirt/packet_definitions/ialirt_codicelo.xml +281 -0
  45. imap_processing/ialirt/process_ephemeris.py +212 -0
  46. imap_processing/idex/idex_l1a.py +65 -84
  47. imap_processing/idex/idex_l1b.py +192 -0
  48. imap_processing/idex/idex_variable_unpacking_and_eu_conversion.csv +33 -0
  49. imap_processing/idex/packet_definitions/idex_packet_definition.xml +97 -595
  50. imap_processing/lo/l0/decompression_tables/decompression_tables.py +17 -1
  51. imap_processing/lo/l0/lo_science.py +45 -13
  52. imap_processing/lo/l1a/lo_l1a.py +76 -8
  53. imap_processing/lo/packet_definitions/lo_xtce.xml +8344 -1849
  54. imap_processing/mag/l0/decom_mag.py +4 -3
  55. imap_processing/mag/l1a/mag_l1a.py +12 -13
  56. imap_processing/mag/l1a/mag_l1a_data.py +1 -2
  57. imap_processing/mag/l1b/mag_l1b.py +90 -7
  58. imap_processing/spice/geometry.py +156 -16
  59. imap_processing/spice/time.py +144 -2
  60. imap_processing/swapi/l1/swapi_l1.py +4 -4
  61. imap_processing/swapi/l2/swapi_l2.py +1 -1
  62. imap_processing/swapi/packet_definitions/swapi_packet_definition.xml +1535 -446
  63. imap_processing/swe/l1b/swe_l1b_science.py +8 -8
  64. imap_processing/swe/l2/swe_l2.py +134 -17
  65. imap_processing/tests/ccsds/test_data/expected_output.xml +2 -1
  66. imap_processing/tests/ccsds/test_excel_to_xtce.py +4 -4
  67. imap_processing/tests/cdf/test_imap_cdf_manager.py +0 -10
  68. imap_processing/tests/codice/conftest.py +1 -17
  69. imap_processing/tests/codice/data/imap_codice_l0_raw_20241110_v001.pkts +0 -0
  70. imap_processing/tests/codice/test_codice_l0.py +8 -2
  71. imap_processing/tests/codice/test_codice_l1a.py +127 -107
  72. imap_processing/tests/codice/test_codice_l1b.py +1 -0
  73. imap_processing/tests/codice/test_decompress.py +7 -7
  74. imap_processing/tests/conftest.py +100 -58
  75. imap_processing/tests/glows/conftest.py +6 -0
  76. imap_processing/tests/glows/test_glows_l1b.py +9 -9
  77. imap_processing/tests/glows/test_glows_l1b_data.py +9 -9
  78. imap_processing/tests/hi/test_data/l0/H90_NHK_20241104.bin +0 -0
  79. imap_processing/tests/hi/test_data/l0/H90_sci_cnt_20241104.bin +0 -0
  80. imap_processing/tests/hi/test_data/l0/H90_sci_de_20241104.bin +0 -0
  81. imap_processing/tests/hi/test_data/l1a/imap_hi_l1a_45sensor-de_20250415_v000.cdf +0 -0
  82. imap_processing/tests/hi/test_hi_l1b.py +73 -3
  83. imap_processing/tests/hi/test_hi_l1c.py +10 -2
  84. imap_processing/tests/hi/test_l1a.py +31 -58
  85. imap_processing/tests/hi/test_science_direct_event.py +58 -0
  86. imap_processing/tests/hi/test_utils.py +4 -3
  87. imap_processing/tests/hit/test_data/sci_sample1.ccsds +0 -0
  88. imap_processing/tests/hit/{test_hit_decom.py → test_decom_hit.py} +95 -36
  89. imap_processing/tests/hit/test_hit_l1a.py +299 -179
  90. imap_processing/tests/hit/test_hit_l1b.py +231 -24
  91. imap_processing/tests/hit/test_hit_utils.py +218 -0
  92. imap_processing/tests/hit/validation_data/hskp_sample_eu.csv +89 -0
  93. imap_processing/tests/hit/validation_data/sci_sample_raw1.csv +29 -0
  94. imap_processing/tests/ialirt/test_data/l0/apid01152.tlm +0 -0
  95. imap_processing/tests/ialirt/test_data/l0/imap_codice_l1a_lo-ialirt_20241110193700_v0.0.0.cdf +0 -0
  96. imap_processing/tests/ialirt/unit/test_process_codicelo.py +106 -0
  97. imap_processing/tests/ialirt/unit/test_process_ephemeris.py +109 -0
  98. imap_processing/tests/ialirt/unit/test_process_hit.py +9 -6
  99. imap_processing/tests/idex/conftest.py +2 -2
  100. imap_processing/tests/idex/imap_idex_l0_raw_20231214_v001.pkts +0 -0
  101. imap_processing/tests/idex/impact_14_tof_high_data.txt +4444 -4444
  102. imap_processing/tests/idex/test_idex_l0.py +4 -4
  103. imap_processing/tests/idex/test_idex_l1a.py +8 -2
  104. imap_processing/tests/idex/test_idex_l1b.py +126 -0
  105. imap_processing/tests/lo/test_lo_l1a.py +7 -16
  106. imap_processing/tests/lo/test_lo_science.py +69 -5
  107. imap_processing/tests/lo/test_pkts/imap_lo_l0_raw_20240803_v002.pkts +0 -0
  108. imap_processing/tests/lo/validation_data/Instrument_FM1_T104_R129_20240803_ILO_SCI_DE_dec_DN_with_fills.csv +1999 -0
  109. imap_processing/tests/mag/imap_mag_l1a_norm-magi_20251017_v001.cdf +0 -0
  110. imap_processing/tests/mag/test_mag_l1b.py +97 -7
  111. imap_processing/tests/spice/test_data/imap_ena_sim_metakernel.template +3 -1
  112. imap_processing/tests/spice/test_geometry.py +115 -9
  113. imap_processing/tests/spice/test_time.py +135 -6
  114. imap_processing/tests/swapi/test_swapi_decom.py +75 -69
  115. imap_processing/tests/swapi/test_swapi_l1.py +4 -4
  116. imap_processing/tests/swe/conftest.py +33 -0
  117. imap_processing/tests/swe/l1_validation/swe_l0_unpacked-data_20240510_v001_VALIDATION_L1B_v3.dat +4332 -0
  118. imap_processing/tests/swe/test_swe_l1b.py +29 -8
  119. imap_processing/tests/swe/test_swe_l2.py +64 -8
  120. imap_processing/tests/test_utils.py +2 -2
  121. imap_processing/tests/ultra/test_data/l0/ultra45_raw_sc_ultrarawimg_withFSWcalcs_FM45_40P_Phi28p5_BeamCal_LinearScan_phi2850_theta-000_20240207T102740.csv +3314 -3314
  122. imap_processing/tests/ultra/test_data/l1/dps_exposure_helio_45_E12.cdf +0 -0
  123. imap_processing/tests/ultra/test_data/l1/dps_exposure_helio_45_E24.cdf +0 -0
  124. imap_processing/tests/ultra/unit/test_de.py +113 -0
  125. imap_processing/tests/ultra/unit/test_spatial_utils.py +125 -0
  126. imap_processing/tests/ultra/unit/test_ultra_l1b.py +27 -3
  127. imap_processing/tests/ultra/unit/test_ultra_l1b_annotated.py +31 -10
  128. imap_processing/tests/ultra/unit/test_ultra_l1b_extended.py +55 -35
  129. imap_processing/tests/ultra/unit/test_ultra_l1c_pset_bins.py +10 -68
  130. imap_processing/ultra/constants.py +12 -3
  131. imap_processing/ultra/l1b/de.py +168 -30
  132. imap_processing/ultra/l1b/ultra_l1b_annotated.py +24 -10
  133. imap_processing/ultra/l1b/ultra_l1b_extended.py +46 -80
  134. imap_processing/ultra/l1c/ultra_l1c_pset_bins.py +60 -144
  135. imap_processing/ultra/utils/spatial_utils.py +221 -0
  136. {imap_processing-0.7.0.dist-info → imap_processing-0.9.0.dist-info}/METADATA +15 -14
  137. {imap_processing-0.7.0.dist-info → imap_processing-0.9.0.dist-info}/RECORD +142 -139
  138. imap_processing/cdf/cdf_attribute_manager.py +0 -322
  139. imap_processing/cdf/config/shared/default_global_cdf_attrs_schema.yaml +0 -246
  140. imap_processing/cdf/config/shared/default_variable_cdf_attrs_schema.yaml +0 -466
  141. imap_processing/hi/l0/decom_hi.py +0 -24
  142. imap_processing/hi/packet_definitions/hi_packet_definition.xml +0 -482
  143. imap_processing/hit/l0/data_classes/housekeeping.py +0 -240
  144. imap_processing/hit/l0/data_classes/science_packet.py +0 -259
  145. imap_processing/hit/l0/utils/hit_base.py +0 -57
  146. imap_processing/tests/cdf/shared/default_global_cdf_attrs_schema.yaml +0 -246
  147. imap_processing/tests/cdf/shared/default_variable_cdf_attrs_schema.yaml +0 -466
  148. imap_processing/tests/cdf/test_cdf_attribute_manager.py +0 -353
  149. imap_processing/tests/codice/data/imap_codice_l0_hi-counters-aggregated_20240429_v001.pkts +0 -0
  150. imap_processing/tests/codice/data/imap_codice_l0_hi-counters-singles_20240429_v001.pkts +0 -0
  151. imap_processing/tests/codice/data/imap_codice_l0_hi-omni_20240429_v001.pkts +0 -0
  152. imap_processing/tests/codice/data/imap_codice_l0_hi-pha_20240429_v001.pkts +0 -0
  153. imap_processing/tests/codice/data/imap_codice_l0_hi-sectored_20240429_v001.pkts +0 -0
  154. imap_processing/tests/codice/data/imap_codice_l0_hskp_20100101_v001.pkts +0 -0
  155. imap_processing/tests/codice/data/imap_codice_l0_lo-counters-aggregated_20240429_v001.pkts +0 -0
  156. imap_processing/tests/codice/data/imap_codice_l0_lo-counters-singles_20240429_v001.pkts +0 -0
  157. imap_processing/tests/codice/data/imap_codice_l0_lo-nsw-angular_20240429_v001.pkts +0 -0
  158. imap_processing/tests/codice/data/imap_codice_l0_lo-nsw-priority_20240429_v001.pkts +0 -0
  159. imap_processing/tests/codice/data/imap_codice_l0_lo-nsw-species_20240429_v001.pkts +0 -0
  160. imap_processing/tests/codice/data/imap_codice_l0_lo-pha_20240429_v001.pkts +0 -0
  161. imap_processing/tests/codice/data/imap_codice_l0_lo-sw-angular_20240429_v001.pkts +0 -0
  162. imap_processing/tests/codice/data/imap_codice_l0_lo-sw-priority_20240429_v001.pkts +0 -0
  163. imap_processing/tests/codice/data/imap_codice_l0_lo-sw-species_20240429_v001.pkts +0 -0
  164. imap_processing/tests/hi/test_decom.py +0 -55
  165. imap_processing/tests/hi/test_l1a_sci_de.py +0 -72
  166. imap_processing/tests/idex/imap_idex_l0_raw_20230725_v001.pkts +0 -0
  167. imap_processing/tests/mag/imap_mag_l1a_burst-magi_20231025_v001.cdf +0 -0
  168. /imap_processing/{hi/l0/__init__.py → tests/glows/test_glows_l2_data.py} +0 -0
  169. /imap_processing/tests/hit/test_data/{imap_hit_l0_hk_20100105_v001.pkts → imap_hit_l0_raw_20100105_v001.pkts} +0 -0
  170. {imap_processing-0.7.0.dist-info → imap_processing-0.9.0.dist-info}/LICENSE +0 -0
  171. {imap_processing-0.7.0.dist-info → imap_processing-0.9.0.dist-info}/WHEEL +0 -0
  172. {imap_processing-0.7.0.dist-info → imap_processing-0.9.0.dist-info}/entry_points.txt +0 -0
@@ -0,0 +1,106 @@
1
+ import numpy as np
2
+ import pytest
3
+
4
+ from imap_processing import imap_module_directory
5
+ from imap_processing.cdf.utils import load_cdf
6
+ from imap_processing.ialirt.l0.process_codicelo import (
7
+ append_cod_lo_data,
8
+ find_groups,
9
+ process_codicelo,
10
+ )
11
+ from imap_processing.utils import packet_file_to_datasets
12
+
13
+
14
+ @pytest.fixture(scope="session")
15
+ def xtce_codicelo_path():
16
+ """Returns the xtce directory."""
17
+ return (
18
+ imap_module_directory / "ialirt" / "packet_definitions" / "ialirt_codicelo.xml"
19
+ )
20
+
21
+
22
+ @pytest.fixture(scope="session")
23
+ def binary_packet_path():
24
+ """Returns the xtce directory."""
25
+ return (
26
+ imap_module_directory
27
+ / "tests"
28
+ / "ialirt"
29
+ / "test_data"
30
+ / "l0"
31
+ / "apid01152.tlm"
32
+ )
33
+
34
+
35
+ @pytest.fixture(scope="session")
36
+ def codicelo_validation_data():
37
+ """Returns the test data directory."""
38
+ data_path = (
39
+ imap_module_directory
40
+ / "tests"
41
+ / "ialirt"
42
+ / "test_data"
43
+ / "l0"
44
+ / "imap_codice_l1a_lo-ialirt_20241110193700_v0.0.0.cdf"
45
+ )
46
+ data = load_cdf(data_path)
47
+
48
+ return data
49
+
50
+
51
+ @pytest.fixture()
52
+ def codicelo_test_data(binary_packet_path, xtce_codicelo_path):
53
+ """Create xarray data"""
54
+ apid = 1152
55
+ codicelo_test_data = packet_file_to_datasets(
56
+ binary_packet_path, xtce_codicelo_path
57
+ )[apid]
58
+
59
+ return codicelo_test_data
60
+
61
+
62
+ def test_find_groups(codicelo_test_data):
63
+ """Tests find_groups"""
64
+
65
+ grouped_data = find_groups(codicelo_test_data)
66
+ unique_groups = np.unique(grouped_data["group"])
67
+ for group in unique_groups:
68
+ group_data = grouped_data["cod_lo_counter"].values[
69
+ grouped_data["group"] == group
70
+ ]
71
+ np.testing.assert_array_equal(group_data, np.arange(233))
72
+
73
+
74
+ def test_append_cod_lo_data(codicelo_test_data):
75
+ """Tests append_cod_lo_data"""
76
+
77
+ grouped_data = find_groups(codicelo_test_data)
78
+ unique_groups = np.unique(grouped_data["group"])
79
+ for group in unique_groups:
80
+ mask = grouped_data["group"] == group
81
+ filtered_indices = np.where(mask)[0]
82
+ group_data = grouped_data.isel(epoch=filtered_indices)
83
+ expected_cod_lo_counter = np.repeat(group_data["cod_lo_counter"].values, 15)
84
+ appended_data = append_cod_lo_data(group_data)
85
+ assert np.array_equal(
86
+ appended_data["cod_lo_counter"].values, expected_cod_lo_counter.astype(int)
87
+ )
88
+
89
+
90
+ def test_process_codicelo(codicelo_test_data, codicelo_validation_data, caplog):
91
+ """Tests process_codicelo."""
92
+ codicelo_product = process_codicelo(codicelo_test_data)
93
+ assert codicelo_product == [{}]
94
+
95
+ indices = (codicelo_test_data["cod_lo_acq"] != 0).values.nonzero()[0]
96
+ codicelo_test_data["cod_lo_counter"].values[indices[0] : indices[0] + 233] = (
97
+ np.random.permutation(233)
98
+ )
99
+
100
+ with caplog.at_level("WARNING"):
101
+ process_codicelo(codicelo_test_data)
102
+
103
+ assert any(
104
+ "does not contain all values from 0 to 232 without duplicates" in message
105
+ for message in caplog.text.splitlines()
106
+ )
@@ -0,0 +1,109 @@
1
+ """Test processEphemeris functions."""
2
+
3
+ import numpy as np
4
+ import pytest
5
+
6
+ from imap_processing.ialirt import process_ephemeris
7
+ from imap_processing.spice.time import str_to_et
8
+
9
+
10
+ def test_calculate_doppler():
11
+ """
12
+ Test the calculate_doppler() function.
13
+ """
14
+ assert process_ephemeris.calculate_doppler(805794429.1837295) == 1
15
+
16
+
17
+ @pytest.mark.external_kernel()
18
+ def test_latitude_longitude_to_ecef(furnish_kernels):
19
+ """
20
+ Test the latitude_longitude_to_ecef() function.
21
+
22
+ Test data is from https://naif.jpl.nasa.gov/pub/naif/toolkit_docs/C/cspice/
23
+ georec_c.html.
24
+ """
25
+ longitude = 118.0 # degrees
26
+ latitude = 30.0 # degrees
27
+ altitude = 0.0 # kilometers
28
+
29
+ kernels = ["pck00011.tpc"]
30
+ with furnish_kernels(kernels):
31
+ rect_coords = process_ephemeris.latitude_longitude_to_ecef(
32
+ longitude, latitude, altitude
33
+ )
34
+
35
+ np.testing.assert_allclose(
36
+ rect_coords, [-2595.359123, 4881.160589, 3170.373523], atol=1e-6
37
+ )
38
+
39
+
40
+ @pytest.mark.external_kernel()
41
+ def test_calculate_azimuth_and_elevation(furnish_kernels):
42
+ """
43
+ Test the calculate_azimuth_and_elevation() function.
44
+ """
45
+ longitude = -71.41 # longitude in degrees
46
+ latitude = -33.94 # latitude in degrees
47
+ altitude = 0.157 # altitude in kilometers
48
+ # test single observation time
49
+ observation_time = 805794429.1837295 # "2025-07-14T19:46:00.000"
50
+
51
+ kernels = [
52
+ "pck00011.tpc",
53
+ "de440s.bsp",
54
+ ]
55
+ with furnish_kernels(kernels):
56
+ azimuth_result, elevation_result = (
57
+ process_ephemeris.calculate_azimuth_and_elevation(
58
+ longitude, latitude, altitude, observation_time
59
+ )
60
+ )
61
+ assert azimuth_result, elevation_result is not None
62
+
63
+ # test array of observation times
64
+ time_endpoints = ("2026 SEP 22 00:00:00", "2026 SEP 22 23:59:59")
65
+ time_interval = int(1e3) # seconds between data points
66
+ observation_time = np.arange(
67
+ str_to_et(time_endpoints[0]), str_to_et(time_endpoints[1]), time_interval
68
+ )
69
+ with furnish_kernels(kernels):
70
+ azimuth_result, elevation_result = (
71
+ process_ephemeris.calculate_azimuth_and_elevation(
72
+ longitude, latitude, altitude, observation_time
73
+ )
74
+ )
75
+ assert len(azimuth_result) == len(observation_time)
76
+
77
+
78
+ @pytest.mark.external_kernel()
79
+ def test_build_output(furnish_kernels):
80
+ """
81
+ Test the build_output() function.
82
+ """
83
+ # Example usage for Longovilo-Hacienda, Chile
84
+ # https://www.findlatitudeandlongitude.com/l/LONGOVILO%2C+CHILE/
85
+ longitude = -71.41 # longitude in degrees
86
+ latitude = -33.94 # latitude in degrees
87
+ altitude = 0.157 # altitude in kilometers
88
+ time_endpoints = ("2026 SEP 22 00:00:00", "2026 SEP 22 23:59:59")
89
+ time_interval = int(1e3) # seconds between data points
90
+
91
+ kernels = [
92
+ "naif0012.tls",
93
+ "pck00011.tpc",
94
+ "de440s.bsp",
95
+ ]
96
+ with furnish_kernels(kernels):
97
+ output_dict = process_ephemeris.build_output(
98
+ longitude, latitude, altitude, time_endpoints, time_interval
99
+ )
100
+
101
+ for key_name in ["azimuth", "elevation", "time", "doppler"]:
102
+ assert key_name in output_dict.keys()
103
+ assert len(output_dict[key_name]) == len(
104
+ np.arange(
105
+ str_to_et(time_endpoints[0]),
106
+ str_to_et(time_endpoints[1]),
107
+ time_interval,
108
+ )
109
+ )
@@ -20,7 +20,7 @@ def xtce_hit_path():
20
20
 
21
21
  @pytest.fixture(scope="session")
22
22
  def binary_packet_path():
23
- """Returns the xtce auxiliary directory."""
23
+ """Returns the xtce directory."""
24
24
  return (
25
25
  imap_module_directory
26
26
  / "tests"
@@ -33,7 +33,7 @@ def binary_packet_path():
33
33
 
34
34
  @pytest.fixture(scope="session")
35
35
  def hit_test_data():
36
- """Returns the xtce auxiliary directory."""
36
+ """Returns the test data directory."""
37
37
  data_path = (
38
38
  imap_module_directory
39
39
  / "tests"
@@ -141,7 +141,7 @@ def test_create_l1(xarray_data):
141
141
  assert l1["L4IBHG"] == 2
142
142
 
143
143
 
144
- def test_process_hit(xarray_data):
144
+ def test_process_hit(xarray_data, caplog):
145
145
  """Tests process_hit."""
146
146
 
147
147
  # Tests that it functions normally
@@ -167,11 +167,14 @@ def test_process_hit(xarray_data):
167
167
  i for i in range(29) for _ in range(2)
168
168
  ] + [59, 59]
169
169
 
170
- with pytest.raises(
171
- ValueError, match="does not contain all values from 0 to 59 without duplicates"
172
- ):
170
+ with caplog.at_level("WARNING"):
173
171
  process_hit(subset)
174
172
 
173
+ assert any(
174
+ "does not contain all values from 0 to 59 without duplicates" in message
175
+ for message in caplog.text.splitlines()
176
+ )
177
+
175
178
 
176
179
  def test_decom_packets(xarray_data, hit_test_data):
177
180
  """This function checks that all instrument parameters are accounted for."""
@@ -7,7 +7,7 @@ from imap_processing import imap_module_directory
7
7
  from imap_processing.idex.idex_l1a import PacketParser
8
8
 
9
9
 
10
- @pytest.fixture()
10
+ @pytest.fixture(scope="module")
11
11
  def decom_test_data() -> xr.Dataset:
12
12
  """Return a ``xarray`` dataset containing test data.
13
13
 
@@ -17,6 +17,6 @@ def decom_test_data() -> xr.Dataset:
17
17
  A ``xarray`` dataset containing the test data
18
18
  """
19
19
  test_file = Path(
20
- f"{imap_module_directory}/tests/idex/imap_idex_l0_raw_20230725_v001.pkts"
20
+ f"{imap_module_directory}/tests/idex/imap_idex_l0_raw_20231214_v001.pkts"
21
21
  )
22
22
  return PacketParser(test_file, "001").data