Exemplo n.º 1
0
 def constructROI(self, start, end):
     if self._roi:
         self._viewBox.removeItem(self._roi)
     dims = end - start
     self._roi = ROI(start, dims, pen={'color': '#00FF00'})
     self._roi.addScaleHandle([0, 0], [1, 1])
     self._roi.addScaleHandle([1, 1], [0, 0])
     self._roi.setZValue(10)
     self._viewBox.addItem(self._roi)
Exemplo n.º 2
0
    def __addROI(self, coords=None):
        """ adds ROIs

        :param coords: roi coordinates
        :type coords: :obj:`list`
                 < [:obj:`float`, :obj:`float`, :obj:`float`, :obj:`float`] >
        """
        if not coords or not isinstance(coords, list) or len(coords) != 4:
            pnt = 10 * len(self.__roi)
            sz = 50
            coords = [pnt, pnt, pnt + sz, pnt + sz]
            spnt = _pg.Point(sz, sz)
        else:
            pnt = _pg.Point(coords[0], coords[1])
            spnt = _pg.Point(coords[2] - coords[0], coords[3] - coords[1])
        self.__roi.append(ROI(pnt, spnt))
        self.__roi[-1].addScaleHandle([1, 1], [0, 0])
        self.__roi[-1].addScaleHandle([0, 0], [1, 1])
        self.__viewbox.addItem(self.__roi[-1])

        self.__rois.coords.append(coords)
