source: sasview/src/sas/sascalc/corfunc/transform_thread.py @ 457f735

ESS_GUIESS_GUI_DocsESS_GUI_batch_fittingESS_GUI_bumps_abstractionESS_GUI_iss1116ESS_GUI_iss879ESS_GUI_iss959ESS_GUI_openclESS_GUI_orderingESS_GUI_sync_sascalcmagnetic_scattrelease-4.2.2ticket-1009ticket-1094-headlessticket-1242-2d-resolutionticket-1243ticket-1249ticket885unittest-saveload
Last change on this file since 457f735 was 457f735, checked in by lewis, 7 years ago

Refactor in preparation for 3D transform

  • Property mode set to 100644
File size: 2.1 KB
Line 
1from sas.sascalc.data_util.calcthread import CalcThread
2from sas.sascalc.dataloader.data_info import Data1D
3from scipy.fftpack import dct
4import numpy as np
5from time import sleep
6
7class FourierThread(CalcThread):
8    def __init__(self, raw_data, extrapolated_data, bg, updatefn=None,
9        completefn=None):
10        CalcThread.__init__(self, updatefn=updatefn, completefn=completefn)
11        self.data = raw_data
12        self.background = bg
13        self.extrapolation = extrapolated_data
14
15    def compute(self):
16        qs = self.extrapolation.x
17        iqs = self.extrapolation.y
18        q = self.data.x
19        background = self.background
20
21        self.ready(delay=0.0)
22        self.update(msg="Starting Fourier transform.")
23        self.ready(delay=0.0)
24        if self.isquit():
25            return
26        try:
27            gamma1 = dct((iqs-background)*qs**2)
28            gamma1 = gamma1 / gamma1.max()
29        except:
30            self.update(msg="Fourier transform failed.")
31            self.complete(transform=None)
32            return
33        if self.isquit():
34            return
35        self.update(msg="Fourier transform completed.")
36
37        xs = np.pi*np.arange(len(qs),dtype=np.float32)/(q[1]-q[0])/len(qs)
38        transform1 = Data1D(xs, gamma1)
39        transform3 = Data1D()
40
41        transforms = (transform1, transform3)
42
43        self.complete(transforms=transforms)
44
45class HilbertThread(CalcThread):
46    def __init__(self, raw_data, extrapolated_data, bg, updatefn=None,
47        completefn=None):
48        CalcThread.__init__(self, updatefn=updatefn, completefn=completefn)
49        self.data = raw_data
50        self.background = bg
51        self.extrapolation = extrapolated_data
52
53    def compute(self):
54        qs = self.extrapolation.x
55        iqs = self.extrapolation.y
56        q = self.data.x
57        background = self.background
58
59        self.ready(delay=0.0)
60        self.update(msg="Starting Hilbert transform.")
61        self.ready(delay=0.0)
62        if self.isquit():
63            return
64
65        # TODO: Implement hilbert transform
66
67        self.update(msg="Hilbert transform completed.")
68
69        self.complete(transform=None)
Note: See TracBrowser for help on using the repository browser.