Changes in src/sas/sascalc/dataloader/data_info.py [2ffe241:0d64713] in sasview
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
src/sas/sascalc/dataloader/data_info.py
r2ffe241 r0d64713 25 25 import numpy 26 26 import math 27 28 class plottable_sesans1D(object): 29 """ 30 SESANS is a place holder for 1D SESANS plottables. 31 32 #TODO: This was directly copied from the plottables_1D. Modified Somewhat. 33 #Class has been updated. 34 """ 35 # The presence of these should be mutually 36 # exclusive with the presence of Qdev (dx) 37 x = None 38 y = None 39 lam = None 40 dx = None 41 dy = None 42 dlam = None 43 ## Slit smearing length 44 dxl = None 45 ## Slit smearing width 46 dxw = None 47 48 # Units 49 _xaxis = '' 50 _xunit = '' 51 _yaxis = '' 52 _yunit = '' 53 54 def __init__(self, x, y, lam, dx=None, dy=None, dlam=None): 55 # print "SESANS plottable working" 56 self.x = numpy.asarray(x) 57 self.y = numpy.asarray(y) 58 self.lam = numpy.asarray(lam) 59 if dx is not None: 60 self.dx = numpy.asarray(dx) 61 if dy is not None: 62 self.dy = numpy.asarray(dy) 63 if dlam is not None: 64 self.dlam = numpy.asarray(dlam) 65 66 def xaxis(self, label, unit): 67 """ 68 set the x axis label and unit 69 """ 70 self._xaxis = label 71 self._xunit = unit 72 73 def yaxis(self, label, unit): 74 """ 75 set the y axis label and unit 76 """ 77 self._yaxis = label 78 self._yunit = unit 79 27 80 28 81 class plottable_1D(object): … … 40 93 ## Slit smearing width 41 94 dxw = None 42 ## SESANS specific params (wavelengths for spin echo length calculation)43 lam = None44 dlam = None45 95 46 96 # Units … … 50 100 _yunit = '' 51 101 52 def __init__(self, x, y, dx=None, dy=None, dxl=None, dxw=None , lam=None, dlam=None):102 def __init__(self, x, y, dx=None, dy=None, dxl=None, dxw=None): 53 103 self.x = numpy.asarray(x) 54 104 self.y = numpy.asarray(y) … … 61 111 if dxw is not None: 62 112 self.dxw = numpy.asarray(dxw) 63 if lam is not None:64 self.lam = numpy.asarray(lam)65 if dlam is not None:66 self.dlam = numpy.asarray(dlam)67 113 68 114 def xaxis(self, label, unit): … … 352 398 ## Details 353 399 details = None 354 ## SESANS zacceptance355 zacceptance = None356 400 357 401 def __init__(self): … … 491 535 ## Loading errors 492 536 errors = None 493 ## SESANS data check494 isSesans = None495 496 537 497 538 def __init__(self): … … 526 567 ## Loading errors 527 568 self.errors = [] 528 ## SESANS data check529 self.isSesans = False530 569 531 570 def append_empty_process(self): … … 547 586 _str += "Title: %s\n" % self.title 548 587 _str += "Run: %s\n" % str(self.run) 549 _str += "SESANS: %s\n" % str(self.isSesans)550 588 _str += "Instrument: %s\n" % str(self.instrument) 551 589 _str += "%s\n" % str(self.sample) … … 698 736 return self._perform_union(other) 699 737 700 class Data1D(plottable_1D, DataInfo): 701 """ 702 1D data class 703 """ 704 def __init__(self, x=None, y=None, dx=None, dy=None, lam=None, dlam=None, isSesans=None): 738 class SESANSData1D(plottable_sesans1D, DataInfo): 739 """ 740 SESANS 1D data class 741 """ 742 x_unit = 'nm' 743 y_unit = 'pol' 744 745 def __init__(self, x=None, y=None, lam=None, dx=None, dy=None, dlam=None): 705 746 DataInfo.__init__(self) 706 plottable_1D.__init__(self, x, y, dx, dy,None, None, lam, dlam) 707 self.isSesans = isSesans 708 try: 709 if self.isSesans: # the data is SESANS 710 self.x_unit = 'A' 711 self.y_unit = 'pol' 712 elif not self.isSesans: # the data is SANS 713 self.x_unit = '1/A' 714 self.y_unit = '1/cm' 715 except: # the data is not recognized/supported, and the user is notified 716 raise(TypeError, 'data not recognized, check documentation for supported 1D data formats') 747 plottable_sesans1D.__init__(self, x, y, lam, dx, dy, dlam) 717 748 718 749 def __str__(self): … … 728 759 return _str 729 760 761 def clone_without_data(self, length=0, clone=None): 762 """ 763 Clone the current object, without copying the data (which 764 will be filled out by a subsequent operation). 765 The data arrays will be initialized to zero. 766 767 :param length: length of the data array to be initialized 768 :param clone: if provided, the data will be copied to clone 769 """ 770 from copy import deepcopy 771 if clone is None or not issubclass(clone.__class__, Data1D): 772 x = numpy.zeros(length) 773 dx = numpy.zeros(length) 774 y = numpy.zeros(length) 775 dy = numpy.zeros(length) 776 clone = Data1D(x, y, dx=dx, dy=dy) 777 778 clone.title = self.title 779 clone.run = self.run 780 clone.filename = self.filename 781 clone.instrument = self.instrument 782 clone.notes = deepcopy(self.notes) 783 clone.process = deepcopy(self.process) 784 clone.detector = deepcopy(self.detector) 785 clone.sample = deepcopy(self.sample) 786 clone.source = deepcopy(self.source) 787 clone.collimation = deepcopy(self.collimation) 788 clone.trans_spectrum = deepcopy(self.trans_spectrum) 789 clone.meta_data = deepcopy(self.meta_data) 790 clone.errors = deepcopy(self.errors) 791 792 return clone 793 794 class Data1D(plottable_1D, DataInfo): 795 """ 796 1D data class 797 """ 798 x_unit = '1/A' 799 y_unit = '1/cm' 800 801 def __init__(self, x, y, dx=None, dy=None): 802 DataInfo.__init__(self) 803 plottable_1D.__init__(self, x, y, dx, dy) 804 805 def __str__(self): 806 """ 807 Nice printout 808 """ 809 _str = "%s\n" % DataInfo.__str__(self) 810 _str += "Data:\n" 811 _str += " Type: %s\n" % self.__class__.__name__ 812 _str += " X-axis: %s\t[%s]\n" % (self._xaxis, self._xunit) 813 _str += " Y-axis: %s\t[%s]\n" % (self._yaxis, self._yunit) 814 _str += " Length: %g\n" % len(self.x) 815 return _str 816 730 817 def is_slit_smeared(self): 731 818 """ … … 756 843 y = numpy.zeros(length) 757 844 dy = numpy.zeros(length) 758 lam = numpy.zeros(length) 759 dlam = numpy.zeros(length) 760 clone = Data1D(x, y, lam=lam, dx=dx, dy=dy, dlam=dlam) 845 clone = Data1D(x, y, dx=dx, dy=dy) 761 846 762 847 clone.title = self.title … … 933 1018 ## Vector of Q-values at the center of each bin in y 934 1019 y_bins = None 935 ## No 2D SESANS data as of yet. Always set it to False936 isSesans = False937 1020 938 1021 def __init__(self, data=None, err_data=None, qx_data=None, 939 1022 qy_data=None, q_data=None, mask=None, 940 1023 dqx_data=None, dqy_data=None): 1024 self.y_bins = [] 1025 self.x_bins = [] 941 1026 DataInfo.__init__(self) 942 1027 plottable_2D.__init__(self, data, err_data, qx_data, 943 1028 qy_data, q_data, mask, dqx_data, dqy_data) 944 self.y_bins = []945 self.x_bins = []946 947 1029 if len(self.detector) > 0: 948 1030 raise RuntimeError, "Data2D: Detector bank already filled at init" … … 1183 1265 final_dataset.xmin = data.xmin 1184 1266 final_dataset.ymin = data.ymin 1185 final_dataset.isSesans = datainfo.isSesans1186 1267 final_dataset.title = datainfo.title 1187 1268 final_dataset.run = datainfo.run
Note: See TracChangeset
for help on using the changeset viewer.