Exemplo n.º 1
0
def paramChanged(param, changes):
    for param, changeType, newVal in changes:
        print("Handling name: {}, changeType: {}, newVal: {}".format(param.name, changeType, newVal))
        name=param.name()
        if changeType=='activated':
            if name=="Capture Once":
                capture()
            if name=="Least-squares Fit":
                crp.updateFit()
            if name=="Record Background":
                main.setBG()
            if name=="Reset Crop":
                main.resetCrop()
            if name=="Show BG":
                pg.image(main.bg)
        elif name=='Acquire Continuous':
            global bCaptureContinuous
            bCaptureContinuous=newVal 
        elif name=='full fit':
            crp.bDoFullFit=newVal 
        elif name=='Subtract BG':
            main.bSubtractBG=newVal 
        elif name=='Update Projections':
            main.bUpdateProjections=newVal 
        elif name=='Auto fit':
            crp.bAutoFit=newVal 
        elif name=='Averages':
            cam.Naves=newVal 
        else:
            print("Somehow missed handling '{}'".format(name))
def simplePlot():
    data = np.random.normal(size=1000)
    pg.plot(data, title="Simplest possible plotting example")

    data = np.random.normal(size=(500,500))
    pg.image(data, title="Simplest possible image example")
    pg.QtGui.QApplication.exec_()
Exemplo n.º 3
0
      def reconstruct(self):
            self.recon.lbl.setText("Reconstruction is currently running")
            self.d= tomopy.xtomo_dataset(log='debug')
            self.reconelement=self.recon.combo.currentIndex()
            self.d.data=self.data[self.reconelement,:,:,:]
            self.d.data[self.d.data==inf]=0.01
            self.d.data[np.isnan(self.d.data)]=0.01

            
            ###TEMP
            if self.recon.reconvalue==0:
                  self.d.data = (np.exp(-0.0001*self.d.data)).astype('float32')
            else:
                  print "transmission"
            #self.d.center=128
            ###TEMP
            self.d.center=self.p1[2]
            if self.recon.method.currentIndex()==0:
                  self.d.dataset(self.d.data, theta=self.theta*np.pi/180)
                  #self.d.optimize_center()
                  self.d.mlem()
            elif self.recon.method.currentIndex()==1:
                  self.d.dataset(self.d.data, theta=self.theta)
                  #self.d.optimize_center()
                  self.d.gridrec()
            elif self.recon.method.currentIndex()==2:
                  self.d.dataset(self.d.data, theta=self.theta*np.pi/180)
                  #self.d.optimize_center()
                  self.d.art()
            print self.d.center
            pg.image(self.d.data_recon)
            self.recon.lbl.setText("Done")
            self.recon.save.setHidden(False)
Exemplo n.º 4
0
    def Image_Background(self):
        self.background=[]
        background = self.imageData[self.times<1]
        pg.image(np.mean(background[1:],axis=0), title='average background ')

        self.background = np.mean(background,axis=0)
        return
Exemplo n.º 5
0
def test_mask_data():
    # create Gaussian image:
    img_size = 500
    x = np.arange(img_size)
    y = np.arange(img_size)
    X, Y = np.meshgrid(x, y)
    center_x = img_size / 2
    center_y = img_size / 2
    width = 30000.0
    intensity = 5000.0
    img_data = intensity * \
               np.exp(-((X - center_x) ** 2 + (Y - center_y) ** 2) / width)
    mask_data = MaskData(img_data.shape)

    # test the undo and redo commands
    mask_data.mask_above_threshold(img_data, 4000)
    mask_data.mask_below_threshold(img_data, 230)
    mask_data.undo()
    mask_data.undo()
    mask_data.redo()
    mask_data.redo()
    mask_data.undo()

    mask_data.mask_rect(200, 400, 400, 100)
    mask_data.mask_QGraphicsRectItem(
        QtGui.QGraphicsRectItem(100, 10, 100, 100))
    mask_data.undo()

    mask_data.mask_polygon(
        np.array([0, 100, 150, 100, 0]), np.array([0, 0, 50, 100, 100]))
    mask_data.mask_QGraphicsPolygonItem(
        QtGui.QGraphicsEllipseItem(350, 350, 20, 20))

    # performing the plot
    pg.image(mask_data.get_img())
Exemplo n.º 6
0
    def Image_Background(self):
        self.background=[]
        background = self.imageData[:50]
        print 'shape of background:', np.shape(background)
        pg.image(np.mean(background[10:49],axis=0), title='average background ')

        self.background = np.mean(background,axis=0)
        return
Exemplo n.º 7
0
 def updateAvgStdImage(self):
     """ update the reference image types and then make sure display agrees.
     """
     self.aveImage = np.mean(self.imageData, axis=0)
     self.stdImage = np.std(self.imageData, axis=0)
     pg.image(self.aveImage, title='mean after registration')
     pg.image(self.stdImage, title='std after registration')
     return
def simplePlot():
    data = np.random.normal(size=1000)
    pg.plot(data, title="Simplest possible plotting example")

    data = np.random.normal(size=(500,500))
    pg.image(data, title="Simplest possible image example")

    ## Start Qt event loop unless running in interactive mode or using pyside.
    if __name__ == '__main__':
        import sys
        if sys.flags.interactive != 1 or not hasattr(QtCore, 'PYQT_VERSION'):
            pg.QtGui.QApplication.exec_()
Exemplo n.º 9
0
    def load_file(self, repnum):
        global options
        global basepath
        if repnum < 10:
            upf = basepath + options.upfile + "/00" + str(repnum) + "/Camera/frames.ma"
        else:
            upf = basepath + options.upfile + "/0" + str(repnum) + "/Camera/frames.ma"

        # upf = basepath + options.upfile  + '/Camera/frames.ma'
        im = []
        self.imageData = []
        print "loading data from ", upf
        try:
            im = MetaArray(file=upf, subset=(slice(0, 2), slice(64, 128), slice(64, 128)))
        except:
            print "Error loading upfile: %s\n" % upf
            return
        print "data loaded"

        self.times = im.axisValues("Time").astype("float32")
        self.imageData = im.view(np.ndarray).astype("float32")
        pg.image(self.imageData, title=str(repnum))
        # self.ProcessImage()
        print "imageData shape:", np.shape(self.imageData)
        # self.imageData = self.imageData[np.where(self.times>1)]
        back = self.imageData[np.where(np.logical_and(self.times > 2, self.times < 3))]
        print "size of back", np.shape(back)
        self.background = np.mean(back[5:], axis=0)
        # self.times= self.times-1

        # interval1=self.imageData[np.where(np.logical_and(self.times>=1, self.times<=1.25))]
        # print 'interval1 shape:', np.shape(interval1)
        # interval2=self.imageData[np.where(np.logical_and(self.times>=2, self.times<=2.25))]
        # print 'interval2 shape:', np.shape(interval2)
        # interval3=self.imageData[np.where(np.logical_and(self.times>=3, self.times<=3.25))]
        # print 'interval3 shape:', np.shape(interval3)
        # interval4=self.imageData[np.where(np.logical_and(self.times>=4, self.times<=4.25))]
        # print 'interval4 shape:', np.shape(interval4)
        # interval5=self.imageData[np.where(np.logical_and(self.times>=5, self.times<=5.25))]
        # print 'interval5 shape:', np.shape(interval5)
        # back=self.imageData[np.where(np.logical_and(self.times>0, self.times<1))]
        # background=np.mean(back,axis=0)
        # meanimg=np.mean(self.imageData, axis=0)
        # pg.image(meanimg, title='mean image')
        # self.imageData = ((interval1+interval2+interval3+interval4+interval5)/5-background)/background
        print "imageData shape:", np.shape(self.imageData)
        # pg.image(background, title='background')
        # self.imageData=scipy.ndimage.gaussian_filter(self.imageData, sigma=[1,3,3], order=0,mode='reflect',truncate=4.0)

        return
Exemplo n.º 10
0
def test_nan_image():
    img = np.ones((10,10))
    img[0,0] = np.nan
    v = pg.image(img)
    v.imageItem.getHistogram()
    app.processEvents()
    v.window().close()
Exemplo n.º 11
0
 def getErr(self, p=None, bShow=False):
     if p is None:
         p=self.getP()
     guess=self.getFramePar(p)       #figure(2)
     #guess=gauss(X, [sqrt(p[0]), p[1], p[3]])*gauss(Y, [sqrt(p[0]), p[2], p[3]])
     err = ((guess-self.targetFrame)**2).sum()
     if bShow:
         pg.image(guess, title='guess') 
         pg.image(self.targetFrame, title='frame')
     #imshow(guess)
     #draw()
     #print("Params: {0}".format(p))
     if err==0:
         err=1e-12
     err=np.log(err)
     print("err, height: {}, {}".format(err, p[0]))
     return err;
Exemplo n.º 12
0
def test_dividebyzero():
    import pyqtgraph as pg
    im = pg.image(pg.np.random.normal(size=(100,100)))
    im.imageItem.setAutoDownsample(True)
    im.view.setRange(xRange=[-5+25, 5e+25],yRange=[-5e+25, 5e+25])
    app.processEvents()
    QtTest.QTest.qWait(1000)
    # must manually call im.imageItem.render here or the exception
    # will only exist on the Qt event loop
    im.imageItem.render()
Exemplo n.º 13
0
 def _CompareGoodnessCorrelation(self):
     locs = self._postProcessedLocs[:]
     distXYs = np.array([loc.distXY for loc in locs])
     
     prop = {}
     prop["lsError"] = np.array([loc.lsError for loc in locs])
     prop["photons"] = np.array([loc.photons for loc in locs]).ravel()
     prop["amp"] = np.array([loc.amp for loc in locs]).ravel()
     prop["minFitDistXY"] = np.array([loc.minFitDistXY for loc in locs]).ravel()
     prop["sigmaX"] = np.array([loc.sigmaX for loc in locs]).ravel()
     prop["sigmaY"] = np.array([loc.sigmaY for loc in locs]).ravel()
     prop["offset"] = np.array([loc.offset for loc in locs]).ravel()
     prop["distXY"] = np.array([loc.distXY for loc in locs]).ravel()
     prop["fitStdAmp"] = np.array([loc.fitStdAmp for loc in locs]).ravel()
     prop["fitStdX0"] = np.array([loc.fitStdX0 for loc in locs]).ravel()
     prop["fitStdY0"] = np.array([loc.fitStdY0 for loc in locs]).ravel()
     prop["fitStdZ0"] = np.array([loc.fitStdZ0 for loc in locs]).ravel()
     prop["fitStdOffset"] = np.array([loc.fitStdOffset for loc in locs]).ravel()
     prop["pixels"] = np.array([float(loc.nrOfPixels) for loc in locs]).ravel()
 
     rValues = []
     for k, v in prop.iteritems():
         slope, intercept, r_value, p_value, std_err = scipy.stats.linregress(distXYs, v)
         # print k, slope, intercept, "R2", r_value ** 2.0
         func = lambda d: slope * d + intercept
         rValues.append((k, slope, r_value ** 2.0))
         
         plt = pg.PlotItem()
         imv = pg.image(view = plt)
         
         plt.plot(distXYs, v, pen = None, symbol = "x", symbolSize = 2.0)
         plt.plot(distXYs, func(distXYs), pen = "r")
         plt.addLine(y = np.mean(v))
         plt.addLine(y = np.mean(v) + np.std(v))
         plt.addLine(y = np.mean(v) - np.std(v))
         
         plt.setLabels(bottom = ("distXY", "m"), left = (k))
         hist, xedges, yedges = np.histogram2d(distXYs, v, bins = 100)
         xStep, yStep = xedges[1] - xedges[0], yedges[1] - yedges[0]
         
         
         transform = QtGui.QTransform()
         transform.translate(xedges[0], yedges[0])
         transform.scale(xStep, yStep)
         imv.view.invertY(False)
         imv.view.setAspectLocked(False)    
         imv.setImage(hist, transform = transform)
         # plt.setRange(xRange = [0.0, 20e-9])
     
         
     print 
     print "Sorted R2"
     rValues.sort(key = lambda x:-x[-1])
     print "\n".join(["%s: slope %f, R2 %.3f" % (k, s, r2) for k, s, r2 in rValues])
Exemplo n.º 14
0
def mkData():
    with pg.BusyCursor():
        global data, cache, ui
        frames = ui.framesSpin.value()
        width = ui.widthSpin.value()
        height = ui.heightSpin.value()
        dtype = (ui.dtypeCombo.currentText(), ui.rgbCheck.isChecked(), frames, width, height)
        if dtype not in cache:
            if dtype[0] == 'uint8':
                dt = np.uint8
                loc = 128
                scale = 64
                mx = 255
            elif dtype[0] == 'uint16':
                dt = np.uint16
                loc = 4096
                scale = 1024
                mx = 2**16
            elif dtype[0] == 'float':
                dt = np.float
                loc = 1.0
                scale = 0.1
            
            if ui.rgbCheck.isChecked():
                data = np.random.normal(size=(frames,width,height,3), loc=loc, scale=scale)
                data = pg.gaussianFilter(data, (0, 6, 6, 0))
            else:
                data = np.random.normal(size=(frames,width,height), loc=loc, scale=scale)
                data = pg.gaussianFilter(data, (0, 6, 6))
                pg.image(data)
            if dtype[0] != 'float':
                data = np.clip(data, 0, mx)
            data = data.astype(dt)
            cache = {dtype: data} # clear to save memory (but keep one to prevent unnecessary regeneration)
            
        data = cache[dtype]
        updateLUT()
        updateSize()
Exemplo n.º 15
0
def badpix_from_darkcal(filename="", qtmainwin=None):


    # Use dialog_pickfile() if no filename is provided
    if filename is "":
        filename = cfel_file.dialog_pickfile(filter='*.h5', qtmainwin=qtmainwin)
        if filename is "":
            return



    # Determine what type of detector we are using
    # CsPad only for now - make fancy later (or use a selection box)
    detector = 'cspad'




    # Call routine for appropriate detector system
    if detector == 'cspad':
        mask = cfel_cspad.badpix_from_darkcal(filename)




    # Display mask (pyqtgraph.show)
    temp = mask.astype(int)
    pyqtgraph.image(temp, levels=(0,1))
    #pg.imageView.ui.menuBtn.hide()
    #pg.imageView.ui.roiBtn.hide()


    # Save mask
    outfile = cfel_file.dialog_pickfile(write=True, path='../calib/mask', filter='*.h5', qtmainwin=qtmainwin)
    if outfile is not '':
        print("Saving mask: ", outfile)
        cfel_file.write_h5(mask, outfile, field='data/data')
Exemplo n.º 16
0
def in_vs_out_widget(A, B, f = None, title = ''):
    if (A is None) and (B is None) :
        return None
    import pyqtgraph as pg
    A_in_out_plots = pg.image(title = title)

    print title
    A_in_out = hstack_if_not_None(A, B)

    if f is not None :
        A_in_out = f(A_in_out)
    
    if len(A_in_out.shape) == 2 :
        A_in_out_plots.setImage(A_in_out.T)
    elif len(A_in_out.shape) == 3 :
        A_in_out_plots.setImage(A_in_out)
    
    return A_in_out_plots
Exemplo n.º 17
0
 def dphaseReshape(self, data):
     altdphase = data
     for i in range(altdphase.shape[0]):
         for j in range(altdphase.shape[1]):
             #for k in range(dphase.shape[2]):
             if altdphase[i,j]<-4*np.pi/5 or altdphase[i,j]>4*np.pi/5:
                 altdphase[i,j] = 10
             elif altdphase[i,j]<-2*np.pi/5:
                 altdphase[i,j] = 20
             elif altdphase[i,j]<0:
                 altdphase[i,j] = 30
             elif altdphase[i,j]<2*np.pi/5:
                 altdphase[i,j] = 40
             else:
                 altdphase[i,j] = 50
     
     self.redphase = pg.image(altdphase, title="transformed 2X Phi map", levels=(10, 50))
     return
