diff --git a/tracking/monitors/__init__.py b/tracking/monitors/__init__.py index 1bc0337a13289a0fd75ad425d437d363cbc65cb7..7f5ba519d883ab4516678a510da8a8848cedb89c 100644 --- a/tracking/monitors/__init__.py +++ b/tracking/monitors/__init__.py @@ -25,4 +25,4 @@ from mbtrack2.tracking.monitors.plotting import (plot_bunchdata, plot_beamspectrum, streak_beamspectrum) -from mbtrack2.tracking.monitors.tools import merge_files \ No newline at end of file +from mbtrack2.tracking.monitors.tools import (merge_files, copy_files) \ No newline at end of file diff --git a/tracking/monitors/tools.py b/tracking/monitors/tools.py index 9735a6e767e14fe22018747866eb2060ff59515c..d79a6ff70418b49ba51723dd2c1c2f81784fe5cd 100644 --- a/tracking/monitors/tools.py +++ b/tracking/monitors/tools.py @@ -71,5 +71,36 @@ def merge_files(files_prefix, files_number, file_name=None): f[group][dataset_name][tuple(slice_list)] = fi[group][dataset_name] fi.close() f.close() + +def copy_files(source, copy, version=None): + """ + Copy a source hdf5 file into another hdf5 file using a different HDF5 + version. + + The function assumes that the source file has only a single group layer. + + Parameters + ---------- + source : str + Name of the source file. + copy : str + Name of the copy file. + version : str, optional + Version number of the copy file. + + """ + if version == None: + version = 'v108' + f = hp.File(source + ".hdf5", "r") + h = hp.File(copy + ".hdf5", "a", libver=('earliest', version)) + + ## Copy file + for group in list(f): + h.require_group(group) + for dataset_name in list(f[group]): + h[group][dataset_name] = f[group][dataset_name][()] + + f.close() + h.close() \ No newline at end of file