- Timestamp:
- Aug 18, 2016 8:19:09 AM (8 years ago)
- Branches:
- master, ESS_GUI, ESS_GUI_Docs, ESS_GUI_batch_fitting, ESS_GUI_bumps_abstraction, ESS_GUI_iss1116, ESS_GUI_iss879, ESS_GUI_iss959, ESS_GUI_opencl, ESS_GUI_ordering, ESS_GUI_sync_sascalc, costrafo411, magnetic_scatt, release-4.1.1, release-4.1.2, release-4.2.2, ticket-1009, ticket-1094-headless, ticket-1242-2d-resolution, ticket-1243, ticket-1249, ticket885, unittest-saveload
- Children:
- 7bd6860a
- Parents:
- eb98f24
- git-author:
- Lewis O'Driscoll <lewis.o'driscoll@…> (08/18/16 08:18:22)
- git-committer:
- Lewis O'Driscoll <lewis.o'driscoll@…> (08/18/16 08:19:09)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
src/sas/sascalc/file_converter/nxcansas_writer.py
reb98f24 rafbd172 22 22 """ 23 23 24 def write(self, dataset, filename ):24 def write(self, dataset, filename, dimensions=[]): 25 25 """ 26 26 Write an array of Data1d or Data2D objects to an NXcanSAS file, as … … 79 79 self._write_1d_data(data_obj, data_entry) 80 80 elif isinstance(data_obj, Data2D): 81 self._write_2d_data(data_obj, data_entry )81 self._write_2d_data(data_obj, data_entry, dimensions) 82 82 i += 1 83 83 … … 137 137 138 138 # TODO: implement writing SASnote 139 i = 0139 i = 1 140 140 note_entry = sasentry.create_group('sasnote{0:0=2d}'.format(i)) 141 141 note_entry.attrs['canSAS_class'] = 'SASnote' … … 158 158 data_entry.create_dataset('Idev', data=data_obj.dy) 159 159 160 def _write_2d_data(self, data, data_entry ):160 def _write_2d_data(self, data, data_entry, dimensions): 161 161 """ 162 162 Writes the contents of a Data2D object to a SASdata h5py Group … … 170 170 data_entry.attrs['Q_indicies'] = [0,1] 171 171 172 # Calculate rows and columns, assuming detector is square 173 # Same logic as used in PlotPanel.py _get_bins 174 n_cols = int(np.floor(np.sqrt(len(data.qy_data)))) 175 n_rows = int(np.floor(len(data.qy_data) / n_cols)) 172 (n_rows, n_cols) = (None, None) 173 try: 174 (n_rows, n_cols) = dimensions.pop(0) 175 except: 176 pass 176 177 177 if n_rows * n_cols != len(data.qy_data): 178 raise ValueError("Unable to calculate dimensions of data") 178 if n_rows == None and n_cols == None: 179 # Calculate rows and columns, assuming detector is square 180 # Same logic as used in PlotPanel.py _get_bins 181 n_cols = int(np.floor(np.sqrt(len(data.qy_data)))) 182 n_rows = int(np.floor(len(data.qy_data) / n_cols)) 183 184 if n_rows * n_cols != len(data.qy_data): 185 raise ValueError("Unable to calculate dimensions of 2D data") 179 186 180 187 I = np.reshape(data.data, (n_rows, n_cols)) 181 dI = np.reshape(data.err_data, (n_rows, n_cols)) 188 dI = np.zeros((n_rows, n_cols)) 189 if not all(data.err_data == [None]): 190 dI = np.reshape(data.err_data, (n_rows, n_cols)) 182 191 qx = np.reshape(data.qx_data, (n_rows, n_cols)) 183 192 qy = np.reshape(data.qy_data, (n_rows, n_cols))
Note: See TracChangeset
for help on using the changeset viewer.