also show datasets without unit

currently, this is only the orientation dataset
Also enable renames. Since this alters the history, the user need to
enable this
This commit is contained in:
Martin Diehl 2020-05-30 12:47:36 +02:00
parent 421b8f4268
commit 7a193639fb
1 changed files with 30 additions and 10 deletions

View File

@ -90,7 +90,7 @@ class Result:
self.fname = os.path.abspath(fname) self.fname = os.path.abspath(fname)
self._allow_overwrite = False self._allow_modification = False
def __repr__(self): def __repr__(self):
@ -167,14 +167,14 @@ class Result:
self.selection[what] = diff_sorted self.selection[what] = diff_sorted
def enable_overwrite(self): def allow_modification(self):
print(util.bcolors().WARNING,util.bcolors().BOLD, print(util.bcolors().WARNING+util.bcolors().BOLD+
'Warning: Enabled overwrite of existing datasets!', 'Warning: Modification of existing datasets allowed!'+
util.bcolors().ENDC) util.bcolors().ENDC)
self._allow_overwrite = True self._allow_modification = True
def disable_overwrite(self): def forbid_modification(self):
self._allow_overwrite = False self._allow_modification = False
def incs_in_range(self,start,end): def incs_in_range(self,start,end):
@ -263,6 +263,23 @@ class Result:
""" """
self._manage_selection('del',what,datasets) self._manage_selection('del',what,datasets)
def rename(self,name_old,name_new):
"""
Rename datasets.
"""
if self._allow_modification:
with h5py.File(self.fname,'a') as f:
for path_old in self.get_dataset_location(name_old):
path_new = os.path.join(os.path.dirname(path_old),name_new)
f[path_new] = f[path_old]
f[path_new].attrs['Renamed'] = 'Original name: {}'.encode()
del f[path_old]
else:
print('Rename operation not permitted')
# def datamerger(regular expression to filter groups into one copy) # def datamerger(regular expression to filter groups into one copy)
@ -397,8 +414,11 @@ class Result:
for d in f[group].keys(): for d in f[group].keys():
try: try:
dataset = f['/'.join([group,d])] dataset = f['/'.join([group,d])]
message += ' {} / ({}): {}\n'.\ description = dataset.attrs['Description'].decode()
format(d,dataset.attrs['Unit'].decode(),dataset.attrs['Description'].decode()) if 'Unit' in dataset.attrs:
message += ' {} / ({}): {}\n'.format(d,dataset.attrs['Unit'].decode(),description)
else:
message += ' {}: {}\n'.format(d,description)
except KeyError: except KeyError:
pass pass
return message return message
@ -1048,7 +1068,7 @@ class Result:
lock.acquire() lock.acquire()
with h5py.File(self.fname, 'a') as f: with h5py.File(self.fname, 'a') as f:
try: try:
if self._allow_overwrite and result[0]+'/'+result[1]['label'] in f: if self._allow_modification and result[0]+'/'+result[1]['label'] in f:
dataset = f[result[0]+'/'+result[1]['label']] dataset = f[result[0]+'/'+result[1]['label']]
dataset[...] = result[1]['data'] dataset[...] = result[1]['data']
dataset.attrs['Overwritten'] = 'Yes'.encode() dataset.attrs['Overwritten'] = 'Yes'.encode()