Exemplo n.º 18
0
    def parse_and_go(self, argsin = None):
        global period
        global binsize
        parser=OptionParser() # command line options
        ##### parses all of the options inputted at the command line TFR 11/13/2015
        parser.add_option("-u", "--upfile", dest="upfile", metavar='FILE',
                          help="load the up-file")
        parser.add_option("-d", "--downfile", dest="downfile", metavar='FILE',
                          help="load the down-file")
        parser.add_option("-D", "--directory", dest="directory", metavar='FILE',
                          help="Use directory for data")
        parser.add_option("-t", "--test", dest="test", action='store_true',
                          help="Test mode to check calculations", default=False)
        parser.add_option("-p", '--period', dest = "period", default=4.25, type="float",
                          help = "Stimulus cycle period")
        parser.add_option("-c", '--cycles', dest = "cycles", default=0, type="int",
                          help = "# cycles to analyze")
        parser.add_option("-b", '--binning', dest = "binsize", default=0, type="int",
                          help = "bin reduction x,y")
        parser.add_option("-g", '--gfilter', dest = "gfilt", default=0, type="float",
                          help = "gaussian filter width")
        parser.add_option("-f", '--fdict', dest = "fdict", default=0, type="int",
                          help = "Use dictionary entry")
        
        if argsin is not None:
            (options, args) = parser.parse_args(argsin)
        else:
            (options, args) = parser.parse_args()

        if options.test is True:
            print "Running Test Sample"
            period = 8.0 # period and frame sample rate can be different
            framerate = 8.0
            nper = 1
            d = 10.0*numpy.random.normal(size=(2500,128,128)).astype('float32')
            ds = d.shape
            self.nFrames = d.shape[0]
            self.nPhases = 10
            maxdel = 50
            self.phasex = []
            self.phasey = []
            for i in range(0,self.nPhases):
                dx = i*ds[1]/self.nPhases # each phase is assigned to a region
                baseline = 0.0
                self.resp = numpy.zeros((self.nFrames,))
                phaseDelay = 0.25*period+period*(float(i)/self.nPhases) # phase delay for this region from 0 to nearly the stimulus repeat period
               # print '********phase delay: ', phaseDelay
                for j in range(0, nper): # for each period 
                    tdelay = (float(j) * period) + phaseDelay # time to phase delay point
                    idelay = int(numpy.floor(tdelay*framerate)) # convert to frame position in frame space
               #     print '     tdel: ', tdelay, '    idel: ', idelay
                #    if idelay < self.nFrames-maxdel:
                #        self.resp[idelay:idelay+maxdel] = (i+1)*numpy.exp(-numpy.linspace(0, 2, maxdel)) # marks amplitudes as well
                self.resp = 1000.0*numpy.sin(
                         numpy.linspace(0, 2.0*numpy.pi*self.nFrames/(period*framerate), self.nFrames)+i*numpy.pi/8.0 - numpy.pi/2.0)
                d[:, dx:dx+int(ds[1]/self.nPhases), 5:int(ds[2]/2)] += self.resp[:, numpy.newaxis, numpy.newaxis]
                self.phasex.append( (2+(dx+int(ds[1]/self.nPhases))/2))
                self.phasey.append((6+int(ds[2]/2)/2)) # make the signal equivalent of digitized one (baseline 3000, signal at 1e-4 of baseline)
            d = (d*3000.0*1e-4)+3000.0 # scale and offset to match data scaling coming in
            self.imageData = d.astype('int16') # reduce to a 16-bit map to match camera data type
            self.times = numpy.arange(0, self.nFrames/framerate, 1.0/framerate)
            print "Test Image Created"
            getout2 = fac_lift(self.imageData, self.times)
            self.imageData=getout2
            self.Analysis_FourierMap_TFR(period=period, target = 1, mode=1, bins=binsize)
            print "Completed Analysis FourierMap"
            self.plotmaps_pg(mode = 2, gfilter = 0)
            print "Completed plot maps"

        if options.period is not None:
            measuredPeriod = options.period
        if options.cycles is not None:
            self.nCycles = options.cycles
        if options.binsize is not None:
            binsize = options.binsize
        if options.gfilt is not None:
            gfilt = options.gfilt

        print 'DB keys', DB.keys()
        if options.fdict is not None:
            if options.fdict in DB.keys(): # populate options 
                options.upfile = DB[options.fdict][0]
                options.downfile = DB[options.fdict][1]
                options.period = DB[options.fdict][4]
            else:
               print "File %d NOT in DBase\n" % options.fdict
               return
        if options.directory is not None:
            self.directory = options.directory

        if options.upfile is not None:
            self.upfile = options.upfile
            target = 1
        
        if options.downfile is not None:
            self.downfile = options.downfile
            target = 2

        target = 0
        videoupf = None
        videodwnf = None
        audioupf = None
        audiodwnf = None

        if options.upfile is not None:
            videoupf = videobasepath + options.upfile + '.ma'
            audioupf = audiobasepath + options.upfile + '/DaqDevice.ma'
        if options.downfile is not None:
            videodwnf = videobasepath + options.downfile + '.ma'
            audiodwnf = audiobasepath + options.downfile + '/DaqDevice.ma'

        # indexFile = configfile.readConfigFile(basepath+'.index') 
        # time = indexFile.__getitem__('video_019.ma')[u'__timestamp__'] 

        #indexFile = configfile.readConfigFile(basepath+'.index') 
        #print 'indexfile', indexfile
        for file in (videoupf, videodwnf):
#if options.upfile is not None and options.downfile is not None:
            if file is None:
               break
            im=[]
            self.imageData = []
            print "loading data from ", file
            try:
                im = MetaArray(file = file,  subset=(slice(0,2), slice(64,128), slice(64,128)))
            except:
                print "Error loading upfile: %s\n" % file
                return
            print "data loaded"
            target = target + 1
            # dir = acq4.util.DataManager.getHandle(basepath)
            # time = dir.info()['__timestamp__']
            # print 'time:', time
           #print 'im:', im
            # dir(im)
            rawtimes=[]
            rawimageData=[]
            rawtimes = im.axisValues('Time').astype('float32')
#            print 'time', rawtimes
            rawimageData = im.view(np.ndarray).astype('float32')
#            print 'shape of ra image data:', rawimageData.shape
            ## videobasepath = /......./2016.10.08_000/Intrinsic_Mapping/video_'
            ## indexFile = configFile.readConfigFile('/...../2016.10.08_000/Intrinsic_Mapping/.index') -> a dictionary

            # dir = acq4.util.DataManager.getHandle(videoupf)
            # time = dir.info()['__timestamp__']
            
            # #timestampup = timestamp[options.fdict][0]
            # audioupstamp = timestamp[options.fdict][1]
            # #timestampdown = timestamp[options.fdict][2]
            # audiodownstamp = timestamp[options.fdict][3]
            # #print 'optioins.dict', options.fdict[0]

            #reads the timestamps from the files
            indexFile = configfile.readConfigFile(basepath+'.index') 
            timestampup = indexFile.__getitem__('video_'+DB[options.fdict][0]+'.ma')[u'__timestamp__']
            timestampdown = indexFile.__getitem__('video_'+DB[options.fdict][1]+'.ma')[u'__timestamp__']
            audioupindex = configfile.readConfigFile(audiobasepath+DB[options.fdict][0]+'/.index')
            # audioupstamp = audioupindex.__getitem__(u'.')[u'__timestamp__'] 
            audioupstamp = audioupindex.__getitem__('DaqDevice.ma')[u'__timestamp__'] - 13.5
            audiodownindex = configfile.readConfigFile(audiobasepath+DB[options.fdict][1]+'/.index')
            #audiodownstamp = audiodownindex.__getitem__(u'.')[u'__timestamp__'] 
            audiodownstamp = audiodownindex.__getitem__('DaqDevice.ma')[u'__timestamp__'] -13.5

            diffup = audioupstamp - timestampup
            diffdown = audiodownstamp - timestampdown 

            
            if file is videoupf:
                audio = MetaArray(file = audioupf, subset=(slice(0,2), slice(64,128), slice(64,128)))
                audiotime = audio.axisValues('Time').astype('float32')
                audiomin = np.min(audiotime) + diffup
                audiomax = np.max(audiotime) + diffup
            elif file is videodwnf:
                audio = MetaArray(file = audiodwnf, subset=(slice(0,2), slice(64,128), slice(64,128)))
                audiotime = audio.axisValues('Time').astype('float32')
                audiomin = np.min(audiotime) + diffdown
                audiomax = np.max(audiotime) + diffdown
            else:
                print 'ERROR!  Unable to load audio file'
            print 'audiomin', audiomin
            print 'audiomax', audiomax

            adjustedtime = rawtimes[np.logical_and(rawtimes <= audiomax+4, rawtimes >= audiomin)]
            
            adjustedimagedata = rawimageData[np.logical_and(rawtimes <= audiomax+4, rawtimes >= audiomin)]
            # print 'adjtime', adjustedtime
            self.times = [x-np.min(adjustedtime) for x in adjustedtime]
            self.imageData = adjustedimagedata
            background = rawimageData[5:25]
            background = np.mean(background,axis=0)
            print 'dimensions of background', np.shape(background)
            pg.image(background, title='mean background')
            subtracted = np.zeros(np.shape(self.imageData), float)
            for i in range(self.imageData.shape[0]):
                subtracted[i,:,:] = (self.imageData[i,:,:]-background)
            subtracted=subtracted/subtracted.mean()
            self.imageData = subtracted
            #print 'self.times:', self.times
            # print 'length of self.times', np.shape(self.times)
            # print 'shape of image data', np.shape(self.imageData)

            #analyze a quarter of the image
            #xcut = (self.imageData.shape[1]+1)/8
            #ycut = (self.imageData.shape[2]+1)/8
            #self.imageData=self.imageData[:,3*xcut-1:7*xcut-1,ycut-1:7*ycut-1]
            im=[]
            if file is videoupf:
               upflag = 1
            else:
               upflag = 0
            #print 'target:', target
            measuredPeriod=4.25
            #self.subtract_Background(diffup=diffup)
            self.Analysis_FourierMap(period=measuredPeriod, target = target,  bins=binsize, up=upflag)
        print 'target:', target
        if target > 0:
            self.plotmaps_pg(mode = 1, target = target, gfilter = gfilt)

        return
Exemplo n.º 19
0
    yd = yd[w]
    data = data[w]

    xi, yi = np.array(np.meshgrid(xbins, ybins, indexing='ij'))
    zi = xi * 0
    zi[xd, yd] = data
    return zi


prefix = "data/ISCCP.DX.0.GOE-7.1991.01.01."
times = np.arange(0, 22, 3) * 100

xbins = np.arange(501)
ybins = np.arange(501)
zi = np.zeros((len(times), 501, 501))

for i in np.arange(len(times)):
    print "Time # {}".format(times[i])
    filename = "{:s}{:04d}.AES".format(prefix, times[i])
    stdat = pydx.dxread(filename)
    irads = np.array([o.irad for o in stdat.dxs1s])
    zi[i, :, :] = pos2Grid(stdat.x, stdat.y, irads, xbins=xbins, ybins=ybins)

zi = zi[:, :, ::-1]
#3d image plots as time series, use scroll bar to cycle through images
pg.image(zi)

#1 day average of cloud cover
zavg = np.average(zi, axis=0)
pg.image(zavg)
Exemplo n.º 20
0
import pyqtgraph as pg
import sys, os
from IPython import embed

pg.setConfigOption('background', 'w')
pg.setConfigOption('foreground', 'k')

data_path = sys.argv[1]
########################### PS or ACF visualization #####################
if os.stat(data_path).st_size < 10000000: # Checking file size
    data = np.load(data_path)
    data_title = data_path
    if data.max() > 1e12:
        data = data / 1e7
        data_title = 'Data / 1e7'
    imv = pg.image(data, title = data_title)
    imv.ui.normBtn.hide()
#    imv.roi.setPen(pen={'width': 1.3})
#    imv.roiCurve.setPen(pen={'color': 'r'})
    
## Start Qt event loop unless running in interactive mode or using pyside.
    if __name__ == '__main__':
        import sys
        if sys.flags.interactive != 1 or not hasattr(QtCore, 'PYQT_VERSION'):
            pg.QtGui.QApplication.exec_()

#### To save image
    if raw_input('Do you want to save image? y/[n]: ') == 'y':
        data_min = input('Enter min value: ')
        data_max = input('Enter max value: ')
        data = np.rot90(data)
Exemplo n.º 21
0
 def plot_movie(self):
     """Use pyqtgraph to make a movie quickly."""
     pg.image(self.cells_t)
     QtGui.QApplication.instance().exec_()
Exemplo n.º 22
0
    def computeParameters(self, dt_audio=1/80000, dt_video=1/4000, debug=False):
        """Compute parameters from GAW

        :param dt_audio: audio sampling time in seconds, defaults to 1/80000
        :type dt_audio: float, optional
        :param dt_video: video sampling time in seconds, defaults to 1/4000
        :type dt_video: float, optional
        :param debug: shows debugging information and plots, defaults to False
        :type debug: bool, optional
        """
        # Convert raw segmentations to binary masks
        seg = np.asarray(self.segmentations).round().astype(np.bool)

        # Predict midline from segmentation
        M = Midline(seg)
        M.predict()

        # Use midline for left and right GAW
        gaws = M.side()
        left_gaw  = gaws[..., 0]
        right_gaw = gaws[..., 1]

        # Compute and show values
        gaw = GAW(seg.sum((1,2)), 
            use_filtered_signal=False, 
            use_hanning=False, 
            dt=dt_video)

        gaw.setLeftRightGAW(left_gaw, right_gaw)
        params_GAW = gaw.computeParameters()

        # Create summary table for parameters
        self.t = Table(params_GAW, title="GAW parameters")
        self.t.show()

        if debug:
            # Show complete segmentation with midline
            im = pg.image(seg.transpose(0, 2, 1), 
                        title="Segmentation with midline")

            line = pg.LineSegmentROI([M.coordinates[0, :2],
                                    M.coordinates[0, 2:],],
                                    pen="y")

            im.getView().addItem(line)

            # Show complete GAW plot with detected cycles
            gaw_plot = pg.plot(gaw.t, gaw.raw_signal,
                title="GAW with cycles")

            cs = [(241, 196, 15), (231, 76, 60)]
            i = 0

            for o, c in zip(gaw.opening, gaw.closing):
                i1 = pg.PlotCurveItem(gaw.t[o:c], np.zeros_like(gaw.t[o:c]))
                i2 = pg.PlotCurveItem(gaw.t[o:c], gaw.raw_signal[o:c])
                between = pg.FillBetweenItem(i1, i2, brush=cs[i % len(cs)])
                gaw_plot.getPlotItem().addItem(between)
                i += 1

            # Show left and right gaw
            LR_plot = pg.plot(title="Left and right GAW")
            LR_plot.plot(gaw.t, left_gaw)
            LR_plot.plot(gaw.t, -right_gaw)

        # Compute and show phonovibrogram
        pvg = M.pvg()
        pg.image(pvg, title="Phonovibrogram")

        # If audio data is available
        if type(self.synced_audio) != type(None):
            if debug:
                pg.plot(self.synced_audio, 
                    title="Synchronized audio")

            a = Audio(self.synced_audio,
                dt=dt_audio)

            params_Audio = a.computeParameters()

            
            self.t2 = Table(params_Audio, title="Audio parameters")
            self.t2.show()   
        else:
            params_Audio = None 

        return dict(GAW=params_GAW, Audio=params_Audio)
Exemplo n.º 23
0
yd = np.digitize(y, ybins)
yd -= 1
yd = yd[::-1]  #reverse order

(w, ) = np.where((xd != 0) & (yd != 0))
xd = xd[w]
yd = yd[w]
irads = irads[w]
vrads = vrads[w]
nodays = nodays[w]
bxshors = bxshors[w]
vcslogs = vcslogs[w]

xi, yi = np.array(np.meshgrid(xbins, ybins, indexing='ij'))
IRADS = np.zeros(xi.shape)
BXSHORS = np.zeros(xi.shape)
NODAYS = np.zeros(xi.shape)
VRADS = np.zeros(xi.shape)
VCSLOGS = np.zeros(xi.shape)
IRADS[xd, yd] = irads  #IR radiance (day and night)
BXSHORS[xd, yd] = bxshors  #shoreline
NODAYS[xd, yd] = nodays  #night time
VRADS[xd, yd] = vrads
VCSLOGS[xd, yd] = vcslogs

