@@ -288,6 +288,62 @@ def test_unpack_flags(self):
288
288
self .assertTrue ((flags ["flag7" ].data == empty ).all ())
289
289
self .assertTrue ((flags ["flag8" ].data == empty ).all ())
290
290
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
+
291
347
def test_get_set_flags (self ):
292
348
293
349
ds = Dataset ()
0 commit comments