Beispiel #1
0
    def set_data_test(self, data_shape='3D'):

        x = utils.linspace_step(0, 20, 1)
        y = utils.linspace_step(0, 30, 1)
        t = utils.linspace_step(0, 200, 1)
        z = utils.linspace_step(0, 200, 1)
        datas = np.zeros((len(y), len(x), len(t), len(z)))
        amp = utils.gauss2D(x, 7, 5, y, 12, 10)
        for indx in range(len(x)):
            for indy in range(len(y)):
                datas[indy, indx, :, :] = amp[indy, indx] * (
                            utils.gauss2D(z, 50 + indx * 2, 20, t, 50 + 3 * indy, 30) + np.random.rand(len(t),
                                                                                                       len(z)) / 10)

        nav_axis = dict(nav00=Axis(data=y, nav_index=0, label='y_axis', units='yunits'),
                    nav01=Axis(data=x, nav_index=1, label='x_axis', units='xunits'),
                    nav02=Axis(data=t, nav_index=2, label='t_axis', units='tunits'),
                    nav03=Axis(data=z, nav_index=3, label='z_axis', units='zunits'))

        if data_shape == '4D':
            nav_axes = [2, 3]
            self.show_data(datas, temp_data=False, nav_axes=nav_axes, **nav_axis)
        elif data_shape == '3D':
            self.show_data(np.sum(datas, axis=3), temp_data=False, nav_axes=[0, 1], **nav_axis)
        elif data_shape == '2D':
            self.show_data(np.sum(datas, axis=(2, 3)), **nav_axis)
        elif data_shape == '1D':
            self.show_data(np.sum(datas, axis=(1, 2, 3)), **nav_axis)
Beispiel #2
0
def main_controller():
    app = QtWidgets.QApplication(sys.argv)
    form = QtWidgets.QWidget()
    Nx = 100
    Ny = 200
    data_random = np.random.normal(size=(Ny, Nx))
    x = np.linspace(0, Nx - 1, Nx)
    y = np.linspace(0, Ny - 1, Ny)
    from pymodaq.daq_utils.daq_utils import gauss2D

    data_red = 3 * gauss2D(x, 0.2 * Nx, Nx / 5, y, 0.3 * Ny, Ny / 5, 1,
                           90) * np.sin(x / 5)**2 + 0.1 * data_random
    # data_red = pg.gaussianFilter(data_red, (2, 2))
    data_green = 24 * gauss2D(x, 0.2 * Nx, Nx / 5, y, 0.3 * Ny, Ny / 5, 1, 0)
    # data_green = pg.gaussianFilter(data_green, (2, 2))
    data_green[70:80, 7:12] = np.nan

    data_blue = 10 * gauss2D(x, 0.7 * Nx, Nx / 5, y, 0.2 * Ny, Ny / 5, 1)
    data_blue = pg.gaussianFilter(data_blue, (2, 2))

    prog = Viewer2D(form)
    # prog.set_axis_scaling(scaling_options=utils.ScalingOptions(
    #     scaled_xaxis=utils.ScaledAxis(label="eV", units=None, offset=100, scaling=0.1),
    #     scaled_yaxis=utils.ScaledAxis(label="time", units='s', offset=-20, scaling=2)))
    form.show()
    #prog.auto_levels_action_sym.trigger()
    #prog.view.actions['autolevels'].trigger()

    data_spread = np.load('../../../resources/triangulation_data.npy')
    # data_shuffled = data
    # np.random.shuffle(data_shuffled)
    # prog.show_data(utils.DataFromPlugins(name='mydata', distribution='spread',
    #                                      data=[data, data_shuffled]))
    prog.view.get_action('histo').trigger()
    prog.view.get_action('autolevels').trigger()

    prog.show_data(
        utils.DataFromPlugins(name='mydata',
                              distribution='uniform',
                              data=[data_red, data_green]))
    #prog.show_data(utils.DataFromPlugins(name='mydata', distribution='spread', data=[data_spread]))

    #prog.ROI_select_signal.connect(print_roi_select)
    #prog.view.get_action('ROIselect').trigger()
    #prog.view.ROIselect.setSize((20, 35))
    #prog.view.ROIselect.setPos((45, 123))
    prog.show_roi_target(True)
    prog.move_scale_roi_target((50, 40), (20, 20))

    QtWidgets.QApplication.processEvents()

    # prog.setImage(data_spread=data)
    #app.processEvents()

    sys.exit(app.exec_())
