def test_condition_pass(self):
     matrix_type = MatrixDfBuilder("T").verify(
         lambda d: len(d) == 2).build()
     df = pd.DataFrame([[11, float("NaN")], [21, 22]],
                       columns=["b", "a"],
                       index=["b", "a"])
     matrix_type.convert(df)
 def test_condition_fail(self):
     matrix_type = MatrixDfBuilder("T").verify(
         lambda d: len(d) == 4).build()
     df = pd.DataFrame([[11, float("NaN")], [21, 22]],
                       columns=["b", "a"],
                       index=["b", "a"])
     with pytest.raises(VerificationFailedError):
         matrix_type.convert(df)
 def test_matrix_bad_inf(self):
     matrix_type = MatrixDfBuilder("T").dtype(np.int32).build()
     df = pd.DataFrame([[11, float("inf")], [21, 22]],
                       columns=["b", "a"],
                       index=["b", "a"])
     matrix_type(df)
     with pytest.raises(IntCastingNaNError):
         matrix_type.convert(df)
 def test_io(self):
     matrix_type = MatrixDfBuilder("T").build()
     df = pd.DataFrame([[11, 12], [21, 22]],
                       columns=["b", "a"],
                       index=["b", "a"])
     df = matrix_type.convert(df)
     for s in [".feather", ".snappy", ".csv.gz", ".tsv"]:
         with tmpfile(s) as path:
             df.write_file(path)
             df2 = matrix_type.read_file(path)
         assert df2.flatten().tolist() == [11, 12, 21, 22]
 def test_shuffle(self):
     matrix_type = MatrixDfBuilder("T").build()
     df: MatrixDf = matrix_type.of([[11, 12], [21, 22]],
                                   columns=["b", "a"],
                                   index=["b", "a"])
     for _ in range(10):
         df2 = df.shuffle(rand=0)
         assert df2.values.tolist() == [[21, 22], [12, 11]]
     df2 = df.shuffle(rand=1)
     assert df2.values.tolist() == [[22, 21], [11, 12]]
     df2 = df.shuffle(rand=None)
     assert len(df2.values.tolist()) == 2
 def test_matrix_dtype(self):
     matrix_type = (MatrixDfBuilder("T").dtype(np.float16)).build()
     df = pd.DataFrame([[11, 12], [21, 22]],
                       columns=["b", "a"],
                       index=["b", "a"])
     df = matrix_type.convert(df)
     assert isinstance(df, MatrixDf)
     assert df.dtypes.tolist() == [np.float16, np.float16]
Beispiel #7
0
    def matrix(cls, name: str, doc: Optional[str] = None) -> MatrixDfBuilder:
        """
        Creates a new subclass of an :class:`typeddfs.matrix_dfs.MatrixDf`.

        Args:
            name: The name that will be used for the new class
            doc: The docstring for the new class

        Returns:
            A builder instance (builder pattern) to be used with chained calls
        """
        return MatrixDfBuilder(name, doc)
 def test_matrix(self):
     matrix_type = MatrixDfBuilder("T").build()
     df = pd.DataFrame([[11, 12], [21, 22]],
                       columns=["b", "a"],
                       index=["b", "a"])
     df = matrix_type.convert(df)
     assert isinstance(df, MatrixDf)
     assert len(df) == 2
     assert df.cols == ["b", "a"]
     assert df.rows == ["b", "a"]
     assert not df.is_symmetric()
     ltr = df.triangle()
     assert [str(x) for x in ltr.flatten().tolist()
             ] == [str(x) for x in [11.0, np.nan, 21.0, 22.0]]
     srt = df.sort_alphabetical()
     assert srt.cols == ["a", "b"]
     assert srt.rows == ["a", "b"]
     long = df.long_form()
     assert long.columns.tolist() == ["row", "column", "value"]
     assert long["value"].map(str).tolist() == [
         str(x) for x in [11, 12, 21, 22]
     ]
 def test_matrix_subclass(self):
     t1 = MatrixDfBuilder("t1").build()
     t2 = MatrixDfBuilder("t2").subclass(t1).build()
     assert issubclass(t2, t1)
     assert not issubclass(t1, t2)