Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/sas/dataloader/data_info.py

    r7eaf9f2 rb3efb7d  
    2525import numpy 
    2626import math 
    27  
    28  
    29 class plottable_sesans1D: 
    30     """ 
    31     SESANS is a place holder for 1D SESANS plottables. 
    32      
    33     #TODO: This was directly copied from the plottables_1D. 
    34     #TODO: The class has not been updated from there. 
    35     """ 
    36     # The presence of these should be mutually 
    37     # exclusive with the presence of Qdev (dx) 
    38     x = None 
    39     y = None 
    40     dx = None 
    41     dy = None 
    42     ## Slit smearing length 
    43     dxl = None 
    44     ## Slit smearing width 
    45     dxw = None 
    46      
    47     # Units 
    48     _xaxis = '' 
    49     _xunit = '' 
    50     _yaxis = '' 
    51     _yunit = '' 
    52      
    53     def __init__(self, x, y, dx=None, dy=None, dxl=None, dxw=None): 
    54         self.x = numpy.asarray(x) 
    55         self.y = numpy.asarray(y) 
    56         if dx is not None: 
    57             self.dx = numpy.asarray(dx) 
    58         if dy is not None: 
    59             self.dy = numpy.asarray(dy) 
    60         if dxl is not None: 
    61             self.dxl = numpy.asarray(dxl) 
    62         if dxw is not None:  
    63             self.dxw = numpy.asarray(dxw) 
    64  
    65     def xaxis(self, label, unit): 
    66         """ 
    67         set the x axis label and unit 
    68         """ 
    69         self._xaxis = label 
    70         self._xunit = unit 
    71          
    72     def yaxis(self, label, unit): 
    73         """ 
    74         set the y axis label and unit 
    75         """ 
    76         self._yaxis = label 
    77         self._yunit = unit 
    7827 
    7928 
     
    991940         
    992941         
    993 class SESANSData1D(plottable_sesans1D, DataInfo): 
    994     """ 
    995     SESANS 1D data class 
    996     """ 
    997     x_unit = '1/A' 
    998     y_unit = '1/cm' 
    999      
    1000     def __init__(self, x, y, dx=None, dy=None): 
    1001         DataInfo.__init__(self) 
    1002         plottable_sesans1D.__init__(self, x, y, dx, dy) 
    1003          
    1004     def __str__(self): 
    1005         """ 
    1006         Nice printout 
    1007         """ 
    1008         _str =  "%s\n" % DataInfo.__str__(self) 
    1009      
    1010         _str += "Data:\n" 
    1011         _str += "   Type:         %s\n" % self.__class__.__name__ 
    1012         _str += "   X-axis:       %s\t[%s]\n" % (self._xaxis, self._xunit) 
    1013         _str += "   Y-axis:       %s\t[%s]\n" % (self._yaxis, self._yunit) 
    1014         _str += "   Length:       %g\n" % len(self.x) 
    1015  
    1016         return _str 
    1017  
    1018     def is_slit_smeared(self): 
    1019         """ 
    1020         Check whether the data has slit smearing information 
    1021          
    1022         :return: True is slit smearing info is present, False otherwise 
    1023          
    1024         """ 
    1025         def _check(v): 
    1026             if (v.__class__ == list or v.__class__ == numpy.ndarray) \ 
    1027                 and len(v) > 0 and min(v) > 0: 
    1028                 return True 
    1029              
    1030             return False 
    1031          
    1032         return _check(self.dxl) or _check(self.dxw) 
    1033          
    1034     def clone_without_data(self, length=0, clone=None): 
    1035         """ 
    1036         Clone the current object, without copying the data (which 
    1037         will be filled out by a subsequent operation). 
    1038         The data arrays will be initialized to zero. 
    1039          
    1040         :param length: length of the data array to be initialized 
    1041         :param clone: if provided, the data will be copied to clone 
    1042         """ 
    1043         from copy import deepcopy 
    1044          
    1045         if clone is None or not issubclass(clone.__class__, Data1D): 
    1046             x  = numpy.zeros(length) 
    1047             dx = numpy.zeros(length) 
    1048             y  = numpy.zeros(length) 
    1049             dy = numpy.zeros(length) 
    1050             clone = Data1D(x, y, dx=dx, dy=dy) 
    1051          
    1052         clone.title          = self.title 
    1053         clone.run            = self.run 
    1054         clone.filename       = self.filename 
    1055         clone.instrument     = self.instrument 
    1056         clone.notes          = deepcopy(self.notes) 
    1057         clone.process        = deepcopy(self.process) 
    1058         clone.detector       = deepcopy(self.detector) 
    1059         clone.sample         = deepcopy(self.sample) 
    1060         clone.source         = deepcopy(self.source) 
    1061         clone.collimation    = deepcopy(self.collimation) 
    1062         clone.trans_spectrum = deepcopy(self.trans_spectrum) 
    1063         clone.meta_data      = deepcopy(self.meta_data) 
    1064         clone.errors         = deepcopy(self.errors) 
    1065          
    1066         return clone 
    1067      
    1068      
    1069942class Data2D(plottable_2D, DataInfo): 
    1070943    """ 
Note: See TracChangeset for help on using the changeset viewer.