Beispiel #3
0
    def set_Mock_data(self):
        """
            | Set the x_axis and y_axis with a linspace distribution from settings parameters.
            |

            Once done, set the data mock with parameters :
                * **Amp** : The amplitude
                * **x0** : the origin of x
                * **dx** : the derivative x pos
                * **y0** : the origin of y
                * **dy** : the derivative y pos
                * **n** : ???
                * **amp_noise** : the noise amplitude

            Returns
            -------
                The computed data mock.
        """

        if self.settings.child('ROIselect','use_ROI').value():
            x_axis=np.linspace(self.settings.child('ROIselect','x0').value(),self.settings.child('ROIselect','x0').value()+self.settings.child('ROIselect','width').value(),
                               self.settings.child('ROIselect','width').value(),endpoint=False)
            y_axis=np.linspace(self.settings.child('ROIselect','y0').value(),self.settings.child('ROIselect','y0').value()+self.settings.child('ROIselect','height').value(),
                               self.settings.child('ROIselect','height').value(),endpoint=False)
            data_mock=self.settings.child(('Amp')).value()*(mylib.gauss2D(x_axis,self.settings.child(('x0')).value(),self.settings.child(('dx')).value(),
                               y_axis,self.settings.child(('y0')).value(),self.settings.child(('dy')).value(),self.settings.child(('n')).value()))+self.settings.child(('amp_noise')).value()*np.random.rand(len(y_axis),len(x_axis))

            for indy in range(data_mock.shape[0]):
                data_mock[indy, :] = data_mock[indy, :] * np.sin(x_axis / 8) ** 2
            data_mock = np.roll(data_mock, self.ind_data * self.settings.child(('rolling')).value(), axis=1)

            try:
                self.image[self.settings.child('ROIselect','y0').value():self.settings.child('ROIselect','y0').value()+self.settings.child('ROIselect','height').value(),
                           self.settings.child('ROIselect','x0').value():self.settings.child('ROIselect','x0').value()+self.settings.child('ROIselect','width').value()]=data_mock
            except Exception as e:
                self.emit_status(ThreadCommand('Update_Status',[getLineInfo()+ str(e),'log']))
        else:
            x_axis=np.linspace(0,self.settings.child(('Nx')).value(),self.settings.child(('Nx')).value(),endpoint=False)
            y_axis=np.linspace(0,self.settings.child(('Ny')).value(),self.settings.child(('Ny')).value(),endpoint=False)
            data_mock=self.settings.child(('Amp')).value()*(mylib.gauss2D(x_axis,self.settings.child(('x0')).value(),self.settings.child(('dx')).value(),
                               y_axis,self.settings.child(('y0')).value(),self.settings.child(('dy')).value(),self.settings.child(('n')).value()))+self.settings.child(('amp_noise')).value()*np.random.rand(len(y_axis),len(x_axis))

            for indy in range(data_mock.shape[0]):
                data_mock[indy,:] = data_mock[indy,:]* np.sin(x_axis / 4) ** 2
            data_mock = np.roll(data_mock, self.ind_data * self.settings.child(('rolling')).value(), axis=1)
            self.image = data_mock



        self.ind_data += 1

        QThread.msleep(100)

        return self.image
Beispiel #4
0
def init_data():
    Nx = 100
    Ny = 200
    data_random = np.random.normal(size=(Ny, Nx))
    x = np.linspace(0, Nx - 1, Nx)
    y = np.linspace(0, Ny - 1, Ny)
    from pymodaq.daq_utils.daq_utils import gauss2D

    data_red = 3 * gauss2D(x, 0.2 * Nx, Nx / 5, y, 0.3 * Ny, Ny / 5, 1,
                           90) * np.sin(x / 5)**2
    data_green = 24 * gauss2D(x, 0.2 * Nx, Nx / 5, y, 0.3 * Ny, Ny / 5, 1, 0)
    data_blue = 10 * gauss2D(x, 0.7 * Nx, Nx / 5, y, 0.2 * Ny, Ny / 5, 1)
    data_blue = pg.gaussianFilter(data_blue, (2, 2))
    here = Path(__file__).parent
    data_spread = np.load(str(here.joinpath('triangulation_data.npy')))
    return data_red, data_green, data_blue, data_spread
