Changeset 7bd6860a in sasview


Ignore:
Timestamp:
Aug 18, 2016 10:19:47 AM (8 years ago)
Author:
lewis
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:
e9e777c
Parents:
afbd172
Message:

Improve efficiency of CanSAS 2.0 reader

When it came to reading the Q and I data values, the reader was looping
through every single data point in the hdf5 file and appending it to an
array. This caused problems when loading very large files, rendering
SasView? unresponsive. Now, the reader saves the entire array from the
file, instead of looping through each point.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/sas/sascalc/dataloader/readers/cansas_reader_HDF5.py

    reb98f24 r7bd6860a  
    6262        :return: List of Data1D/2D objects and/or a list of errors. 
    6363        """ 
    64  
    6564        ## Reinitialize the class when loading a new data file to reset all class variables 
    6665        self.reset_class_variables() 
     
    136135                ## If this is a dataset, store the data appropriately 
    137136                data_set = data[key][:] 
     137                unit = self._get_unit(value) 
     138 
     139                ## I and Q Data 
     140                if key == u'I': 
     141                    if type(self.current_dataset) is plottable_2D: 
     142                        self.current_dataset.data = data_set.flatten() 
     143                        self.current_dataset.zaxis("Intensity", unit) 
     144                    else: 
     145                        self.current_dataset.y = data_set.flatten() 
     146                        self.current_dataset.yaxis("Intensity", unit) 
     147                    continue 
     148                elif key == u'Idev': 
     149                    if type(self.current_dataset) is plottable_2D: 
     150                        self.current_dataset.err_data = data_set.flatten() 
     151                    else: 
     152                        self.current_dataset.dy = data_set.flatten() 
     153                    continue 
     154                elif key == u'Q': 
     155                    self.current_dataset.xaxis("Q", unit) 
     156                    if type(self.current_dataset) is plottable_2D: 
     157                        self.current_dataset.q = data_set.flatten() 
     158                    else: 
     159                        self.current_dataset.x = data_set.flatten() 
     160                    continue 
     161                elif key == u'Qy': 
     162                    self.current_dataset.yaxis("Q_y", unit) 
     163                    self.current_dataset.qy_data = data_set.flatten() 
     164                    continue 
     165                elif key == u'Qydev': 
     166                    self.current_dataset.dqy_data = data_set.flatten() 
     167                    continue 
     168                elif key == u'Qx': 
     169                    self.current_dataset.xaxis("Q_x", unit) 
     170                    self.current_dataset.qx_data = data_set.flatten() 
     171                    continue 
     172                elif key == u'Qxdev': 
     173                    self.current_dataset.dqx_data = data_set.flatten() 
     174                    continue 
     175                elif key == u'Mask': 
     176                    self.current_dataset.mask = data_set.flatten() 
     177                    continue 
    138178 
    139179                for data_point in data_set: 
    140180                    ## Top Level Meta Data 
    141                     unit = self._get_unit(value) 
    142181                    if key == u'definition': 
    143182                        self.current_datainfo.meta_data['reader'] = data_point 
     
    148187                    elif key == u'SASnote': 
    149188                        self.current_datainfo.notes.append(data_point) 
    150  
    151                     ## I and Q Data 
    152                     elif key == u'I': 
    153                         if type(self.current_dataset) is plottable_2D: 
    154                             self.current_dataset.data = np.append(self.current_dataset.data, data_point) 
    155                             self.current_dataset.zaxis("Intensity", unit) 
    156                         else: 
    157                             self.current_dataset.y = np.append(self.current_dataset.y, data_point) 
    158                             self.current_dataset.yaxis("Intensity", unit) 
    159                     elif key == u'Idev': 
    160                         if type(self.current_dataset) is plottable_2D: 
    161                             self.current_dataset.err_data = np.append(self.current_dataset.err_data, data_point) 
    162                         else: 
    163                             self.current_dataset.dy = np.append(self.current_dataset.dy, data_point) 
    164                     elif key == u'Q': 
    165                         self.current_dataset.xaxis("Q", unit) 
    166                         if type(self.current_dataset) is plottable_2D: 
    167                             self.current_dataset.q = np.append(self.current_dataset.q, data_point) 
    168                         else: 
    169                             self.current_dataset.x = np.append(self.current_dataset.x, data_point) 
    170                     elif key == u'Qy': 
    171                         self.current_dataset.yaxis("Q_y", unit) 
    172                         self.current_dataset.qy_data = np.append(self.current_dataset.qy_data, data_point) 
    173                     elif key == u'Qydev': 
    174                         self.current_dataset.dqy_data = np.append(self.current_dataset.dqy_data, data_point) 
    175                     elif key == u'Qx': 
    176                         self.current_dataset.xaxis("Q_x", unit) 
    177                         self.current_dataset.qx_data = np.append(self.current_dataset.qx_data, data_point) 
    178                     elif key == u'Qxdev': 
    179                         self.current_dataset.dqx_data = np.append(self.current_dataset.dqx_data, data_point) 
    180                     elif key == u'Mask': 
    181                         self.current_dataset.mask = np.append(self.current_dataset.mask, data_point) 
    182189 
    183190                    ## Sample Information 
Note: See TracChangeset for help on using the changeset viewer.