示例#1
0
    def Stack_Sectioning(self,start,stop,step=0.2, verbose=True):
        no = int((stop-start)/step)+1
        pos = start
        xs = self.ccd.image_size[0]
        ys = self.ccd.image_size[1]
#        psz = qx.getordernum()
        psz = 3
        self.data = N.zeros((psz*no,xs,ys), dtype=N.uint16)
        self.ccd.SetShutterMode(1)
        q = self.ccd.Acquire()
        self.pol.MoveAbs(0)
        time.sleep(0.4)
        for p in range(no):
            self.zst.setPositionf(pos)
            for m in range(psz):
                qx.selecteorder(15+m)
                qx.activate()
                time.sleep(0.02)
                daq.CCDTrig_run(self.handleA,self.handleB)
                q = self.ccd.WaitForNewData()
                print (p,q)
                self.data[psz*p + m] = self.ccd.images
                qx.deactivate()
                time.sleep(0.02)
            pos += step
        self.ccd.AbortAcquisition()
        self.ccd.SetShutterMode(2)
        if verbose:
            T.imshow(self.data, vmin=self.data.min(), vmax=self.data.max())
        cur_pos = self.zst.getPosition()
        self.stackTags(cur_pos,start,stop,step,function='Z-Stack patterns')
        return True
示例#2
0
    def si_2d_pattern(self,start,stop,step=0.2, verbose=True):
        rots = self.pol_array
        no = int((stop-start)/step)+1
        pos = start
        xs = self.ccd.image_size[0]
        ys = self.ccd.image_size[1]
#        psz = qx.getordernum()
        psz = 9
        phs = int(psz/3)
        self.data = N.zeros((psz*no,xs,ys), dtype=N.uint16)
#        self.slm.SLM_on()
        self.ccd.SetShutterMode(1)
        q = self.ccd.Acquire()
        time.sleep(0.1) # was 0.2,  changed 20141114
        for p in range(no):
            self.zst.setPositionf(pos)
            for w in range(3):
                self.pol.MoveAbs(rots[w])
                time.sleep(0.8)
                for m in range(phs):
                    #self.pr.setVoltage(rots[m])
                    qx.selecteorder(19+phs*w+m)
                    qx.activate()
                    time.sleep(0.02)
                    #print self.pr.getVoltage()
                    #self.dmd.set_image(patt)
                    #self.slm.show_next_patt()
                    #self.slm.show_patt(m)
                    daq.CCDTrig_run(self.handleA,self.handleB)
                    q = self.ccd.WaitForNewData()
                    print (p,q)
                    self.data[psz*p + 5*w + m] = self.ccd.images
                    qx.deactivate()
#                    time.sleep(0.02)
            pos += step
        self.ccd.AbortAcquisition()
        self.ccd.SetShutterMode(2)
#        self.slm.SLM_off()
        #self.pr.setVoltage(0.0)
        if verbose:
            T.imshow(self.data, vmin=self.data.min(), vmax=self.data.max())
        cur_pos = self.zst.getPosition()
        self.stackTags(cur_pos,start,stop,step,function='Z-Stack patterns')
        return True        
示例#3
0
    def Image_Patterns(self, angle=0, no=200, pol=0, verbose=True):
        pos = self.zst.getPosition()
        xs = self.ccd.image_size[0]
        ys = self.ccd.image_size[1]
#        psz = self.slm.ni
        psz = 5
        self.data = N.zeros((psz*no,xs,ys), dtype=N.uint16)
#        self.slm.SLM_on()
        self.ccd.SetShutterMode(1)
        q = self.ccd.Acquire()
        time.sleep(0.01) # was 0.2,  changed 20141114
        self.zst.setPositionf(pos)
        for p in range(no):  
            for m in range(angle*5,psz+angle*5):
                #self.pr.setVoltage(rots[m])
                self.pol.MoveAbs(pol)
                qx.selecteorder(m)
                qx.activate()
                #time.sleep(.50)
                #print self.pr.getVoltage()
                #self.dmd.set_image(patt)
                #self.slm.show_next_patt()