pg.image(IRADS, title="IR Radiance")
pg.image(BXSHORS, title="Shorelines")
pg.image(NODAYS, title="Night time")
pg.image(VRADS, title="Visible Radiance")
pg.image(VCSLOGS, title="Cloudiness")
Exemplo n.º 24
0
phaseMaps = np.zeros_like(phaseMapsOriginal)

for i in range(0, 17):
    phaseMaps[i, :, :] = unwrap_phase(phaseMapsOriginal[i, :, :], seed=100)

phaseMapsCropped = phaseMaps[0:17, 49:113, 50:114]
MMapsCropped = MMaps[0:17, 49:113, 50:114]
#
#pg.image(MMapsCropped, title='phase')
#
phaseMapsCropped_recentered_QA_motion = np.zeros_like(phaseMapsCropped)

for i, pmc in enumerate(phaseMapsCropped):
    phaseMapsCropped_recentered_QA_motion[i] = pmc - np.average(pmc[18:22,
                                                                    30:34])
pg.image(phaseMapsCropped_recentered_QA_motion)
#
#%%
completed_images = []
original_images = []

phaseMapsCroppedTest = phaseMapsCropped_recentered_QA_motion
OldRange = (np.max(phaseMapsCroppedTest) - np.min(phaseMapsCroppedTest))
NewRange = (2**8 - 1) - 0

for filename in sorted(glob.glob(
        r"C:\Users\plettlk\DCGAN_Image_Completion\120120\8bit_QA_test_30W_heating_w_motion\*.png"
),
                       key=numericalSort):
    im = cv2.imread(filename, -1)
    im_ = cv2.cvtColor(im, cv2.COLOR_BGR2GRAY)
Exemplo n.º 25
0
                                                        random_state=42)

    num_comp = 50

    print "Extracting the top %d eigen_images from %d training images" % (
        num_comp, num_features)
    t0 = time()
    svd = TruncatedSVD(n_components=num_comp)
    svd.fit(X_train)
    #    pca = RandomizedPCA(n_components = num_comp, whiten=True).fit(X_train)
    print "done in %0.3fs" % (time() - t0)

    eigen_images = svd.components_.reshape(
        (num_comp, img_shape[0], img_shape[1]))

    pg.image(eigen_images)

    print "Projecting the input data on the eigen_images orthonormal basis"
    t0 = time()
    X_train_pca = svd.transform(X_train)
    X_test_pca = svd.transform(X_test)
    print "done in %0.3fs" % (time() - t0)

    print "Fitting the classifier to the training set"

    t0 = time()

    #    param_grid = {
    #                 'C': [5,10,50,100,500],
    #                  'gamma': [1e-8,5e-8,1e-7,5e-7],
    #                  }
Exemplo n.º 26
0
    phaseMaps[i,:,:] = unwrap_phase(phaseMaps2[i,:,:], seed=100)
phaseMapsCropped2 = phaseMaps[0:709, 42:106, 39:103]


phaseMaps3 = sonalleveNativeData3[:,:,0,0,0,1,:].swapaxes(0,2)
MMaps3 = sonalleveNativeData3[:,:,0,0,0,0,:].swapaxes(0,2)
phaseMaps=np.zeros_like(phaseMaps3)
for i in range(0,771):
    phaseMaps[i,:,:] = unwrap_phase(phaseMaps3[i,:,:], seed=100)
phaseMapsCropped3 = phaseMaps[0:771,  42:106, 39:103]

phaseMapsCropped = np.vstack((phaseMapsCropped1, phaseMapsCropped2, phaseMapsCropped3))
phaseMapsCropped_recentered_tofu = np.zeros_like(phaseMapsCropped)
for i,pmc in enumerate(phaseMapsCropped):
    phaseMapsCropped_recentered_tofu[i] = pmc-np.average(pmc[30:34,30:34])
pg.image(phaseMapsCropped_recentered_tofu)
#%% 

completed_images = []
original_images = []

phaseMapsCroppedTest = phaseMapsCropped_recentered_tofu[100::100, :,:] #every 100th image for new test set 
OldRange = (np.max(phaseMapsCroppedTest) - np.min(phaseMapsCroppedTest))  
NewRange = (2**8-1) - 0

''' importing images ''' 
for filename in sorted(glob.glob(r"C:\Users\plettlk\DCGAN_Image_Completion\outputImages\completed\completed-8bit-tofu-50epochs-baseline\completed\*.png"), key=numericalSort): 
    im=cv2.imread(filename, -1)
    im_ = cv2.cvtColor(im, cv2.COLOR_BGR2GRAY)
    completed_images.append(im_)
    completed_images_array_50 = np.array(completed_images)
Exemplo n.º 27
0
MMaps = sonalleveNativeData[:, :, 0, 0, 0, 0, :].swapaxes(0, 2)

phaseMaps = np.zeros_like(phaseMapsOriginal)
#
#
for i in range(9, 26):
    phaseMaps[i, :, :] = unwrap_phase(phaseMapsOriginal[i, :, :], seed=100)

phaseMapsCropped = phaseMaps[9:26, 42:106, 39:103]

phaseMapsCropped_recentered_tofu_heated = np.zeros_like(phaseMapsCropped)

for i, pmc in enumerate(phaseMapsCropped):
    phaseMapsCropped_recentered_tofu_heated[i] = pmc - np.average(pmc[30:34,
                                                                      30:34])
pg.image(phaseMapsCropped_recentered_tofu_heated)

alpha = -10.3e-9
gamma = 0.267513e9
B0 = 3
echoTime = 19.5e-3

completed_images = []
original_images = []

phaseMapsCroppedTest = phaseMapsCropped_recentered_tofu_heated
OldRange = (np.max(phaseMapsCroppedTest) - np.min(phaseMapsCroppedTest))
NewRange = (2**16 - 1) - 0

