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")
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)
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")
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")
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())
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)
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)
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)
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")
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)
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"])
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)
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)
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"])
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"])
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"])
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"])
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)
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"
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)