Beispiel #5
0
 def set_2D_Mock_data(self):
     self.x_axis = np.linspace(0, 50, 50, endpoint=False)
     self.y_axis = np.linspace(0, 30, 30, endpoint=False)
     self.data_mock = 10 * gauss2D(self.x_axis, 20, 10, self.y_axis, 15, 7,
                                   1) + 2 * np.random.rand(
                                       len(self.y_axis), len(self.x_axis))
     self.data_mock = self.data_mock.astype(
         self.settings.child(('data_type')).value())
def random_hypergaussians2D(xy, coeff=1):
    x, y = xy
    if not hasattr(x, '__len__'):
        x = [x]
    if not hasattr(y, '__len__'):
        y = [y]
    signal = np.zeros((len(y), len(x)))
    for ind in range(Nstruct):
        signal += amp[ind] * utils.gauss2D(x, x0s[ind], coeff * dx[ind], y, y0s[ind], coeff * dy[ind], 2)
    signal += 0.1 * np.random.rand(len(y), len(x))
    return signal
Beispiel #7
0
    def set_data_test(self,data_shape='3D'):


        x=utils.linspace_step(0,20,1)
        y=utils.linspace_step(0,30,1)
        t=utils.linspace_step(0,200,1)
        z=utils.linspace_step(0,200,1)
        datas=np.zeros((len(y),len(x),len(t),len(z)))
        amp=utils.gauss2D(x,7,5,y,12,10)
        for indx in range(len(x)):
            for indy in range(len(y)):
                datas[indy,indx,:,:]=amp[indy,indx]*(utils.gauss2D(z,50+indx*2,20,t,50+3*indy,30)+np.random.rand(len(t),len(z))/10)

        if data_shape=='4D':
            self.show_data(datas,temp_data=False,nav_axes=[2,3])
        elif data_shape=='3D':
            self.show_data(np.sum(datas,axis=3),temp_data=False,nav_axes=[0,1])
        elif data_shape=='2D':
            self.show_data(np.sum(datas,axis=(2,3)))
        elif data_shape=='1D':
            self.show_data(np.sum(datas,axis=(1,2,3)))