Exemplo n.º 3
0
    def __init__(self, parent=None):
        """ constructor

        :param parent: parent object
        :type parent: :class:`PyQt4.QtCore.QObject`
        """
        _pg.GraphicsLayoutWidget.__init__(self, parent)
        #: (:class:`PyQt4.QtGui.QLayout`) the main layout
        self.__layout = self.ci

        #: (:class:`lavuelib.displayParameters.AxesParameters`)
        #:            axes parameters
        self.__lines = displayParameters.CrossLinesParameters()
        #: (:class:`lavuelib.displayParameters.AxesParameters`)
        #:            axes parameters
        self.__axes = displayParameters.AxesParameters()
        #: (:class:`lavuelib.displayParameters.ROIsParameters`)
        #:                rois parameters
        self.__rois = displayParameters.ROIsParameters()
        #: (:class:`lavuelib.displayParameters.CutsParameters`)
        #:                 cuts parameters
        self.__cuts = displayParameters.CutsParameters()
        #: (:class:`lavuelib.displayParameters.IntensityParameters`)
        #:                  intensity parameters
        self.__intensity = displayParameters.IntensityParameters()

        #: (:class:`numpy.ndarray`) data to displayed in 2d widget
        self.__data = None
        #: (:class:`numpy.ndarray`) raw data to cut plots
        self.__rawdata = None

        #: (:class:`pyqtgraph.ImageItem`) image item
        self.__image = _pg.ImageItem()

        #: (:class:`pyqtgraph.ViewBox`) viewbox item
        self.__viewbox = self.__layout.addViewBox(row=0, col=1)
        #: (:obj:`bool`) crooshair locked flag
        self.__crosshairlocked = False
        self.__viewbox.addItem(self.__image)
        #: (:obj:`float`) current x-position
        self.__xdata = 0
        #: (:obj:`float`) current y-position
        self.__ydata = 0
        #: (:obj:`bool`) auto display level flag
        self.__autodisplaylevels = True
        #: (:obj:`bool`) auto down sample
        self.__autodownsample = True
        #: ([:obj:`float`, :obj:`float`]) minimum and maximum intensity levels
        self.__displaylevels = [None, None]

        #: (:class:`PyQt4.QtCore.QSignalMapper`) current roi mapper
        self.__currentroimapper = QtCore.QSignalMapper(self)
        #: (:class:`PyQt4.QtCore.QSignalMapper`) roi region mapper
        self.__roiregionmapper = QtCore.QSignalMapper(self)
        #: (:class:`PyQt4.QtCore.QSignalMapper`) current cut mapper
        self.__currentcutmapper = QtCore.QSignalMapper(self)
        #: (:class:`PyQt4.QtCore.QSignalMapper`) cut region mapper
        self.__cutregionmapper = QtCore.QSignalMapper(self)

        #: (:class:`PyQt4.QtGui.QAction`) set aspect ration locked action
        self.__setaspectlocked = QtGui.QAction(
            "Set Aspect Locked", self.__viewbox.menu)
        self.__setaspectlocked.setCheckable(True)
        if _VMAJOR == '0' and int(_VMINOR) < 10 and int(_VPATCH) < 9:
            self.__viewbox.menu.axes.insert(0, self.__setaspectlocked)
        self.__viewbox.menu.addAction(self.__setaspectlocked)

        #: (:class:`PyQt4.QtGui.QAction`) view one to one pixel action
        self.__viewonetoone = QtGui.QAction(
            "View 1:1 pixels", self.__viewbox.menu)
        self.__viewonetoone.triggered.connect(self._oneToOneRange)
        if _VMAJOR == '0' and int(_VMINOR) < 10 and int(_VPATCH) < 9:
            self.__viewbox.menu.axes.insert(0, self.__viewonetoone)
        self.__viewbox.menu.addAction(self.__viewonetoone)

        #: (:class:`pyqtgraph.AxisItem`) left axis
        self.__leftaxis = _pg.AxisItem('left')
        self.__leftaxis.linkToView(self.__viewbox)
        self.__layout.addItem(self.__leftaxis, row=0, col=0)

        #: (:class:`pyqtgraph.AxisItem`) bottom axis
        self.__bottomAxis = _pg.AxisItem('bottom')
        self.__bottomAxis.linkToView(self.__viewbox)
        self.__layout.addItem(self.__bottomAxis, row=1, col=1)

        self.__layout.scene().sigMouseMoved.connect(self.mouse_position)
        self.__layout.scene().sigMouseClicked.connect(self.mouse_click)

        #: (:class:`pyqtgraph.InfiniteLine`)
        #:                 vertical line of the mouse position
        self.__vLine = _pg.InfiniteLine(
            angle=90, movable=False, pen=(255, 0, 0))
        #: (:class:`pyqtgraph.InfiniteLine`)
        #:                   horizontal line of the mouse position
        self.__hLine = _pg.InfiniteLine(
            angle=0, movable=False, pen=(255, 0, 0))
        self.__viewbox.addItem(self.__vLine, ignoreBounds=True)
        self.__viewbox.addItem(self.__hLine, ignoreBounds=True)

        #: (:obj:`list` <:class:`pyqtgraph.graphicsItems.ROI`>)
        #:            list of roi widgets
        self.__roi = []
        self.__roi.append(ROI(0, _pg.Point(50, 50)))
        self.__roi[0].addScaleHandle([1, 1], [0, 0])
        self.__roi[0].addScaleHandle([0, 0], [1, 1])
        self.__viewbox.addItem(self.__roi[0])
        self.__roi[0].hide()

        #: (:obj:`list` <:class:`pyqtgraph.graphicsItems.ROI`>)
        #:        list of cut widgets
        self.__cut = []
        self.__cut.append(SimpleLineROI([10, 10], [60, 10], pen='r'))
        self.__viewbox.addItem(self.__cut[0])
        self.__cut[0].hide()

        self.__setaspectlocked.triggered.connect(self.emitAspectLockedToggled)

        self.__roiregionmapper.mapped.connect(self.changeROIRegion)
        self.__currentroimapper.mapped.connect(self._emitROICoordsChanged)
        self._getROI().sigHoverEvent.connect(
            self.__currentroimapper.map)
        self._getROI().sigRegionChanged.connect(
            self.__roiregionmapper.map)
        self.__currentroimapper.setMapping(self._getROI(), 0)
        self.__roiregionmapper.setMapping(self._getROI(), 0)

        self.__cutregionmapper.mapped.connect(self.changeCutRegion)
        self.__currentcutmapper.mapped.connect(self._emitCutCoordsChanged)
        self._getCut().sigHoverEvent.connect(
            self.__currentcutmapper.map)
        self._getCut().sigRegionChanged.connect(
            self.__cutregionmapper.map)
        self.__currentcutmapper.setMapping(self._getCut(), 0)
        self.__cutregionmapper.setMapping(self._getCut(), 0)