def test_flatten_hed_column_names(self): sr = SidecarMap() # One categorical column sidecar1 = {"a1_col": {"HED": {"b1": "Label/B1", "c1": "Label/C1"}}, "a2_col": {"HED": {"b2": "Label/B2", "c2": "Label/C2"}}, "a3_col": {"HED": {"b3": "Label/B2", "c3": "Label/C2"}}} df1 = sr.flatten_hed(sidecar1) self.assertEqual(len(df1), 9, "When all columns are used should have all entries") df2 = sr.flatten_hed(sidecar1, ["a1_col", "a3_col"]) self.assertEqual(len(df2), 6, "When some columns are used should have appropriate entries") self.assertEqual(len(df1.columns), 2, "flatten_hed dataframe should have 2 columns") self.assertEqual(df1.iloc[1]['column'], 'b1', "flatten_hed dataframe should have right value in key") df2 = sr.flatten_hed(sidecar1, ["a1_col", "a3_col"]) self.assertEqual(len(df2), 6, "flatten_hed dataframe should have 1 more entry than HED entries for dictionary") self.assertEqual(len(df2.columns), 2, "flatten_hed dataframe should have 2 columns") self.assertEqual(df2.iloc[1]['column'], 'b1', "flatten_hed dataframe should have right value in key")
def test_unflatten_hed(self): sr = SidecarMap() sidecar1 = {"a_col": {"HED": {"b": "Label/B", "c": "Label/C"}}} df1 = sr.flatten_hed(sidecar1) undf1 = sr.unflatten_hed(df1) self.assertEqual(len(undf1.keys()), 1, "unflatten_hed dictionary should unpack correctly") self.assertTrue("a_col" in undf1.keys(), "The correct key is recovered") # One value column sidecar2 = {"a_col": {"HED": "Label/#"}} df2 = sr.flatten_hed(sidecar2) undf2 = sr.unflatten_hed(df2) self.assertEqual(len(undf2.keys()), 1, "unflatten_hed dictionary should unpack correctly") self.assertTrue("a_col" in undf2.keys(), "The correct key is recovered") # A combination with other columns sidecar3 = {"a_col": {"HED": {"b": "Label/B", "c": "Label/C"}, "d": {"a1": "b1"}}, "b_col": {"HED": "Label/#"}, "c_col": {"levels": "e"}} df3 = sr.flatten_hed(sidecar3) undf3 = sr.unflatten_hed(df3) self.assertEqual(len(undf3.keys()), 2, "unflatten_hed dictionary should unpack correctly")
def test_flatten_hed(self): sr = SidecarMap() # One categorical column sidecar1 = {"a_col": {"HED": {"b": "Label/B", "c": "Label/C"}}} df1 = sr.flatten_hed(sidecar1) self.assertEqual(len(df1), 3, "flatten_hed dataframe should have 1 more entry than HED entries for dictionary") self.assertEqual(len(df1.columns), 2, "flatten_hed dataframe should have 2 columns") self.assertEqual(df1.iloc[1]['column'], 'b', "flatten_hed dataframe should have right value in key") # One value column sidecar2 = {"a_col": {"HED": "Label/#"}} df2 = sr.flatten_hed(sidecar2) self.assertEqual(len(df2), 1, "flatten_hed dataframe should have same number of entries as dictionary") self.assertEqual(len(df2.columns), 2, "flatten_hed dataframe should have 2 columns") self.assertEqual(df2.iloc[0]['column'], '_*_a_col_*_', "flatten_hed dataframe should have right value in key") # A combination with other columns sidecar3 = {"a_col": {"HED": {"b": "Label/B", "c": "Label/C"}, "d": {"a1": "b1"}}, "b_col": {"HED": "Label/#"}} df3 = sr.flatten_hed(sidecar3) self.assertEqual(len(df3), 4, "flatten_hed dataframe should have 1 more entries than HED entries for dictionary") self.assertEqual(len(df3.columns), 2, "flatten_hed dataframe should have 2 columns") self.assertEqual(df3.iloc[0]['column'], '_*_a_col_*_', "flatten_hed dataframe should have right value in key") self.assertEqual(df3.iloc[3]['column'], '_*_b_col_*_', "flatten_hed dataframe should have right value in key")