コード例 #1
0
def getpgcmap(cmp='BuRd'):
   import pyqtgraph as pg
   import numpy as np
   if cmp =='bryw':
      STEPS = np.array([0.0, 0.2, 0.6, 1.0])
      CLRS =           ['k', 'r', 'y', 'w']
      ## Create a ColorMap
      clrmp = pg.ColorMap(STEPS, np.array([pg.colorTuple(pg.Color(c)) for c in CLRS]))
      ## Get the LookupTable
      lut = clrmp.getLookupTable()
   elif cmp == 'TrmBlk':
      pos = np.array([0.0, 0.5, 1.0])
      color = np.array([[0,0,0,255], [255,128,0,255], [255,255,0,255]], dtype=np.ubyte)
      map = pg.ColorMap(pos, color)
      lut = map.getLookupTable(0.0, 1.0, 256)
   elif cmp == 'RdBu':
      pos = np.array([0.0,0.5,1.0])
      color = np.array([[255,0,0,0],[255,255,255,255],[0,0,255,0]],dtype=np.ubyte)
      map = pg.ColorMap(pos,color)
      lut = map.getLookupTable(0.0,1.0,256)
   elif cmp == 'BuRd':
      pos = np.array([0.0,0.5,1.0])
      color = np.array([[0,0,255,0],[255,255,255,255],[255,0,0,0]],dtype=np.ubyte)
      map = pg.ColorMap(pos,color)
      lut = map.getLookupTable(0.0,1.0,256)
   return lut
コード例 #2
0
ファイル: HyperSpecApp.py プロジェクト: Crobisaur/HyperSpec
    def __init__(self, parent=None):
        pyqtgraph.setConfigOption('background', 'k')  #before loading widget
        super(HyperSpecApp, self).__init__(parent)
        self.setupUi(self)
        self.updateBtn.clicked.connect(self.update)

        #self.view = pyqtgraph.ViewBox(self.gView0)
        #self.scene = pyqtgraph.ImageItem(self.view)
        STEPS = np.array([0.0, 0.2, 0.6, 1.0])
        CLRS = ['k', 'r', 'y', 'w']
        clrmp = pyqtgraph.ColorMap(
            STEPS,
            np.array([pyqtgraph.colorTuple(pyqtgraph.Color(c)) for c in CLRS]))
        data = np.random.normal(size=(100, 200, 200))

        #imv = pyqtgraph.image(data)
        self.ImageView2.setImage(data)

        #self.ImageView2.ui.histogram.gradient.setColorMap(clrmp)

        #self.img_array = np.zeros((1000, CHUNKSZ / 2 + 1))

        # bipolar colormap

        #pos = np.array([0., 1., 0.5, 0.25, 0.75])
        #color = np.array([[0, 255, 255, 255], [255, 255, 0, 255], [0, 0, 0, 255], (0, 0, 255, 255), (255, 0, 0, 255)],
        #                         dtype=np.ubyte)
        #cmap = pyqtgraph.ColorMap(pos, color)
        #lut = cmap.getLookupTable(0.0, 1.0, 256)
        #self.img.setLookupTable(lut)

        self.pltView1.plotItem.showGrid(True, True, 0.7)
        self.pltView2.plotItem.showGrid(True, True, 0.7)
コード例 #3
0
    def init_ui(self):
        """"""
        from vnpy.app.realtime_monitor.ui.baseQtItems import MarketDataChartWidget
        self.setWindowTitle(self.title)
        self.resize(1300, 800)
        vbox = QtWidgets.QVBoxLayout()
        klineWidget = MarketDataChartWidget()
        klineWidget.update_all(self.marketData, self.tradeData, [])

        if not self.record_df.empty:
            record = self.record_df.asof(
                klineWidget.dt_ix_map.keys()).fillna(0)
            ixs = []
            for _dt in record.index:
                ixs.append(klineWidget.dt_ix_map[_dt])

            record.index = ixs

            candle = klineWidget.get_plot('candle')
            for n, s in record.items():
                c = pg.PlotCurveItem()
                candle.addItem(c)
                h = sha256()
                h.update(n.encode())
                c.setData(s.index.values,
                          s.values,
                          pen=pg.Color(int(h.hexdigest(), base=16)))

        vbox.addWidget(klineWidget)

        self.setLayout(vbox)
