Exemplo n.º 1
0
    def test_convert2DDict(self):
        """convert2DDict produces valid template input"""
        data = dict(a=dict(b=4, c=5))
        vals, row_keys, col_keys = convert2DDict(data)
        self.assertEqual(set(row_keys), set(["a"]))
        b = DictArrayTemplate(row_keys, col_keys).wrap(vals)
        self.assertEqual(b.array.tolist(), [[4, 5]])
        # row keys, then column
        self.assertEqual(b.template.names, [["a"], ["b", "c"]])

        data = {
            "a": {"a": 0, "b": 1, "e": 0},
            "b": {"a": 1, "b": 0, "e": 4},
            "e": {"a": 0, "b": 4, "e": 0},
        }
        vals, row_keys, col_keys = convert2DDict(data)
        b = DictArrayTemplate(row_keys, col_keys).wrap(vals)
        got = b.to_dict()
        self.assertEqual(got, data)
        self.assertEqual(b.template.names, [["a", "b", "e"], ["a", "b", "e"]])

        data = dict(a=dict(b=4, c=5))
        vals, row_keys, col_keys = convert2DDict(data, make_symmetric=True)
        self.assertEqual(row_keys, col_keys)
        self.assertEqual(vals, [[0, 4, 5], [4, 0, 0], [5, 0, 0]])
Exemplo n.º 2
0
 def test_to_dict_nested(self):
     """DictArray.to_dict() should convert nested DictArray instances to
     dict's too."""
     a = numpy.identity(3, int)
     b = DictArrayTemplate("abc", "ABC")
     b = b.wrap(a)
     self.assertEqual(b.array.tolist(), [[1, 0, 0], [0, 1, 0], [0, 0, 1]])
     c = DictArrayTemplate("de", "DE").wrap([[b, b], [b, b]])
     self.assertTrue(isinstance(c.to_dict()["d"], dict))
Exemplo n.º 3
0
 def test_write(self):
     """exercising write method"""
     data = [[3, 7], [2, 8], [5, 5]]
     darr = DictArrayTemplate(list("ABC"), list("ab")).wrap(data)
     with TemporaryDirectory(dir=".") as dirname:
         outpath = os.path.join(dirname, "delme.tsv")
         darr.write(outpath)
         with open(outpath) as infile:
             contents = [l.strip().split() for l in infile]
         header = contents.pop(0)
         self.assertEqual(header, ["dim-1", "dim-2", "value"])
         got = {(k1, k2): int(v) for k1, k2, v in contents}
         self.assertEqual(got, darr.to_dict(flatten=True))
Exemplo n.º 4
0
 def test_to_dict(self):
     """DictArray should convert 1D / 2D arrays with/without named row"""
     # 1D data, only 1D keys provided
     data = [0, 35, 45]
     keys = "a", "b", "c"
     darr = DictArrayTemplate(keys).wrap(data)
     self.assertEqual(darr.to_dict(), dict(zip(keys, data)))
     # 2D data, 2D keys, both string, provided
     data = [[0, 35, 45]]
     darr = DictArrayTemplate(["0"], keys).wrap(data)
     darr.to_dict()
     self.assertEqual(darr.to_dict(), {"0": {"a": 0, "b": 35, "c": 45}})
     # 2D data, 2D keys, one int, one string, provided
     darr = DictArrayTemplate([1], keys).wrap(data)
     self.assertEqual(darr.to_dict(), {1: {"a": 0, "b": 35, "c": 45}})
     darr = DictArrayTemplate([0], keys).wrap(data)
     self.assertEqual(darr.to_dict(), {0: {"a": 0, "b": 35, "c": 45}})