Ignore:
Timestamp:
Sep 12, 2018 1:13:34 PM (6 years ago)
Author:
krzywon
Branches:
master, magnetic_scatt, release-4.2.2, ticket-1009, ticket-1094-headless, ticket-1242-2d-resolution, ticket-1243, ticket-1249, unittest-saveload
Children:
2ca5d57b
Parents:
8d5e11c
Message:

File loader fixes and code cleanup.

File:
1 edited

Legend:

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

    r9dc1500 r4fdcc65  
    1212    Data1D, Data2D, DataInfo, Process, Aperture, Collimation, \ 
    1313    TransmissionSpectrum, Detector 
    14 from ..data_info import combine_data_info_with_plottable 
    1514from ..loader_exceptions import FileContentsException, DefaultReaderException 
    1615from ..file_reader_base_class import FileReader, decode 
    1716 
     17 
    1818def h5attr(node, key, default=None): 
    1919    return decode(node.attrs.get(key, default)) 
     20 
    2021 
    2122class Reader(FileReader): 
     
    7172                except Exception as e: 
    7273                    if extension not in self.ext: 
    73                         msg = "NXcanSAS HDF5 Reader could not load file {}".format(basename + extension) 
     74                        msg = "NXcanSAS Reader could not load file {}".format( 
     75                            basename + extension) 
    7476                        raise DefaultReaderException(msg) 
    7577                    raise FileContentsException(e.message) 
     
    8587                    self.raw_data.close() 
    8688 
    87                 for dataset in self.output: 
    88                     if isinstance(dataset, Data1D): 
    89                         if dataset.x.size < 5: 
    90                             self.output = [] 
    91                             raise FileContentsException("Fewer than 5 data points found.") 
     89                for data_set in self.output: 
     90                    if isinstance(data_set, Data1D): 
     91                        if data_set.x.size < 5: 
     92                            exception = FileContentsException( 
     93                                "Fewer than 5 data points found.") 
     94                            data_set.errors.append(exception) 
    9295 
    9396    def reset_state(self): 
     
    105108        self.i_name = u'' 
    106109        self.i_node = u'' 
    107         self.q_uncertainties = [] 
    108         self.q_resolutions = [] 
     110        self.q_uncertainties = None 
     111        self.q_resolutions = None 
    109112        self.i_uncertainties = u'' 
    110113        self.parent_class = u'' 
     
    257260    def process_2d_data_object(self, data_set, key, unit): 
    258261        if key == self.i_name: 
    259             self.current_dataset.x_bins, self.current_dataset.y_bins = \ 
    260                 data_set.shape 
    261             self.current_dataset.data = data_set.flatten() 
     262            self.current_dataset.data = data_set 
    262263            self.current_dataset.zaxis("Intensity", unit) 
    263264        elif key == self.i_uncertainties: 
     
    268269            if self.q_name[0] == self.q_name[1]: 
    269270                # All q data in a single array 
    270                 self.current_dataset.qx_data = data_set[0].flatten() 
    271                 self.current_dataset.qy_data = data_set[1].flatten() 
     271                self.current_dataset.qx_data = data_set[0] 
     272                self.current_dataset.qy_data = data_set[1] 
    272273            elif self.q_name.index(key) == 0: 
    273                 self.current_dataset.qx_data = data_set.flatten() 
     274                self.current_dataset.qx_data = data_set 
    274275            elif self.q_name.index(key) == 1: 
    275                 self.current_dataset.qy_data = data_set.flatten() 
     276                self.current_dataset.qy_data = data_set 
    276277        elif key in self.q_uncertainties or key in self.q_resolutions: 
    277278            if ((self.q_uncertainties[0] == self.q_uncertainties[1]) or 
     
    537538            if dataset.data.ndim == 2: 
    538539                (n_rows, n_cols) = dataset.data.shape 
    539                 dataset.y_bins = dataset.qy_data[0::n_cols] 
    540                 dataset.x_bins = dataset.qx_data[0::n_rows] 
     540                print(n_rows) 
     541                print(n_cols) 
     542                flat_qy = dataset.qy_data[0::n_cols].flatten() 
     543                if flat_qy[0] == flat_qy[1]: 
     544                    flat_qy = np.transpose(dataset.qy_data)[0::n_cols].flatten() 
     545                dataset.y_bins = np.unique(flat_qy) 
     546                flat_qx = dataset.qx_data[0::n_rows].flatten() 
     547                if flat_qx[0] == flat_qx[1]: 
     548                    flat_qx = np.transpose(dataset.qx_data)[0::n_rows].flatten() 
     549                dataset.x_bins = np.unique(flat_qx) 
     550                print(dataset.x_bins) 
     551                print(len(dataset.x_bins)) 
     552                print(dataset.y_bins) 
     553                print(len(dataset.y_bins)) 
    541554                dataset.data = dataset.data.flatten() 
     555                dataset.qx_data = dataset.qx_data.flatten() 
     556                dataset.qy_data = dataset.qy_data.flatten() 
    542557            self.current_dataset = dataset 
    543558            self.send_to_output() 
     
    589604        try: 
    590605            iter(iterable) 
    591             if (not isinstance(iterable, np.ndarray)) or (isinstance(iterable, str) 
    592                     or isinstance(iterable, unicode)): 
     606            if (not isinstance(iterable, np.ndarray) and not isinstance( 
     607                    iterable, list)) or (isinstance(iterable, str) or 
     608                                         isinstance(iterable, unicode)): 
    593609                raise TypeError 
    594610        except TypeError: 
Note: See TracChangeset for help on using the changeset viewer.