コード例 #4
0
ファイル: Current.py プロジェクト: thulium-lab/thulium-main
    def plotPulses(self, t_start, t_end):
        # print('PlotCurrents')
        self.clear()  # clear plot
        self.setBackground('w')
        # self.s
        d_plot = self.addPlot()
        d_plot.addLegend()
        d_plot.getAxis('left').setPen(pg.Color('k'))
        d_plot.getAxis('bottom').setPen(pg.Color('k'))
        d_plot.showGrid(x=True)
        digital_list = []  # list of active digital channels
        # print("Current channels_data", self.parent.channels_data)
        t_first = min(
            min([1000] + [x[0] for x in value if x[0] > 0])
            for name, value in self.parent.channels_data.items()
            if 'C' in name)
        t_last = t_end
        # t_last = max(max(x[0] for x in value if x[0] > 0) for name, value in
        #               self.globals['pulses'].items() if 'D' in name and  len(value)>1) + 10
        digital_counter = 0
        for name in sorted(self.parent.channels_data.keys(), reverse=True):
            if 'C' not in name:
                continue
            digital_list.append(name)
            value = self.parent.channels_data[name]
            xx = []
            yy = []

            # construct points to show
            for i, point in enumerate(value):
                if i == 0:
                    xx.append(t_first - (100 if t_first > 100 else t_first))
                    yy.append(point[1])
                    continue
                # if not i == len(value) - 1:
                xx.append(point[0])
                yy.append(value[i - 1][1])
                xx.append(point[0])
                yy.append(point[1])
            xx.append(t_last)
            yy.append(point[1])
            d_plot.plot(np.array(xx),
                        np.array(yy),
                        pen=pg.mkPen(pg.intColor(digital_counter, hues=5),
                                     width=2),
                        name=name)  # plot data
            digital_counter += 1
コード例 #5
0
    def scanStarted(self):
        self.new_scan_started = False  # flag to handle new scanse in series
        self.dataD = {}
        self.folder = self.globals['current_measurement_folder']
        self.meas_type, self.conf_params, self.x_lbl, self.y_lbl, self.xaxis_calib = impr.get_x_calibration(
            self.folder, [])
        # if self.meas_type =='T':
        #     self.fit_data_index=2
        # else:
        #     self.fit_data_index=0
        self.fit_data_index = int(self.index_box.currentText())

        self.single_meas_plot.setLabel('left', text=self.y_lbl)
        self.single_meas_plot.setLabel('bottom', text=self.x_lbl)
        self.single_meas_plot.setTitle(self.folder.split('/')[-1],
                                       color=pg.Color('k'))
        self.curve1.setData([], [])
        self.curve2.setData([], [])
        self.curve3.setData([], [])
        self.curve4.setData([], [])
        self.single_meas_plot.removeItem(self.plot_info)
        self.single_meas_plot.setXRange(
            self.xaxis_calib(min(self.globals['active_params_list'][0][0])),
            self.xaxis_calib(max(self.globals['active_params_list'][0][0])))
コード例 #6
0
from misura.canon.indexer import SharedFile
from misura.canon.reference import get_node_reference

try:
    import pyqtgraph as pg
    import pyqtgraph.opengl as gl
except:
    pg = False
    gl = False

STEPS = np.array([0.0, 0.33, 0.66, 1.0])
CLRS = ['b', 'r', 'y', 'w']

if pg:
    clrmp = pg.ColorMap(STEPS,
                        np.array([pg.colorTuple(pg.Color(c)) for c in CLRS]))


