Example #1
0
 def testDropFirstAsLast(self):
     model = hdf5.Hdf5TreeModel()
     h5_1 = commonh5.File("/foo/bar/1.mock", "w")
     h5_2 = commonh5.File("/foo/bar/2.mock", "w")
     model.insertH5pyObject(h5_1)
     model.insertH5pyObject(h5_2)
     self.assertEquals(self.getItemName(model, 0), "1.mock")
     self.assertEquals(self.getItemName(model, 1), "2.mock")
     index = model.index(0, 0, qt.QModelIndex())
     mimeData = model.mimeData([index])
     model.dropMimeData(mimeData, qt.Qt.MoveAction, 2, 0, qt.QModelIndex())
     self.assertEquals(self.getItemName(model, 0), "2.mock")
     self.assertEquals(self.getItemName(model, 1), "1.mock")
Example #2
0
    def testSelection_NotFound(self):
        tree2 = commonh5.File("/foo/bar/2.mock", "w")
        tree = commonh5.File("/foo/bar/1.mock", "w")
        item = tree.create_group("a/b/c/d")
        item.create_group("e").create_group("f")

        model = hdf5.Hdf5TreeModel()
        model.insertH5pyObject(tree)
        view = hdf5.Hdf5TreeView()
        view.setModel(model)
        view.setSelectedH5Node(tree2)

        selection = list(view.selectedH5Nodes())
        self.assertEqual(len(selection), 0)
Example #3
0
    def testDatasetData(self):
        h5 = commonh5.File("/foo/bar/1.mock", "w")
        value = numpy.array([1, 2, 3])
        d = h5.create_dataset("foo", data=value)

        model = hdf5.Hdf5TreeModel()
        model.insertH5pyObject(d)
        displayed = self.getRowDataAsDict(model, row=0)
        self.assertEquals(
            displayed[hdf5.Hdf5TreeModel.NAME_COLUMN, qt.Qt.DisplayRole],
            "1.mock::foo")
        self.assertIsInstance(
            displayed[hdf5.Hdf5TreeModel.NAME_COLUMN, qt.Qt.DecorationRole],
            qt.QIcon)
        self.assertEquals(
            displayed[hdf5.Hdf5TreeModel.TYPE_COLUMN, qt.Qt.DisplayRole],
            value.dtype.name)
        self.assertEquals(
            displayed[hdf5.Hdf5TreeModel.SHAPE_COLUMN, qt.Qt.DisplayRole], "3")
        self.assertEquals(
            displayed[hdf5.Hdf5TreeModel.VALUE_COLUMN, qt.Qt.DisplayRole],
            "[1 2 3]")
        self.assertEquals(
            displayed[hdf5.Hdf5TreeModel.DESCRIPTION_COLUMN,
                      qt.Qt.DisplayRole], "")
        self.assertEquals(
            displayed[hdf5.Hdf5TreeModel.NODE_COLUMN, qt.Qt.DisplayRole],
            "Dataset")
Example #4
0
    def testGroupData(self):
        h5 = commonh5.File("/foo/bar/1.mock", "w")
        d = h5.create_group("foo")
        d.attrs["desc"] = "fooo"

        model = hdf5.Hdf5TreeModel()
        model.insertH5pyObject(d)
        displayed = self.getRowDataAsDict(model, row=0)
        self.assertEquals(
            displayed[hdf5.Hdf5TreeModel.NAME_COLUMN, qt.Qt.DisplayRole],
            "1.mock::foo")
        self.assertIsInstance(
            displayed[hdf5.Hdf5TreeModel.NAME_COLUMN, qt.Qt.DecorationRole],
            qt.QIcon)
        self.assertEquals(
            displayed[hdf5.Hdf5TreeModel.TYPE_COLUMN, qt.Qt.DisplayRole], "")
        self.assertEquals(
            displayed[hdf5.Hdf5TreeModel.SHAPE_COLUMN, qt.Qt.DisplayRole], "")
        self.assertEquals(
            displayed[hdf5.Hdf5TreeModel.VALUE_COLUMN, qt.Qt.DisplayRole], "")
        self.assertEquals(
            displayed[hdf5.Hdf5TreeModel.DESCRIPTION_COLUMN,
                      qt.Qt.DisplayRole], "fooo")
        self.assertEquals(
            displayed[hdf5.Hdf5TreeModel.NODE_COLUMN, qt.Qt.DisplayRole],
            "Group")