#                self.slm.show_patt(m)
                daq.CCDTrig_run(self.handleA,self.handleB)
                q = self.ccd.WaitForNewData()
                print (p,q)
                self.data[psz*p+m%5] = self.ccd.images
                qx.deactivate()
                time.sleep(self.delay)
        self.ccd.AbortAcquisition()
        self.ccd.SetShutterMode(2)
#        self.slm.SLM_off()
        #self.pr.setVoltage(0.0)
        if verbose:
            T.imshow(self.data, vmin=self.data.min(), vmax=self.data.max())
        cur_pos = self.prior.getPosition()
        self.stackTags(cur_pos[0],cur_pos[1],function='Z-Stack patterns')
        return True
示例#4
0
    def run(self):
        self.is_videomode = True
        if (self.normal_mode==True):
            while (self.is_videomode):
                self.get_img()
                self.emit(SIGNAL('update'))
        else:
            while (self.is_videomode):
                #self.slm.show_next_patt()
#                psz = qx.getordernum()
                psz =15
                phs = int(psz/3)
                for m in range(3):
                    self.pol.MoveAbs(self.pol_array[m])
                    time.sleep(0.02)
                    for n in range(phs):
                        qx.selecteorder(m*phs+n)
                        qx.activate()
                        self.get_img()
                        self.emit(SIGNAL('update'))
                        qx.deactivate()
        self.ccd.AbortAcquisition()
        self.ccd.SetShutterMode(2)
def ao_optimize_si(om,
                   dm,
                   mf,
                   modes=[4],
                   amprange=N.arange(-1.0, 1.25, 0.25),
                   S=None,
                   gain=50,
                   blaser=False,
                   rlaser=True):
    center = om.zst.getPosition()
    dm.Send(cmd_best)
    dt = N.zeros(amprange.shape)
    results = []
    om.open_Acq(exposure=0.1,
                emgain=gain,
                laser=blaser,
                Rlaser=rlaser,
                cntLaser=False,
                LED12=1,
                FTM=False,
                conv=0,
                ccd=True,
                trig=1,
                regen=False)
    om.get_img()
    slm.selecteorder(16)
    slm.activate()
    for mode in modes:
        for k, amp in enumerate(amprange):
            print(k, amp)
            phiin = amp * zernike.Zm(mode, rad=17, orig=None, Nx=33)  # was 28
            # set mirror with new dm shape
            dmarr = 0.5 * N.dot(S, phiin.reshape(33 * 33))
            cmd = [0.] * 69
            for i in range(69):
                cmd[i] = dmarr[i] + cmd_best[i]
            if (all(i <= 1.0 for i in cmd)):
                dm.Send(cmd)
            else:
                raise Exception(' Error: push value greater than 1.0 ')
            time.sleep(0.02)
            om.zst.setPositionf(center)
            om.get_img()
            dt[k] = mf(om.data)  # metric is peak intensity
            results.append((mode, amp, dt[k]))
        pmax = peak(amprange, dt)
        zmv[mode] += pmax
        print('setting mode %d at value of %f' % (mode, pmax))
        phiin = pmax * zernike.Zm(mode, rad=17, orig=None, Nx=33)  # was 28
        # set mirror with new dm shape
        dmarr = 0.5 * N.dot(S, phiin.reshape(33 * 33))
        for i in range(69):
            cmd_best[i] = cmd_best[i] + dmarr[i]
    if (all(i <= 1.0 for i in cmd_best)):
        dm.Send(cmd_best)
    else:
        raise Exception(' Error: push value greater than 1.0 ')

    slm.deactivate()
    om.ccd.AbortAcquisition()
    om.ccd.SetShutterMode(2)
    return results, cmd_best
 def deactivateSLM(self):
     qx.deactivate()
     return True