Skip to content

Commit 97968dd

Browse files
author
Menlo Developer
committed
Harrison L3 46 - PMCL/GSTU - CoDICE - Read energy_per_charge using correct L2 variable name
1 parent 4707765 commit 97968dd

5 files changed

Lines changed: 119 additions & 53 deletions

File tree

imap_l3_processing/codice/l3/lo/codice_lo_processor.py

Lines changed: 18 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -109,34 +109,37 @@ def process_l3a_charge_state_distributions(self,
109109
def process_l3a_partial_densities(self, dependencies: CodiceLoL3aPartialDensitiesDependencies):
110110
codice_lo_l2_data = dependencies.codice_l2_lo_data
111111
mass_per_charge_lookup = dependencies.mass_per_charge_lookup
112-
h_plus_partial_density = calculate_partial_densities(codice_lo_l2_data.hplus, codice_lo_l2_data.energy_table,
113-
mass_per_charge_lookup.hplus)
112+
h_plus_partial_density = calculate_partial_densities(
113+
codice_lo_l2_data.hplus,
114+
codice_lo_l2_data.energy_per_charge,
115+
mass_per_charge_lookup.hplus,
116+
)
114117
heplusplus_partial_density = calculate_partial_densities(codice_lo_l2_data.heplusplus,
115-
codice_lo_l2_data.energy_table,
118+
codice_lo_l2_data.energy_per_charge,
116119
mass_per_charge_lookup.heplusplus)
117-
cplus4_partial_density = calculate_partial_densities(codice_lo_l2_data.cplus4, codice_lo_l2_data.energy_table,
120+
cplus4_partial_density = calculate_partial_densities(codice_lo_l2_data.cplus4, codice_lo_l2_data.energy_per_charge,
118121
mass_per_charge_lookup.cplus4)
119-
cplus5_partial_density = calculate_partial_densities(codice_lo_l2_data.cplus5, codice_lo_l2_data.energy_table,
122+
cplus5_partial_density = calculate_partial_densities(codice_lo_l2_data.cplus5, codice_lo_l2_data.energy_per_charge,
120123
mass_per_charge_lookup.cplus5)
121-
cplus6_partial_density = calculate_partial_densities(codice_lo_l2_data.cplus6, codice_lo_l2_data.energy_table,
124+
cplus6_partial_density = calculate_partial_densities(codice_lo_l2_data.cplus6, codice_lo_l2_data.energy_per_charge,
122125
mass_per_charge_lookup.cplus6)
123-
oplus5_partial_density = calculate_partial_densities(codice_lo_l2_data.oplus5, codice_lo_l2_data.energy_table,
126+
oplus5_partial_density = calculate_partial_densities(codice_lo_l2_data.oplus5, codice_lo_l2_data.energy_per_charge,
124127
mass_per_charge_lookup.oplus5)
125-
oplus6_partial_density = calculate_partial_densities(codice_lo_l2_data.oplus6, codice_lo_l2_data.energy_table,
128+
oplus6_partial_density = calculate_partial_densities(codice_lo_l2_data.oplus6, codice_lo_l2_data.energy_per_charge,
126129
mass_per_charge_lookup.oplus6)
127-
oplus7_partial_density = calculate_partial_densities(codice_lo_l2_data.oplus7, codice_lo_l2_data.energy_table,
130+
oplus7_partial_density = calculate_partial_densities(codice_lo_l2_data.oplus7, codice_lo_l2_data.energy_per_charge,
128131
mass_per_charge_lookup.oplus7)
129-
oplus8_partial_density = calculate_partial_densities(codice_lo_l2_data.oplus8, codice_lo_l2_data.energy_table,
132+
oplus8_partial_density = calculate_partial_densities(codice_lo_l2_data.oplus8, codice_lo_l2_data.energy_per_charge,
130133
mass_per_charge_lookup.oplus8)
131-
ne_partial_density = calculate_partial_densities(codice_lo_l2_data.ne, codice_lo_l2_data.energy_table,
134+
ne_partial_density = calculate_partial_densities(codice_lo_l2_data.ne, codice_lo_l2_data.energy_per_charge,
132135
mass_per_charge_lookup.ne)
133-
mg_partial_density = calculate_partial_densities(codice_lo_l2_data.mg, codice_lo_l2_data.energy_table,
136+
mg_partial_density = calculate_partial_densities(codice_lo_l2_data.mg, codice_lo_l2_data.energy_per_charge,
134137
mass_per_charge_lookup.mg)
135-
si_partial_density = calculate_partial_densities(codice_lo_l2_data.si, codice_lo_l2_data.energy_table,
138+
si_partial_density = calculate_partial_densities(codice_lo_l2_data.si, codice_lo_l2_data.energy_per_charge,
136139
mass_per_charge_lookup.si)
137-
fe_loq_partial_density = calculate_partial_densities(codice_lo_l2_data.fe_loq, codice_lo_l2_data.energy_table,
140+
fe_loq_partial_density = calculate_partial_densities(codice_lo_l2_data.fe_loq, codice_lo_l2_data.energy_per_charge,
138141
mass_per_charge_lookup.fe_loq)
139-
fe_hiq_partial_density = calculate_partial_densities(codice_lo_l2_data.fe_hiq, codice_lo_l2_data.energy_table,
142+
fe_hiq_partial_density = calculate_partial_densities(codice_lo_l2_data.fe_hiq, codice_lo_l2_data.energy_per_charge,
140143
mass_per_charge_lookup.fe_hiq)
141144

142145
return CodiceLoL3aPartialDensityDataProduct(

imap_l3_processing/codice/l3/lo/models.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ class CodiceLoL2SWSpeciesData:
3838
epoch: ndarray
3939
epoch_delta_minus: ndarray
4040
epoch_delta_plus: ndarray
41-
energy_table: ndarray
41+
energy_per_charge: ndarray
4242
hplus: ndarray
4343
heplusplus: ndarray
4444
heplus: ndarray
@@ -64,7 +64,7 @@ def read_from_cdf(cls, l2_sectored_intensities_cdf: Path):
6464
epoch=cdf["epoch"][...],
6565
epoch_delta_minus=cdf["epoch_delta_minus"][...],
6666
epoch_delta_plus=cdf["epoch_delta_plus"][...],
67-
energy_table=cdf["energy_table"][...],
67+
energy_per_charge=cdf["energy_per_charge"][...],
6868
hplus=cdf["hplus"][...],
6969
heplusplus=cdf["heplusplus"][...],
7070
heplus=cdf["heplus"][...],

tests/codice/l3/lo/test_codice_lo_processor.py

Lines changed: 79 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -392,26 +392,89 @@ def test_process_l3a_partial_densities(self, mock_calculate_partial_densities):
392392
fe_hiq_partial_density,
393393
]
394394

395-
codice_lo_dependencies = CodiceLoL3aPartialDensitiesDependencies(codice_lo_l2_data, mass_per_charge_lookup)
396-
result_data_product = processor.process_l3a_partial_densities(codice_lo_dependencies)
395+
codice_lo_dependencies = CodiceLoL3aPartialDensitiesDependencies(
396+
codice_lo_l2_data, mass_per_charge_lookup
397+
)
398+
result_data_product = processor.process_l3a_partial_densities(
399+
codice_lo_dependencies
400+
)
397401

398402
self.assertEqual(num_species, mock_calculate_partial_densities.call_count)
399403

400404
mock_calculate_partial_densities.assert_has_calls(
401-
[call(codice_lo_l2_data.hplus, codice_lo_l2_data.energy_table, mass_per_charge_lookup.hplus),
402-
call(codice_lo_l2_data.heplusplus, codice_lo_l2_data.energy_table, mass_per_charge_lookup.heplusplus),
403-
call(codice_lo_l2_data.cplus4, codice_lo_l2_data.energy_table, mass_per_charge_lookup.cplus4),
404-
call(codice_lo_l2_data.cplus5, codice_lo_l2_data.energy_table, mass_per_charge_lookup.cplus5),
405-
call(codice_lo_l2_data.cplus6, codice_lo_l2_data.energy_table, mass_per_charge_lookup.cplus6),
406-
call(codice_lo_l2_data.oplus5, codice_lo_l2_data.energy_table, mass_per_charge_lookup.oplus5),
407-
call(codice_lo_l2_data.oplus6, codice_lo_l2_data.energy_table, mass_per_charge_lookup.oplus6),
408-
call(codice_lo_l2_data.oplus7, codice_lo_l2_data.energy_table, mass_per_charge_lookup.oplus7),
409-
call(codice_lo_l2_data.oplus8, codice_lo_l2_data.energy_table, mass_per_charge_lookup.oplus8),
410-
call(codice_lo_l2_data.ne, codice_lo_l2_data.energy_table, mass_per_charge_lookup.ne),
411-
call(codice_lo_l2_data.mg, codice_lo_l2_data.energy_table, mass_per_charge_lookup.mg),
412-
call(codice_lo_l2_data.si, codice_lo_l2_data.energy_table, mass_per_charge_lookup.si),
413-
call(codice_lo_l2_data.fe_loq, codice_lo_l2_data.energy_table, mass_per_charge_lookup.fe_loq),
414-
call(codice_lo_l2_data.fe_hiq, codice_lo_l2_data.energy_table, mass_per_charge_lookup.fe_hiq)])
405+
[
406+
call(
407+
codice_lo_l2_data.hplus,
408+
codice_lo_l2_data.energy_per_charge,
409+
mass_per_charge_lookup.hplus,
410+
),
411+
call(
412+
codice_lo_l2_data.heplusplus,
413+
codice_lo_l2_data.energy_per_charge,
414+
mass_per_charge_lookup.heplusplus,
415+
),
416+
call(
417+
codice_lo_l2_data.cplus4,
418+
codice_lo_l2_data.energy_per_charge,
419+
mass_per_charge_lookup.cplus4,
420+
),
421+
call(
422+
codice_lo_l2_data.cplus5,
423+
codice_lo_l2_data.energy_per_charge,
424+
mass_per_charge_lookup.cplus5,
425+
),
426+
call(
427+
codice_lo_l2_data.cplus6,
428+
codice_lo_l2_data.energy_per_charge,
429+
mass_per_charge_lookup.cplus6,
430+
),
431+
call(
432+
codice_lo_l2_data.oplus5,
433+
codice_lo_l2_data.energy_per_charge,
434+
mass_per_charge_lookup.oplus5,
435+
),
436+
call(
437+
codice_lo_l2_data.oplus6,
438+
codice_lo_l2_data.energy_per_charge,
439+
mass_per_charge_lookup.oplus6,
440+
),
441+
call(
442+
codice_lo_l2_data.oplus7,
443+
codice_lo_l2_data.energy_per_charge,
444+
mass_per_charge_lookup.oplus7,
445+
),
446+
call(
447+
codice_lo_l2_data.oplus8,
448+
codice_lo_l2_data.energy_per_charge,
449+
mass_per_charge_lookup.oplus8,
450+
),
451+
call(
452+
codice_lo_l2_data.ne,
453+
codice_lo_l2_data.energy_per_charge,
454+
mass_per_charge_lookup.ne,
455+
),
456+
call(
457+
codice_lo_l2_data.mg,
458+
codice_lo_l2_data.energy_per_charge,
459+
mass_per_charge_lookup.mg,
460+
),
461+
call(
462+
codice_lo_l2_data.si,
463+
codice_lo_l2_data.energy_per_charge,
464+
mass_per_charge_lookup.si,
465+
),
466+
call(
467+
codice_lo_l2_data.fe_loq,
468+
codice_lo_l2_data.energy_per_charge,
469+
mass_per_charge_lookup.fe_loq,
470+
),
471+
call(
472+
codice_lo_l2_data.fe_hiq,
473+
codice_lo_l2_data.energy_per_charge,
474+
mass_per_charge_lookup.fe_hiq,
475+
),
476+
]
477+
)
415478

416479
self.assertIsInstance(result_data_product, CodiceLoL3aPartialDensityDataProduct)
417480
self.assertEqual(input_metadata, result_data_product.input_metadata)

tests/codice/l3/lo/test_models.py

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -31,31 +31,31 @@ def test_lo_l2_sw_species_read_from_cdf(self):
3131
epoch = np.array([datetime(2010, 1, 1), datetime(2010, 1, 2)])
3232
epoch_delta_minus = rng.random(len(epoch))
3333
epoch_delta_plus = rng.random(len(epoch))
34-
energy_table = np.geomspace(2, 1000)
34+
energy_per_charge = np.geomspace(2, 1000)
3535
spin_sector = np.linspace(0, 360, 24)
36-
hplus = rng.random((len(epoch), len(energy_table), len(spin_sector)))
37-
heplus = rng.random((len(epoch), len(energy_table), len(spin_sector)))
38-
heplusplus = rng.random((len(epoch), len(energy_table), len(spin_sector)))
39-
ne = rng.random((len(epoch), len(energy_table), len(spin_sector)))
40-
cplus4 = rng.random((len(epoch), len(energy_table), len(spin_sector)))
41-
cplus5 = rng.random((len(epoch), len(energy_table), len(spin_sector)))
42-
cplus6 = rng.random((len(epoch), len(energy_table), len(spin_sector)))
43-
oplus5 = rng.random((len(epoch), len(energy_table), len(spin_sector)))
44-
oplus6 = rng.random((len(epoch), len(energy_table), len(spin_sector)))
45-
oplus7 = rng.random((len(epoch), len(energy_table), len(spin_sector)))
46-
oplus8 = rng.random((len(epoch), len(energy_table), len(spin_sector)))
47-
mg = rng.random((len(epoch), len(energy_table), len(spin_sector)))
48-
si = rng.random((len(epoch), len(energy_table), len(spin_sector)))
49-
cnoplus = rng.random((len(epoch), len(energy_table)))
50-
fe_loq = rng.random((len(epoch), len(energy_table), len(spin_sector)))
51-
fe_hiq = rng.random((len(epoch), len(energy_table), len(spin_sector)))
36+
hplus = rng.random((len(epoch), len(energy_per_charge), len(spin_sector)))
37+
heplus = rng.random((len(epoch), len(energy_per_charge), len(spin_sector)))
38+
heplusplus = rng.random((len(epoch), len(energy_per_charge), len(spin_sector)))
39+
ne = rng.random((len(epoch), len(energy_per_charge), len(spin_sector)))
40+
cplus4 = rng.random((len(epoch), len(energy_per_charge), len(spin_sector)))
41+
cplus5 = rng.random((len(epoch), len(energy_per_charge), len(spin_sector)))
42+
cplus6 = rng.random((len(epoch), len(energy_per_charge), len(spin_sector)))
43+
oplus5 = rng.random((len(epoch), len(energy_per_charge), len(spin_sector)))
44+
oplus6 = rng.random((len(epoch), len(energy_per_charge), len(spin_sector)))
45+
oplus7 = rng.random((len(epoch), len(energy_per_charge), len(spin_sector)))
46+
oplus8 = rng.random((len(epoch), len(energy_per_charge), len(spin_sector)))
47+
mg = rng.random((len(epoch), len(energy_per_charge), len(spin_sector)))
48+
si = rng.random((len(epoch), len(energy_per_charge), len(spin_sector)))
49+
cnoplus = rng.random((len(epoch), len(energy_per_charge)))
50+
fe_loq = rng.random((len(epoch), len(energy_per_charge), len(spin_sector)))
51+
fe_hiq = rng.random((len(epoch), len(energy_per_charge), len(spin_sector)))
5252
data_quality = rng.random(len(epoch))
5353
spin_sector_index = np.array([1])
5454

5555
cdf_file['epoch'] = epoch
5656
cdf_file['epoch_delta_minus'] = epoch_delta_minus
5757
cdf_file['epoch_delta_plus'] = epoch_delta_plus
58-
cdf_file['energy_table'] = energy_table
58+
cdf_file['energy_per_charge'] = energy_per_charge
5959
cdf_file['spin_sector'] = spin_sector
6060
cdf_file['hplus'] = hplus
6161
cdf_file['heplusplus'] = heplusplus
@@ -79,7 +79,7 @@ def test_lo_l2_sw_species_read_from_cdf(self):
7979
np.testing.assert_array_equal(result.epoch, epoch)
8080
np.testing.assert_array_equal(result.epoch_delta_minus, epoch_delta_minus)
8181
np.testing.assert_array_equal(result.epoch_delta_plus, epoch_delta_plus)
82-
np.testing.assert_array_equal(result.energy_table, energy_table)
82+
np.testing.assert_array_equal(result.energy_per_charge, energy_per_charge)
8383
np.testing.assert_array_equal(result.hplus, hplus)
8484
np.testing.assert_array_equal(result.heplusplus, heplusplus)
8585
np.testing.assert_array_equal(result.heplus, heplus)

tests/periodically_run_tests.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,5 +5,5 @@
55
"test_ultra_all_sp_maps": "2026-01-26T13:05:08.238429",
66
"test_ultra_combined_maps": null,
77
"test_ultra_combined_nsp_maps": "2026-02-23T11:43:59.652375",
8-
"test_ultra_combined_sp_maps": "2026-02-23T11:28:29.222530"
8+
"test_ultra_combined_sp_maps": "2026-03-05T15:39:34.795512"
99
}

0 commit comments

Comments
 (0)