def test_dataframe(self, data): """helper.split_dataframe: DataFrame output""" s = helper.split_dataframe(data, "split", type="DataFrame") expected = list(data.groupby("split")) assert len(s) == len(expected) for (i1, d1), (i2, d2) in zip(s, expected): assert i1 == i2 assert isinstance(d1, pd.DataFrame) pd.testing.assert_frame_equal(d1, d2)
def test_array(self, data): """helper.split_dataframe: array output""" s = helper.split_dataframe(data, "split", type="array") expected = list(data.groupby("split")) assert len(s) == len(expected) for (i1, d1), (i2, d2) in zip(s, expected): assert i1 == i2 assert isinstance(d1, np.ndarray) np.testing.assert_array_equal(d1, d2.values)
def plot(file=None): ax.cla() d = state["trc"].loc[f_sel.value] for p, trc in helper.split_dataframe(d, ("fret", "particle"), [("donor", "x"), ("donor", "y")]): ax.plot(trc[:, 0], trc[:, 1]) ax.text(*trc[0], str(p)) fig.canvas.draw()
def test_dataframe(self): """helpers.pandas.split_dataframe: DataFrame output""" s = split_dataframe(self.data, "split", type="DataFrame") expected = list(self.data.groupby("split")) self.assertEqual(len(s), len(expected)) for (i1, d1), (i2, d2) in zip(s, expected): self.assertEqual(i1, i2) self.assertIsInstance(d1, pd.DataFrame) pd.testing.assert_frame_equal(d1, d2)
def test_array_select_columns(self): """helpers.pandas.split_dataframe: selected columns, array output""" s = split_dataframe(self.data, "split", ["B", "A"], type="array") expected = list(self.data.groupby("split")) self.assertEqual(len(s), len(expected)) for (i1, d1), (i2, d2) in zip(s, expected): self.assertEqual(i1, i2) self.assertIsInstance(d1, np.ndarray) np.testing.assert_equal(d1, d2[["B", "A"]].values)
def test_array_ambiguous_index(self): """helpers.pandas.split_dataframe: ambiguous index, array output""" self.data.index = np.full(len(self.data), 1) s = split_dataframe(self.data, "split", type="array") expected = list(self.data.groupby("split")) self.assertEqual(len(s), len(expected)) for (i1, d1), (i2, d2) in zip(s, expected): self.assertEqual(i1, i2) self.assertIsInstance(d1, np.ndarray) np.testing.assert_equal(d1, d2.values)
def test_array_multiindex(self, data): """helper.split_dataframe: multiindex, array output""" d = pd.concat([data, data], axis=1, keys=["x", "y"]) s = helper.split_dataframe(d, ("x", "split"), [("y", "B"), ("x", "A")], type="array") expected = list(d.groupby([("x", "split")])) assert len(s) == len(expected) for (i1, d1), (i2, d2) in zip(s, expected): assert i1 == i2 assert isinstance(d1, np.ndarray) np.testing.assert_equal(d1, d2[[("y", "B"), ("x", "A")]].values)
def test_array_multiindex(self): """helpers.pandas.split_dataframe: multiindex, array output""" d = pd.concat([self.data, self.data], axis=1, keys=["x", "y"]) s = split_dataframe(d, ("x", "split"), [("y", "B"), ("x", "A")], type="array") expected = list(d.groupby([("x", "split")])) self.assertEqual(len(s), len(expected)) for (i1, d1), (i2, d2) in zip(s, expected): self.assertEqual(i1, i2) self.assertIsInstance(d1, np.ndarray) np.testing.assert_equal(d1, d2[[("y", "B"), ("x", "A")]].values)
def test_array_list(self, data): """helper.split_dataframe: list of arrays output""" data["boolean"] = True s = helper.split_dataframe(data, "split", type="array_list") expected = list(data.groupby("split")) assert len(s) == len(expected) for (i1, d1), (i2, d2) in zip(s, expected): assert i1 == i2 assert isinstance(d1, list) assert len(d1) == d2.shape[1] for c1, (_, c2) in zip(d1, d2.items()): np.testing.assert_array_equal(c1, c2.values)
def test_array_list_select_columns(self, data): """helper.split_dataframe: selected columns, list of arrays output""" cols = ["B", "A"] s = helper.split_dataframe(data, "split", cols, type="array_list") expected = list(data.groupby("split")) assert len(s) == len(expected) for (i1, d1), (i2, d2) in zip(s, expected): assert i1 == i2 assert isinstance(d1, list) assert len(d1) == len(cols) for c1, c2_name in zip(d1, cols): np.testing.assert_array_equal(c1, d2[c2_name].values)
def test_array_keep_index(self): """helpers.pandas.split_dataframe: keep_index=True, array output""" s = split_dataframe(self.data, "split", type="array", keep_index=True) expected = list(self.data.groupby("split")) self.assertEqual(len(s), len(expected)) for i, e in expected: e.insert(0, "index", e.index) for (i1, d1), (i2, d2) in zip(s, expected): self.assertEqual(i1, i2) self.assertIsInstance(d1, np.ndarray) np.testing.assert_equal(d1, d2.values)
def test_array_list_multiindex(self, data): """helper.split_dataframe: multiindex, list of arrays output""" cols = [("y", "B"), ("x", "A")] d = pd.concat([data, data], axis=1, keys=["x", "y"]) s = helper.split_dataframe(d, ("x", "split"), cols, type="array_list") expected = list(d.groupby([("x", "split")])) assert len(s) == len(expected) for (i1, d1), (i2, d2) in zip(s, expected): assert i1 == i2 assert isinstance(d1, list) assert len(d1) == len(cols) for c1, c2_name in zip(d1, cols): np.testing.assert_array_equal(c1, d2[c2_name].values)
def test_array_keep_index(self, data): """helper.split_dataframe: keep_index=True, array output""" s = helper.split_dataframe(data, "split", type="array", keep_index=True) expected = list(data.groupby("split")) assert len(s) == len(expected) for i, e in expected: e.insert(0, "index", e.index) for (i1, d1), (i2, d2) in zip(s, expected): assert i1 == i2 assert isinstance(d1, np.ndarray) np.testing.assert_array_equal(d1, d2.values)
def test_array_list_keep_index(self, data): """helper.split_dataframe: keep_index=True, list of arrays output""" s = helper.split_dataframe(data, "split", type="array_list", keep_index=True) expected = list(data.groupby("split")) assert len(s) == len(expected) for i, e in expected: e.insert(0, "index", e.index) for (i1, d1), (i2, d2) in zip(s, expected): assert i1 == i2 assert isinstance(d1, list) assert len(d1) == d2.shape[1] for c1, (_, c2) in zip(d1, d2.items()): np.testing.assert_array_equal(c1, c2.values)