diff --git a/DSSC.py b/DSSC.py index 5aebd93d58574d08da0eb57754bdd6caed525a36..8a95d3a001c70b7aa61ca4221cae7a2cf5376fa7 100644 --- a/DSSC.py +++ b/DSSC.py @@ -136,7 +136,7 @@ class DSSC: raise ValueError(f'To be implemented') self.scan_vname = vname - self.vds_scan = os.path.join(self.tempdir, 'scan_variable.h5') + self.vds_scan = os.path.join(self.tempdir, 'scan_variable.nc') if os.path.isfile(self.vds_scan): os.remove(self.vds_scan) @@ -144,6 +144,7 @@ class DSSC: self.scan['xgm_pumped'] = self.xgm[:, :self.nbunches:2].mean('dim_0') self.scan['xgm_unpumped'] = self.xgm[:, 1:self.nbunches:2].mean('dim_0') self.scan.to_netcdf(self.vds_scan, group='data') + self.scan.close() self.scan_counts = xr.DataArray(np.ones(len(self.scan['scan_variable'])), dims=['scan_variable'], @@ -298,12 +299,13 @@ class DSSC: """ if self.vds_scan is None: # probably a dark run with a dummy scan variable - self.vds_scan = os.path.join(self.tempdir, 'scan_variable.h5') + self.vds_scan = os.path.join(self.tempdir, 'scan_variable.nc') if os.path.isfile(self.vds_scan): os.remove(self.vds_scan) self.scan = self.scan.to_dataset(name='scan_variable') self.scan.to_netcdf(self.vds_scan, group='data') + self.scan.close() # get available memory in GB, we will try to use 80 % of it max_GB = psutil.virtual_memory().available/1024**3 @@ -366,9 +368,9 @@ class DSSC: save_folder = self.save_folder if self.isDark: - fname = f'run{self.run_nr}_dark.h5' # no scan + fname = f'run{self.run_nr}_dark.nc' # no scan else: - fname = f'run{self.run_nr}.h5' # run with delay scan (change for other scan types!) + fname = f'run{self.run_nr}.nc' # run with delay scan (change for other scan types!) save_path = os.path.join(save_folder, fname) @@ -379,6 +381,7 @@ class DSSC: warnings.warn(f'Overwriting file: {save_path}') os.remove(save_path) self.module_data.to_netcdf(save_path, group='data') + self.module_data.close() os.chmod(save_path, 0o664) print('saving: ', save_path) else: @@ -399,8 +402,10 @@ class DSSC: self.plot_title = f'{self.proposal} run: {runNB} dark: {dark_runNB}' - dark = xr.open_dataset(os.path.join(save_folder, f'run{dark_runNB}_dark.h5'), group='data') - binned = xr.open_dataset(os.path.join(save_folder, f'run{runNB}.h5'), group='data') + dark = xr.load_dataset(os.path.join(save_folder, f'run{dark_runNB}_dark.nc'), group='data', + engine='netcdf4') + binned = xr.load_dataset(os.path.join(save_folder, f'run{runNB}.nc'), group='data', + engine='netcdf4') binned['pumped'] = (binned['pumped'] - dark['pumped'].values) binned['unpumped'] = (binned['unpumped'] - dark['unpumped'].values)