def test_all_level_stacks(self, crandall_data_array):
     """
     Test stacking the data array on all supported levels, and that
     it can be unstacked.
     """
     # get a dataframe which splits network, station, location, and chan
     seed_df = get_seed_id_df(crandall_data_array)
     # iterate each level and stack, then unstack
     for level in seed_df.columns:
         dar1 = crandall_data_array.copy()
         dar2 = dar1.ops.stack_seed(level)
         assert len(dar2[level]) == len(seed_df[level].unique())
         assert (~dar1.isnull()).sum() == (~dar2.isnull()).sum()
         # unstack, ensure dataarrays are equal and such
         dar3 = dar2.ops.unstack_seed()
         assert dar1.shape == dar3.shape
         assert dar1.dims == dar3.dims
         # all elements should be equal or null
         assert ((dar1.values == dar3.values) | dar3.isnull().values).all()
 def test_sliced_by_one_seed(self, sliced_by_seed):
     """ ensure only the selected seed is taken """
     df = get_seed_id_df(sliced_by_seed)
     assert len(df) == 1
     expected = set([self.default_seed_id])
     assert expected == set(sliced_by_seed.seed_id.values)
 def test_slice_by_wild(self, sliced_by_wildcard):
     """ ensure the wildcard sloce works """
     df = get_seed_id_df(sliced_by_wildcard)
     assert set(df.channel.values) == set(["EHZ"])
 def test_iter_station(self, many_sid_array):
     """ ensure iterstation works """
     for dar in many_sid_array.ops.iter_seed("station"):
         df = get_seed_id_df(dar)
         assert len(df.station.unique()) == 1