Example #5
0
 def testRootParent(self):
     model = hdf5.Hdf5TreeModel()
     h5_1 = commonh5.File("/foo/bar/1.mock", "w")
     model.insertH5pyObject(h5_1)
     index = model.index(0, 0, qt.QModelIndex())
     index = model.parent(index)
     self.assertEquals(index, qt.QModelIndex())
Example #6
0
 def testRemoveObject(self):
     h5 = commonh5.File("/foo/bar/1.mock", "w")
     model = hdf5.Hdf5TreeModel()
     self.assertEquals(model.rowCount(qt.QModelIndex()), 0)
     model.insertH5pyObject(h5)
     self.assertEquals(model.rowCount(qt.QModelIndex()), 1)
     model.removeH5pyObject(h5)
     self.assertEquals(model.rowCount(qt.QModelIndex()), 0)
Example #7
0
    def testSelection_Tree(self):
        tree1 = commonh5.File("/foo/bar/1.mock", "w")
        tree2 = commonh5.File("/foo/bar/2.mock", "w")
        tree3 = commonh5.File("/foo/bar/3.mock", "w")
        tree1.create_group("a/b/c")
        tree2.create_group("a/b/c")
        tree3.create_group("a/b/c")
        item = tree2

        model = hdf5.Hdf5TreeModel()
        model.insertH5pyObject(tree1)
        model.insertH5pyObject(tree2)
        model.insertH5pyObject(tree3)
        view = hdf5.Hdf5TreeView()
        view.setModel(model)
        view.setSelectedH5Node(item)

        selected = list(view.selectedH5Nodes())[0]
        self.assertIs(item, selected.h5py_object)
Example #8
0
    def testSelection_OriginalModel(self):
        tree = commonh5.File("/foo/bar/1.mock", "w")
        item = tree.create_group("a/b/c/d")
        item.create_group("e").create_group("f")

        view = hdf5.Hdf5TreeView()
        view.findHdf5TreeModel().insertH5pyObject(tree)
        view.setSelectedH5Node(item)

        selected = list(view.selectedH5Nodes())[0]
        self.assertIs(item, selected.h5py_object)
Example #9
0
 def testFileData(self):
     h5 = commonh5.File("/foo/bar/1.mock", "w")
     model = hdf5.Hdf5TreeModel()
     model.insertH5pyObject(h5)
     displayed = self.getRowDataAsDict(model, row=0)
     self.assertEqual(displayed[hdf5.Hdf5TreeModel.NAME_COLUMN, qt.Qt.DisplayRole], "1.mock")
     self.assertIsInstance(displayed[hdf5.Hdf5TreeModel.NAME_COLUMN, qt.Qt.DecorationRole], qt.QIcon)
     self.assertEqual(displayed[hdf5.Hdf5TreeModel.TYPE_COLUMN, qt.Qt.DisplayRole], "")
     self.assertEqual(displayed[hdf5.Hdf5TreeModel.SHAPE_COLUMN, qt.Qt.DisplayRole], "")
     self.assertEqual(displayed[hdf5.Hdf5TreeModel.VALUE_COLUMN, qt.Qt.DisplayRole], "")
     self.assertEqual(displayed[hdf5.Hdf5TreeModel.DESCRIPTION_COLUMN, qt.Qt.DisplayRole], "")
     self.assertEqual(displayed[hdf5.Hdf5TreeModel.NODE_COLUMN, qt.Qt.DisplayRole], "File")
