Changeset 2651724 in sasview


Ignore:
Timestamp:
Aug 17, 2017 4:13:32 PM (3 months ago)
Author:
krzywon
Branches:
ticket-976
Parents:
9e0dd49
Message:

Get the names specified by the file when loading in NXcanSAS data.

File:
1 edited

Legend:

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

    r9e0dd49 r2651724  
    9797        self.logging = [] 
    9898        self.output = [] 
     99        self.q_name = [] 
     100        self.mask_name = u'' 
     101        self.i_name = u'' 
     102        self.i_node = u'' 
     103        self.q_uncertainties = u'' 
     104        self.q_resolutions = u'' 
     105        self.i_uncertainties = u'' 
    99106        self.parent_class = u'' 
    100107        self.detector = Detector() 
     
    135142                    self.add_data_set(key) 
    136143                elif class_prog.match(u'SASdata'): 
     144                    self._find_data_attributes(value) 
    137145                    self._initialize_new_data_set(parent_list) 
    138                     self._find_data_attributes(value) 
    139146                # Recursion step to access data within the group 
    140147                self.read_children(value, parent_list) 
     
    212219        """ 
    213220        # FIXME: check attributes of SASdata for Q, dQ, Mask, etc. 
    214         if key == u'I': 
     221        if key == self.i_name: 
    215222            if isinstance(self.current_dataset, plottable_2D): 
    216223                self.current_dataset.data = data_set 
     
    219226                self.current_dataset.y = data_set.flatten() 
    220227                self.current_dataset.yaxis("Intensity", unit) 
    221         elif key == u'Idev': 
     228        elif key == self.i_uncertainties: 
    222229            if isinstance(self.current_dataset, plottable_2D): 
    223230                self.current_dataset.err_data = data_set.flatten() 
    224231            else: 
    225232                self.current_dataset.dy = data_set.flatten() 
    226         elif key == u'Q': 
     233        elif key in self.q_name: 
    227234            self.current_dataset.xaxis("Q", unit) 
    228235            if isinstance(self.current_dataset, plottable_2D): 
     
    230237            else: 
    231238                self.current_dataset.x = data_set.flatten() 
    232         elif key == u'Qdev': 
    233             self.current_dataset.dx = data_set.flatten() 
    234         elif key == u'dQw': 
    235             self.current_dataset.dxw = data_set.flatten() 
    236         elif key == u'dQl': 
    237             self.current_dataset.dxl = data_set.flatten() 
     239        elif key in self.q_resolutions: 
     240            if key == u'dQw': 
     241                self.current_dataset.dxw = data_set.flatten() 
     242            elif key == u'dQl': 
     243                self.current_dataset.dxl = data_set.flatten() 
     244            else: 
     245                self.current_dataset.dx = data_set.flatten() 
    238246        elif key == u'Qy': 
    239247            self.current_dataset.yaxis("Q_y", unit) 
     
    246254        elif key == u'Qxdev': 
    247255            self.current_dataset.dqx_data = data_set.flatten() 
    248         elif key == u'Mask': 
     256        elif key == self.mask_name: 
    249257            self.current_dataset.mask = data_set.flatten() 
    250258        elif key == u'wavelength': 
     
    553561        self.current_datainfo = DataInfo() 
    554562 
    555  
    556563    def _initialize_new_data_set(self, parent_list=None): 
    557564        """ 
     
    574581 
    575582    def _find_data_attributes(self, value): 
     583        """ 
     584        A class to find the indices for Q, the name of the Qdev and Idev, and 
     585        the name of the mask. 
     586        :param value: SASdata/NXdata HDF5 Group 
     587        """ 
    576588        attrs = value.attrs 
    577589        signal = attrs.get("signal") 
    578         i_axes = attrs.get("I_axes") 
    579         q_indices = attrs.get("Q_indices") 
    580         mask = attrs.get("mask") 
    581         mask_indices = attrs.get("Mask_indices") 
     590 
     591        i_axes = np.array(attrs.get("I_axes").split(",")) 
     592        q_indices = np.array(attrs.get("Q_indices")) 
     593        self.mask_name = attrs.get("mask") 
    582594        keys = value.keys() 
    583         self.q_name = i_axes[q_indices] 
    584         self.mask_name = mask[mask_indices] 
     595        for val in q_indices: 
     596            self.q_name.append(i_axes[val]) 
    585597        self.i_name = signal 
    586         if self.q_name in keys: 
    587             q_vals = value.get(self.q_name) 
    588             self.q_uncertainties = q_vals.attrs.get("uncertainties") 
    589             self.q_resolutions = q_vals.attrs.get("resolutions") 
     598        self.i_node = value.get(self.i_name) 
     599        for item in self.q_name: 
     600            if item in keys: 
     601                q_vals = value.get(item) 
     602                self.q_uncertainties = q_vals.attrs.get("uncertainty") 
     603                self.q_resolutions = q_vals.attrs.get("resolution") 
    590604        if self.i_name in keys: 
    591605            i_vals = value.get(self.i_name) 
    592             self.i_uncertainties = i_vals.attrs.get("uncertainties") 
     606            self.i_uncertainties = i_vals.attrs.get("uncertainty") 
    593607 
    594608    def _find_intermediate(self, parent_list, basename=""): 
Note: See TracChangeset for help on using the changeset viewer.