Beispiel #8
0
 def test_gauss2D(self):
     x = utils.linspace_step(-1.0, 1, 0.1)
     x0 = -0.55
     dx = 0.1
     y = utils.linspace_step(-2.0, -1, 0.1)
     y0 = -1.55
     dy = 0.2
     n = 1
     assert np.all(
         utils.gauss2D(x, x0, dx, y, y0, dy, n) == pytest.approx(
             np.transpose(
                 np.outer(utils.gauss1D(x, x0, dx, n),
                          utils.gauss1D(y, y0, dy, n)))))
     assert np.all(
         utils.gauss2D(x, x0, dx, y, y0, dy, n) == pytest.approx(
             utils.gauss2D(x, x0, dx, y, y0, dy, n, 180)))
     assert np.all(
         utils.gauss2D(x, x0, dx, y, y0, dy, n, -90) == pytest.approx(
             utils.gauss2D(x, x0, dx, y, y0, dy, n, 90)))
     assert np.all(
         utils.gauss2D(x, x0, dx, y, y0, dy, n) == pytest.approx(
             utils.gauss2D(x, x0, dy, y, y0, dx, n, 90)))
    def set_Mock_data(self):
        """
            | Set the x_axis and y_axis with a linspace distribution from settings parameters.
            |

            Once done, set the data mock with parameters :
                * **Amp** : The amplitude
                * **x0** : the origin of x
                * **dx** : the derivative x pos
                * **y0** : the origin of y
                * **dy** : the derivative y pos
                * **n** : ???
                * **amp_noise** : the noise amplitude

            Returns
            -------
                The computed data mock.
        """
        image = np.zeros(
            (self.settings.child('spatial_settings', 'Ny').value(),
             self.settings.child('spatial_settings', 'Nx').value(),
             self.settings.child('temp_settings', 'Nt').value()))

        self.time_axis = np.linspace(
            0,
            self.settings.child('temp_settings', 'Nt').value(),
            self.settings.child('temp_settings', 'Nt').value(),
            endpoint=False)

        if self.settings.child('ROIselect', 'use_ROI').value():
            self.x_axis = np.linspace(
                self.settings.child('ROIselect', 'x0').value(),
                self.settings.child('ROIselect', 'x0').value() +
                self.settings.child('ROIselect', 'width').value(),
                self.settings.child('ROIselect', 'width').value(),
                endpoint=False)
            self.y_axis = np.linspace(
                self.settings.child('ROIselect', 'y0').value(),
                self.settings.child('ROIselect', 'y0').value() +
                self.settings.child('ROIselect', 'height').value(),
                self.settings.child('ROIselect', 'height').value(),
                endpoint=False)

            data_mock = self.settings.child(
                'spatial_settings', 'amp').value() * (utils.gauss2D(
                    self.x_axis,
                    self.settings.child('spatial_settings', 'x0').value(),
                    self.settings.child('spatial_settings',
                                        'dx').value(), self.y_axis,
                    self.settings.child('spatial_settings', 'y0').value(),
                    self.settings.child('spatial_settings', 'dy').value(),
                    self.settings.child('spatial_settings', 'n').value()
                )) + self.settings.child(
                    ('amp_noise')).value() * np.random.rand(
                        len(self.y_axis), len(self.x_axis))

            for indy in range(data_mock.shape[0]):
                data_mock[indy, :] = data_mock[indy, :] * np.sin(
                    self.x_axis / self.settings.child('spatial_settings',
                                                      'lambda').value())**2
            data_mock = np.roll(data_mock,
                                self.ind_data *
                                self.settings.child('rolling').value(),
                                axis=1)

            try:
                self.image[
                    self.settings.child('ROIselect', 'y0').value():
                    self.settings.child('ROIselect', 'y0').value() + self.settings.child('ROIselect', 'height').value(),
                    self.settings.child('ROIselect', 'x0').value():
                    self.settings.child('ROIselect', 'x0').value() + self.settings.child('ROIselect', 'width').value()] \
                    = data_mock

            except Exception as e:
                self.emit_status(
                    ThreadCommand('Update_Status',
                                  [getLineInfo() + str(e), 'log']))
        else:
            self.x_axis = np.linspace(
                0,
                self.settings.child('spatial_settings', 'Nx').value(),
                self.settings.child('spatial_settings', 'Nx').value(),
                endpoint=False)
            self.y_axis = np.linspace(
                0,
                self.settings.child('spatial_settings', 'Ny').value(),
                self.settings.child('spatial_settings', 'Ny').value(),
                endpoint=False)

            data_mock = self.settings.child('spatial_settings', 'amp').value() * (
                utils.gauss2D(self.x_axis, self.settings.child('spatial_settings', 'x0').value(),
                              self.settings.child('spatial_settings', 'dx').value(),
                              self.y_axis, self.settings.child('spatial_settings', 'y0').value(),
                              self.settings.child('spatial_settings', 'dy').value(),
                              self.settings.child('spatial_settings', 'n').value())) + \
                self.settings.child(('amp_noise')).value() * \
                np.random.rand(len(self.y_axis), len(self.x_axis))

            for indy in range(data_mock.shape[0]):
                data_mock[indy, :] = data_mock[indy, :] * np.sin(
                    self.x_axis / self.settings.child('spatial_settings',
                                                      'lambda').value())**2

            ind = 0
            for indy in range(data_mock.shape[0]):
                for indx in range(data_mock.shape[1]):
                    image[indy, indx, :] = data_mock[indy, indx] * \
                        utils.gauss1D(self.time_axis, self.settings.child('temp_settings', 't0').value(),
                                      self.settings.child('temp_settings', 'dt').value(),
                                      self.settings.child('temp_settings', 'n').value()) * \
                        np.sin(np.roll(self.time_axis, ind) / 4) ** 2
                    ind += 1

            image = np.roll(image,
                            self.ind_data * self.settings.child(
                                ('rolling')).value(),
                            axis=1)

            self.image = image

        self.ind_data += 1

        QThread.msleep(100)

        return self.image

