- Timestamp:
- Jul 12, 2016 6:13:24 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:
- 8bdc103
- Parents:
- 41345d7e
- Location:
- src/sas
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
src/sas/sascalc/corfunc/corfunc_calculator.py
reb320682 rd03228e 10 10 from numpy.linalg import lstsq 11 11 from sas.sascalc.dataloader.data_info import Data1D 12 from sas.sascalc.corfunc.transform_thread import TransformThread 12 from sas.sascalc.corfunc.transform_thread import FourierThread 13 from sas.sascalc.corfunc.transform_thread import HilbertThread 13 14 14 15 class CorfuncCalculator(object): … … 122 123 return extrapolation 123 124 124 def compute_transform(self, extrapolation, background=None,125 def compute_transform(self, extrapolation, trans_type, background=None, 125 126 completefn=None, updatefn=None): 126 127 """ … … 141 142 if background is None: background = self.background 142 143 143 self._transform_thread = TransformThread(self._data, extrapolation, 144 background, completefn=completefn, updatefn=updatefn) 144 if trans_type == 'fourier': 145 self._transform_thread = FourierThread(self._data, extrapolation, 146 background, completefn=completefn, updatefn=updatefn) 147 elif trans_type == 'hilbert': 148 self._transform_thread = HilbertThread(self._data, extrapolation, 149 background, completefn=completefn, updatefn=updatefn) 150 else: 151 err = ("Incorrect transform type supplied, must be 'fourier'", 152 " or 'hilbert'") 153 raise ValueError, err 154 145 155 self._transform_thread.queue() 146 156 -
src/sas/sascalc/corfunc/transform_thread.py
ra2db1ab rd03228e 5 5 from time import sleep 6 6 7 class TransformThread(CalcThread):7 class FourierThread(CalcThread): 8 8 def __init__(self, raw_data, extrapolated_data, bg, updatefn=None, 9 9 completefn=None): … … 39 39 40 40 self.complete(transform=transform) 41 42 class HilbertThread(CalcThread): 43 def __init__(self, raw_data, extrapolated_data, bg, updatefn=None, 44 completefn=None): 45 CalcThread.__init__(self, updatefn=updatefn, completefn=completefn) 46 self.data = raw_data 47 self.background = bg 48 self.extrapolation = extrapolated_data 49 50 def compute(self): 51 qs = self.extrapolation.x 52 iqs = self.extrapolation.y 53 q = self.data.x 54 background = self.background 55 56 self.ready(delay=0.0) 57 self.update(msg="Starting Hilbert transform.") 58 self.ready(delay=0.0) 59 if self.isquit(): 60 return 61 62 # TODO: Implement hilbert transform 63 64 self.update(msg="Hilbert transform completed.") 65 66 self.complete(transform=None) -
src/sas/sasgui/perspectives/corfunc/corfunc_panel.py
reb320682 rd03228e 64 64 self.background = 0 65 65 self.extracted_params = None 66 self.transform_type = 'fourier' 66 67 # Dictionary for saving refs to text boxes used to display output data 67 68 self._output_boxes = None … … 167 168 return self._data 168 169 170 def radio_changed(self, event=None): 171 if event is not None: 172 self.transform_type = event.GetEventObject().GetName() 173 169 174 def compute_extrapolation(self, event=None): 170 175 """ … … 206 211 if not self._calculator.transform_isrunning(): 207 212 self._calculator.compute_transform(self._extrapolated_data, 208 self.background, completefn=self.transform_complete, 213 self.transform_type, background=self.background, 214 completefn=self.transform_complete, 209 215 updatefn=self.transform_update) 216 210 217 self._transform_btn.SetLabel("Stop Tansform") 211 218 else: 212 219 self._calculator.stop_transform() 213 self.transform_update(" Fourier transform cancelled.")220 self.transform_update("Transform cancelled.") 214 221 self._transform_btn.SetLabel("Tansform") 215 222 216 223 def transform_update(self, msg=""): 217 224 """ 218 Called from TransformThread to update on status of calculation225 Called from FourierThread to update on status of calculation 219 226 """ 220 227 wx.PostEvent(self._manager.parent, … … 223 230 def transform_complete(self, transform=None): 224 231 """ 225 Called from TransformThread when calculation has completed 226 """ 232 Called from FourierThread when calculation has completed 233 """ 234 self._transform_btn.SetLabel("Tansform") 227 235 if transform is None: 228 236 msg = "Error calculating Transform." 237 if self.transform_type == 'hilbert': 238 msg = "Not yet implemented" 229 239 wx.PostEvent(self._manager.parent, 230 240 StatusEvent(status=msg, info="Error")) … … 236 246 plot_y = transform.y[np.where(transform.x <= 200)] 237 247 self._manager.show_data(Data1D(plot_x, plot_y), TRANSFORM_LABEL) 238 self._transform_btn.SetLabel("Tansform") 239 self._extract_btn.Enable() 248 # Only enable extract params button if a fourier trans. has been done 249 if self.transform_type == 'fourier': 250 self._extract_btn.Enable() 251 else: 252 self._extract_btn.Disable() 240 253 241 254 def extract_parameters(self, event=None): … … 421 434 422 435 # Parameters 423 qbox = wx.StaticBox(self, -1, " Parameters")436 qbox = wx.StaticBox(self, -1, "Input Parameters") 424 437 qbox_sizer = wx.StaticBoxSizer(qbox, wx.VERTICAL) 425 438 qbox_sizer.SetMinSize((_STATICBOX_WIDTH, 75)) … … 497 510 498 511 vbox.Add(qbox_sizer, (1, 0), (1, 1), 512 wx.LEFT | wx.RIGHT | wx.EXPAND | wx.ADJUST_MINSIZE, 15) 513 514 # Transform type 515 transform_box = wx.StaticBox(self, -1, "Transform Type") 516 transform_sizer = wx.StaticBoxSizer(transform_box, wx.VERTICAL) 517 518 radio_sizer = wx.GridBagSizer(5,5) 519 520 fourier_btn = wx.RadioButton(self, -1, "Fourier", name='fourier', 521 style=wx.RB_GROUP) 522 hilbert_btn = wx.RadioButton(self, -1, "Hilbert", name='hilbert') 523 524 fourier_btn.Bind(wx.EVT_RADIOBUTTON, self.radio_changed) 525 hilbert_btn.Bind(wx.EVT_RADIOBUTTON, self.radio_changed) 526 527 radio_sizer.Add(fourier_btn, (0,0), (1,1), wx.LEFT | wx.EXPAND) 528 radio_sizer.Add(hilbert_btn, (0,1), (1,1), wx.RIGHT | wx.EXPAND) 529 530 transform_sizer.Add(radio_sizer, wx.TOP, 0) 531 vbox.Add(transform_sizer, (2, 0), (1, 1), 499 532 wx.LEFT | wx.RIGHT | wx.EXPAND | wx.ADJUST_MINSIZE, 15) 500 533 … … 522 555 outputbox_sizer.Add(output_sizer, wx.TOP, 0) 523 556 524 vbox.Add(outputbox_sizer, ( 2, 0), (1, 1),557 vbox.Add(outputbox_sizer, (3, 0), (1, 1), 525 558 wx.LEFT | wx.RIGHT | wx.EXPAND | wx.ADJUST_MINSIZE, 15) 526 559 … … 547 580 548 581 controlbox_sizer.Add(controls_sizer, wx.TOP | wx.EXPAND, 0) 549 vbox.Add(controlbox_sizer, ( 3, 0), (1, 1),582 vbox.Add(controlbox_sizer, (4, 0), (1, 1), 550 583 wx.LEFT | wx.RIGHT | wx.EXPAND | wx.ADJUST_MINSIZE, 15) 551 584
Note: See TracChangeset
for help on using the changeset viewer.