@@ -885,12 +885,20 @@ def mock_data_for_build_cdf_dataset(self):
885885 name = "ena_intesity" ,
886886 dims = [k for k in coord_sizes .keys ()][:- 1 ],
887887 )
888- # Add one variable that is expected to get removed
889- mock_dataset ["foo_var" ] = xr .DataArray (
888+ # Add one variable that is expected to get removed because it has a
889+ # dimension that is not in the list of `coord_names`
890+ mock_dataset ["extra_dimension_var" ] = xr .DataArray (
890891 np .ones (tuple (s for s in coord_sizes .values ())),
891- name = "foo_var " ,
892+ name = "extra_dimension_var " ,
892893 dims = [k for k in coord_sizes .keys ()],
893894 )
895+ # Add a variable that is expected to get removed because it has no
896+ # attributes defined
897+ mock_dataset ["no_attr_var" ] = xr .DataArray (
898+ np .ones (tuple (s for s in coord_sizes .values ())[:- 1 ]),
899+ name = "no_attr_var" ,
900+ dims = [k for k in coord_sizes .keys ()][:- 1 ],
901+ )
894902 # Add required energy delta variables
895903 for side in ["minus" , "plus" ]:
896904 mock_dataset [f"{ CoordNames .ENERGY_L2 .value } _delta_{ side } " ] = xr .DataArray (
@@ -910,11 +918,12 @@ def test_build_cdf_dataset(self, mock_to_dataset, mock_data_for_build_cdf_datase
910918 skymap .min_epoch = 10
911919 skymap .max_epoch = 15
912920 cdf_dataset = skymap .build_cdf_dataset (
913- "hi" , "l2" , "foo_descriptor" , sensor = "45"
921+ "hi" , "l2" , "foo_descriptor" , sensor = "45" , drop_vars_with_no_attributes = True
914922 )
915923
916- # Check that expected var gets removed
917- assert "foo_var" not in cdf_dataset
924+ # Check that expected vars gets removed
925+ assert "extra_dimension_var" not in cdf_dataset
926+ assert "no_attr_var" not in cdf_dataset
918927 # Check the epoch values
919928 assert CoordNames .TIME .value in cdf_dataset
920929 assert cdf_dataset [CoordNames .TIME .value ].values [0 ] == skymap .min_epoch
@@ -961,30 +970,15 @@ def test_build_cdf_dataset_key_error(
961970 ):
962971 """Test build_cdf_dataset raising a KeyError."""
963972 mock_dataset = mock_data_for_build_cdf_dataset
964- # Add ena intensity variable
965- mock_dataset ["no_attrs_var" ] = xr .DataArray (
966- np .ones (
967- tuple (s for s in mock_data_for_build_cdf_dataset .coords .sizes .values ())[
968- :- 1
969- ]
970- ),
971- name = "no_attrs_var" ,
972- dims = [k for k in mock_data_for_build_cdf_dataset .coords .sizes .keys ()][:- 1 ],
973- )
974973 mock_to_dataset .return_value = mock_dataset
975974
976975 skymap = ena_maps .RectangularSkyMap (6 , geometry .SpiceFrame .ECLIPJ2000 )
977976 skymap .min_epoch = 10
978977 skymap .max_epoch = 15
979- # Test that variables with no attributes defined raise KeyError
980- with pytest .raises (
981- KeyError , match = "Attributes for variable no_attrs_var not found"
982- ):
983- _ = skymap .build_cdf_dataset ("hi" , "l2" , "foo_descriptor" , sensor = "45" )
984978
985979 # Test that missing energy delta variable raise KeyError
986980 # Test for missing energy_delta_plus
987- mock_dataset = mock_dataset .drop (["no_attrs_var" , " energy_delta_plus" ])
981+ mock_dataset = mock_dataset .drop (["energy_delta_plus" ])
988982 mock_to_dataset .return_value = mock_dataset
989983 with pytest .raises (
990984 KeyError ,
@@ -1000,6 +994,28 @@ def test_build_cdf_dataset_key_error(
1000994 ):
1001995 _ = skymap .build_cdf_dataset ("hi" , "l2" , "foo_descriptor" , sensor = "45" )
1002996
997+ @mock .patch ("imap_processing.ena_maps.ena_maps.RectangularSkyMap.to_dataset" )
998+ def test_keep_vars_with_no_attributes (
999+ self , mock_to_dataset , mock_data_for_build_cdf_dataset
1000+ ):
1001+ """Test that variables with no attributes are kept when desired."""
1002+ # Set up the mock
1003+ mock_to_dataset .return_value = mock_data_for_build_cdf_dataset
1004+
1005+ skymap = ena_maps .RectangularSkyMap (6 , geometry .SpiceFrame .ECLIPJ2000 )
1006+ skymap .min_epoch = 10
1007+ skymap .max_epoch = 15
1008+ cdf_dataset = skymap .build_cdf_dataset (
1009+ "hi" ,
1010+ "l2" ,
1011+ "foo_descriptor" ,
1012+ sensor = "45" ,
1013+ drop_vars_with_no_attributes = False ,
1014+ )
1015+
1016+ # Check that expected var was not removed
1017+ assert "no_attr_var" in cdf_dataset
1018+
10031019
10041020class TestHealpixSkyMap :
10051021 @pytest .fixture (autouse = True )
0 commit comments