#TODO: add decoding
def read_file(profile, start=3500, end=-1, max_layers=1000, cut=0):
    xs = []
    ys = []
    zs = []
    colors = []

    c = 0.
    n = len(profile)
    if end < 0:
        end += n
    n = end - start + 1
    step = max(n // max_layers, 1)
コード例 #7
0
ファイル: AnalogIN.py プロジェクト: thulium-lab/thulium-main
    def plotPulses(self, t_start, t_end):
        print('PlotAnalogIn')
        self.clear()  # clear plot
        self.setBackground('w')
        # self.s
        d_plot = self.addPlot()
        d_plot.getAxis('left').setPen(pg.Color('k'))
        d_plot.getAxis('bottom').setPen(pg.Color('k'))
        d_plot.showGrid(x=True)
        digital_height = 1.2  # place for each curve of height=1graphic
        digital_counter = 0  # number of plotted channel
        digital_list = []  # list of active digital channels
        # print(self.globals["pulses"])
        if self.parent.channels_data == {}:
            return
        t_first = min(
            min(x[0] for x in value if x[0] > 0)
            for name, value in self.parent.channels_data.items()
            if 'I' in name)
        t_last = t_end
        # t_last = max(max(x[0] for x in value if x[0] > 0) for name, value in
        #               self.globals['pulses'].items() if 'D' in name and  len(value)>1) + 10
        pulse_counter = 0
        for name in sorted(self.parent.channels_data.keys(), reverse=True):
            if 'I' not in name:
                continue
            digital_list.append(name)
            value = self.parent.channels_data[name]

            # construct points to show
            for i, pulse in enumerate(value):
                xx = [
                    t_first - (100 if t_first > 100 else t_first), pulse[0],
                    pulse[0], pulse[1], pulse[1], t_last - t_start
                ]
                yy = [0, 0, 1, 1, 0, 0]
                # xx.append(t_first-(100 if t_first > 100 else t_first))
                # yy.append(0)
                # xx.append(pulse[0])
                # yy.append(1)
                # xx.append(pulse[1])
                # yy.append(0)
                # xx.append(t_last-t_start)
                # yy.append(0)
                d_plot.plot(np.array(xx),
                            np.array(yy) + digital_counter * digital_height,
                            pen=pg.mkPen(pg.intColor(pulse_counter),
                                         width=2))  # plot data
                pulse_counter += 1
            d_plot.plot(np.array(xx),
                        np.ones_like(xx) * digital_counter * digital_height,
                        pen=pg.mkPen(width=0.5,
                                     style=Qt.DashLine))  # plot zero
            digital_counter += 1
        # set ticks names

        tick_names = digital_list
        d_plot.getAxis('left').setTicks([
            list(
                zip((np.arange(len(digital_list)) + 1 / 2) * digital_height,
                    tick_names))
        ])
コード例 #8
0
    def __init__(self, parent=None, signals=None, globals=None):
        super().__init__()
        self.dataD = {}
        self.fits_list = []
        self.mdb_client = MongoClient(
            'mongodb://192.168.1.59:27017/')  # or IP of MongoDB server
        self.meas_database = self.mdb_client.measData.meas_data
        self.cb_axis_items = ['fit1D_x', 'fit1D_y', 'fit2D']
        self.cb_index_items = ['0', '1', '2', '3', '4']
        self.parent = parent
        self.signals = signals
        self.globals = globals
        self.signals.scanStarted.connect(self.scanStarted)
        self.signals.singleScanFinished.connect(self.onSingleScanFinished)
        self.signals.imageProcessed.connect(
            self.newDataArrived
        )  # replace signal by one emmited when image processing is over

        self.min_n_to_avr = 3  # minimal number of good images to start everaging

        main_layout = QHBoxLayout()

        info_layout = QVBoxLayout()
        info_layout.addWidget(QLabel('Fit'))
        self.axis_box = QComboBox()
        self.axis_box.addItems(self.cb_axis_items)
        self.axis_box.setCurrentIndex(1)
        self.axis_box.currentIndexChanged.connect(self.onFitParamChanged)
        info_layout.addWidget(self.axis_box)

        info_layout.addWidget(QLabel('Index'))
        self.index_box = QComboBox()
        self.index_box.addItems(self.cb_index_items)
        self.index_box.setCurrentIndex(0)
        self.index_box.currentIndexChanged.connect(self.onFitParamChanged)
        info_layout.addWidget(self.index_box)

        info_layout.addWidget(QLabel('Fit_func'))
        self.fit_func_box = QComboBox()
        self.fit_func_box.addItems(
            [s for s in dir(fit_func_lib) if s[0] != '_'])
        self.fit_func_box.setCurrentText('gaussian2')
        self.fit_func_box.currentIndexChanged.connect(self.onFitParamChanged)
        info_layout.addWidget(self.fit_func_box)

        info_layout.addWidget(QLabel('p0'))
        self.p0_line = QLineEdit()
        self.p0_line.setMaximumWidth(200)
        self.p0_line.editingFinished.connect(self.p0Edited)
        info_layout.addWidget(self.p0_line)

        info_layout.addWidget(QLabel('drop points (by #)'))
        self.drop_points_line = QLineEdit()
        self.drop_points_line.setMaximumWidth(200)
        self.drop_points_line.editingFinished.connect(self.dropPointsEdited)
        info_layout.addWidget(self.drop_points_line)

        info_layout.addStretch(1)

        main_layout.addLayout(info_layout)
        self.single_meas_plot = pg.PlotWidget(background='w',
                                              pen=pg.Color('k'))
        # self.single_meas_plot.setMaximumWidth(400)
        # self.single_meas_plot.showGrid(x=True, y=True,alpha=0.5)
        self.single_meas_plot.getAxis('left').setPen(pg.Color('k'))
        self.single_meas_plot.getAxis('bottom').setPen(pg.Color('k'))
        self.curve1 = self.single_meas_plot.plot(np.array([]),
                                                 pen=None,
                                                 symbol='o',
                                                 symbolPen=None,
                                                 symbolBrush=(0, 255, 0),
                                                 symbolSize=7)
        self.curve2 = self.single_meas_plot.plot(np.array([]),
                                                 pen=None,
                                                 symbol='o',
                                                 symbolPen=None,
                                                 symbolBrush=(255, 0, 0),
                                                 symbolSize=7)
        self.curve3 = self.single_meas_plot.plot(np.array([]),
                                                 pen=None,
                                                 symbol='+',
                                                 symbolPen=None,
                                                 symbolBrush=pg.Color('b'),
                                                 symbolSize=15)
        self.curve4 = self.single_meas_plot.plot(np.array([]), pen=(0, 0, 255))
        self.plot_info = pg.TextItem(' ', anchor=(0, 1), color=pg.Color('k'))
        main_layout.addWidget(self.single_meas_plot)

        # self.single_meas_plot2 = pg.PlotWidget(background='w',pen=pg.Color('k'))
        # self.single_meas_plot2.setMaximumWidth(400)
        # # self.single_meas_plot.showGrid(x=True, y=True,alpha=0.5)
        # self.single_meas_plot2.getAxis('left').setPen(pg.Color('k'))
        # self.single_meas_plot2.getAxis('bottom').setPen(pg.Color('k'))
        # self.curve21 = self.single_meas_plot2.plot(np.array([]), pen=None,symbol='o',
        #                                          symbolPen=None,symbolBrush=(0,255,0),symbolSize=7)
        # self.curve22 = self.single_meas_plot2.plot(np.array([]), pen=None,symbol='o',
        #                                          symbolPen=None,symbolBrush=(255,0,0),symbolSize=7)
        # self.curve23 = self.single_meas_plot2.plot(np.array([]), pen=None, symbol='+',
        #                                          symbolPen=None,symbolBrush=pg.Color('b'),symbolSize=15)
        # self.curve24 = self.single_meas_plot2.plot(np.array([]), pen=(0,0,255))
        # self.plot_info = pg.TextItem(' ', anchor=(0,1),color=pg.Color('k'))

        # main_layout.addWidget(self.single_meas_plot2)
        self.setLayout(main_layout)
コード例 #9
0
 def setColor(self, *args):
     """Set the color of the box. Arguments are the same as those accepted by functions.mkColor()"""
     self.__color = pg.Color(*args)
コード例 #10
0
ファイル: plot2D.py プロジェクト: veintemillas/jaxions
	def	__init__(self,map='map'):
		prefileMeas = sorted([x for x in [y for y in os.listdir("./")] if re.search("axion.m.[0-9]{5}$", x)])
		fileMeas = []
		for maes in prefileMeas:
			try:
				with h5py.File(maes, 'r') as f:
					if (map in f) :
						fileMeas.append(maes)
			except:
				print('Error opening file: %s'%maes)

		fileHdf5 = h5py.File(fileMeas[0], "r")

		self.Lx = fileHdf5["/"].attrs.get("Size")
		self.Ly = fileHdf5["/"].attrs.get("Size")
		self.Lz = fileHdf5["/"].attrs.get("Depth")

		self.z = fileHdf5["/"].attrs.get("z")
		self.R = self.z

		fileHdf5.close()

		self.allData = []

		self.step  = 1
		self.tStep = 100
		self.pause = False

		self.timer = pg.QtCore.QTimer()

		# Read all data

		self.i = 0
		self.size = 0

#		if os.path.exists("./Strings.PyDat"):
#			fp = gzip.open("./Strings.PyDat", "rb")
#			self.allData = pickle.load(fp)
#			fp.close()
#			self.size = len(self.allData)
#		else:
		for meas in fileMeas:
#			print(meas)
			fileHdf5 = h5py.File(meas, "r")

			Lx = fileHdf5["/"].attrs.get("Size")
			Ly = fileHdf5["/"].attrs.get("Size")
			Lz = fileHdf5["/"].attrs.get("Depth")
			zR = fileHdf5["/"].attrs.get("z")
			R  = zR
			if 'R' in fileHdf5:
				R = fileHdf5["/"].attrs.get("R")

			fl = fileHdf5["/"].attrs.get("Field type").decode()

			if self.Lx != Lx or self.Ly != Ly or self.Lz != Lz:
				print("Error: Size mismatch (%d %d %d) vs (%d %d %d)\nAre you mixing files?\n" % (Lx, Ly, Lz, self.Lx, self.Ly, self.Lz))
				exit()

			if fl == "Saxion":
				mTmp  = fileHdf5[map]['m'].value.reshape(Ly,Lx,2)
				rData = np.sqrt(mTmp[:,:,0]**2 + mTmp[:,:,1]**2)
				rMax = np.amax(rData)
				rData = rData/R
				aData = (np.arctan2(mTmp[:,:,1], mTmp[:,:,0]) + 2*np.pi)/(4.*np.pi)
			elif fl == "Axion":
				aData = fileHdf5[map]['m'].value.reshape(Ly,Lx)
#				pm = np.amax(aData)
#				print ("BMax %f" % pm)
				aData = aData/R
				rData = np.ones(aData.shape)
				pData = np.ones(aData.shape)*(2*np.pi)
				aData = (aData + pData)/(4.*np.pi)
#				iData = np.trunc(aData/(2*np.pi))
#				aData = aData - iData*(2*np.pi)
#				aData = aData - pData
#				pm = np.amax(aData)
#				print ("AMax %f" % pm)
				rMax  = R
			else:
				print("Unrecognized field type %s" % fl)
				exit()

			self.allData.append([rData, aData, zR, rMax])
			fileHdf5.close()

			self.size = self.size + 1

#			fp = gzip.open("Strings.PyDat", "wb")
#			pickle.dump(self.allData, fp, protocol=2)
#			fp.close()


		self.app  = QtGui.QApplication([])
		self.pWin = pg.GraphicsLayoutWidget()
		self.pWin.setWindowTitle('Axion / Saxion evolution')
		self.pWin.resize(1600,1600)
		pg.setConfigOptions(antialias=True)

		self.aPlot = self.pWin.addPlot(row=0, col=0)
		self.sPlot = self.pWin.addPlot(row=0, col=1)

		self.aPlot.setXRange(0,Lx*1.2)
		self.aPlot.setYRange(0,Lx*1.2)
		self.sPlot.setXRange(0,Lx*1.2)
		self.sPlot.setYRange(0,Lx*1.2)

		self.zAtxt = pg.TextItem("z=0.000000")
		self.zStxt = pg.TextItem("z=0.000000")

		data = self.allData[0]

		aPos = np.array([0.00, 0.10, 0.25, 0.4, 0.5, 0.6, 0.75, 0.9, 1.0 ])
		aCol = ['#006600', 'b', 'w', 'r', 'k', 'b', 'w', 'r', '#006600']

		vb = self.aPlot.getViewBox()

		aSzeX = vb.size().width()*0.96
		aSzeY = vb.size().height()*0.8

		self.aMap  = pg.ColorMap(aPos, np.array([pg.colorTuple(pg.Color(c)) for c in aCol]))
		self.aLut  = self.aMap.getLookupTable()
		self.aLeg  = pg.GradientLegend((aSzeX/20, aSzeY), (aSzeX, aSzeY/12.))
		self.aLeg.setLabels({ "-pi": 0.0, "-pi/2": 0.25, "0.0": 0.50, "+pi/2": 0.75, "+pi": 1.00 })
		self.aLeg.setParentItem(self.aPlot)
		self.aLeg.gradient.setColorAt(0.00, QtGui.QColor(255,255,255))
		self.aLeg.gradient.setColorAt(0.25, QtGui.QColor(255,  0,  0))
		self.aLeg.gradient.setColorAt(0.50, QtGui.QColor(  0,  0,  0))
		self.aLeg.gradient.setColorAt(0.75, QtGui.QColor(  0,  0,255))
		self.aLeg.gradient.setColorAt(1.00, QtGui.QColor(255,255,255))

		self.aImg = pg.ImageItem(lut=self.aLut)
		self.aPlot.addItem(self.aImg)
		self.aPlot.addItem(self.zAtxt)

#		sPos = np.linspace(0.0, data[3], 5)
		sPos = np.array([0.00, 0.25, 0.50, 0.75, 1.00])
		sLab = ["%.2f" % mod for mod in sPos]
		sCol = ['w', 'r', 'y', 'c', 'k']

		vs = self.sPlot.getViewBox()

		sSzeX = vs.size().width()*0.96
		sSzeY = vs.size().height()*0.8

		self.sMap  = pg.ColorMap(sPos, np.array([pg.colorTuple(pg.Color(c)) for c in sCol]))
		self.s**t  = self.sMap.getLookupTable()
		self.sLeg  = pg.GradientLegend((sSzeX/20, sSzeY), (aSzeX/0.96 + sSzeX, sSzeY/12.))
		self.sLeg.setLabels({ sLab[0]: 0.0, sLab[1]: 0.25, sLab[2]: 0.50, sLab[3]: 0.75, sLab[4]: 1.00 })
		self.sLeg.setParentItem(self.sPlot)
		self.sLeg.gradient.setColorAt(0.00, QtGui.QColor(255,255,255))
		self.sLeg.gradient.setColorAt(0.25, QtGui.QColor(255,  0,  0))
		self.sLeg.gradient.setColorAt(0.50, QtGui.QColor(255,255,  0))
		self.sLeg.gradient.setColorAt(0.75, QtGui.QColor(  0,255,255))
		self.sLeg.gradient.setColorAt(1.00, QtGui.QColor(  0,  0,  0))

		self.sImg = pg.ImageItem(lut=self.s**t)
		self.sPlot.addItem(self.sImg)
		self.sPlot.addItem(self.zStxt)


		self.sImg.setImage(data[0], levels=(0.,1.))
		self.aImg.setImage(data[1], levels=(0.,1.))

		self.pWin.show()


		self.baseKeyPress = self.pWin.keyPressEvent