def test_partially_delete_stuff(self): traj = Trajectory(name='TestDelete', filename=make_temp_dir('testpartiallydel.hdf5')) res = traj.f_add_result('mytest.test', a='b', c='d') traj.f_store() self.assertTrue('a' in res) traj.f_delete_item(res, delete_only=['a'], remove_from_item=True) self.assertTrue('c' in res) self.assertTrue('a' not in res) res['a'] = 'offf' self.assertTrue('a' in res) traj.f_load(load_results=3) self.assertTrue('a' not in res) self.assertTrue('c' in res) traj.f_delete_item(res, remove_from_trajectory=True) self.assertTrue('results' in traj) self.assertTrue(res not in traj)
def test_partially_delete_stuff(self): traj = Trajectory(name='TestDelete', filename=make_temp_dir('testpartiallydel.hdf5'), add_time=True) res = traj.f_add_result('mytest.test', a='b', c='d') traj.f_store() self.assertTrue('a' in res) traj.f_delete_item(res, delete_only=['a'], remove_from_item=True) self.assertTrue('c' in res) self.assertTrue('a' not in res) res['a'] = 'offf' self.assertTrue('a' in res) traj.f_load(load_results=3) self.assertTrue('a' not in res) self.assertTrue('c' in res) traj.f_delete_item(res, remove_from_trajectory=True) self.assertTrue('results' in traj) self.assertTrue(res not in traj)
def test_compacting(self): filename = make_temp_dir('hdf5compacting.hdf5') traj = Trajectory(name=make_trajectory_name(self), filename=filename) trajname = traj.v_name traj.v_storage_service.complevel = 7 first_row = {'ha': compat.tobytes('hi'), 'haha': np.zeros((3, 3))} traj.f_store(only_init=True) traj.f_add_result('My.Tree.Will.Be.Deleted', 42) traj.f_add_result('Mine.Too.HomeBoy', 42, comment='Don`t cry for me!') res = traj.f_add_result(SharedResult, 'myres') res['myres'] = SharedTable() res['myres'].create_shared_data(first_row=first_row) with StorageContextManager(traj): traj.myres for irun in range(10000): row = traj.myres.row for key in first_row: row[key] = first_row[key] row.append() traj.f_store() del traj traj = load_trajectory(name=trajname, filename=filename, load_all=2) with StorageContextManager(traj) as cm: tb = traj.myres.get_data_node() ptcompat.remove_rows(tb, 1000, 10000) cm.flush_store() self.assertTrue(traj.myres.nrows == 1001) traj.f_delete_item(traj.My, recursive=True) traj.f_delete_item(traj.Mine, recursive=True) size = os.path.getsize(filename) get_root_logger().info('Filesize is %s' % str(size)) name_wo_ext, ext = os.path.splitext(filename) backup_file_name = name_wo_ext + '_backup' + ext code = compact_hdf5_file(filename, keep_backup=True) if code != 0: raise RuntimeError('ptrepack fail') backup_size = os.path.getsize(backup_file_name) self.assertTrue(backup_size == size) new_size = os.path.getsize(filename) get_root_logger().info('New filesize is %s' % str(new_size)) self.assertTrue(new_size < size, "%s > %s" % (str(new_size), str(size)))
def test_compacting(self): filename = make_temp_dir("hdf5compacting.hdf5") traj = Trajectory(name=make_trajectory_name(self), filename=filename) trajname = traj.v_name traj.v_storage_service.complevel = 7 first_row = {"ha": compat.tobytes("hi"), "haha": np.zeros((3, 3))} traj.f_store(only_init=True) res1 = traj.f_add_result("My.Tree.Will.Be.Deleted", 42) res2 = traj.f_add_result("Mine.Too.HomeBoy", 42, comment="Don`t cry for me!") res = traj.f_add_result(SharedResult, "myres") res["myres"] = SharedTable() res["myres"].create_shared_data(first_row=first_row) with StorageContextManager(traj): tab = traj.myres for irun in range(10000): row = traj.myres.row for key in first_row: row[key] = first_row[key] row.append() traj.f_store() del traj traj = load_trajectory(name=trajname, filename=filename, load_all=2) with StorageContextManager(traj) as cm: tb = traj.myres.get_data_node() ptcompat.remove_rows(tb, 1000, 10000) cm.f_flush_store() self.assertTrue(traj.myres.nrows == 1001) traj.f_delete_item(traj.My, recursive=True) traj.f_delete_item(traj.Mine, recursive=True) size = os.path.getsize(filename) get_root_logger().info("Filesize is %s" % str(size)) name_wo_ext, ext = os.path.splitext(filename) backup_file_name = name_wo_ext + "_backup" + ext code = compact_hdf5_file(filename, keep_backup=True) if code != 0: raise RuntimeError("ptrepack fail") backup_size = os.path.getsize(backup_file_name) self.assertTrue(backup_size == size) new_size = os.path.getsize(filename) get_root_logger().info("New filesize is %s" % str(new_size)) self.assertTrue(new_size < size, "%s > %s" % (str(new_size), str(size)))
def test_delete_whole_subtrees(self): filename = make_temp_dir('testdeltree.hdf5') traj = Trajectory(name='TestDelete', filename=filename, large_overview_tables=True) res = traj.f_add_result('mytest.yourtest.test', a='b', c='d') dpar = traj.f_add_derived_parameter('mmm.gr.dpdp', 666) res = traj.f_add_result('hhh.ll', a='b', c='d') res = traj.f_add_derived_parameter('hhh.gg', 555) traj.f_store() with ptcompat.open_file(filename) as fh: daroot = ptcompat.get_child(fh.root, traj.v_name) dpar_table = daroot.overview.derived_parameters_overview self.assertTrue(len(dpar_table) == 2) res_table = daroot.overview.results_overview self.assertTrue((len(res_table)) == 2) with self.assertRaises(TypeError): traj.f_remove_item(traj.yourtest) with self.assertRaises(TypeError): traj.f_delete_item(traj.yourtest) traj.f_remove_item(traj.yourtest, recursive=True) self.assertTrue('mytest' in traj) self.assertTrue('yourtest' not in traj) traj.f_load(load_data=2) self.assertTrue('yourtest.test' in traj) traj.f_delete_item(traj.yourtest, recursive=True, remove_from_trajectory=True) traj.f_delete_item(traj.mmm, recursive=True, remove_from_trajectory=True) traj.f_load(load_data=2) self.assertTrue('yourtest.test' not in traj) self.assertTrue('yourtest' not in traj) with ptcompat.open_file(filename) as fh: daroot = ptcompat.get_child(fh.root, traj.v_name) dpar_table = daroot.overview.derived_parameters_overview self.assertTrue(len(dpar_table) == 2) res_table = daroot.overview.results_overview self.assertTrue((len(res_table)) == 2) traj.f_add_parameter('ggg', 43) traj.f_add_parameter('hhh.mmm', 45) traj.f_add_parameter('jjj', 55) traj.f_add_parameter('hhh.nnn', 55555) traj.f_explore({'ggg':[1,2,3]}) traj.f_store() with ptcompat.open_file(filename) as fh: daroot = ptcompat.get_child(fh.root, traj.v_name) par_table = daroot.overview.parameters_overview self.assertTrue(len(par_table) == 4) traj.f_delete_item('par.hhh', recursive=True, remove_from_trajectory=True) traj.f_add_parameter('saddsdfdsfd', 111) traj.f_store() with ptcompat.open_file(filename) as fh: daroot = ptcompat.get_child(fh.root, traj.v_name) par_table = daroot.overview.parameters_overview self.assertTrue(len(par_table) == 5) # with self.assertRaises(TypeError): # # We cannot delete something containing an explored parameter # traj.f_delete_item('par', recursive=True) with self.assertRaises(TypeError): traj.f_delete_item('ggg')
def test_delete_whole_subtrees(self): filename = make_temp_dir('testdeltree.hdf5') traj = Trajectory(name='TestDelete', filename=filename, large_overview_tables=True, add_time=True) res = traj.f_add_result('mytest.yourtest.test', a='b', c='d') dpar = traj.f_add_derived_parameter('mmm.gr.dpdp', 666) res = traj.f_add_result('hhh.ll', a='b', c='d') res = traj.f_add_derived_parameter('hhh.gg', 555) traj.f_store() with pt.open_file(filename) as fh: daroot = fh.root._f_get_child(traj.v_name) dpar_table = daroot.overview.derived_parameters_overview self.assertTrue(len(dpar_table) == 2) res_table = daroot.overview.results_overview self.assertTrue((len(res_table)) == 2) with self.assertRaises(TypeError): traj.f_remove_item(traj.yourtest) with self.assertRaises(TypeError): traj.f_delete_item(traj.yourtest) traj.f_remove_item(traj.yourtest, recursive=True) self.assertTrue('mytest' in traj) self.assertTrue('yourtest' not in traj) traj.f_load(load_data=2) self.assertTrue('yourtest.test' in traj) traj.f_delete_item(traj.yourtest, recursive=True, remove_from_trajectory=True) traj.f_delete_item(traj.mmm, recursive=True, remove_from_trajectory=True) traj.f_load(load_data=2) self.assertTrue('yourtest.test' not in traj) self.assertTrue('yourtest' not in traj) with pt.open_file(filename) as fh: daroot = fh.root._f_get_child(traj.v_name) dpar_table = daroot.overview.derived_parameters_overview self.assertTrue(len(dpar_table) == 2) res_table = daroot.overview.results_overview self.assertTrue((len(res_table)) == 2) traj.f_add_parameter('ggg', 43) traj.f_add_parameter('hhh.mmm', 45) traj.f_add_parameter('jjj', 55) traj.f_add_parameter('hhh.nnn', 55555) traj.f_explore({'ggg':[1,2,3]}) traj.f_store() with pt.open_file(filename) as fh: daroot = fh.root._f_get_child(traj.v_name) par_table = daroot.overview.parameters_overview self.assertTrue(len(par_table) == 4) traj.f_delete_item('par.hhh', recursive=True, remove_from_trajectory=True) traj.f_add_parameter('saddsdfdsfd', 111) traj.f_store() with pt.open_file(filename) as fh: daroot = fh.root._f_get_child(traj.v_name) par_table = daroot.overview.parameters_overview self.assertTrue(len(par_table) == 5)