diff --git a/imap_processing/cdf/utils.py b/imap_processing/cdf/utils.py index 61067f5f9..13466edb7 100644 --- a/imap_processing/cdf/utils.py +++ b/imap_processing/cdf/utils.py @@ -115,10 +115,11 @@ def write_cdf( "No Data_version attribute found in dataset. Using default v999.", stacklevel=2, ) - version = "v999" - elif not re.match(r"v\d{3}", version): + version = "999" + dataset.attrs["Data_version"] = version + elif not re.match(r"\d{3}", version): raise ValueError( - f"The Data_version attribute {version} does not match expected format vXXX." + f"The Data_version attribute {version} does not match expected format XXX." ) repointing = dataset.attrs.get("Repointing", None) @@ -129,7 +130,7 @@ def write_cdf( data_level=data_level, descriptor=descriptor, start_time=start_date, - version=version, + version=f"v{version}", # Ensure version is prefixed with 'v' repointing=repointing_int, ) file_path = Path(science_file.construct_path()) diff --git a/imap_processing/cli.py b/imap_processing/cli.py index 01c6d10cb..841207b37 100644 --- a/imap_processing/cli.py +++ b/imap_processing/cli.py @@ -569,7 +569,7 @@ def post_processing( products = [] for ds in processed_data: if isinstance(ds, xr.Dataset): - ds.attrs["Data_version"] = self.version + ds.attrs["Data_version"] = self.version[1:] # Strip 'v' from version if self.repointing is not None: ds.attrs["Repointing"] = self.repointing ds.attrs["Start_date"] = self.start_date diff --git a/imap_processing/tests/cdf/test_utils.py b/imap_processing/tests/cdf/test_utils.py index 0bd38485c..3f72e326e 100644 --- a/imap_processing/tests/cdf/test_utils.py +++ b/imap_processing/tests/cdf/test_utils.py @@ -26,7 +26,7 @@ def test_dataset(): # Load the CDF attrs swe_attrs = ImapCdfAttributes() swe_attrs.add_instrument_global_attrs("swe") - swe_attrs.add_global_attribute("Data_version", "v001") + swe_attrs.add_global_attribute("Data_version", "001") dataset = xr.Dataset( { diff --git a/imap_processing/tests/idex/test_idex_l2a.py b/imap_processing/tests/idex/test_idex_l2a.py index f2cc6bc78..77a8cf305 100644 --- a/imap_processing/tests/idex/test_idex_l2a.py +++ b/imap_processing/tests/idex/test_idex_l2a.py @@ -46,7 +46,7 @@ def test_l2a_logical_source_and_cdf(l2a_dataset: xr.Dataset): expected_src = "imap_idex_l2a_sci-1week" assert l2a_dataset.attrs["Logical_source"] == expected_src # Verify the CDF file can be created with no errors. - l2a_dataset.attrs["Data_version"] = "v999" + l2a_dataset.attrs["Data_version"] = "999" file_name = write_cdf(l2a_dataset) assert file_name.exists() assert file_name.name == "imap_idex_l2a_sci-1week_20231218_v999.cdf" diff --git a/imap_processing/tests/idex/test_idex_l2b.py b/imap_processing/tests/idex/test_idex_l2b.py index a913981bd..e8257d65a 100644 --- a/imap_processing/tests/idex/test_idex_l2b.py +++ b/imap_processing/tests/idex/test_idex_l2b.py @@ -40,7 +40,7 @@ def test_l2b_logical_source_and_cdf(l2b_dataset: xr.Dataset): expected_src = "imap_idex_l2b_sci-1week" assert l2b_dataset.attrs["Logical_source"] == expected_src # Verify the CDF file can be created with no errors. - l2b_dataset.attrs["Data_version"] = "v999" + l2b_dataset.attrs["Data_version"] = "999" file_name = write_cdf(l2b_dataset) assert file_name.exists() diff --git a/imap_processing/tests/idex/test_idex_l2c.py b/imap_processing/tests/idex/test_idex_l2c.py index 0fa4a2255..e0deccb22 100644 --- a/imap_processing/tests/idex/test_idex_l2c.py +++ b/imap_processing/tests/idex/test_idex_l2c.py @@ -61,8 +61,8 @@ def test_l2c_attrs_and_vars(l2c_datasets: list[xr.Dataset], l1b_dataset: xr.Data "rectangular_lat_pixel": int(180 / IDEX_SPACING_DEG), "epoch": 1, } - healpix_ds.attrs["Data_version"] = "v999" - rect_ds.attrs["Data_version"] = "v999" + healpix_ds.attrs["Data_version"] = "999" + rect_ds.attrs["Data_version"] = "999" # Check the attributes of the dataset by writing to a CDF file hp_file_name = write_cdf(healpix_ds) rect_file_name = write_cdf(rect_ds) diff --git a/imap_processing/tests/mag/test_mag_decom.py b/imap_processing/tests/mag/test_mag_decom.py index 85aa7b489..664891da0 100644 --- a/imap_processing/tests/mag/test_mag_decom.py +++ b/imap_processing/tests/mag/test_mag_decom.py @@ -15,7 +15,7 @@ def cdf_attrs(): test_attrs.add_instrument_global_attrs("mag") test_attrs.add_instrument_variable_attrs("mag", "l1a") # Default v001 expected when writing to file and re-loading - test_attrs.add_global_attribute("Data_version", "v001") + test_attrs.add_global_attribute("Data_version", "001") return test_attrs diff --git a/imap_processing/tests/swe/test_swe_l1b.py b/imap_processing/tests/swe/test_swe_l1b.py index 419e6478d..d5bd9a51a 100644 --- a/imap_processing/tests/swe/test_swe_l1b.py +++ b/imap_processing/tests/swe/test_swe_l1b.py @@ -168,7 +168,7 @@ def test_swe_l1b(mock_get_file_paths, l1b_validation_df): l1b_input = l1a_datasets[0] # Set these two as cli.py -> post_processing would have. - l1b_input.attrs["Data_version"] = "v002" + l1b_input.attrs["Data_version"] = "002" # write data to CDF l1a_cdf_filepath = write_cdf(l1b_input) assert l1a_cdf_filepath.name == "imap_swe_l1a_sci_20240510_v002.cdf" @@ -204,7 +204,7 @@ def get_file_paths_side_effect(descriptor): l1b_datasets = swe_l1b(dependencies) l1b_write_ds = l1b_datasets[0] - l1b_write_ds.attrs["Data_version"] = "v002" + l1b_write_ds.attrs["Data_version"] = "002" sci_l1b_filepath = write_cdf(l1b_write_ds) diff --git a/imap_processing/tests/swe/test_swe_l2.py b/imap_processing/tests/swe/test_swe_l2.py index ffec7bb23..91b489398 100644 --- a/imap_processing/tests/swe/test_swe_l2.py +++ b/imap_processing/tests/swe/test_swe_l2.py @@ -262,7 +262,7 @@ def test_swe_l2(mock_get_file_paths, use_fake_spin_data_for_time): test_data_path = "tests/swe/l0_data/2024051010_SWE_SCIENCE_packet.bin" l1a_datasets = swe_l1a(imap_module_directory / test_data_path) l1a_ds = l1a_datasets[0] - l1a_ds.attrs["Data_version"] = "v000" + l1a_ds.attrs["Data_version"] = "000" l1a_cdf_filepath = write_cdf(l1a_ds) assert l1a_cdf_filepath.name == "imap_swe_l1a_sci_20240510_v000.cdf" @@ -295,7 +295,7 @@ def get_file_paths_side_effect(descriptor): eu_anc = AncillaryInput("imap_swe_eu-conversion_20240510_v000.csv") dependencies = ProcessingInputCollection(science_input, inflight_anc, eu_anc) l1b_dataset = swe_l1b(dependencies)[0] - l1b_dataset.attrs["Data_version"] = "v000" + l1b_dataset.attrs["Data_version"] = "000" l2_dataset = swe_l2(l1b_dataset) assert isinstance(l2_dataset, xr.Dataset) @@ -325,6 +325,6 @@ def get_file_paths_side_effect(descriptor): assert np.allclose(cal_factor, cal_factor[:, 0:1], rtol=1e-9, atol=0) # Write L2 to CDF - l2_dataset.attrs["Data_version"] = "v002" + l2_dataset.attrs["Data_version"] = "002" l2_cdf_filepath = write_cdf(l2_dataset) assert l2_cdf_filepath.name == "imap_swe_l2_sci_20240510_v002.cdf" diff --git a/imap_processing/tests/ultra/mock_data.py b/imap_processing/tests/ultra/mock_data.py index cf1163678..1e8e870ad 100644 --- a/imap_processing/tests/ultra/mock_data.py +++ b/imap_processing/tests/ultra/mock_data.py @@ -387,7 +387,7 @@ def mock_l1c_pset_product_healpix( attrs={ "Logical_file_id": logical_file_id, "Logical_source": logical_source, - "Data_version": "v001", + "Data_version": "001", }, ) diff --git a/imap_processing/tests/ultra/unit/test_ultra_l1a.py b/imap_processing/tests/ultra/unit/test_ultra_l1a.py index 1ce1d360e..061d12a9a 100644 --- a/imap_processing/tests/ultra/unit/test_ultra_l1a.py +++ b/imap_processing/tests/ultra/unit/test_ultra_l1a.py @@ -71,7 +71,7 @@ def test_cdf_aux(ccsds_path_theta_0): """Tests that CDF file can be created.""" test_data = ultra_l1a(ccsds_path_theta_0, apid_input=ULTRA_AUX.apid[0]) - test_data[0].attrs["Data_version"] = "v999" + test_data[0].attrs["Data_version"] = "999" test_data[0].attrs["Repointing"] = "repoint99999" test_data_path = write_cdf(test_data[0], istp=True) @@ -85,7 +85,7 @@ def test_cdf_aux(ccsds_path_theta_0): def test_cdf_rates(ccsds_path_theta_0): """Tests that CDF file can be created.""" test_data = ultra_l1a(ccsds_path_theta_0, apid_input=ULTRA_RATES.apid[0]) - test_data[0].attrs["Data_version"] = "v999" + test_data[0].attrs["Data_version"] = "999" test_data[0].attrs["Repointing"] = "repoint99999" test_data_path = write_cdf(test_data[0], istp=True) @@ -99,7 +99,7 @@ def test_cdf_rates(ccsds_path_theta_0): def test_cdf_tof(ccsds_path_theta_0): """Tests that CDF file can be created.""" test_data = ultra_l1a(ccsds_path_theta_0, apid_input=ULTRA_TOF.apid[0]) - test_data[0].attrs["Data_version"] = "v999" + test_data[0].attrs["Data_version"] = "999" test_data[0].attrs["Repointing"] = "repoint99999" test_data_path = write_cdf(test_data[0], istp=True) assert test_data_path.exists() @@ -112,7 +112,7 @@ def test_cdf_tof(ccsds_path_theta_0): def test_cdf_events(ccsds_path_theta_0): """Tests that CDF file can be created.""" test_data = ultra_l1a(ccsds_path_theta_0, apid_input=ULTRA_EVENTS.apid[0]) - test_data[0].attrs["Data_version"] = "v999" + test_data[0].attrs["Data_version"] = "999" test_data[0].attrs["Repointing"] = "repoint99999" test_data_path = write_cdf(test_data[0], istp=True) @@ -127,7 +127,7 @@ def test_cdf_hk(ccsds_path_theta_0): """Tests that CDF file can be created.""" test_data = ultra_l1a(ccsds_path_theta_0, apid_input=869) data = test_data[0] - data.attrs["Data_version"] = "v999" + data.attrs["Data_version"] = "999" data.attrs["Repointing"] = "repoint99999" test_data_path = write_cdf(data, istp=True) @@ -143,7 +143,7 @@ def test_cdf_cmdtxt(ccsds_path_all_apids): """Tests that CDF file can be created.""" test_data = ultra_l1a(ccsds_path_all_apids, apid_input=939) data = test_data[0] - data.attrs["Data_version"] = "v999" + data.attrs["Data_version"] = "999" test_data_path = write_cdf(data, istp=True) assert test_data_path.exists() @@ -155,7 +155,7 @@ def test_cdf_monitorlimits(ccsds_path_all_apids): """Tests that CDF file can be created.""" test_data = ultra_l1a(ccsds_path_all_apids, apid_input=937) data = test_data[0] - data.attrs["Data_version"] = "v999" + data.attrs["Data_version"] = "999" test_data_path = write_cdf(data, istp=True) assert test_data_path.exists() @@ -169,7 +169,7 @@ def test_cdf_startup(ccsds_path_all_apids): """Tests that CDF file can be created.""" test_data = ultra_l1a(ccsds_path_all_apids, apid_input=941) data = test_data[0] - data.attrs["Data_version"] = "v999" + data.attrs["Data_version"] = "999" test_data_path = write_cdf(data, istp=True) assert test_data_path.exists() diff --git a/imap_processing/tests/ultra/unit/test_ultra_l1b.py b/imap_processing/tests/ultra/unit/test_ultra_l1b.py index 8b7d43555..69b30b711 100644 --- a/imap_processing/tests/ultra/unit/test_ultra_l1b.py +++ b/imap_processing/tests/ultra/unit/test_ultra_l1b.py @@ -135,7 +135,7 @@ def side_effect_func(event_times, position, ultra_frame, dps_frame, sc_frame): == "IMAP-Ultra Instrument Level-1B Direct Event Data." ) - l1b_de_dataset[0].attrs["Data_version"] = "v999" + l1b_de_dataset[0].attrs["Data_version"] = "999" l1b_de_dataset[0].attrs["Repointing"] = "repoint99999" test_data_path = write_cdf(l1b_de_dataset[0], istp=True) assert test_data_path.exists() @@ -200,7 +200,7 @@ def test_cdf_extendedspin(use_fake_spin_data_for_time, faux_aux_dataset, rates_d l1b_extendedspin_dataset = ultra_l1b(data_dict) """Tests that CDF file is created and contains same attributes as xarray.""" - l1b_extendedspin_dataset[0].attrs["Data_version"] = "v999" + l1b_extendedspin_dataset[0].attrs["Data_version"] = "999" l1b_extendedspin_dataset[0].attrs["Repointing"] = "repoint99999" test_data_path = write_cdf(l1b_extendedspin_dataset[0], istp=True) assert test_data_path.exists() @@ -229,7 +229,7 @@ def test_cdf_cullingmask(use_fake_spin_data_for_time, faux_aux_dataset, rates_da data_dict["imap_ultra_l1a_45sensor-rates"] = rates_dataset l1b_extendedspin_dataset = ultra_l1b(data_dict) - l1b_extendedspin_dataset[1].attrs["Data_version"] = "v999" + l1b_extendedspin_dataset[1].attrs["Data_version"] = "999" l1b_extendedspin_dataset[1].attrs["Repointing"] = "repoint99999" test_data_path = write_cdf(l1b_extendedspin_dataset[1], istp=True) assert test_data_path.exists() @@ -258,7 +258,7 @@ def test_cdf_badtimes(use_fake_spin_data_for_time, faux_aux_dataset, rates_datas data_dict["imap_ultra_l1a_45sensor-rates"] = rates_dataset l1b_extendedspin_dataset = ultra_l1b(data_dict) - l1b_extendedspin_dataset[2].attrs["Data_version"] = "v999" + l1b_extendedspin_dataset[2].attrs["Data_version"] = "999" l1b_extendedspin_dataset[2].attrs["Repointing"] = "repoint99999" test_data_path = write_cdf(l1b_extendedspin_dataset[2], istp=True) assert test_data_path.exists() diff --git a/imap_processing/tests/ultra/unit/test_ultra_l1c.py b/imap_processing/tests/ultra/unit/test_ultra_l1c.py index c9113e8ce..414559568 100644 --- a/imap_processing/tests/ultra/unit/test_ultra_l1c.py +++ b/imap_processing/tests/ultra/unit/test_ultra_l1c.py @@ -172,7 +172,7 @@ def test_calculate_spacecraft_pset_with_cdf(): } output_datasets = ultra_l1c(data_dict) - output_datasets[0].attrs["Data_version"] = "v999" + output_datasets[0].attrs["Data_version"] = "999" output_datasets[0].attrs["Repointing"] = f"repoint{pointing + 1:05d}" test_data_path = write_cdf(output_datasets[0], istp=True)