for filename in sorted(glob.glob(
        r"C:\Users\plettlk\DCGAN_Image_Completion\111219\16bit_tofu_test_set_recentered_heated\*.png"
Exemplo n.º 28
0
def test_tomoworkflow():
    read = read_APS2BM()
    read.path.value = '/Users/hari/test.hdf'
    read.sino.value = (1050, 1051)

    norm = Normalize()
    read.arr.connect(norm.arr)
    read.flat.connect(norm.flats)
    read.dark.connect(norm.darks)

    outliers = RemoveOutlier()
    norm.normalized.connect(outliers.arr)
    outliers.dif.value = 500
    outliers.size.value = 5

    # maximum = ArrayMax()
    # outliers.corrected.connect(maximum.arr)
    # maximum.floor.value = 1e-16

    # neglog = MinusLog()
    # maximum.out.connect(neglog.arr)

    # phase = RetrievePhase()
    # maximum.out.connect(phase.arr)
    # phase.pixel_size.value=6.5e-5
    # phase.dist.value=3
    # phase.energy.value=27

    stripe = RemoveStripeFw()
    outliers.corrected.connect(stripe.tomo)
    stripe.level.value = 8
    stripe.wname.value = 'db5'
    stripe.sigma.value = 4
    stripe.pad.value = True

    padding = Pad()
    stripe.corrected.connect(padding.arr)
    padding.axis.value = 2
    padding.npad.value = 448
    padding.mode.value = 'edge'

    # angles = Angles()
    # angles.nang.value=0
    # angles.ang1.value=90
    # angles.ang2.value=180


    gridrec = Recon()
    padding.padded.connect(gridrec.tomo)
    read.angles.connect(gridrec.theta)
    gridrec.filter_name.value = 'butterworth'
    gridrec.algorithm.value = 'gridrec'
    gridrec.center.value = np.array([1295 + 448])  # 1295
    gridrec.filter_par.value = np.array([0.2, 2])
    # gridrec.sinogram_order.value = True

    crop = Crop()
    gridrec.reconstructed.connect(crop.arr)
    crop.p11.value = 448
    crop.p22.value = 448
    crop.p12.value = 448
    crop.p21.value = 448
    crop.axis.value = 0

    divide = ArrayDivide()

    circularmask = CircMask()
    crop.croppedarr.connect(circularmask.arr)
    circularmask.val.value = 0
    circularmask.axis.value = 0
    circularmask.ratio.value = 1

    writetiff = WriteTiffStack()

    workflow = Workflow('Tomography')
    for process in [read,
                    norm,
                    outliers,
                    # maximum,
                    # neglog,
                    # phase,
                    stripe,
                    padding,
                    # angles,
                    gridrec,
                    crop,
                    # divide,
                    circularmask,
                    # writetiff
                    ]:
        workflow.addProcess(process)

    dsk = DaskExecutor()
    result = dsk.execute(workflow)
    print(result)

    import pyqtgraph as pg
    pg.image(result[0]['normalized'].value.squeeze())

    from qtpy.QtWidgets import QApplication
    app = QApplication([])
    app.exec_()
Exemplo n.º 29
0
sino_center = im_size / 2  #1280
num_angles = 512  #1024
gpu_device = 2
oversamp_factor = 1.5
num_iter = 150
p = 1.2
sigma = .075

obj = tomopy.shepp3d((num_slice, im_size, im_size))  # Generate an object.
theta = tomopy.angles(num_angles)  # Generate uniformly spaced tilt angles.

### Comparing to tomopy
tomo = tomopy.project(obj, theta)
proj_dim = tomo.shape[2]
tomo = tomo[:, :, proj_dim / 2 - im_size / 2:proj_dim / 2 + im_size / 2]
pg.image(tomo)
pg.QtGui.QApplication.exec_()
################## GPU MBIR ######################
input_params = {}
input_params['gpu_device'] = gpu_device
input_params['oversamp_factor'] = oversamp_factor
input_params['num_iter'] = num_iter
input_params['p'] = p
input_params['smoothness'] = sigma
t = time.time()
#rec_sirt = gpuSIRT(tomo,theta,sino_center,input_params);
rec_mbir = gpuMBIR(tomo, theta, sino_center, input_params)
elapsed_time = (time.time() - t)
print('Time for reconstucting using GPU-MBIR of %d slices with %d iter : %f' %
      (num_slice, num_iter, elapsed_time))
pg.image(rec_mbir)
Exemplo n.º 30
0
        fy = np.fft.rfft(sw)[1:max_range_index+1]
        fy = fy/bit_depth
        fy = 20*np.log(abs(fy))
        fy = np.clip(fy, -40, float('inf'))
        m = max(m,max(fy))
        im[:,e] = np.array(fy)

    if 1:
        f = sample_rate/2.0
        xx, yy = np.meshgrid(
            np.linspace(0,decimate_sweeps*2*lines*sw_len/sample_rate, im.shape[1]),
            #np.linspace(0, im.shape[1], im.shape[1]),
            np.linspace(0, 3e8*max_range_index*sample_rate/(2*sw_len)/((bw/sweep_length)), im.shape[0]))

        plt.ylabel("Range [m]")
        plt.xlabel("Time [s]")
        imgplot = plt.pcolormesh(xx,yy,im)
        imgplot.set_clim(m-100,m)
        plt.colorbar()
        image.imsave('range_time_raw.png', np.flipud(im))
        plt.savefig('range_time.png', dpi=500)
        plt.show()

    if 0:
        app = QtGui.QApplication([])
        pg.image(im)
        if __name__ == '__main__':
            import sys
            if (sys.flags.interactive != 1) or not hasattr(QtCore, 'PYQT_VERSION'):
                QtGui.QApplication.instance().exec_()
        for key, val in dict(g).items():
            subg = val

            name, shape, found = get_h5_item_structure(subg, name, shape,
                                                       found)

    return name, shape, found


"""The following is only to test the functions.
It will find a dataset and display it
"""
if __name__ == "__main__":

    import sys
    import pyqtgraph as pg
    import qtpy.QtCore
    from qtpy.QtWidgets import QApplication

    # this h5 file must contain a dataset composed by an array or an image
    file_name = 'D:\\data\\PROCHIP\\temp\\test.h5'

    stack = get_dataset(file_name)

    pg.image(stack, title="Stack of images")

    #keeps the window open running a QT application
    if sys.flags.interactive != 1 or not hasattr(qtpy.QtCore, 'PYQT_VERSION'):
        QApplication.exec_()

    sys.exit("End of test")
Exemplo n.º 32
0
    (0x40, 183, 0x28 , 0x35, 10,  0           ),   
    (0x40, 183, 0x34 , 0x9 , 10,  0           ),
    (0x40, 181, 0xa0 , 0   , 10,  0           ),
    (0x40, 183, 0x10 , 0x35, 10,  0           ),   # set gain
    (0x40, 183, 0xbf7, 0x9 , 10,  0           ),   # set exposure
]
for ct in setup:
    if ct[0] & 0x80 > 0:
        dev.ctrl_transfer(bmRequestType=ct[0], bRequest=ct[1], wValue=ct[2], wIndex=ct[3], data_or_wLength=ct[5])
        print ct
    else:
        result = dev.ctrl_transfer(bmRequestType=ct[0], bRequest=ct[1], wValue=ct[2], wIndex=ct[3])
        print ct, '==>', result


imv = pg.image()

def showframe():
    global ep, imv
    # read one frame
    rawdata = ep.read(640*480 + 512)
    dev.ctrl_transfer(bmRequestType=0x40, bRequest=179, wValue=0, wIndex=0)
    
    # Colors are in bayer filter pattern:
    #   RGRGRG
    #   GBGBGB
    #   RGRGRG
    #   GBGBGB
    d1 = np.array(rawdata)
    d2 = d1[512:].reshape(480, 640)
    #imv.setImage(d2.T)
Exemplo n.º 33
0
def plot_transform(transform, scales=None, multiview=False):
    """ Display the different bands on the requested scales.

    Parameters
    ----------
    transform: WaveletTransformBase derived instance
        a wavelet decomposition.
    scales: list of int, default None
        the desired scales, if None compute at all scales.
    multiview: bool, default False
        if True use a slider to select a specific band.
    """
    # Set default scales
    scales = scales or range(transform.nb_scale)

    # Create application and tab widget
    app = pyqtgraph.mkQApp()
    tabs = QtGui.QTabWidget()
    tabs.setWindowTitle("Wavelet Transform")

    # Go through each scale
    pen = pyqtgraph.intColor(2)
    for scale in scales:

        # Create the plots for this scales with scrolling possibilities
        scroller = QtGui.QScrollArea()
        tabs.addTab(scroller, "Scale {0}".format(scale))

        # Go through each band of the current scale
        # > using multiview
        # TODO: update this code
        if multiview:
            raise NotImplementedError(
                "Multiview transform view not yet implemented.")
            window = pyqtgraph.image(numpy.asarray(transform[scale]))
            scroller.setWidget(window)
        # > using mosaic
        else:
            window = pyqtgraph.GraphicsWindow()
            scroller.setWidget(window)

            scale_data = transform[scale]
            if not isinstance(scale_data, list):
                scale_data = [scale_data]

            for subband_data in scale_data:

                # Deal with complex data
                if numpy.iscomplex(subband_data).any():
                    subband_data = numpy.abs(subband_data)
                subband_data = numpy.lib.pad(
                    subband_data, 1, "constant",
                    constant_values=subband_data.max())

                # Select viewer
                if subband_data.ndim == 1:
                    ax = window.addPlot()
                    ax.plot(subband_data, pen=pen)
                elif subband_data.ndim == 2:
                    box = window.addViewBox()
                    box.setAspectLocked(True)
                    image = pyqtgraph.ImageItem(subband_data)
                    box.addItem(image)
                else:
                    raise ValueError("This function currently support only "
                                     "1D or 2D data.")
                window.nextRow()

    # Display the tab
    tabs.show()

    # Run application
    app.exec_()
Exemplo n.º 34
0
#!/usr/bin/env python3
# Monitors if the TOF and MCP datastreams are alive
# Stephan Kuschel, Matt Ware, Catherine Saladrigas, 2019

import numpy as np
import pyqtgraph as pg
import sqs_nqs_tools.online as online
import time

_daqaliveplot = pg.image(title='DAQ alive: Green good, red bad')
CLRS = ['r', 'g']
cmap = pg.ColorMap(np.array([0., 1.]),
                   np.array([pg.colorTuple(pg.Color(c)) for c in CLRS]))
_daqaliveplot.setColorMap(cmap)


def plotdaqalive(status):
    '''
    Plots red/green image depending on value of status
    Input:
    ds
    Output:
        None, updates plot window
    '''
    im = np.ones((3, 3)) * float(status)
    _daqaliveplot.setImage(im, autoLevels=False)
    pg.QtGui.QApplication.processEvents()


def isAlive(ds):
    # Attempt to get the detector
Exemplo n.º 35
0
    def plotmaps_pg(self, mode = 0, target = 1, gfilter = 0):

        # # ## Set up plots/images in window
        # self.view = pg.GraphicsView()
        # l = pg.GraphicsLayout(border=(100,100,100))
        # self.view.setCentralItem(l)
        # self.amp1View = l.addViewBox(lockAspect=True)
        # self.amp2View = l.addViewBox(lockAspect=True)
        # self.waveformPlot = l.addPlot(title="Waveforms")
        # l.nextRow()
        # self.phase1View = l.addViewBox(lockAspect=True)
        # self.phase2View = l.addViewBox(lockAspect=True)
        # self.fftPlot = l.addPlot(title="FFTs")
        # self.phiView = l.addViewBox(lockAspect=True)

        global D
        max1 = numpy.amax(self.amplitudeImage1)
        if target > 1:
            max1 = numpy.amax([max1, numpy.amax(self.amplitudeImage2)])
        max1 = 10.0*int(max1/10.0)
        # pylab.figure(1)
        # pylab.subplot(2,3,1)
        # pylab.title('Amplitude Map1')
        # #scipy.ndimage.gaussian_filter(self.amplitudeImage1, 2, order=0, output=self.amplitudeImage1, mode='reflect')
        ampimg = scipy.ndimage.gaussian_filter(self.amplitudeImage1,gfilt, order=0, mode='reflect')
        #self.amp1View.addItem(pg.ImageItem(ampimg))
        self.amp1 = pg.image(ampimg, title="Amplitude Map 1", levels=(0.0, max1))
        #imga1 = pylab.imshow(ampimg)
        #pylab.colorbar()
        #imga1.set_clim = (0.0, max1)
        #pylab.subplot(2,3,4)
        #pylab.title('Phase Map1')
        phsmap=scipy.ndimage.gaussian_filter(self.phaseImage1, gfilt, order=0,mode='reflect')
        #self.phase1View.addItem(pg.ImageItem(phsmap))
        self.phs1 = pg.image(phsmap, title='Phase Map 1')
        #self.phs1.getHistogramWidget().item.gradient.
        #imgp1 = pylab.imshow(phsmap, cmap=matplotlib.cm.hsv)
        #pylab.colorbar()

        print "plotmaps Block 1"
        print "mode:", mode
        self.wavePlt = pg.plot(title='Waveforms')
        if mode == 0 or mode == 2:
            self.fftPlt = pg.plot(title = 'FFTs')
        
        if mode == 0:
            #pylab.subplot(2,3,3)

            for i in range(0, self.nPhases):
                self.wavePlt.plot(ta.n_times, D[:,5,5].view(ndarray))
                #pylab.plot(ta.n_times, D[:,5,5].view(ndarray))
                #pylab.plot(self.n_times, D[:,i*55+20, 60])
                #pylab.hold('on')
            #pylab.title('Waveforms')

            #pylab.subplot(2,3,6)
            for i in range(0, self.nPhases):
                self.fftPlt.plot(ta.n_times, self.DF[:,5,5].view(ndarray))
                #pylab.plot(ta.n_times, self.DF[:,5,5].view(ndarray))
                #pylab.plot(self.DF[:,i*55+20, 60])
                #pylab.hold('on')
            #pylab.title('FFTs')

        print "plotmaps Block 2"

        if mode == 1 and target > 1:
            #pylab.subplot(2,3,2)
            #pylab.title('Amplitude Map2')
            #scipy.ndimage.gaussian_filter(self.amplitudeImage2, 2, order=0, output=self.amplitudeImage2, mode='reflect')
            ampImg2 = scipy.ndimage.gaussian_filter(self.amplitudeImage2,gfilt, order=0, mode='reflect')
            #imga2 = pylab.imshow(ampImg2)
            #self.amp2View.addItem(pg.ImageItem(ampImg2))
            self.amp2 = pg.image(ampImg2, title='Amplitude Map 2', levels=(0.0, max1))
            #imga2.set_clim = (0.0, max1)
            #pylab.colorbar()
            #pylab.subplot(2,3,5)
            phaseImg2 = scipy.ndimage.gaussian_filter(self.phaseImage2, gfilt, order=0,mode='reflect') 
            #self.phase2View.addItem(pg.ImageItem(phaseImg2))
            self.phs2 = pg.image(phaseImg2, title="Phase Map 2", levels=(-np.pi/2.0, np.pi/2.0))
            #imgp2 = pylab.imshow(phaseImg2, cmap=matplotlib.cm.hsv)
            #pylab.colorbar()
            #imgp2.set_clim=(-numpy.pi/2.0, numpy.pi/2.0)
            #pylab.title('Phase Map2')
            ### doubled phase map
            #pylab.subplot(2,3,6)
            #scipy.ndimage.gaussian_filter(self.phaseImage2, 2, order=0, output=self.phaseImage2, mode='reflect')
            np1 = scipy.ndimage.gaussian_filter(self.phaseImage1, gfilt, order=0, mode='reflect')
            np2 = scipy.ndimage.gaussian_filter(self.phaseImage2, gfilt, order=0, mode='reflect')
            dphase = np1 + np2
            #dphase = self.phaseImage1 - self.phaseImage2
           
            #scipy.ndimage.gaussian_filter(dphase, 2, order=0, output=dphase, mode='reflect')
            #self.phiView.addItem(pg.ImageItem(dphase))
            self.phi = pg.image(dphase, title="2x Phi map", levels=(-np.pi, np.pi))
            #imgpdouble = pylab.imshow(dphase, cmap=matplotlib.cm.hsv)
            #pylab.title('2x Phi map')
            #pylab.colorbar()
            #imgpdouble.set_clim=(-numpy.pi, numpy.pi)

        print "plotmaps Block 3"

        if mode == 2 or mode == 1:
            if self.phasex == []:
                self.phasex = numpy.random.randint(0, high=D.shape[1], size=D.shape[1])
                self.phasey = numpy.random.randint(0, high=D.shape[2], size=D.shape[2])

            #pylab.subplot(2,3,3)
            sh = D.shape
            spr = sh[2]/self.nPhases
            wvfms=[]
            for i in range(0, self.nPhases):
                Dm = self.avgimg[i*spr,i*spr] # diagonal run
                wvfms=self.n_times, 100.0*(D[:,self.phasex[i], self.phasey[i]]/Dm)
                #pylab.plot(self.n_times, 100.0*(D[:,self.phasex[i], self.phasey[i]]/Dm))
                self.wavePlt.plot(self.n_times, 100.0*(D[:,self.phasex[i], self.phasey[i]]/Dm))
                #pylab.hold('on')
                #self.plotlist.append(pg.image(wvfms, title="Waveforms"))
                #print "it worked"
            #pylab.title('Waveforms')

        print "plotmaps Block 4"

        if mode == 2:
            #pylab.subplot(2,3,6)
            for i in range(0, self.nPhases):
                #pylab.plot(self.DF[1:,80, 80])
                #self.fftPlt.plot(self.DF[1:,80,80]) ## causing errors and i'm not sure what the desired thing is, Exception: Can not plot complex data types.
                pass
                #pylab.hold('on')
            #pylab.title('FFTs')

        print "plotmaps Block 5"
Exemplo n.º 36
0
    nikon_10x_0p25 = Objective(10, 0.25, 200)

    """
    qxga = SLM((1536, 2048), (8.2, 8.2), 350)
    mask = AnnularMask(3.824, 2.689)
    so_29x_0p7 = Objective(28.6, 0.71, 70)
    """

    field = Field(qxga, nikon_10x_0p25, 0.488, 60)
    # field = Lattice(3.54025, 2.689, 7, 3)(field)
    field = Bessel(mask.d_out, mask.d_in)(field)
    field = Defocus(7)(field)

    synth = Synthesizer(field, mask)

    options = ["excitation_xy"]
    results = synth.simulate(
        options, bounded=True, crop=False, zrange=(-50, 50), zstep=2, cf=0.0
    )

    w = pg.image(results["excitation_xy"])
    w.getView().setAspectLocked(ratio=2 / (8.2 / 60))

    w = pg.image(results["excitation_xz"])
    w.getView().setAspectLocked()

    # write_pattern_bmp("pattern.bmp", slm_pattern)

    app = pg.mkQApp()
    app.instance().exec_()
Exemplo n.º 37
0
#prepare dtm
clip=[-124.17, -122.65, 37.80, 39.30]
xmin = int((clip[0] - gt[0]) / gt[1])
ymin =int((clip[3] - gt[3]) / gt[5])
xmax = int((clip[1] - gt[0]) / gt[1])
ymax =int((clip[2] - gt[3]) / gt[5])	
win_xsize=xmax-xmin
win_ysize=ymax-ymin
x_buff=150 #new resolution
y_buff=150 #new resolution
data = np.transpose(layer.GetRasterBand(1).ReadAsArray(xmin,ymin,
						win_xsize,win_ysize,
						x_buff,y_buff))

# Disconnect old ROI
imv = pg.image(data)
# Create new ROI and install exactly as done in ImageView.__init__
# imv.roi.sigRegionChanged.disconnect(imv.roiChanged)
imv.roi = pg.LineROI((80, 80), (100, 100), 1)

# imv.roi.setZValue(20)
imv.view.addItem(imv.roi)
imv.roi.hide()
imv.roi.sigRegionChanged.connect(imv.roiChanged)






## Start Qt event loop unless running in interactive mode.
Exemplo n.º 38
0
    def parse_and_go(self, argsin=None):

        global period

        global binsize

        global options

        global basepath

        parser = OptionParser()  # command line options

        ##### parses all of the options inputted at the command line TFR 11/13/2015

        parser.add_option("-u",
                          "--upfile",
                          dest="upfile",
                          metavar='FILE',
                          help="load the up-file")

        parser.add_option("-d",
                          "--downfile",
                          dest="downfile",
                          metavar='FILE',
                          help="load the down-file")

        parser.add_option("-D",
                          "--directory",
                          dest="directory",
                          metavar='FILE',
                          help="Use directory for data")

        parser.add_option("-t",
                          "--test",
                          dest="test",
                          action='store_true',
                          help="Test mode to check calculations",
                          default=False)

        parser.add_option("-p",
                          '--period',
                          dest="period",
                          default=4.25,
                          type="float",
                          help="Stimulus cycle period")

        parser.add_option("-c",
                          '--cycles',
                          dest="cycles",
                          default=0,
                          type="int",
                          help="# cycles to analyze")

        parser.add_option("-g",
                          '--gfilter',
                          dest="gfilt",
                          default=0,
                          type="float",
                          help="gaussian filter width")

        parser.add_option("-f",
                          '--fdict',
                          dest="fdict",
                          default=0,
                          type="int",
                          help="Use dictionary entry")

        parser.add_option("-T",
                          "--tiff",
                          dest="tifffile",
                          default=fn,
                          type="str",
                          help="load a tiff file")

        parser.add_option("-b",
                          '--binning',
                          dest="binsize",
                          default=self.binsize,
                          type="int",
                          help="bin reduction x,y")

        parser.add_option("-z",
                          '--zbinning',
                          dest="zbinsize",
                          default=self.zbinsize,
                          type="int",
                          help="bin reduction z")

        if argsin is not None:

            (options, args) = parser.parse_args(argsin)

        else:

            (options, args) = parser.parse_args()

        if options.tifffile is not None:

            self.tifffile = options.tifffile

        if options.binsize is not None:

            self.binsize = options.binsize

        if options.zbinsize is not None:

            self.zbinsize = options.zbinsize

        # divided=np.zeros((4,100,512,512),float)

        if options.tifffile is not None:

            n2 = self.tifffile + '_MMStack_Pos0.ome.tif'
            # matfile = sio.loadmat(os.path.join(basepath,self.tifffile,'updown_data.mat'))
            self.read_tiff_stack(
                filename=os.path.join(basepath, self.tifffile, n2))

            im = self.imageData
            pg.image(im, title='raw image')
            pg.image(np.std(im, axis=0), title='standard deviation')
            pg.plot(im[:, 50, 60], title='50,60')
            pg.plot(im[:, 60, 50], title='60,50')
            print 'image shape: ', np.shape(im)
            # self.binReps()
            # self.avg_over_trials()
            # self.binToStim()
            # self.Image_Background()

            # self.Image_Divided()

        pylab.show()

        return
Exemplo n.º 39
0
    def parse_and_go(self, argsin = None):
        global period
        global binsize
        global options
        global basepath
        parser=OptionParser() # command line options
        ##### parses all of the options inputted at the command line TFR 11/13/2015
        parser.add_option("-u", "--upfile", dest="upfile", metavar='FILE',
                          help="load the up-file")
        parser.add_option("-d", "--downfile", dest="downfile", metavar='FILE',
                          help="load the down-file")
        parser.add_option("-D", "--directory", dest="directory", metavar='FILE',
                          help="Use directory for data")
        parser.add_option("-t", "--test", dest="test", action='store_true',
                          help="Test mode to check calculations", default=False)
        parser.add_option("-p", '--period', dest = "period", default=4.25, type="float",
                          help = "Stimulus cycle period")
        parser.add_option("-c", '--cycles', dest = "cycles", default=0, type="int",
                          help = "# cycles to analyze")
        parser.add_option("-b", '--binning', dest = "binsize", default=0, type="int",
                          help = "bin reduction x,y")
        parser.add_option("-g", '--gfilter', dest = "gfilt", default=0, type="float",
                          help = "gaussian filter width")
        parser.add_option("-f", '--fdict', dest = "fdict", default=0, type="int",
                          help = "Use dictionary entry")
        done_deal=np.zeros((4,256,256),float)
        if argsin is not None:
            (options, args) = parser.parse_args(argsin)
        else:
            (options, args) = parser.parse_args()
        print 'DB keys', DB.keys()
        if options.fdict is not None:
            if options.fdict in DB.keys(): # populate options 
                options.upfile = DB[options.fdict][0]
                options.stimtype = DB[options.fdict][1]
                options.reps = DB[options.fdict][2]
                options.freq = DB[options.fdict][6]
                options.datadate = DB[options.fdict][5]
            else:
               print "File %d NOT in DBase\n" % options.fdict
               return
        if options.directory is not None:
            self.directory = options.directory
        print 'options.upfile', options.upfile
        if options.stimtype is not None:
            # basepath = '/Volumes/TROPPDATA/data/2016.06.28_000/' + options.stimtype+'_'
            basepath = '/Volumes/TROPPDATA/data/' + options.datadate+'_000/' + options.stimtype+'_'
            
            print 'set up stimtype'
        # divided=np.zeros((4,100,512,512),float)
        
        if options.reps is not None:
            #for nn in [0,1,2,3,4,5,6,11]:
            for nn in range(options.reps):
                self.load_file(nn)
                self.RegisterStack()
                self.ProcessImage()
                #self.ProcessImage()
                if nn == 0: #check the shape of imagedata and alter divided if necessary
                    imshape = np.shape(self.imageData)
                    divided=np.zeros((options.reps,imshape[0],imshape[1],imshape[2]),float)
                    #processed=np.zeros((options.reps,85,imshape[1],imshape[2]),float)
                # self.Image_Background()
                # self.Image_Divided()
                # print 'divided', np.shape(self.divided)
                # self.divided= self.imageData
                divided[nn] = self.imageData
                self.imageData=[]
                #processed[nn] = self.ProcessedImageData

            print 'shape of divided: ', np.shape(divided)
            self.AvgFrames=np.mean(divided, axis=0)
            print 'shape of AvgFrames: ', np.shape(self.AvgFrames)
            temp = self.AvgFrames[:,110:210,70:170]
            # self.AvgFrames = []
            # self.AvgFrames = temp
            stim1=self.AvgFrames[0:19]
            stim2=self.AvgFrames[20:39]
            stim3=self.AvgFrames[40:59]
            stim4=self.AvgFrames[60:79]
            stim5=self.AvgFrames[80:99]
            averagestim = (stim1+stim2+stim3+stim4+stim5)/5
            pg.image(averagestim)
            pg.image(averagestim, title='average across all stimuli')
            pg.image(np.max(stim1,axis=0),title='Max Stimulus 1')
            pg.image(np.max(stim2,axis=0),title='Max Stimulus 2')
            pg.image(np.max(stim3,axis=0),title='Max Stimulus 3')
            pg.image(np.max(stim4,axis=0),title='Max Stimulus 4')
            pg.image(np.max(stim5,axis=0),title='Max Stimulus 5')
            pg.image(np.sum(stim1,axis=0),title='Sum Stimulus 1')
            # pg.image(np.max(self.AvgFrames[59:82],axis=0),title='Max response')      
            # pg.image(np.mean(divided, axis=0), title='divided image')
            # pg.image(np.std(divided, axis=0), title='standard deviation of the image')
            # imagestd=np.std(divided)
            # gf = scipy.ndimage.gaussian_filter(np.mean(divided,axis=0), [0.05,.01,.01], order=0, mode='reflect')
            # pg.image(np.max(gf,axis=0),title='filtered max')
            # pg.image(np.mean(processed, axis=0), title='processed, not divided')  
            # backproc = np.mean(processed[:,5:,:,:],axis=1)
            # divproc = (processed-backproc)/backproc 
            # pg.image(np.mean(divproc),axis=0)
        return
that is updated continuously like a video. For a super-basic example 
see surfacePlotExample.py; the code below is a little more elaborate.


Rob Campbell - SWC 2020
'''

import numpy as np
from pyqtgraph.Qt import QtCore, QtGui
import pyqtgraph as pg

## Create a smoothed random image
img = pg.gaussianFilter(np.random.normal(size=(200, 200)), (5, 5)) * 20 + 100

## Display the data
imview = pg.image(img)

# Remove the buttons beneath to histogram
imview.ui.roiBtn.hide()
imview.ui.menuBtn.hide()

# So the histogram does not bounce arond like crazy
imview.ui.graphicsView.autoPixelRange = False
imview.ui.histogram.autoPixelRange = False

updateTime = pg.ptime.time()
fps = 0


def updateData():
    global updateTime, fps
Exemplo n.º 41
0
    def parse_and_go(self, argsin=None):
        global period
        parser = OptionParser()  # command line options
        ##### parses all of the options inputted at the command line TFR 11/13/2015
        parser.add_option("-u", "--upfile", dest="upfile", metavar="FILE", help="load the up-file")
        parser.add_option("-d", "--downfile", dest="downfile", metavar="FILE", help="load the down-file")
        parser.add_option("-D", "--directory", dest="directory", metavar="FILE", help="Use directory for data")
        parser.add_option(
            "-t", "--test", dest="test", action="store_true", help="Test mode to check calculations", default=False
        )
        parser.add_option("-p", "--period", dest="period", default=8.0, type="float", help="Stimulus cycle period")
        parser.add_option("-c", "--cycles", dest="cycles", default=0, type="int", help="# cycles to analyze")
        parser.add_option("-b", "--binning", dest="binsize", default=0, type="int", help="bin reduction x,y")
        parser.add_option("-g", "--gfilter", dest="gfilt", default=0, type="float", help="gaussian filter width")
        parser.add_option("-f", "--fdict", dest="fdict", default=0, type="int", help="Use dictionary entry")
        if argsin is not None:
            (options, args) = parser.parse_args(argsin)
        else:
            (options, args) = parser.parse_args()

        if options.period is not None:
            measuredPeriod = options.period
        if options.cycles is not None:
            self.nCycles = options.cycles
        if options.binsize is not None:
            binsize = options.binsize
        if options.gfilt is not None:
            gfilt = options.gfilt

            # TFR- this code generates a test signal for running a test analysis sequence
        print options.test
        if options.test is True:
            print "Running Test Sample"
            period = 8.0  # period and frame sample rate can be different
            framerate = 8.0
            nper = 1
            d = 10.0 * numpy.random.normal(size=(2500, 128, 128)).astype("float32")
            ds = d.shape
            self.nFrames = d.shape[0]
            self.nPhases = 10
            maxdel = 50
            self.phasex = []
            self.phasey = []
            for i in range(0, self.nPhases):
                dx = i * ds[1] / self.nPhases  # each phase is assigned to a region
                baseline = 0.0
                self.resp = numpy.zeros((self.nFrames,))
                phaseDelay = 0.25 * period + period * (
                    float(i) / self.nPhases
                )  # phase delay for this region from 0 to nearly the stimulus repeat period
                # print '********phase delay: ', phaseDelay
                for j in range(0, nper):  # for each period
                    tdelay = (float(j) * period) + phaseDelay  # time to phase delay point
                    idelay = int(numpy.floor(tdelay * framerate))  # convert to frame position in frame space
                #     print '     tdel: ', tdelay, '    idel: ', idelay
                #    if idelay < self.nFrames-maxdel:
                #        self.resp[idelay:idelay+maxdel] = (i+1)*numpy.exp(-numpy.linspace(0, 2, maxdel)) # marks amplitudes as well
                self.resp = numpy.sin(
                    numpy.linspace(0, 2.0 * numpy.pi * self.nFrames / (period * framerate), self.nFrames)
                    + i * numpy.pi / 8
                    - numpy.pi / 2.0
                )
                d[:, dx : dx + int(ds[1] / self.nPhases), 5 : int(ds[2] / 2)] += self.resp[
                    :, numpy.newaxis, numpy.newaxis
                ]
                self.phasex.append((2 + (dx + int(ds[1] / self.nPhases)) / 2))
                self.phasey.append(
                    (6 + int(ds[2] / 2) / 2)
                )  # make the signal equivalent of digitized one (baseline 3000, signal at 1e-4 of baseline)
            d = (d * 3000.0 * 1e-4) + 3000.0  # scale and offset to match data scaling coming in
            self.imageData = d.astype("int16")  # reduce to a 16-bit map to match camera data type
            self.times = numpy.arange(0, self.nFrames / framerate, 1.0 / framerate)
            print "Test Image Created"
            self.Analysis_FourierMap(period=period, target=1, mode=1, bins=binsize)
            print "Completed Analysis FourierMap"
            self.plotmaps_pg(mode=2, gfilter=gfilt)
            print "Completed plot maps"

            return

        if options.fdict is not None:
            if options.fdict in DB.keys():  # populate options
                options.upfile = DB[options.fdict][0]
                options.downfile = DB[options.fdict][1]
                options.period = DB[options.fdict][4]
            else:
                print "File %d NOT in DBase\n" % options.fdict
                return
        if options.directory is not None:
            self.directory = options.directory

        if options.upfile is not None:
            self.upfile = options.upfile
            target = 1

        if options.downfile is not None:
            self.downfile = options.downfile
            target = 2

        target = 0
        upf = None
        dwnf = None
        if options.upfile is not None:
            upf = basepath + options.upfile + "/Camera/frames.ma"
        if options.downfile is not None:
            dwnf = basepath + options.downfile + "/Camera/frames.ma"

        for file in (upf, dwnf):
            # if options.upfile is not None and options.downfile is not None:
            if file is None:
                break
            im = []
            self.imageData = []
            print "loading data from ", file
            try:
                im = MetaArray(file=file, subset=(slice(0, 2), slice(64, 128), slice(64, 128)))
            except:
                print "Error loading upfile: %s\n" % file
                return
            print "data loaded"
            target = target + 1
            self.times = im.axisValues("Time").astype("float32")
            self.imageData = im.view(np.ndarray).astype("float32")
            im = []
            if file is upf:
                upflag = 1
            else:
                upflag = 0
            measuredPeriod = 1.25
            self.Analysis_FourierMap(period=measuredPeriod, target=target, bins=binsize, up=upflag)
        if target > 0:
            self.plotmaps_pg(mode=1, target=target, gfilter=gfilt)
            self.firstframe = pg.image(self.imageData[0], title="first frame of image")
Exemplo n.º 42
0
im_size = 512  #2560 #A n X n X n volume
sino_center = im_size / 2  #1280
num_angles = 512  #1024
gpu_device = 2
oversamp_factor = 1.5
num_iter = 150
p = 1.2
sigma = .1

obj = tomopy.shepp3d((num_slice, im_size, im_size))  # Generate an object.
theta = tomopy.angles(num_angles)  # Generate uniformly spaced tilt angles.
### Comparing to tomopy
tomo = tomopy.project(obj, theta)
proj_dim = tomo.shape[2]
tomo = tomo[:, :, proj_dim / 2 - im_size / 2:proj_dim / 2 + im_size / 2]
pg.image(tomo)
pg.QtGui.QApplication.exec_()
################## GPU MBIR ######################
input_params = {}
input_params['gpu_device'] = gpu_device
input_params['oversamp_factor'] = oversamp_factor
input_params['num_iter'] = num_iter
input_params['p'] = p
input_params['smoothness'] = sigma
t = time.time()
rec_sirt = gpuSIRT(tomo, theta, sino_center, input_params)
elapsed_time = (time.time() - t)
print('Time for reconstucting using GPU-SIRT of %d slices with %d iter : %f' %
      (num_slice, num_iter, elapsed_time))
pg.image(rec_sirt)
pg.QtGui.QApplication.exec_()
Exemplo n.º 43
0
 def Image_Divided(self):
     self.divided = (self.imageData - self.background) / self.background
     self.imageData = self.divided
     pg.image(self.divided[1:], title='divide image')
     return
Exemplo n.º 44
0
print("Median:", np.median(lengths))

# Read the syllables and generate features, also zero padding short syllables
nlevels = 5
featuresw = []
n_mfcc = 40
n_bins = 32
n_chroma = 12
featuresm = []
featuresc = []
# featuresc = []
featuress = []
featuresa = []
labels = []
count = 0
imagewindow = pg.image()
for record in dataset:
    # # 1) compute features over whole syllables
    # audiodata = loadFile(filename=record[0], duration=record[2][1] - record[2][0], offset=record[2][0], fs=fs,
    #                      denoise=False, f1=0, f2=0)
    # audiodata = audiodata.tolist()
    # featuresa.append([audiodata, record[1][2], record[1][3], record[-1]])
    #
    # mfcc = librosa.feature.mfcc(y=np.asarray(audiodata), sr=fs, n_mfcc=40)
    # mfcc_delta = librosa.feature.delta(mfcc, mode='nearest')
    # mfcc = np.concatenate((mfcc, mfcc_delta), axis=0)
    # mfcc = [i for sublist in mfcc for i in sublist]
    # featuresm.append([mfcc, record[1][2], record[1][3], record[-1]])
    #
    # ws = WaveletSegment.WaveletSegment(spInfo={})
    # we = ws.computeWaveletEnergy(data=audiodata, sampleRate=fs, nlevels=5, wpmode='new',
Exemplo n.º 45
0
 #if 1:
 #bin_fp = open("e:/zhuang/test.bin", "wb")
 if 0:
     
     hcam.startAcquisition()
     print("Gooooo")
     time.sleep(5)
     for i in range(hcam.number_frames):
 
         # Get frames.
         [frames, dims] = hcam.getFrames()
 
         # Save frames.
         for aframe in frames:
             np_data = aframe.getData()
             pg.image(np.reshape(np_data,(vsize, hsize)).T,)
             #np_data.tofile(bin_fp)
 
         # Print backlog.
         print (i, len(frames))
         #print(np_data)
         #pg.image(np.reshape(np_data,(vsize, hsize)).T) #.T do the transpose, otherwise the image is inverted (due to how data are put in the buffer)
         #if (len(frames) > 20):
         #    exit()
 
     hcam.stopAcquisition()
     #bin_fp.close()
     hcam.shutdown()
     error_uninit = dcam.dcamapi_uninit()
     
     if (error_uninit != DCAMERR_NOERROR):
Exemplo n.º 46
0
"""
Display a plot and an image with minimal setup. 

pg.plot() and pg.image() are indended to be used from an interactive prompt
to allow easy data inspection (but note that PySide unfortunately does not
call the Qt event loop while the interactive prompt is running, in this case
it is necessary to call QApplication.exec_() to make the windows appear).
"""
import initExample ## Add path to library (just for examples; you do not need this)


import numpy as np
import pyqtgraph as pg

data = np.random.normal(size=1000)
pg.plot(data, title="Simplest possible plotting example")

data = np.random.normal(size=(500,500))
pg.image(data, title="Simplest possible image example")

if __name__ == '__main__':
    pg.mkQApp().exec_()
Exemplo n.º 47
0
import pyqtgraph as pg
from scopetek import Scopetek

# Initialize camera
cam = Scopetek()
# Set camera parameters
cam.setup(resolution=(640,480), fast=True, exposure=131e-3, gain=1)

imv = pg.image()

    
while True:
    frame = cam.readframe()
    rgb = cam.bayer_to_rgb(frame)
    imv.setImage(rgb.transpose(1, 0, 2))
    
    pg.QtGui.QApplication.processEvents()
    if not imv.isVisible():
        cam.stop()
        break
Exemplo n.º 48
0
    def __init__(self, fwritename, soft_version, raw_spts, nucs_dil,
                 nucs_3d_det, spts_segm, spts_mature, bkg_cages,
                 raw_data_fname, int_thr_value):

        mycmap = np.fromfile('mycmap.bin', 'uint16').reshape((10000, 3))
        nucs_dil_3c = label2rgb(nucs_dil,
                                bg_label=0,
                                bg_color=[0, 0, 0],
                                colors=mycmap)

        w = pg.image(nucs_dil_3c)
        txt_pos = regionprops(
            nucs_dil
        )  # regionprops of the nuclei: we use the centroids coordinates to print text on image and in the excel
        for t in range(len(
                txt_pos)):  # map of dilated nuclei with tag-numbers on the top
            a = pg.TextItem(str(txt_pos[t]['label']), 'k')
            w.addItem(a)
            a.setPos(txt_pos[t]['centroid'][0] - 30,
                     txt_pos[t]['centroid'][1] - 30)

        mtx_mature = np.zeros(nucs_3d_det.nucs_lbls.shape
                              )  # 3D matrix of all the spots center of mass
        steps = nucs_3d_det.nucs_lbls.shape[0]

        for k in range(spts_mature.shape[1]):  # populating the matrix
            mtx_mature[int(spts_mature[3, k]),
                       int(spts_mature[4, k]),
                       int(spts_mature[5, k])] = 1

        mtx_mature_int = mtx_mature * np.sign(nucs_3d_det.nucs_lbls)
        mtx_mature_ext = mtx_mature * (1 - np.sign(nucs_3d_det.nucs_lbls))

        idxs = np.unique(nucs_dil)[1:]  # list of the nuclei tags

        book = xlwt.Workbook(encoding='utf-8')
        sheet1 = book.add_sheet("Internal")
        sheet2 = book.add_sheet("External")
        sheet3 = book.add_sheet("Tot")
        print(a)

        sheet1.write(0, 0, "Nuc_id")
        sheet1.write(1, 0, "X coord")
        sheet1.write(2, 0, "Y coord")
        sheet1.write(3, 0, "Numb of Spts")
        sheet1.write(4, 0, "Region Volume")
        sheet1.write(5, 0, "Nucleus Volume")
        sheet1.write(6, 0, "Spots Intensity")

        sheet2.write(0, 0, "Nuc_id")
        sheet2.write(1, 0, "X coord")
        sheet2.write(2, 0, "Y coord")
        sheet2.write(3, 0, "Numb of Spts")
        sheet2.write(4, 0, "Region Volume")
        sheet2.write(5, 0, "Nucleus Volume")
        sheet2.write(6, 0, "Spots Intensity")

        sheet3.write(0, 0, "Nuc_id")
        sheet3.write(1, 0, "X coord")
        sheet3.write(2, 0, "Y coord")
        sheet3.write(3, 0, "Numb of Spts")
        sheet3.write(4, 0, "Region Volume")
        sheet3.write(5, 0, "Nucleus Volume")
        sheet3.write(6, 0, "Spots Intensity")

        book_b = xlwt.Workbook(encoding='utf-8')
        sheet1_b = book_b.add_sheet("Internal")
        sheet2_b = book_b.add_sheet("External")
        sheet3_b = book_b.add_sheet("Tot")

        sheet1_b.write(0, 0, "Nuc_id")
        sheet1_b.write(1, 0, "X coord")
        sheet1_b.write(2, 0, "Y coord")
        sheet1_b.write(3, 0, "Numb of Spts")
        sheet1_b.write(4, 0, "Region Volume")
        sheet1_b.write(5, 0, "Nucleus Volume")
        sheet1_b.write(6, 0, "Spots Intensity/Bkg")

        sheet2_b.write(0, 0, "Nuc_id")
        sheet2_b.write(1, 0, "X coord")
        sheet2_b.write(2, 0, "Y coord")
        sheet2_b.write(3, 0, "Numb of Spts")
        sheet2_b.write(4, 0, "Region Volume")
        sheet2_b.write(5, 0, "Nucleus Volume")
        sheet2_b.write(6, 0, "Spots Intensity/Bkg")

        sheet3_b.write(0, 0, "Nuc_id")
        sheet3_b.write(1, 0, "X coord")
        sheet3_b.write(2, 0, "Y coord")
        sheet3_b.write(3, 0, "Numb of Spts")
        sheet3_b.write(4, 0, "Region Volume")
        sheet3_b.write(5, 0, "Nucleus Volume")
        sheet3_b.write(6, 0, "Spots Intensity/Bkg")

        pbar1 = ProgressBar(total1=idxs.size)
        pbar1.show()

        for q in range(idxs.size):
            # print(q)
            pbar1.update_progressbar(q)
            sheet1.write(0, q + 1, float(idxs[q]))  # writing the id
            sheet1.write(
                1, q + 1,
                txt_pos[q]['centroid'][0])  # x coordinate of nuclei centroid
            sheet1.write(
                2, q + 1,
                txt_pos[q]['centroid'][1])  # y coordinate of nuclei centroid
            sheet1.write(3, q + 1, np.sum(
                (nucs_dil == idxs[q]) * mtx_mature))  # number of spots
            sheet1.write(4, q + 1, float(
                (nucs_dil == idxs[q]).sum() * steps))  # region nuclei volume
            sheet1.write(
                5, q + 1,
                float(
                    ((nucs_dil == idxs[q]) *
                     np.sign(nucs_3d_det.nucs_lbls)).sum()))  # nucleus volume

            sheet2.write(0, q + 1, float(idxs[q]))  # writing the id
            sheet2.write(
                1, q + 1,
                txt_pos[q]['centroid'][0])  # x coordinate of nuclei centroid
            sheet2.write(
                2, q + 1,
                txt_pos[q]['centroid'][1])  # y coordinate of nuclei centroid
            sheet2.write(3, q + 1, np.sum(
                (nucs_dil == idxs[q]) * mtx_mature))  # number of spots
            sheet2.write(4, q + 1, float(
                (nucs_dil == idxs[q]).sum() * steps))  # region nuclei volume
            sheet2.write(
                5, q + 1,
                float(
                    ((nucs_dil == idxs[q]) *
                     np.sign(nucs_3d_det.nucs_lbls)).sum()))  # nucleus volume

            sheet3.write(0, q + 1, float(idxs[q]))  # writing the id
            sheet3.write(
                1, q + 1,
                txt_pos[q]['centroid'][0])  # x coordinate of nuclei centroid
            sheet3.write(
                2, q + 1,
                txt_pos[q]['centroid'][1])  # y coordinate of nuclei centroid
            sheet3.write(3, q + 1, np.sum(
                (nucs_dil == idxs[q]) * mtx_mature))  # number of spots
            sheet3.write(4, q + 1, float(
                (nucs_dil == idxs[q]).sum() * steps))  # region nuclei volume
            sheet3.write(
                5, q + 1,
                float(
                    ((nucs_dil == idxs[q]) *
                     np.sign(nucs_3d_det.nucs_lbls)).sum()))  # nucleus volume

            sheet1_b.write(0, q + 1, float(idxs[q]))  # writing the id
            sheet1_b.write(
                1, q + 1,
                txt_pos[q]['centroid'][0])  # x coordinate of nuclei centroid
            sheet1_b.write(
                2, q + 1,
                txt_pos[q]['centroid'][1])  # y coordinate of nuclei centroid
            sheet1_b.write(3, q + 1, np.sum(
                (nucs_dil == idxs[q]) * mtx_mature))  # number of spots
            sheet1_b.write(4, q + 1, float(
                (nucs_dil == idxs[q]).sum() * steps))  # region nuclei volume
            sheet1_b.write(
                5, q + 1,
                float(
                    ((nucs_dil == idxs[q]) *
                     np.sign(nucs_3d_det.nucs_lbls)).sum()))  # nucleus volume

            sheet2_b.write(0, q + 1, float(idxs[q]))  # writing the id
            sheet2_b.write(
                1, q + 1,
                txt_pos[q]['centroid'][0])  # x coordinate of nuclei centroid
            sheet2_b.write(
                2, q + 1,
                txt_pos[q]['centroid'][1])  # y coordinate of nuclei centroid
            sheet2_b.write(3, q + 1, np.sum(
                (nucs_dil == idxs[q]) * mtx_mature))  # number of spots
            sheet2_b.write(4, q + 1, float(
                (nucs_dil == idxs[q]).sum() * steps))  # region nuclei volume
            sheet2_b.write(
                5, q + 1,
                float(
                    ((nucs_dil == idxs[q]) *
                     np.sign(nucs_3d_det.nucs_lbls)).sum()))  # nucleus volume

            sheet3_b.write(0, q + 1, float(idxs[q]))  # writing the id
            sheet3_b.write(
                1, q + 1,
                txt_pos[q]['centroid'][0])  # x coordinate of nuclei centroid
            sheet3_b.write(
                2, q + 1,
                txt_pos[q]['centroid'][1])  # y coordinate of nuclei centroid
            sheet3_b.write(3, q + 1, np.sum(
                (nucs_dil == idxs[q]) * mtx_mature))  # number of spots
            sheet3_b.write(4, q + 1, float(
                (nucs_dil == idxs[q]).sum() * steps))  # region nuclei volume
            sheet3_b.write(
                5, q + 1,
                float(
                    ((nucs_dil == idxs[q]) *
                     np.sign(nucs_3d_det.nucs_lbls)).sum()))  # nucleus volume

        pbar1.close()

        pbar2 = ProgressBar(total1=idxs.size)
        pbar2.show()

        for j in range(idxs.size):
            # print(j)
            pbar2.update_progressbar(j)
            idxs_ins = np.unique(
                (nucs_dil == idxs[j]) * mtx_mature_int * spts_segm
            )[1:]  # tags for the spots inside the dilated nucleus (nuclear region)

            jj = -1  # this is just for paging purposes
            for jj in range(idxs_ins.size):
                a_jj = np.where(spts_mature[0, :] == idxs_ins[jj])[0]
                if a_jj.size > 0:
                    sheet1.write(7 + jj, j + 1, float(
                        spts_mature[1,
                                    a_jj[0]]))  # intensity value of the spots
                    sheet3.write(7 + jj, j + 1, float(spts_mature[1, a_jj[0]]))

                    bkg_bff = (bkg_cages == spts_mature[0, a_jj[0]]) * raw_spts
                    bkg_bff = bkg_bff[bkg_bff != 0].mean()
                    sheet1_b.write(7 + jj, j + 1,
                                   float(spts_mature[1, a_jj[0]]) /
                                   bkg_bff)  # intensity value of the spots
                    sheet3_b.write(7 + jj, j + 1,
                                   float(spts_mature[1, a_jj[0]]) / bkg_bff)

            # this part is just to write the names of the files and the data: if statement is just for paging purposes

            if j == 0:
                try:
                    sheet1.write(7 + jj + 2, 0, "File Name")
                    sheet1.write(7 + jj + 3, 0, raw_data_fname)
                    sheet1.write(7 + jj + 5, 0, "date")
                    sheet1.write(
                        7 + jj + 6, 0,
                        str(datetime.date.today().day) + '/' +
                        str(datetime.date.today().month) + '/' +
                        str(datetime.date.today().year))
                    sheet1.write(7 + jj + 8, 0, "Software Version")
                    sheet1.write(7 + jj + 9, 0, soft_version)

                    sheet1_b.write(7 + jj + 2, 0, "File Name")
                    sheet1_b.write(7 + jj + 3, 0, raw_data_fname)
                    sheet1_b.write(7 + jj + 5, 0, "date")
                    sheet1_b.write(
                        7 + jj + 6, 0,
                        str(datetime.date.today().day) + '/' +
                        str(datetime.date.today().month) + '/' +
                        str(datetime.date.today().year))
                    sheet1_b.write(7 + jj + 8, 0, "Software Version")
                    sheet1_b.write(7 + jj + 9, 0, soft_version)

                except UnboundLocalError:
                    sheet1.write(13, 0, "File Name")
                    sheet1.write(14, 0, raw_data_fname)
                    sheet1.write(16, 0, "date")
                    sheet1.write(
                        17, 0,
                        str(datetime.date.today().day) + '/' +
                        str(datetime.date.today().month) + '/' +
                        str(datetime.date.today().year))
                    sheet1.write(19, 0, "Software Version")
                    sheet1.write(20, 0, soft_version)

                    sheet1_b.write(13, 0, "File Name")
                    sheet1_b.write(14, 0, raw_data_fname)
                    sheet1_b.write(16, 0, "date")
                    sheet1_b.write(
                        17, 0,
                        str(datetime.date.today().day) + '/' +
                        str(datetime.date.today().month) + '/' +
                        str(datetime.date.today().year))
                    sheet1_b.write(19, 0, "Software Version")
                    sheet1_b.write(20, 0, soft_version)

            idxs_exs = np.unique(
                (nucs_dil == idxs[j]) * mtx_mature_ext * spts_segm
            )[1:]  # tags for the spots inside the dilated nucleus (nuclear region)

            for kk in range(idxs_exs.size):
                a_kk = np.where(spts_mature[0, :] == idxs_exs[kk])[0]
                if a_kk.size > 0:
                    sheet2.write(7 + kk, j + 1, float(
                        spts_mature[1,
                                    a_kk[0]]))  # intensity value of the spots
                    sheet3.write(7 + jj + kk + 1, j + 1,
                                 float(spts_mature[1, a_kk[0]]))

                    bkg_bff = (bkg_cages == spts_mature[0, a_kk[0]]) * raw_spts
                    bkg_bff = bkg_bff[bkg_bff != 0].mean()
                    sheet2_b.write(7 + kk, j + 1,
                                   float(spts_mature[1, a_kk[0]]) /
                                   bkg_bff)  # intensity value of the spots
                    sheet3_b.write(7 + jj + kk + 1, j + 1,
                                   float(spts_mature[1, a_kk[0]]) / bkg_bff)

        book.save(fwritename + '/smiFish_journal.xls')
        book_b.save(fwritename + '/smiFish_background_journal.xls')

        steps, xsize, ysize = spts_segm.shape
        spts_segm = spts_segm.reshape(spts_segm.size)
        spts_segm = np.append(steps, spts_segm)
        spts_segm = np.append(xsize, spts_segm)
        spts_segm = np.append(ysize, spts_segm)
        spts_segm.astype("uint16").tofile(
            str(fwritename) + "/spots_segmented.bin")

        nucs_lbls = nucs_3d_det.nucs_lbls
        nucs_lbls = nucs_lbls.reshape(nucs_3d_det.nucs_lbls.size)
        nucs_lbls = np.append(steps, nucs_lbls)
        nucs_lbls = np.append(xsize, nucs_lbls)
        nucs_lbls = np.append(ysize, nucs_lbls)
        nucs_lbls.astype("uint16").tofile(
            str(fwritename) + "/nucs_segmented.bin")

        nucs_dil = nucs_dil.reshape(nucs_dil.size)
        nucs_dil = np.append(xsize, nucs_dil)
        nucs_dil = np.append(ysize, nucs_dil)
        nucs_dil.astype("uint16").tofile(str(fwritename) + "/nucs_dil.bin")

        pbar2.close()
Exemplo n.º 49
0
    def parse_and_go(self, argsin = None):
        global period
        global binsize
        global options
        global basepath
        parser=OptionParser() # command line options
        ##### parses all of the options inputted at the command line TFR 11/13/2015
        parser.add_option("-u", "--upfile", dest="upfile", metavar='FILE',
                          help="load the up-file")
        parser.add_option("-d", "--downfile", dest="downfile", metavar='FILE',
                          help="load the down-file")
        parser.add_option("-D", "--directory", dest="directory", metavar='FILE',
                          help="Use directory for data")
        parser.add_option("-t", "--test", dest="test", action='store_true',
                          help="Test mode to check calculations", default=False)
        parser.add_option("-p", '--period', dest = "period", default=4.25, type="float",
                          help = "Stimulus cycle period")
        parser.add_option("-c", '--cycles', dest = "cycles", default=0, type="int",
                          help = "# cycles to analyze")
        parser.add_option("-b", '--binning', dest = "binsize", default=0, type="int",
                          help = "bin reduction x,y")
        parser.add_option("-g", '--gfilter', dest = "gfilt", default=0, type="float",
                          help = "gaussian filter width")
        parser.add_option("-f", '--fdict', dest = "fdict", default=0, type="int",
                          help = "Use dictionary entry")
        done_deal=np.zeros((4,256,256),float)
        if argsin is not None:
            (options, args) = parser.parse_args(argsin)
        else:
            (options, args) = parser.parse_args()
        print 'DB keys', DB.keys()
        if options.fdict is not None:
            if options.fdict in DB.keys(): # populate options 
                options.upfile = DB[options.fdict][0]
                options.stimtype = DB[options.fdict][1]
                options.reps = DB[options.fdict][2]
                options.freq = DB[options.fdict][6]
            else:
               print "File %d NOT in DBase\n" % options.fdict
               return
        if options.directory is not None:
            self.directory = options.directory
        print 'options.upfile', options.upfile
        if options.stimtype is not None:
            basepath = '/Volumes/TROPPDATA/data/2016.06.14_000/' + options.stimtype+'_'
            print 'set up stimtype'
        # divided=np.zeros((4,100,512,512),float)
        
        if options.reps is not None:
            for nn in range(options.reps):
                self.load_file(nn)
                if nn == 0: #check the shape of imagedata and alter divided if necessary
                    imshape = np.shape(self.imageData)
                    divided=np.zeros((4,imshape[0],imshape[1],imshape[2]),float)

                # self.Image_Background()
                self.Image_Divided()
                # print 'divided', np.shape(self.divided)
                # self.divided= self.imageData
                divided[nn] = self.divided

            self.AvgFrames=np.mean(divided, axis=0)
            stim1=self.AvgFrames[0:19]
            stim2=self.AvgFrames[20:39]
            stim3=self.AvgFrames[40:59]
            stim4=self.AvgFrames[60:79]
            stim5=self.AvgFrames[80:99]
            pg.image(np.max(stim1,axis=0),title='Stimulus 1')
            pg.image(np.max(stim2,axis=0),title='Stimulus 2')
            pg.image(np.max(stim3,axis=0),title='Stimulus 3')
            pg.image(np.max(stim4,axis=0),title='Stimulus 4')
            pg.image(np.max(stim5,axis=0),title='Stimulus 5')
                
            pg.image(np.max(self.AvgFrames,axis=0),title='Max across all stimuli')      

                 
        return
            if matrix[
                    neur_y,
                    neur_x] == 70:  ## THRESHOLD value. Change to change firing rate
                matrix[neur_y, neur_x] = 0
                spike_matrix[neur_y, neur_x] = 1
                #                Pi_socket.sendto(str(neur_x)+' '+str(neur_y)+' ', (server, s_port)) #With each spike Pi receives something like '10 12 '
                #                Pi_socket.send(str(neur_x)+' '+str(neur_y)+' \n') #With each spike Pi receives something like '10 12 '
                count_out += 1


#                inc_str = Pi_socket.recv(1024)
#                inc_int = map(int, inc_str[0:len(inc_str)-1].split(' '))
#                count_inc += len(inc_int)
    win.setImage(spike_matrix, autoRange=True)
    pg.QtGui.QApplication.processEvents()
""" Here we initialize the plot window and plotting colors. """
pos = np.array([0.0, 1.0])
color = np.array([[0, 0, 255, 255], [255, 0, 0, 255]])  #, dtype=np.ubyte)
color_map = pg.ColorMap(pos, color, mode=None)

win = pg.image(matrix)
win.view.setAspectLocked(False)
win.setColorMap(color_map)
win.resize(700, 500)

while True:
    UDP_jAER()
#finally:
#    DVS_socket.close()
#    Pi_socket.close()
Exemplo n.º 51
0
    def parse_and_go(self, argsin = None):
        global period
        global binsize
        global options
        global basepath
        parser=OptionParser() # command line options
        ##### parses all of the options inputted at the command line TFR 11/13/2015
        parser.add_option("-u", "--upfile", dest="upfile", metavar='FILE',
                          help="load the up-file")
        parser.add_option("-d", "--downfile", dest="downfile", metavar='FILE',
                          help="load the down-file")
        parser.add_option("-D", "--directory", dest="directory", metavar='FILE',
                          help="Use directory for data")
        parser.add_option("-t", "--test", dest="test", action='store_true',
                          help="Test mode to check calculations", default=False)
        parser.add_option("-p", '--period', dest = "period", default=4.25, type="float",
                          help = "Stimulus cycle period")
        parser.add_option("-c", '--cycles', dest = "cycles", default=0, type="int",
                          help = "# cycles to analyze")
        parser.add_option("-b", '--binning', dest = "binsize", default=0, type="int",
                          help = "bin reduction x,y")
        parser.add_option("-g", '--gfilter', dest = "gfilt", default=0, type="float",
                          help = "gaussian filter width")
        parser.add_option("-f", '--fdict', dest = "fdict", default=0, type="int",
                          help = "Use dictionary entry")
        done_deal=np.zeros((4,256,256),float)
        if argsin is not None:
            (options, args) = parser.parse_args(argsin)
        else:
            (options, args) = parser.parse_args()
        print 'DB keys', DB.keys()
        if options.fdict is not None:
            if options.fdict in DB.keys(): # populate options 
                options.upfile = DB[options.fdict][0]
                options.stimtype = DB[options.fdict][1]
                options.reps = DB[options.fdict][2]
                options.freq = DB[options.fdict][6]
            else:
               print "File %d NOT in DBase\n" % options.fdict
               return
        if options.directory is not None:
            self.directory = options.directory
        print 'options.upfile', options.upfile
        if options.stimtype is not None:
            # basepath = '/Volumes/TROPPDATA/data/2016.06.28_000/' + options.stimtype+'_'
            basepath = '/Users/tjropp/Desktop/data/2016.06.14_000/' + options.stimtype+'_'
            
            print 'set up stimtype'
        # divided=np.zeros((4,100,512,512),float)
        
        if options.reps is not None:
            for nn in [0]:
            # for nn in range(options.reps):
                self.load_file(nn)
                #self.RegisterStack()
                self.ProcessImage()
                #self.ProcessImage()
                if nn == 0: #check the shape of imagedata and alter divided if necessary
                    imshape = np.shape(self.imageData)
                    divided=np.zeros((options.reps,imshape[0],imshape[1],imshape[2]),float)
                    #processed=np.zeros((options.reps,85,imshape[1],imshape[2]),float)
                # self.Image_Background()
                self.Image_Divided()
                # print 'divided', np.shape(self.divided)
                # self.divided= self.imageData
                divided[nn] = self.divided
                #processed[nn] = self.ProcessedImageData
            print 'shape of divided: ', np.shape(divided)
            self.AvgFrames=np.mean(divided, axis=0)

            print 'shape of AvgFrames: ', np.shape(self.AvgFrames)
            stim1=np.sum(self.imageData[0:19,104:204,199:299],axis=0)
            stim2=np.sum(self.imageData[18:37,104:204,199:299],axis=0)
            stim3=np.sum(self.imageData[38:57,104:204,199:299],axis=0)
            stim4=np.sum(self.imageData[58:77,104:204,199:299],axis=0)
            stim5=np.sum(self.imageData[78:97,104:204,199:299],axis=0)
            stim6=np.sum(self.imageData[98:117,104:204,199:299],axis=0)
            stimuli=(stim2+stim3+stim4+stim5+stim6)/(5*stim1)-(stim1/stim1)
            stimuli=scipy.ndimage.gaussian_filter(stimuli,1)
            pg.image(stimuli,title='stimuli')
            ROI1=np.where(stim1[19,:]==np.max(stim1[19,:]))
            ROI2=np.where(np.max(stim1[47,:]))
            print 'ROI1:',ROI1

            # pg.image(np.max(stim2,axis=0),title='Stimulus 2')
            # pg.image(np.max(stim3,axis=0),title='Stimulus 3')
            # pg.image(np.max(stim4,axis=0),title='Stimulus 4')
            # # pg.image(np.max(stim5,axis=0),title='Stimulus 5')
            # datasignal=self.imageData[np.where(np.logical_and(np.std(divided, axis=0)<0.021,np.std(divided,axis=0)>0.012))]
            # print 'size of datasignal', np.shape(datasignal)
            # # pg.image(np.mean(datasignal,axis=0))

            pg.image(np.max(self.AvgFrames[59:82],axis=0),title='Max response')      
            pg.image(np.mean(divided, axis=0), title='divided image')
            pg.image(np.std(divided, axis=0), title='standard deviation of the image')
            # imagestd=np.std(divided)
            # gf = scipy.ndimage.gaussian_filter(np.mean(divided,axis=0), [0.05,.01,.01], order=0, mode='reflect')
            # pg.image(np.max(gf,axis=0),title='filtered max')
            # pg.image(np.mean(processed, axis=0), title='processed, not divided')  
            # backproc = np.mean(processed[:,5:,:,:],axis=1)
            # divproc = (processed-backproc)/backproc 
            # pg.image(np.mean(divproc),axis=0)
        return
Exemplo n.º 52
0
#_pgimage = pg.image(title='Current Image {}'.format(xfel.__version__))
def plotimage(d):
    '''
    Plots current time of flight data from one shot.
    Updates _tofplot window
    Input:
        image data
    Output:
        None, updates plot window
    '''
    _pgimage.setImage(d, autoRange=False)
    pg.QtGui.QApplication.processEvents()


_pgimage2 = pg.image(title='AverageImage {}'.format(xfel.__version__))
_pghistplot = pg.plot(title='HistBrightness {}'.format(xfel.__version__))
_pgbrightestimg = pg.image(title='Brightest Shots {}'.format(xfel.__version__))
brightestlen = 15
imagehist = xfel.DataBuffer(brightestlen)
tidhist = xfel.DataBuffer(brightestlen)
brightnesshist = xfel.DataBuffer(1000)
_brightlasttid = -1


def plotbrightest(d, tid=0):
    '''
    Plots current time of flight data from one shot.
    Updates _tofplot window
    Input:
        image data
Exemplo n.º 53
0
    def plotmaps_pg(self, mode = 0, target = 1, gfilter = 0):

        pos = np.array([0.0, 0.33, 0.67, 1.0])
        color = np.array([[0,0,0,255], [255,128,0,255], [255,255,0,255],[0,0,0,255]], dtype=np.ubyte)
        maps = pg.ColorMap(pos, color)
        lut = maps.getLookupTable(0.0, 1.0, 256)
        # # ## Set up plots/images in window

        # self.view = pg.GraphicsView()
        # l = pg.GraphicsLayout(border=(100,100,100))
        # self.view.setCentralItem(l)
        # self.amp1View = l.addViewBox(lockAspect=True)
        # self.amp2View = l.addViewBox(lockAspect=True)
        # self.waveformPlot = l.addPlot(title="Waveforms")
        # l.nextRow()
        # self.phase1View = l.addViewBox(lockAspect=True)
        # self.phase2View = l.addViewBox(lockAspect=True)
        # self.fftPlot = l.addPlot(title="FFTs")
        # self.phiView = l.addViewBox(lockAspect=True)

        global D
        max1 = numpy.amax(self.amplitudeImage1)
        if target > 1:
            max1 = numpy.amax([max1, numpy.amax(self.amplitudeImage2)])
        max1 = 10.0*int(max1/10.0)
        # pylab.figure(1)
        # pylab.subplot(2,3,1)
        # pylab.title('Amplitude Map1')
        # #scipy.ndimage.gaussian_filter(self.amplitudeImage1, 2, order=0, output=self.amplitudeImage1, mode='reflect')
        ampimg = scipy.ndimage.gaussian_filter(self.amplitudeImage1,gfilt, order=0, mode='reflect')
        #self.amp1View.addItem(pg.ImageItem(ampimg))
        self.amp1 = pg.image(ampimg, title="Amplitude Map 1", levels=(0.0, max1))
        #imga1 = pylab.imshow(ampimg)
        #pylab.colorbar()
        #imga1.set_clim = (0.0, max1)
        #pylab.subplot(2,3,4)
        #pylab.title('Phase Map1')
        phsmap=scipy.ndimage.gaussian_filter(self.phaseImage1, gfilt, order=0,mode='reflect')
        #self.phase1View.addItem(pg.ImageItem(phsmap))
        self.phs1 = pg.image(phsmap, title='Phase Map 1')
        #self.phs1.getHistogramWidget().item.gradient.
        #imgp1 = pylab.imshow(phsmap, cmap=matplotlib.cm.hsv)
        #pylab.colorbar()

        print "plotmaps Block 1"
        print "mode:", mode
        self.wavePlt = pg.plot(title='Waveforms')
        if mode == 0 or mode == 2:
            self.fftPlt = pg.plot(title = 'FFTs')
        
        if mode == 0:
            #pylab.subplot(2,3,3)

            # for i in range(0, self.nPhases):
            #     self.wavePlt.plot(ta.n_times, D[:,5,5].view(ndarray))
            #     #pylab.plot(ta.n_times, D[:,5,5].view(ndarray))
            #     #pylab.plot(self.n_times, D[:,i*55+20, 60])
            #     #pylab.hold('on')
            # #pylab.title('Waveforms')

            #pylab.subplot(2,3,6)
            for i in range(0, self.nPhases):
                self.fftPlt.plot(ta.n_times, self.DF[:,5,5].view(ndarray))
                #pylab.plot(ta.n_times, self.DF[:,5,5].view(ndarray))
                #pylab.plot(self.DF[:,i*55+20, 60])
                #pylab.hold('on')
            #pylab.title('FFTs')

        print "plotmaps Block 2"

        if mode == 1 and target > 1:
            #pylab.subplot(2,3,2)
            #pylab.title('Amplitude Map2')
            #scipy.ndimage.gaussian_filter(self.amplitudeImage2, 2, order=0, output=self.amplitudeImage2, mode='reflect')
            ampImg2 = scipy.ndimage.gaussian_filter(self.amplitudeImage2,gfilt, order=0, mode='reflect')
            #imga2 = pylab.imshow(ampImg2)
            #self.amp2View.addItem(pg.ImageItem(ampImg2))
            self.amp2 = pg.image(ampImg2, title='Amplitude Map 2', levels=(0.0, max1))
            #imga2.set_clim = (0.0, max1)
            #pylab.colorbar()
            #pylab.subplot(2,3,5)
            phaseImg2 = scipy.ndimage.gaussian_filter(self.phaseImage2, gfilt, order=0,mode='reflect') 
            #self.phase2View.addItem(pg.ImageItem(phaseImg2))
            self.phs2 = pg.image(phaseImg2, title="Phase Map 2", levels=(-np.pi/2.0, np.pi/2.0))
            #imgp2 = pylab.imshow(phaseImg2, cmap=matplotlib.cm.hsv)
            #pylab.colorbar()
            #imgp2.set_clim=(-numpy.pi/2.0, numpy.pi/2.0)
            #pylab.title('Phase Map2')
            ### doubled phase map
            #pylab.subplot(2,3,6)
            #scipy.ndimage.gaussian_filter(self.phaseImage2, 2, order=0, output=self.phaseImage2, mode='reflect')
            np1 = scipy.ndimage.gaussian_filter(self.phaseImage1, gfilt, order=0, mode='reflect')
            np2 = scipy.ndimage.gaussian_filter(self.phaseImage2, gfilt, order=0, mode='reflect')
            dphase = (np1 + np2)/2
            print 'shape of dphase', dphase.shape
            #dphase = self.phaseImage1 - self.phaseImage2
            print 'min phase', np.amin(dphase)
            print 'max phase', np.amax(dphase)
            # for i in range(dphase.shape[0]):
            #     for j in range(dphase.shape[1]):
            #         #for k in range(dphase.shape[2]):
            #         if dphase[i,j]<0:
            #             dphase[i,j] = dphase[i,j]+2*np.pi

            print 'min phase', np.amin(dphase)
            print 'max phase', np.amax(dphase)
            
            self.win = pg.GraphicsWindow()
            view = self.win.addViewBox()
            view.setAspectLocked(True)
            item = pg.ImageItem(dphase)
            view.addItem(item)
            item.setLookupTable(lut)
            item.setLevels([-np.pi,np.pi])

            # self.colorlevels = pg.GradientEditorItem()
            # self.colorlevels.getLookupTable(17)
            # self.colorlevels.setColorMode('rgb')
            # self.colorlevels.setOrientation('right')
            # self.colorlevels.setPos(-10,0)
            # view.addItem(self.colorlevels)
            gradlegend = pg.GradientLegend((10,100),(0,0))
            #gradlegend.setIntColorScale(0,255)
            #gradlegend.setGradient(self.creategradient())
            gradlegend.setGradient(maps.getGradient())
            view.addItem(gradlegend)
            #self.phiView.addItem(pg.ImageItem(dphase))
            self.phi = pg.image(dphase, title="2x Phi map", levels=(-np.pi, np.pi))
            
            #imgpdouble = pylab.imshow(dphase, cmap=matplotlib.cm.hsv)
            #pylab.title('2x Phi map')
            #pylab.colorbar()
            #imgpdouble.set_clim=(-numpy.pi, numpy.pi)

        print "plotmaps Block 3"

        # if mode == 2 or mode == 1:
        #     # if self.phasex == []:
        #     #     self.phasex = numpy.random.randint(0, high=D.shape[1], size=D.shape[1])
        #     #     self.phasey = numpy.random.randint(0, high=D.shape[2], size=D.shape[2])

        #     #pylab.subplot(2,3,3)
        #     sh = D.shape
        #     spr = sh[2]/self.nPhases
        #     wvfms=[]
        #     for i in range(0, self.nPhases):
        #         Dm = self.avgimg[i*spr,i*spr] # diagonal run
        #         wvfms=self.n_times, 100.0*(D[:,self.phasex[i], self.phasey[i]]/Dm)
        #         #pylab.plot(self.n_times, 100.0*(D[:,self.phasex[i], self.phasey[i]]/Dm))
        #         self.wavePlt.plot(self.n_times, 100.0*(D[:,self.phasex[i], self.phasey[i]]/Dm))
        #         #pylab.hold('on')
        #         self.plotlist.append(pg.image(wvfms, title="Waveforms"))
        #         print "it worked"
        #     pylab.title('Waveforms')

        # print "plotmaps Block 4"

        if mode == 2:
            #pylab.subplot(2,3,6)
            for i in range(0, self.nPhases):
                #pylab.plot(self.DF[1:,80, 80])
                spectrum = np.abs(self.DF)**2
                self.fftPlt.plot(spectrum[1:,80,80])
                #pyqtgraph.intColor(index, hues=17, values=1, maxValue=255, minValue=150, maxHue=360, minHue=0, sat=255, alpha=255, **kargs)
                
                #self.fftPlt.plot(self.DF[1:,80,80]) ## causing errors and i'm not sure what the desired thing is, Exception: Can not plot complex data types.
                #pass
                #pylab.hold('on')
                # self.plotlist.append(pg.image(wvfms, title="Waveforms"))
                print "waveform plotting worked"
            # pylab.title('Waveforms')

        print "plotmaps Block 4"

        # if mode == 2:
        #     #pylab.subplot(2,3,6)
        #     for i in range(0, self.nPhases):
        #         #pylab.plot(self.DF[1:,80, 80])
        #         spectrum = np.abs(self.DF)**2
        #         self.fftPlt.plot(spectrum[1:,80,80])
        #         #pyqtgraph.intColor(index, hues=17, values=1, maxValue=255, minValue=150, maxHue=360, minHue=0, sat=255, alpha=255, **kargs)
                
        #         #self.fftPlt.plot(self.DF[1:,80,80]) ## causing errors and i'm not sure what the desired thing is, Exception: Can not plot complex data types.
        #         #pass
        #         #pylab.hold('on')
        #     #pylab.title('FFTs')
        
        # print "plotmaps Block 5"
        # print "plotting complete"
        return
Exemplo n.º 54
0
    def plotmaps_pg(self, mode = 0, target = 1, gfilter = 0):

        pos = np.array([0.0, 0.33, 0.67, 1.0])
        color = np.array([[0,0,0,255], [255,128,0,255], [255,255,0,255],[0,0,0,255]], dtype=np.ubyte)
        maps = pg.ColorMap(pos, color)
        lut = maps.getLookupTable(0.0, 1.0, 256)
        # # ## Set up plots/images in window

        # self.view = pg.GraphicsView()
        # l = pg.GraphicsLayout(border=(100,100,100))
        # self.view.setCentralItem(l)
        # self.amp1View = l.addViewBox(lockAspect=True)
        # self.amp2View = l.addViewBox(lockAspect=True)
        # self.waveformPlot = l.addPlot(title="Waveforms")
        # l.nextRow()
        # self.phase1View = l.addViewBox(lockAspect=True)
        # self.phase2View = l.addViewBox(lockAspect=True)
        # self.fftPlot = l.addPlot(title="FFTs")
        # self.phiView = l.addViewBox(lockAspect=True)

        global D
        max1 = numpy.amax(self.amplitudeImage1)
        if target > 1:
            max1 = numpy.amax([max1, numpy.amax(self.amplitudeImage2)])
        max1 = 10.0*int(max1/10.0)
        # pylab.figure(1)
        # pylab.subplot(2,3,1)
        # pylab.title('Amplitude Map1')
        # #scipy.ndimage.gaussian_filter(self.amplitudeImage1, 2, order=0, output=self.amplitudeImage1, mode='reflect')
        ampimg = scipy.ndimage.gaussian_filter(self.amplitudeImage1,gfilt, order=0, mode='reflect')
        #self.amp1View.addItem(pg.ImageItem(ampimg))
        self.amp1 = pg.image(ampimg, title="Amplitude Map 1", levels=(0.0, max1))
        #imga1 = pylab.imshow(ampimg)
        #pylab.colorbar()
        #imga1.set_clim = (0.0, max1)
        #pylab.subplot(2,3,4)
        #pylab.title('Phase Map1')
        phsmap=scipy.ndimage.gaussian_filter(self.phaseImage1, gfilt, order=0,mode='reflect')
        #self.phase1View.addItem(pg.ImageItem(phsmap))
        self.phs1 = pg.image(phsmap, title='Phase Map 1')
        #self.phs1.getHistogramWidget().item.gradient.
        #imgp1 = pylab.imshow(phsmap, cmap=matplotlib.cm.hsv)
        #pylab.colorbar()

        print "plotmaps Block 1"
        print "mode:", mode
        self.wavePlt = pg.plot(title='Waveforms')
        if mode == 0 or mode == 2:
            self.fftPlt = pg.plot(title = 'FFTs')
        
        if mode == 0:
            #pylab.subplot(2,3,3)

            # for i in range(0, self.nPhases):
            #     self.wavePlt.plot(ta.n_times, D[:,5,5].view(ndarray))
            #     #pylab.plot(ta.n_times, D[:,5,5].view(ndarray))
            #     #pylab.plot(self.n_times, D[:,i*55+20, 60])
            #     #pylab.hold('on')
            # #pylab.title('Waveforms')

            #pylab.subplot(2,3,6)
            for i in range(0, self.nPhases):
                self.fftPlt.plot(ta.n_times, self.DF[:,5,5].view(ndarray))
                #pylab.plot(ta.n_times, self.DF[:,5,5].view(ndarray))
                #pylab.plot(self.DF[:,i*55+20, 60])
                #pylab.hold('on')
            #pylab.title('FFTs')

        print "plotmaps Block 2"

        if mode == 1 and target > 1:
            #pylab.subplot(2,3,2)
            #pylab.title('Amplitude Map2')
            #scipy.ndimage.gaussian_filter(self.amplitudeImage2, 2, order=0, output=self.amplitudeImage2, mode='reflect')
            ampImg2 = scipy.ndimage.gaussian_filter(self.amplitudeImage2,gfilt, order=0, mode='reflect')
            #imga2 = pylab.imshow(ampImg2)
            #self.amp2View.addItem(pg.ImageItem(ampImg2))
            self.amp2 = pg.image(ampImg2, title='Amplitude Map 2', levels=(0.0, max1))
            #imga2.set_clim = (0.0, max1)
            #pylab.colorbar()
            #pylab.subplot(2,3,5)
            phaseImg2 = scipy.ndimage.gaussian_filter(self.phaseImage2, gfilt, order=0,mode='reflect') 
            #self.phase2View.addItem(pg.ImageItem(phaseImg2))
            self.phs2 = pg.image(phaseImg2, title="Phase Map 2", levels=(-np.pi/2.0, np.pi/2.0))
            #imgp2 = pylab.imshow(phaseImg2, cmap=matplotlib.cm.hsv)
            #pylab.colorbar()
            #imgp2.set_clim=(-numpy.pi/2.0, numpy.pi/2.0)
            #pylab.title('Phase Map2')
            ### doubled phase map
            #pylab.subplot(2,3,6)
            #scipy.ndimage.gaussian_filter(self.phaseImage2, 2, order=0, output=self.phaseImage2, mode='reflect')
            np1 = scipy.ndimage.gaussian_filter(self.phaseImage1, gfilt, order=0, mode='reflect')
            np2 = scipy.ndimage.gaussian_filter(self.phaseImage2, gfilt, order=0, mode='reflect')
            dphase = (np1 + np2)/2
            print 'shape of dphase', dphase.shape
            #dphase = self.phaseImage1 - self.phaseImage2
            print 'min phase', np.amin(dphase)
            print 'max phase', np.amax(dphase)
            # for i in range(dphase.shape[0]):
            #     for j in range(dphase.shape[1]):
            #         #for k in range(dphase.shape[2]):
            #         if dphase[i,j]<0:
            #             dphase[i,j] = dphase[i,j]+2*np.pi

            print 'min phase', np.amin(dphase)
            print 'max phase', np.amax(dphase)
            
            self.win = pg.GraphicsWindow()
            view = self.win.addViewBox()
            view.setAspectLocked(True)
            item = pg.ImageItem(dphase)
            view.addItem(item)
            item.setLookupTable(lut)
            item.setLevels([-np.pi,np.pi])

            # self.colorlevels = pg.GradientEditorItem()
            # self.colorlevels.getLookupTable(17)
            # self.colorlevels.setColorMode('rgb')
            # self.colorlevels.setOrientation('right')
            # self.colorlevels.setPos(-10,0)
            # view.addItem(self.colorlevels)
            gradlegend = pg.GradientLegend((10,100),(0,0))
            #gradlegend.setIntColorScale(0,255)
            #gradlegend.setGradient(self.creategradient())
            gradlegend.setGradient(maps.getGradient())
            view.addItem(gradlegend)
            #self.phiView.addItem(pg.ImageItem(dphase))
            self.phi = pg.image(dphase, title="2x Phi map", levels=(-np.pi, np.pi))
            
            #imgpdouble = pylab.imshow(dphase, cmap=matplotlib.cm.hsv)
            #pylab.title('2x Phi map')
            #pylab.colorbar()
            #imgpdouble.set_clim=(-numpy.pi, numpy.pi)

        print "plotmaps Block 3"

        # if mode == 2 or mode == 1:
        #     # if self.phasex == []:
        #     #     self.phasex = numpy.random.randint(0, high=D.shape[1], size=D.shape[1])
        #     #     self.phasey = numpy.random.randint(0, high=D.shape[2], size=D.shape[2])

        #     #pylab.subplot(2,3,3)
        #     sh = D.shape
        #     spr = sh[2]/self.nPhases
        #     wvfms=[]
        #     for i in range(0, self.nPhases):
        #         Dm = self.avgimg[i*spr,i*spr] # diagonal run
        #         wvfms=self.n_times, 100.0*(D[:,self.phasex[i], self.phasey[i]]/Dm)
        #         #pylab.plot(self.n_times, 100.0*(D[:,self.phasex[i], self.phasey[i]]/Dm))
        #         self.wavePlt.plot(self.n_times, 100.0*(D[:,self.phasex[i], self.phasey[i]]/Dm))
        #         #pylab.hold('on')
        #         self.plotlist.append(pg.image(wvfms, title="Waveforms"))
        #         print "it worked"
        #     pylab.title('Waveforms')

        # print "plotmaps Block 4"

        if mode == 2:
            #pylab.subplot(2,3,6)
            for i in range(0, self.nPhases):
                #pylab.plot(self.DF[1:,80, 80])
                spectrum = np.abs(self.DF)**2
                self.fftPlt.plot(spectrum[1:,80,80])
                #pyqtgraph.intColor(index, hues=17, values=1, maxValue=255, minValue=150, maxHue=360, minHue=0, sat=255, alpha=255, **kargs)
                
                #self.fftPlt.plot(self.DF[1:,80,80]) ## causing errors and i'm not sure what the desired thing is, Exception: Can not plot complex data types.
                #pass
                #pylab.hold('on')
                # self.plotlist.append(pg.image(wvfms, title="Waveforms"))
                print "waveform plotting worked"
            # pylab.title('Waveforms')

        print "plotmaps Block 4"

        # if mode == 2:
        #     #pylab.subplot(2,3,6)
        #     for i in range(0, self.nPhases):
        #         #pylab.plot(self.DF[1:,80, 80])
        #         spectrum = np.abs(self.DF)**2
        #         self.fftPlt.plot(spectrum[1:,80,80])
        #         #pyqtgraph.intColor(index, hues=17, values=1, maxValue=255, minValue=150, maxHue=360, minHue=0, sat=255, alpha=255, **kargs)
                
        #         #self.fftPlt.plot(self.DF[1:,80,80]) ## causing errors and i'm not sure what the desired thing is, Exception: Can not plot complex data types.
        #         #pass
        #         #pylab.hold('on')
        #     #pylab.title('FFTs')
        
        # print "plotmaps Block 5"
        # print "plotting complete"
        return
Exemplo n.º 55
0
"""
Display a plot and an image with minimal setup.

pg.plot() and pg.image() are indended to be used from an interactive prompt
to allow easy data inspection (but note that PySide unfortunately does not
call the Qt event loop while the interactive prompt is running, in this case
it is necessary to call QApplication.exec_() to make the windows appear).
"""
import PySide
import numpy as np
import pyqtgraph as pg

arr_i = np.arange(400 * 400).reshape(400, 400)
pg.image(arr_i, title="Simplest possible image example")

## Start Qt event loop unless running in interactive mode or using pyside.
if __name__ == '__main__':
    import sys
    if sys.flags.interactive != 1 or not hasattr(QtCore, 'PYQT_VERSION'):
        pg.QtGui.QApplication.exec_()
Exemplo n.º 56
0
#!/usr/bin/python
import numpy as np
import pyqtgraph as pg
import sys
#from IPython import embed

data1_path = sys.argv[1]
data2_path = sys.argv[2]

data1 = np.load(data1_path)
data2 = np.load(data2_path)

quotient = data1 / data2

pg.setConfigOption('background', 'w')
pg.setConfigOption('foreground', 'k')
imv = pg.image(quotient, title = data1_path+"/"+data2_path)
imv.ui.normBtn.hide()

## Start Qt event loop unless running in interactive mode or using pyside.
if __name__ == '__main__':
    import sys
    if sys.flags.interactive != 1 or not hasattr(QtCore, 'PYQT_VERSION'):
        pg.QtGui.QApplication.exec_()

#embed() # to call ipython
Exemplo n.º 57
0
    import pyqtgraph as pg


    def func():
        time.sleep(2)
        img[100:1000,100:1000] = 0
        #shit.setImage(qim.ndarray)
        shit.updateImage()
        QtGui.qApp.processEvents() # update
        print("image changed, try minimizing and then maximazing")

    t = threading.Thread(target=func)
    win_main = QtGui.QMainWindow()
    img = loadcv(path)
    qim = np2qi(img)
    uimain = thiswin(qim)
    uimain.show()
    axes = None
    if img.ndim == 3:
        if img.shape[2] <= 4:
            axes = {'t': None, 'x': 2, 'y': 1, 'c': 0}
        else:
            axes = {'t': 2, 'x': 1, 'y': 0, 'c': None}
    if axes:
        print("sending with axes")
        shit = pg.image(img)
    else:
        shit = pg.image(img)
    t.start()
    sys.exit(app.exec_())
Exemplo n.º 58
0
    xd = xd[w]
    yd = yd[w]
    data = data[w]
	
    xi,yi = np.array(np.meshgrid(xbins,ybins,indexing='ij'))
    zi = xi*0
    zi[xd,yd] = data
    return zi

prefix = "data/ISCCP.DX.0.GOE-7.1991.01.01."
times = np.arange(0,22,3)*100

xbins = np.arange(501)
ybins = np.arange(501)
zi = np.zeros((len(times),501,501))

for i in np.arange(len(times)):
    print "Time # {}".format(times[i])
    filename = "{:s}{:04d}.AES".format(prefix,times[i])
    stdat = pydx.dxread(filename)
    irads = np.array([o.irad for o in stdat.dxs1s])
    zi[i,:,:] = pos2Grid(stdat.x,stdat.y,irads,xbins=xbins,ybins=ybins)

zi = zi[:,:,::-1]
#3d image plots as time series, use scroll bar to cycle through images
pg.image(zi)

#1 day average of cloud cover
zavg = np.average(zi,axis=0)
pg.image(zavg)
Exemplo n.º 59
0
            # draw photon positions from PSFsigma deviation
            photonPosition = particlePosition + PhotonDeviations[
                startFrameEmission:cc]
            # throw out photons that are outside the ROI
            photonPosition = photonPosition[photonPosition[:, 0] > 0]
            photonPosition = photonPosition[photonPosition[:, 1] > 0]
            photonPosition = photonPosition[photonPosition[:, 0] < sz[1]]
            photonPosition = photonPosition[photonPosition[:, 1] < sz[2]]
            frameCoordinates = [
                np.mean(photonPosition[:, 0]),
                np.mean(photonPosition[:, 1]), tt,
                len(photonPosition)
            ]
            # put photon averages into the simulated tracks and localization structures
            SimLocalizations.append(frameCoordinates)
            SimTracks[-1].append(frameCoordinates)
            # paint the motorPhotons movie
            pixelPosition = photonPosition.astype(int)
            for py, px in pixelPosition:
                motorPhotons[tt, py, px] += 1

# create poisson-like realization of the background
bgRealization = prng.poisson(bg)
finalImage = WhiteNoiseSigma * prng.randn(sz[0], sz[1],
                                          sz[2]) + bgRealization + motorPhotons

# sum motor photons with a poisson-realization of the background movie
pg.image(finalImage)
if (sys.flags.interactive != 1) or not hasattr(QtCore, 'PYQT_VERSION'):
    QtGui.QApplication.instance().exec_()
Exemplo n.º 60
0
import pyqtgraph as pg
from tomoCam import gpuGridrec

num_slice = 50
im_size = 512  #2560 #A n X n X n volume
sino_center = im_size / 2  #1280
num_angles = 512  #1024
gpu_device = 2
oversamp_factor = 1.5
num_iter = 150
p = 1.2
sigma = .1

obj = tomopy.shepp3d((num_slice, im_size, im_size))  # Generate an object.
theta = tomopy.angles(num_angles)  # Generate uniformly spaced tilt angles.
pg.image(obj)
pg.QtGui.QApplication.exec_()
### Comparing to tomopy
tomo = tomopy.project(obj, theta)
proj_dim = tomo.shape[2]
tomo = tomo[:, :, proj_dim / 2 - im_size / 2:proj_dim / 2 + im_size / 2]
pg.image(tomo)
pg.QtGui.QApplication.exec_()
################## GPU MBIR ######################
input_params = {}
input_params['gpu_device'] = gpu_device
input_params['oversamp_factor'] = oversamp_factor
input_params['num_iter'] = num_iter
input_params['fbp_filter_param'] = 0.5
t = time.time()
rec_gridrec = gpuGridrec(tomo, theta, sino_center, input_params)