Example #10
0
    def testSelection_SelectNone(self):
        tree = commonh5.File("/foo/bar/1.mock", "w")

        model = hdf5.Hdf5TreeModel()
        model.insertH5pyObject(tree)
        view = hdf5.Hdf5TreeView()
        view.setModel(model)
        view.setSelectedH5Node(tree)
        view.setSelectedH5Node(None)

        selection = list(view.selectedH5Nodes())
        self.assertEqual(len(selection), 0)
Example #11
0
    def testUnconsistantTypes(self):
        model = hdf5.Hdf5TreeModel()
        h5 = commonh5.File("/foo/bar/1.mock", "w")
        h5.create_group("aaa100")
        h5.create_group("100aaa")
        model.insertH5pyObject(h5)

        proxy = hdf5.NexusSortFilterProxyModel()
        proxy.setSourceModel(model)
        proxy.sort(0, qt.Qt.AscendingOrder)
        names = self.getChildNames(proxy, proxy.index(0, 0, qt.QModelIndex()))
        self.assertListEqual(names, ["100aaa", "aaa100"])
Example #12
0
    def testSelection_FileFromSubTree(self):
        tree = commonh5.File("/foo/bar/1.mock", "w")
        group = tree.create_group("a1")
        group.create_group("b").create_group("b").create_group("d")

        model = hdf5.Hdf5TreeModel()
        model.insertH5pyObject(group)
        view = hdf5.Hdf5TreeView()
        view.setModel(model)
        view.setSelectedH5Node(tree)

        selection = list(view.selectedH5Nodes())
        self.assertEquals(len(selection), 0)
Example #13
0
    def testSelection_RootFromSubTree(self):
        tree = commonh5.File("/foo/bar/1.mock", "w")
        group = tree.create_group("a1")
        group.create_group("b/c/d")

        model = hdf5.Hdf5TreeModel()
        model.insertH5pyObject(group)
        view = hdf5.Hdf5TreeView()
        view.setModel(model)
        view.setSelectedH5Node(group)

        selected = list(view.selectedH5Nodes())[0]
        self.assertIs(group, selected.h5py_object)
Example #14
0
    def testNXentryName(self):
        """Test NXentry without start_time  or end_time"""
        model = hdf5.Hdf5TreeModel()
        h5 = commonh5.File("/foo/bar/1.mock", "w")
        create_NXentry(h5, "a")
        create_NXentry(h5, "c")
        create_NXentry(h5, "b")
        model.insertH5pyObject(h5)

        proxy = hdf5.NexusSortFilterProxyModel()
        proxy.setSourceModel(model)
        proxy.sort(0, qt.Qt.AscendingOrder)
        names = self.getChildNames(proxy, proxy.index(0, 0, qt.QModelIndex()))
        self.assertListEqual(names, ["a", "b", "c"])
Example #15
0
    def testNXentryEndTimeInArray(self):
        """Test NXentry with end_time"""
        model = hdf5.Hdf5TreeModel()
        h5 = commonh5.File("/foo/bar/1.mock", "w")
        create_NXentry(h5, "a").create_dataset("end_time", data=numpy.array([numpy.string_("2015")]))
        create_NXentry(h5, "b").create_dataset("end_time", data=numpy.array([numpy.string_("2013")]))
        create_NXentry(h5, "c").create_dataset("end_time", data=numpy.array([numpy.string_("2014")]))
        model.insertH5pyObject(h5)

        proxy = hdf5.NexusSortFilterProxyModel()
        proxy.setSourceModel(model)
        proxy.sort(0, qt.Qt.DescendingOrder)
        names = self.getChildNames(proxy, proxy.index(0, 0, qt.QModelIndex()))
        self.assertListEqual(names, ["a", "c", "b"])
