@@ -288,6 +288,62 @@ def test_unpack_flags(self):
288288 self .assertTrue ((flags ["flag7" ].data == empty ).all ())
289289 self .assertTrue ((flags ["flag8" ].data == empty ).all ())
290290
291+ def test_get_flags_mask_or (self ):
292+
293+ ds = Dataset ()
294+ meanings = ["flag1" , "flag2" , "flag3" , "flag4" , "flag5" , "flag6" , "flag7" , "flag8" ]
295+ flags_vector_variable = DatasetUtil .create_flags_variable ([2 ,3 ], meanings , dim_names = ["dim1" , "dim2" ],
296+ attributes = {"standard_name" : "std" })
297+
298+ ds ["flags" ] = flags_vector_variable
299+ ds ["flags" ] = DatasetUtil .set_flag (ds ["flags" ], "flag4" )
300+ ds ["flags" ][0 , 1 ] = DatasetUtil .set_flag (ds ["flags" ][0 , 1 ], "flag5" )
301+ ds ["flags" ][1 , 1 ] = DatasetUtil .set_flag (ds ["flags" ][1 , 1 ], "flag2" )
302+ ds ["flags" ][1 , 2 ] = DatasetUtil .set_flag (ds ["flags" ][1 , 2 ], "flag7" )
303+
304+ flags_mask = DatasetUtil .get_flags_mask_or (ds ["flags" ], flags = ["flag5" , "flag2" , "flag7" ])
305+
306+ expected_flags_mask = np .array ([[False , True , False ], [False , True , True ]], dtype = bool )
307+
308+ np .testing .assert_array_almost_equal (flags_mask , expected_flags_mask )
309+
310+ def test_get_flags_mask_all (self ):
311+ ds = Dataset ()
312+ meanings = ["flag1" , "flag2" , "flag3" , "flag4" , "flag5" , "flag6" , "flag7" , "flag8" ]
313+ flags_vector_variable = DatasetUtil .create_flags_variable ([2 , 3 ], meanings , dim_names = ["dim1" , "dim2" ],
314+ attributes = {"standard_name" : "std" })
315+
316+ ds ["flags" ] = flags_vector_variable
317+ ds ["flags" ] = DatasetUtil .set_flag (ds ["flags" ], "flag4" )
318+ ds ["flags" ][0 , 1 ] = DatasetUtil .set_flag (ds ["flags" ][0 , 1 ], "flag5" )
319+ ds ["flags" ][1 , 1 ] = DatasetUtil .set_flag (ds ["flags" ][1 , 1 ], "flag2" )
320+ ds ["flags" ][1 , 2 ] = DatasetUtil .set_flag (ds ["flags" ][1 , 2 ], "flag7" )
321+
322+ flags_mask = DatasetUtil .get_flags_mask_or (ds ["flags" ])
323+
324+ expected_flags_mask = np .array ([[True , True , True ], [True , True , True ]], dtype = bool )
325+
326+ np .testing .assert_array_almost_equal (flags_mask , expected_flags_mask )
327+
328+ def test_get_flags_mask_and (self ):
329+
330+ ds = Dataset ()
331+ meanings = ["flag1" , "flag2" , "flag3" , "flag4" , "flag5" , "flag6" , "flag7" , "flag8" ]
332+ flags_vector_variable = DatasetUtil .create_flags_variable ([2 ,3 ], meanings , dim_names = ["dim1" , "dim2" ],
333+ attributes = {"standard_name" : "std" })
334+
335+ ds ["flags" ] = flags_vector_variable
336+ ds ["flags" ] = DatasetUtil .set_flag (ds ["flags" ], "flag4" )
337+ ds ["flags" ][0 , 1 ] = DatasetUtil .set_flag (ds ["flags" ][0 , 1 ], "flag5" )
338+ ds ["flags" ][1 , 1 ] = DatasetUtil .set_flag (ds ["flags" ][1 , 1 ], "flag2" )
339+ ds ["flags" ][1 , 1 ] = DatasetUtil .set_flag (ds ["flags" ][1 , 1 ], "flag7" )
340+
341+ flags_mask = DatasetUtil .get_flags_mask_and (ds ["flags" ], flags = ["flag2" , "flag7" ])
342+
343+ expected_flags_mask = np .array ([[False , False , False ], [False , True , False ]], dtype = bool )
344+
345+ np .testing .assert_array_almost_equal (flags_mask , expected_flags_mask )
346+
291347 def test_get_set_flags (self ):
292348
293349 ds = Dataset ()
0 commit comments