if __name__ == '__main__':
    app = QtWidgets.QApplication(sys.argv)
    Form=DockArea()
    Form=QtWidgets.QWidget()
    
    prog = Viewer2D(Form);
    prog.set_scaling_axes(scaling_options=dict(scaled_xaxis=dict(label="eV",units=None,offset=20,scaling=2),scaled_yaxis=dict(label="time",units='s',offset=-10,scaling=0.1)))
    Nx=100;
    Ny=200
    data_random = pg.np.random.normal(size=(Ny, Nx))
    x=pg.np.linspace(0,Nx-1,Nx)
    y=pg.np.linspace(0,Ny-1,Ny)
    from pymodaq.daq_utils.daq_utils import  gauss2D
    data_red=data_random+3*gauss2D(x,0.2*Nx,Nx/5,y,0.3*Ny,Ny/5,1)
    data_red = pg.gaussianFilter(data_red, (2, 2))
    data_green=data_random+3*gauss2D(x,0.6*Nx,Nx/5,y,0.6*Ny,Ny/5,1)
    data_green = pg.gaussianFilter(data_green, (2, 2))
    data_blue=data_random+3*gauss2D(x,0.7*Nx,Nx/5,y,0.2*Ny,Ny/5,1)
    data_blue = pg.gaussianFilter(data_blue, (2, 2))
    
    prog.setImage(data_blue=data_blue,data_green=None,data_red=data_red)
    
    prog.add_ROI('ElipseROI')
    
    #prog.ui.imag_blue.set

    #prog.ui.img_blue.setScale(2)
    #import hyperspy.api as hs
Beispiel #11
0
    -------
    ind_min : index of the minimum value
    min_val : minimum value
    """
    ind_min = np.argmax(x, axis=axis)
    min_val = np.min(x, axis=axis)
    return ind_min, min_val


if __name__ == '__main__':
    from pymodaq.daq_utils import daq_utils as utils
    import matplotlib.pyplot as plt

    x = random_step(00, 100, 5)
    y = random_step(00, 100, 5)
    g2 = utils.gauss2D(x, 35, 15, y, 55, 20, 1)
    (xlin, g2_interp) = linspace_this_image(x, g2, axis=1, Npts=100)
    (ylin, g2_interp_both) = linspace_this_image(y, g2_interp, axis=0, Npts=100)
    plt.figure('gauss2D')
    plt.subplot(221)
    plt.pcolormesh(x, y, g2)
    plt.subplot(222)
    plt.pcolormesh(xlin, y, g2_interp)
    plt.subplot(223)
    plt.pcolormesh(xlin, ylin, g2_interp_both)

    plt.show()

    x_c, y_c, M_c = crop_array_to_axis(x, y, g2, [20, 60, 40, 80])
    plt.figure('cropped')
    plt.subplot(121)
Beispiel #12
0
 def set_2D_Mock_data(self):
     self.x_axis = np.linspace(0, 50, 50, endpoint=False)
     self.y_axis = np.linspace(0, 30, 30, endpoint=False)
     self.data_mock = 10 * gauss2D(self.x_axis, 20, 10, self.y_axis, 15, 7,
                                   1) + 2 * np.random.rand(
                                       len(self.y_axis), len(self.x_axis))
Beispiel #13
0

if __name__ == '__main__':
    from pymodaq.QtDesigner_Ressources import QtDesigner_ressources_rc

    from pymodaq.daq_utils.gui_utils import DockArea
    from pymodaq.daq_utils.daq_utils import ScalingOptions, ScaledAxis, Axis
    import sys
    import numpy as np

    app = QtWidgets.QApplication(sys.argv)
    area = DockArea()
    win = QtWidgets.QMainWindow()
    win.setCentralWidget(area)
    viewer = ViewerPointList(area)

    Nx = 100
    Ny = 200
    x = (np.linspace(0, Nx - 1, Nx) + 100) / 2
    y = (np.linspace(0, Ny - 1, Ny) - 10) * 2
    from pymodaq.daq_utils.daq_utils import gauss2D

    data_red = 3 * gauss2D(x, 0.2 * Nx, Nx / 5, y, 0.3 * Ny, Ny / 5, 1, 90)

    viewer.setData(data_red)
    viewer.setXaxis(Axis(data=x, label='This is x axis', units='au'))
    viewer.setYaxis(Axis(data=y, label='This is y axis', units='au'))
    win.show()
    app.processEvents()
    sys.exit(app.exec_())