Changeset 7caf3e5 in sasview
- Timestamp:
- Feb 24, 2017 9:39:00 AM (8 years ago)
- 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:
- c221349
- Parents:
- 2ffe241 (diff), cb05bfd (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent. - git-author:
- Paul Kienzle <pkienzle@…> (02/24/17 09:39:00)
- git-committer:
- GitHub <noreply@…> (02/24/17 09:39:00)
- Files:
-
- 1 added
- 1 deleted
- 11 edited
Legend:
- Unmodified
- Added
- Removed
-
setup.py
r18e7309 r1e13b53 206 206 ) 207 207 208 209 208 # sas.sascalc.pr 210 209 srcdir = os.path.join("src", "sas", "sascalc", "pr", "c_extensions") … … 229 228 ) ) 230 229 230 #sas.sascalc.corfunc 231 package_dir["sas.sascalc.corfunc"] = os.path.join("src", "sas", "sascalc", "corfunc") 232 packages.extend(["sas.sascalc.corfunc"]) 233 231 234 # sas.sascalc.fit 232 235 package_dir["sas.sascalc.fit"] = os.path.join("src", "sas", "sascalc", "fit") … … 237 240 package_dir["sas.sasgui.perspectives.pr"] = os.path.join("src", "sas", "sasgui", "perspectives", "pr") 238 241 packages.extend(["sas.sasgui.perspectives","sas.sasgui.perspectives.pr"]) 239 package_data["sas.sasgui.perspectives.pr"] = [' images/*']242 package_data["sas.sasgui.perspectives.pr"] = ['media/*'] 240 243 241 244 package_dir["sas.sasgui.perspectives.invariant"] = os.path.join("src", "sas", "sasgui", "perspectives", "invariant") … … 250 253 packages.extend(["sas.sasgui.perspectives", "sas.sasgui.perspectives.calculator"]) 251 254 package_data['sas.sasgui.perspectives.calculator'] = ['images/*', 'media/*'] 255 256 package_dir["sas.sasgui.perspectives.corfunc"] = os.path.join("src", "sas", "sasgui", "perspectives", "corfunc") 257 packages.extend(["sas.sasgui.perspectives.corfunc"]) 258 package_data['sas.sasgui.perspectives.corfunc'] = ['media/*'] 259 260 package_dir["sas.sasgui.perspectives.file_converter"] = os.path.join("src", "sas", "sasgui", "perspectives", "file_converter") 261 packages.extend(["sas.sasgui.perspectives.file_converter"]) 262 package_data['sas.sasgui.perspectives.file_converter'] = ['media/*'] 252 263 253 264 # Data util -
src/sas/sascalc/dataloader/readers/sesans_reader.py
rb5db35d r7caf3e5 136 136 output.x, output.x_unit = self._unit_conversion(x, lam_unit, default_z_unit) 137 137 output.y = y 138 output.y_unit = '\AA^{-2} cm^{-1}' # output y_unit added138 output.y_unit = r'\AA^{-2} cm^{-1}' # output y_unit added 139 139 output.dx, output.dx_unit = self._unit_conversion(dx, lam_unit, default_z_unit) 140 140 output.dy = dy 141 141 output.lam, output.lam_unit = self._unit_conversion(lam, lam_unit, default_z_unit) 142 142 output.dlam, output.dlam_unit = self._unit_conversion(dlam, lam_unit, default_z_unit) 143 144 output.xaxis(r"\rm{z}", output.x_unit) 145 output.yaxis(r"\rm{ln(P)/(t \lambda^2)}", output.y_unit) # Adjust label to ln P/(lam^2 t), remove lam column refs 143 146 144 output.xaxis("\\rm{z}", output.x_unit)145 output.yaxis("\\rm{ln(P)/(t \lambda^2)}", output.y_unit) # Adjust label to ln P/(lam^2 t), remove lam column refs146 147 # Store loading process information 147 148 output.meta_data['loader'] = self.type_name … … 151 152 zaccept_unit_split = paramnames[7].split("[") 152 153 zaccept_unit = zaccept_unit_split[1].replace("]","") 153 if zaccept_unit.strip() == '\AA^-1' or zaccept_unit.strip() =='\A^-1':154 if zaccept_unit.strip() == r'\AA^-1' or zaccept_unit.strip() == r'\A^-1': 154 155 zaccept_unit = "1/A" 155 156 output.sample.zacceptance=(float(paramvals[7]),zaccept_unit) -
src/sas/sasgui/perspectives/fitting/fitpage.py
ra6fccd7 r3d55219 362 362 self.Bind(wx.EVT_RADIOBUTTON, self.onSlitSmear, 363 363 id=self.slit_smearer.GetId()) 364 self. enable_smearer.SetValue(True)364 self.disable_smearer.SetValue(True) 365 365 366 366 sizer_smearer.Add(self.disable_smearer, 0, wx.LEFT, 10) … … 1934 1934 1935 1935 # more disables for 2D 1936 di_flag = False 1937 dq_flag = False 1936 1938 if self.data.__class__.__name__ == "Data2D" or \ 1937 1939 self.enable2D: … … 1939 1941 self.pinhole_smearer.Enable(True) 1940 1942 self.default_mask = copy.deepcopy(self.data.mask) 1941 if self.data.err_data is None or\ 1942 numpy.all(err == 1 for err in self.data.err_data) or \ 1943 not numpy.any(self.data.err_data): 1944 self.dI_didata.Enable(False) 1945 self.dI_noweight.SetValue(True) 1946 self.weightbt_string = self.dI_noweight.GetLabelText() 1947 else: 1948 self.dI_didata.Enable(True) 1949 self.dI_didata.SetValue(True) 1950 self.weightbt_string = self.dI_didata.GetLabelText() 1943 if self.data.err_data is not None \ 1944 and numpy.any(self.data.err_data): 1945 di_flag = True 1946 if self.data.dqx_data is not None \ 1947 and numpy.any(self.data.dqx_data): 1948 dq_flag = True 1951 1949 else: 1952 1950 self.slit_smearer.Enable(True) 1953 1951 self.pinhole_smearer.Enable(True) 1954 1955 if self.data.dy is None or\ 1956 numpy.all(self.data.dy == 1) or\ 1957 not numpy.any(self.data.dy): 1958 self.dI_didata.Enable(False) 1959 self.dI_noweight.SetValue(True) 1960 self.weightbt_string = self.dI_noweight.GetLabelText() 1961 else: 1962 self.dI_didata.Enable(True) 1963 self.dI_didata.SetValue(True) 1964 self.weightbt_string = self.dI_didata.GetLabelText() 1952 if self.data.dy is not None and numpy.any(self.data.dy): 1953 di_flag = True 1954 if self.data.dx is not None and numpy.any(self.data.dx): 1955 dq_flag = True 1956 elif self.data.dxl is not None and numpy.any(self.data.dxl): 1957 dq_flag = True 1958 1959 if dq_flag: 1960 self.enable_smearer.Enable(True) 1961 self.enable_smearer.SetValue(True) 1962 self.disable_smearer.SetValue(False) 1963 else: 1964 self.enable_smearer.Disable() 1965 self.disable_smearer.Enable(True) 1966 self.disable_smearer.SetValue(True) 1967 1968 if di_flag: 1969 self.dI_didata.Enable(True) 1970 self.dI_didata.SetValue(True) 1971 self.weightbt_string = self.dI_didata.GetLabelText() 1972 else: 1973 self.dI_didata.Enable(False) 1974 self.dI_noweight.SetValue(True) 1975 self.weightbt_string = self.dI_noweight.GetLabelText() 1976 1965 1977 # Enable weighting radio buttons 1966 1978 self.dI_noweight.Enable(True) … … 2004 2016 self.EditMask_title.Disable() 2005 2017 2018 self.onSmear(event=None) 2006 2019 self.on_set_focus(None) 2007 2020 self.Refresh() -
src/sas/sascalc/data_util/qsmearing.py
rd3911e3 r2ffe241 13 13 import logging 14 14 import sys 15 15 import numpy as np # type: ignore 16 from numpy import pi, exp # type:ignore 16 17 from sasmodels.resolution import Slit1D, Pinhole1D 18 from sasmodels.sesans import SesansTransform 17 19 from sasmodels.resolution2d import Pinhole2D 20 from src.sas.sascalc.data_util.nxsunit import Converter 18 21 19 22 def smear_selection(data, model = None): … … 36 39 # Sanity check. If we are not dealing with a SAS Data1D 37 40 # object, just return None 41 # This checks for 2D data (does not throw exception because fail is common) 38 42 if data.__class__.__name__ not in ['Data1D', 'Theory1D']: 39 43 if data == None: … … 41 45 elif data.dqx_data == None or data.dqy_data == None: 42 46 return None 43 return PySmear2D(data , model)44 47 return PySmear2D(data) 48 # This checks for 1D data with smearing info in the data itself (again, fail is likely; no exceptions) 45 49 if not hasattr(data, "dx") and not hasattr(data, "dxl")\ 46 50 and not hasattr(data, "dxw"): … … 48 52 49 53 # Look for resolution smearing data 54 # This is the code that checks for SESANS data; it looks for the file loader 55 # TODO: change other sanity checks to check for file loader instead of data structure? 56 _found_sesans = False 57 #if data.dx is not None and data.meta_data['loader']=='SESANS': 58 if data.dx is not None and data.isSesans: 59 #if data.dx[0] > 0.0: 60 if numpy.size(data.dx[data.dx <= 0]) == 0: 61 _found_sesans = True 62 # if data.dx[0] <= 0.0: 63 if numpy.size(data.dx[data.dx <= 0]) > 0: 64 raise ValueError('one or more of your dx values are negative, please check the data file!') 65 66 if _found_sesans == True: 67 #Pre-compute the Hankel matrix (H) 68 qmax, qunits = data.sample.zacceptance 69 SElength = Converter(data._xunit)(data.x, "A") 70 zaccept = Converter(qunits)(qmax, "1/A"), 71 Rmax = 10000000 72 hankel = SesansTransform(data.x, SElength, zaccept, Rmax) 73 # Then return the actual transform, as if it were a smearing function 74 return PySmear(hankel, model, offset=0) 75 50 76 _found_resolution = False 51 77 if data.dx is not None and len(data.dx) == len(data.x): … … 89 115 Wrapper for pure python sasmodels resolution functions. 90 116 """ 91 def __init__(self, resolution, model ):117 def __init__(self, resolution, model, offset=None): 92 118 self.model = model 93 119 self.resolution = resolution 94 self.offset = numpy.searchsorted(self.resolution.q_calc, self.resolution.q[0]) 120 if offset is None: 121 offset = numpy.searchsorted(self.resolution.q_calc, self.resolution.q[0]) 122 self.offset = offset 95 123 96 124 def apply(self, iq_in, first_bin=0, last_bin=None): -
src/sas/sascalc/dataloader/data_info.py
r345e7e4 r2ffe241 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 mutually36 # exclusive with the presence of Qdev (dx)37 x = None38 y = None39 lam = None40 dx = None41 dy = None42 dlam = None43 ## Slit smearing length44 dxl = None45 ## Slit smearing width46 dxw = None47 48 # Units49 _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 unit69 """70 self._xaxis = label71 self._xunit = unit72 73 def yaxis(self, label, unit):74 """75 set the y axis label and unit76 """77 self._yaxis = label78 self._yunit = unit79 80 27 81 28 class plottable_1D(object): … … 93 40 ## Slit smearing width 94 41 dxw = None 42 ## SESANS specific params (wavelengths for spin echo length calculation) 43 lam = None 44 dlam = None 95 45 96 46 # Units … … 100 50 _yunit = '' 101 51 102 def __init__(self, x, y, dx=None, dy=None, dxl=None, dxw=None ):52 def __init__(self, x, y, dx=None, dy=None, dxl=None, dxw=None, lam=None, dlam=None): 103 53 self.x = numpy.asarray(x) 104 54 self.y = numpy.asarray(y) … … 111 61 if dxw is not None: 112 62 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) 113 67 114 68 def xaxis(self, label, unit): … … 398 352 ## Details 399 353 details = None 354 ## SESANS zacceptance 355 zacceptance = None 400 356 401 357 def __init__(self): … … 535 491 ## Loading errors 536 492 errors = None 493 ## SESANS data check 494 isSesans = None 495 537 496 538 497 def __init__(self): … … 567 526 ## Loading errors 568 527 self.errors = [] 528 ## SESANS data check 529 self.isSesans = False 569 530 570 531 def append_empty_process(self): … … 586 547 _str += "Title: %s\n" % self.title 587 548 _str += "Run: %s\n" % str(self.run) 549 _str += "SESANS: %s\n" % str(self.isSesans) 588 550 _str += "Instrument: %s\n" % str(self.instrument) 589 551 _str += "%s\n" % str(self.sample) … … 736 698 return self._perform_union(other) 737 699 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): 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): 746 705 DataInfo.__init__(self) 747 plottable_sesans1D.__init__(self, x, y, lam, dx, dy, dlam) 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') 748 717 749 718 def __str__(self): … … 759 728 return _str 760 729 761 def clone_without_data(self, length=0, clone=None):762 """763 Clone the current object, without copying the data (which764 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 initialized768 :param clone: if provided, the data will be copied to clone769 """770 from copy import deepcopy771 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.title779 clone.run = self.run780 clone.filename = self.filename781 clone.instrument = self.instrument782 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 clone793 794 class Data1D(plottable_1D, DataInfo):795 """796 1D data class797 """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 printout808 """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 _str816 817 730 def is_slit_smeared(self): 818 731 """ … … 843 756 y = numpy.zeros(length) 844 757 dy = numpy.zeros(length) 845 clone = Data1D(x, y, dx=dx, dy=dy) 758 lam = numpy.zeros(length) 759 dlam = numpy.zeros(length) 760 clone = Data1D(x, y, lam=lam, dx=dx, dy=dy, dlam=dlam) 846 761 847 762 clone.title = self.title … … 1018 933 ## Vector of Q-values at the center of each bin in y 1019 934 y_bins = None 935 ## No 2D SESANS data as of yet. Always set it to False 936 isSesans = False 1020 937 1021 938 def __init__(self, data=None, err_data=None, qx_data=None, 1022 939 qy_data=None, q_data=None, mask=None, 1023 940 dqx_data=None, dqy_data=None): 1024 self.y_bins = []1025 self.x_bins = []1026 941 DataInfo.__init__(self) 1027 942 plottable_2D.__init__(self, data, err_data, qx_data, 1028 943 qy_data, q_data, mask, dqx_data, dqy_data) 944 self.y_bins = [] 945 self.x_bins = [] 946 1029 947 if len(self.detector) > 0: 1030 948 raise RuntimeError, "Data2D: Detector bank already filled at init" … … 1265 1183 final_dataset.xmin = data.xmin 1266 1184 final_dataset.ymin = data.ymin 1185 final_dataset.isSesans = datainfo.isSesans 1267 1186 final_dataset.title = datainfo.title 1268 1187 final_dataset.run = datainfo.run -
src/sas/sascalc/dataloader/readers/cansas_constants.py
r250fec92 rad4632c 133 133 "variable" : None, 134 134 "children" : {"Idata" : SASDATA_IDATA, 135 "Sesans": {"storeas": "content"}, 136 "zacceptance": {"storeas": "float"}, 135 137 "<any>" : ANY 136 138 } -
src/sas/sascalc/dataloader/readers/cansas_reader.py
rbcabf4e rb5e9ce26 261 261 # I and Q - 1D data 262 262 elif tagname == 'I' and isinstance(self.current_dataset, plottable_1D): 263 self.current_dataset.yaxis("Intensity", unit) 263 unit_list = unit.split(" | ") 264 if len(unit_list) > 1: 265 self.current_dataset.yaxis(unit_list[0], unit_list[1]) 266 else: 267 self.current_dataset.yaxis("Intensity", unit) 264 268 self.current_dataset.y = np.append(self.current_dataset.y, data_point) 265 269 elif tagname == 'Idev' and isinstance(self.current_dataset, plottable_1D): 266 270 self.current_dataset.dy = np.append(self.current_dataset.dy, data_point) 267 271 elif tagname == 'Q': 268 self.current_dataset.xaxis("Q", unit) 272 unit_list = unit.split(" | ") 273 if len(unit_list) > 1: 274 self.current_dataset.xaxis(unit_list[0], unit_list[1]) 275 else: 276 self.current_dataset.xaxis("Q", unit) 269 277 self.current_dataset.x = np.append(self.current_dataset.x, data_point) 270 278 elif tagname == 'Qdev': … … 278 286 elif tagname == 'Shadowfactor': 279 287 pass 288 elif tagname == 'Sesans': 289 self.current_datainfo.isSesans = bool(data_point) 290 elif tagname == 'zacceptance': 291 self.current_datainfo.sample.zacceptance = (data_point, unit) 280 292 281 293 # I and Qx, Qy - 2D data … … 1020 1032 node.append(point) 1021 1033 self.write_node(point, "Q", datainfo.x[i], 1022 {'unit': datainfo. x_unit})1034 {'unit': datainfo._xaxis + " | " + datainfo._xunit}) 1023 1035 if len(datainfo.y) >= i: 1024 1036 self.write_node(point, "I", datainfo.y[i], 1025 {'unit': datainfo. y_unit})1037 {'unit': datainfo._yaxis + " | " + datainfo._yunit}) 1026 1038 if datainfo.dy is not None and len(datainfo.dy) > i: 1027 1039 self.write_node(point, "Idev", datainfo.dy[i], 1028 {'unit': datainfo. y_unit})1040 {'unit': datainfo._yaxis + " | " + datainfo._yunit}) 1029 1041 if datainfo.dx is not None and len(datainfo.dx) > i: 1030 1042 self.write_node(point, "Qdev", datainfo.dx[i], 1031 {'unit': datainfo. x_unit})1043 {'unit': datainfo._xaxis + " | " + datainfo._xunit}) 1032 1044 if datainfo.dxw is not None and len(datainfo.dxw) > i: 1033 1045 self.write_node(point, "dQw", datainfo.dxw[i], 1034 {'unit': datainfo. x_unit})1046 {'unit': datainfo._xaxis + " | " + datainfo._xunit}) 1035 1047 if datainfo.dxl is not None and len(datainfo.dxl) > i: 1036 1048 self.write_node(point, "dQl", datainfo.dxl[i], 1037 {'unit': datainfo.x_unit}) 1049 {'unit': datainfo._xaxis + " | " + datainfo._xunit}) 1050 if datainfo.isSesans: 1051 sesans = self.create_element("Sesans") 1052 sesans.text = str(datainfo.isSesans) 1053 node.append(sesans) 1054 self.write_node(node, "zacceptance", datainfo.sample.zacceptance[0], 1055 {'unit': datainfo.sample.zacceptance[1]}) 1056 1038 1057 1039 1058 def _write_data_2d(self, datainfo, entry_node): -
src/sas/sascalc/fit/AbstractFitEngine.py
rd3911e3 ra9f579c 131 131 a way to get residuals from data. 132 132 """ 133 def __init__(self, x, y, dx=None, dy=None, smearer=None, data=None ):133 def __init__(self, x, y, dx=None, dy=None, smearer=None, data=None, lam=None, dlam=None): 134 134 """ 135 135 :param smearer: is an object of class QSmearer or SlitSmearer … … 152 152 153 153 """ 154 Data1D.__init__(self, x=x, y=y, dx=dx, dy=dy )154 Data1D.__init__(self, x=x, y=y, dx=dx, dy=dy, lam=lam, dlam=dlam) 155 155 self.num_points = len(x) 156 156 self.sas_data = data -
src/sas/sasgui/guiframe/dataFitting.py
r345e7e4 r68adf86 17 17 """ 18 18 """ 19 def __init__(self, x=None, y=None, dx=None, dy=None): 19 20 def __init__(self, x=None, y=None, dx=None, dy=None, lam=None, dlam=None, isSesans=False): 20 21 """ 21 22 """ … … 24 25 if y is None: 25 26 y = [] 26 PlotData1D.__init__(self, x, y, dx, dy) 27 LoadData1D.__init__(self, x, y, dx, dy) 27 self.isSesans = isSesans 28 PlotData1D.__init__(self, x, y, dx, dy, lam, dlam) 29 LoadData1D.__init__(self, x, y, dx, dy, lam, dlam, isSesans) 30 28 31 self.id = None 29 32 self.list_group_id = [] … … 32 35 self.path = None 33 36 self.xtransform = None 37 if self.isSesans: 38 self.xtransform = "x" 34 39 self.ytransform = None 40 if self.isSesans: 41 self.ytransform = "y" 35 42 self.title = "" 36 43 self.scale = None … … 68 75 # First, check the data compatibility 69 76 dy, dy_other = self._validity_check(other) 70 result = Data1D(x=[], y=[], dx=None, dy=None)77 result = Data1D(x=[], y=[], lam=[], dx=None, dy=None, dlam=None) 71 78 result.clone_without_data(length=len(self.x), clone=self) 72 79 result.copy_from_datainfo(data1d=self) … … 115 122 # First, check the data compatibility 116 123 self._validity_check_union(other) 117 result = Data1D(x=[], y=[], dx=None, dy=None)124 result = Data1D(x=[], y=[], lam=[], dx=None, dy=None, dlam=None) 118 125 tot_length = len(self.x) + len(other.x) 119 126 result = self.clone_without_data(length=tot_length, clone=result) 127 if self.dlam == None or other.dlam is None: 128 result.dlam = None 129 else: 130 result.dlam = numpy.zeros(tot_length) 120 131 if self.dy == None or other.dy is None: 121 132 result.dy = None … … 141 152 result.y = numpy.append(self.y, other.y) 142 153 result.y = result.y[ind] 154 result.lam = numpy.append(self.lam, other.lam) 155 result.lam = result.lam[ind] 156 if result.dlam != None: 157 result.dlam = numpy.append(self.dlam, other.dlam) 158 result.dlam = result.dlam[ind] 143 159 if result.dy != None: 144 160 result.dy = numpy.append(self.dy, other.dy) … … 260 276 # First, check the data compatibility 261 277 self._validity_check_union(other) 262 result = Data1D(x=[], y=[], dx=None, dy=None)278 result = Data1D(x=[], y=[], lam=[], dx=None, dy=None, dlam=[]) 263 279 tot_length = len(self.x)+len(other.x) 264 280 result.clone_without_data(length=tot_length, clone=self) 281 if self.dlam == None or other.dlam is None: 282 result.dlam = None 283 else: 284 result.dlam = numpy.zeros(tot_length) 265 285 if self.dy == None or other.dy is None: 266 286 result.dy = None … … 285 305 result.y = numpy.append(self.y, other.y) 286 306 result.y = result.y[ind] 307 result.lam = numpy.append(self.lam, other.lam) 308 result.lam = result.lam[ind] 287 309 if result.dy != None: 288 310 result.dy = numpy.append(self.dy, other.dy) -
src/sas/sasgui/guiframe/data_manager.py
r345e7e4 r2ffe241 61 61 62 62 if issubclass(Data2D, data.__class__): 63 new_plot = Data2D(image=None, err_image=None) 64 else: 65 new_plot = Data1D(x=[], y=[], dx=None, dy=None) 66 63 new_plot = Data2D(image=None, err_image=None) # For now, isSesans for 2D data is always false 64 else: 65 new_plot = Data1D(x=[], y=[], dx=None, dy=None, lam=None, dlam=None, isSesans=data.isSesans) 66 67 68 #elif data.meta_data['loader'] == 'SESANS': 69 # new_plot = Data1D(x=[], y=[], dx=None, dy=None, lam=None, dlam=None, isSesans=True) 70 #else: 71 # new_plot = Data1D(x=[], y=[], dx=None, dy=None, lam=None, dlam=None) #SESANS check??? 72 67 73 new_plot.copy_from_datainfo(data) 68 74 data.clone_without_data(clone=new_plot) -
src/sas/sasgui/plottools/plottables.py
r345e7e4 ra9f579c 1023 1023 """ 1024 1024 1025 def __init__(self, x, y, dx=None, dy=None ):1025 def __init__(self, x, y, dx=None, dy=None, lam=None, dlam=None): 1026 1026 """ 1027 1027 Draw points specified by x[i],y[i] in the current color/symbol. … … 1037 1037 self.x = x 1038 1038 self.y = y 1039 self.lam = lam 1039 1040 self.dx = dx 1040 1041 self.dy = dy 1042 self.dlam = dlam 1041 1043 self.source = None 1042 1044 self.detector = None
Note: See TracChangeset
for help on using the changeset viewer.