Example #16
0
    def testStartTime(self):
        """If it is not NXentry, start_time is not used"""
        model = hdf5.Hdf5TreeModel()
        h5 = commonh5.File("/foo/bar/1.mock", "w")
        h5.create_group("a").create_dataset("start_time", data=numpy.string_("2015"))
        h5.create_group("b").create_dataset("start_time", data=numpy.string_("2013"))
        h5.create_group("c").create_dataset("start_time", data=numpy.string_("2014"))
        model.insertH5pyObject(h5)

        proxy = hdf5.NexusSortFilterProxyModel()
        proxy.setSourceModel(model)
        proxy.sort(0, qt.Qt.AscendingOrder)
        names = self.getChildNames(proxy, proxy.index(0, 0, qt.QModelIndex()))
        self.assertListEqual(names, ["a", "b", "c"])
Example #17
0
    def testMultiNumber(self):
        model = hdf5.Hdf5TreeModel()
        h5 = commonh5.File("/foo/bar/1.mock", "w")
        h5.create_group("a1-1")
        h5.create_group("a20-1")
        h5.create_group("a3-1")
        h5.create_group("a3-20")
        h5.create_group("a3-3")
        model.insertH5pyObject(h5)

        proxy = hdf5.NexusSortFilterProxyModel()
        proxy.setSourceModel(model)
        proxy.sort(0, qt.Qt.AscendingOrder)
        names = self.getChildNames(proxy, proxy.index(0, 0, qt.QModelIndex()))
        self.assertListEqual(names, ["a1-1", "a3-1", "a3-3", "a3-20", "a20-1"])
Example #18
0
    def testSelection_ManyGroupFromSameFile(self):
        tree = commonh5.File("/foo/bar/1.mock", "w")
        group1 = tree.create_group("a1")
        group2 = tree.create_group("a2")
        group3 = tree.create_group("a3")
        group1.create_group("b/c/d")
        item = group2.create_group("b/c/d")
        group3.create_group("b/c/d")

        model = hdf5.Hdf5TreeModel()
        model.insertH5pyObject(group1)
        model.insertH5pyObject(group2)
        model.insertH5pyObject(group3)
        view = hdf5.Hdf5TreeView()
        view.setModel(model)
        view.setSelectedH5Node(item)

        selected = list(view.selectedH5Nodes())[0]
        self.assertIs(item, selected.h5py_object)
Example #19
0
def test_with_commonh5(tmp_path):
    """Test write_to_h5 with commonh5 input"""
    fobj = commonh5.File("filename.txt", mode="w")
    group = fobj.create_group("group")
    dataset = group.create_dataset("dataset", data=numpy.array(50))
    group["soft_link"] = dataset  # Create softlink

    output_filepath = tmp_path / "output.h5"
    write_to_h5(fobj, str(output_filepath))

    assert h5todict(str(output_filepath)) == {
        'group': {
            'dataset': numpy.array(50),
            'soft_link': numpy.array(50)
        },
    }
    with h5py.File(output_filepath, mode="r") as h5file:
        soft_link = h5file.get("/group/soft_link", getlink=True)
        assert isinstance(soft_link, h5py.SoftLink)
        assert soft_link.path == "/group/dataset"
Example #20
0
    def testSelection_RecurssiveLink(self):
        """
        Recurssive link selection

        This example is not really working as expected cause commonh5 do not
        support recurssive links.
        But item.name == "/a/b" and the result is found.
        """
        tree = commonh5.File("/foo/bar/1.mock", "w")
        group = tree.create_group("a")
        group.add_node(commonh5.SoftLink("b", "/"))

        item = tree["/a/b/a/b/a/b/a/b/a/b/a/b/a/b/a/b"]

        model = hdf5.Hdf5TreeModel()
        model.insertH5pyObject(tree)
        view = hdf5.Hdf5TreeView()
        view.setModel(model)
        view.setSelectedH5Node(item)

        selected = list(view.selectedH5Nodes())[0]
        self.assertEqual(item.name, selected.h5py_object.name)