Ejemplo n.º 1
0
    def __init__(self, cl, name):
        PyTango.Device_4Impl.__init__(self, cl, name)
        self.init_device()

        self.__FillMode = {'ON': True, 'OFF': False}
        self.__ThresholdGain = {
            'DEFAULT': 0,
            'LOW': 1,
            'MID': 2,
            'HIGH': 3,
            'ULTRA HIGH': 4
        }

        self.__CamStatus = {
            'ERROR': 0,
            'DISCONNECTED': 1,
            'STANDBY': 2,
            'SETTING_ENERGY': 3,
            'SETTING_THRESHOLD': 4,
            'SETTING_EXPOSURE': 5,
            'SETTING_NB_IMAGE_IN_SEQUENCE': 6,
            'SETTING_EXPOSURE_PERIOD': 7,
            'SETTING_HARDWARE_TRIGGER_DELAY': 8,
            'SETTING_EXPOSURE_PER_FRAME': 9,
            'SETTING_ROI': 10,
            'KILL_ACQUISITION': 11,
            'RUNNING': 12,
            'ANYCMD': 13
        }

        self.__ReadoutRoi = {
            'C60': Core.Roi(0, 0, 0, 0),  #Full frame for 6M (0,0,2463,2527)
            'C2': Core.Roi(988, 1060, 487, 407),  #C2 for 6M
            'C18': Core.Roi(494, 636, 1475, 1255)  #C18 for 6M
        }
Ejemplo n.º 2
0
 def DevCcdSetRoI(self, argin):
     roi = Core.Roi(Core.Point(argin[0], argin[1]), Core.Point(argin[2], argin[3]))
     control = _control_ref()
     image = control.image()
     if roi == self.getMaxRoi() :
         roi = Core.Roi()
     image.setRoi(roi)
Ejemplo n.º 3
0
 def getMaxRoi(self):
     control = _control_ref()
     ct_image = control.image()
     max_roi_size = ct_image.getMaxImageSize()
     max_roi_size /= Core.Point(ct_image.getBin())
     max_roi = Core.Roi(Core.Point(0, 0), max_roi_size)
     return max_roi
Ejemplo n.º 4
0
 def __get_roi_list_from_argin(self, argin):
     rois = []
     for x, y, w, h in itertools.izip(
             itertools.islice(argin, 0, len(argin), 4),
             itertools.islice(argin, 1, len(argin), 4),
             itertools.islice(argin, 2, len(argin), 4),
             itertools.islice(argin, 3, len(argin), 4)):
         roi = Core.Roi(x, y, w, h)
         rois.append(roi)
     return rois
Ejemplo n.º 5
0
    def write_Roi(self, attr):

        data = attr.get_write_value()
        state = self.dev_state()
        self.Stop()

        roi = Core.Roi()
        roi.setTopLeft(Core.Point(data[0], data[1]))
        roi.setSize(Core.Size(data[2], data[3]))
        self.image.setRoi(roi)

        if state == PyTango.DevState.ON: self.Start()
def test_slsdetector_control(config_fname, enable_debug, use_events,
                             print_time, sleep_time, all_frames):

    if enable_debug:
        Core.DebParams.enableModuleFlags(Core.DebParams.AllFlags)
        Core.DebParams.enableTypeFlags(Core.DebParams.AllFlags)
    else:
        Core.DebParams.disableModuleFlags(Core.DebParams.AllFlags)

    deb.Always("Creating SlsDetectorAcq")
    acq = SlsDetectorAcq(config_fname, use_events, print_time, sleep_time,
                         all_frames)
    deb.Always("Done!")

    acq.initSaving("data", "img", ".edf", 0, Core.CtSaving.EDF,
                   Core.CtSaving.AutoFrame, 1)

    deb.Always("First run with default pars")
    acq.run()
    deb.Always("Done!")

    exp_time = 100e-3
    acq.setExpTime(exp_time)

    nb_acq_frames = 50
    acq.setNbAcqFrames(nb_acq_frames)

    deb.Always("Run exp_time=%s, nb_acq_frames=%s" % (exp_time, nb_acq_frames))
    acq.run()
    deb.Always("Done!")

    bin = Core.Bin(2, 2)
    acq.setBin(bin)

    nb_acq_frames = 5
    acq.setNbAcqFrames(nb_acq_frames)

    deb.Always("Run bin=<%sx%s>, nb_acq_frames=%s" %
               (bin.getX(), bin.getY(), nb_acq_frames))
    acq.run()
    deb.Always("Done!")

    roi = Core.Roi(Core.Point(256, 512), Core.Size(256, 512))
    if acq.checkValidRoi(roi):
        acq.setRoi(roi)

        roi_tl, roi_size = roi.getTopLeft(), roi.getSize()
        deb.Always(
            "Run roi=<%s,%s>-<%sx%s>" %
            (roi_tl.x, roi_tl.y, roi_size.getWidth(), roi_size.getHeight()))
        acq.run()
        deb.Always("Done!")
Ejemplo n.º 7
0
 def apply_config(self, c):
     try:
         active = c.get("active", False)
         self.Stop()
         if active:
             self._runLevel = c.get("runLevel", 0)
             self.Start()
             namedRois = []
             names = []
             for name, d in c.iteritems():
                 try:
                     if isinstance(d, dict):
                         rType = d.get("type", None)
                         if rType == RoiCounterTask.SQUARE:
                             x = d["x"]
                             y = d["y"]
                             width = d["width"]
                             height = d["height"]
                             namedRois.append(
                                 (name, Core.Roi(x, y, width, height)))
                         elif rType == RoiCounterTask.ARC:
                             x = d["x"]
                             y = d["y"]
                             r1 = d["r1"]
                             r2 = d["r2"]
                             a1 = d["a1"]
                             a2 = d["a2"]
                             namedRois.append(
                                 (name, Core.ArcRoi(x, y, r1, r2, a1, a2)))
                         elif rType == RoiCounterTask.MASK:
                             x = d["x"]
                             y = d["y"]
                             data = d["data"]
                             self.__roiCounterMgr.setLutMask(
                                 name, Core.Point(x, y), data)
                         elif rType == RoiCounterTask.LUT:
                             x = d["x"]
                             y = d["y"]
                             data = d["data"]
                             self.__roiCounterMgr.setLut(
                                 name, Core.Point(x, y), data)
                         names.append(name)
                 except KeyError as err:
                     PyTango.Except.throw_exception(
                         'Config error',
                         'Missing key %s in roi named %s' % (err, name),
                         'RoiCounterDeviceServer Class')
             self.__roiCounterMgr.updateRois(namedRois)
             self.add(names)
     except:
         import traceback
         traceback.print_exc()
Ejemplo n.º 8
0
 def setRois(self,argin) :
     if self.__roiCounterMgr is None:
         raise RuntimeError('should start the device first')
     
     if not len(argin) % 5:
         roi_list = []
         for roi_id,x,y,width,height in grouper(5,argin):
             roi_name = self.__roiID2Name.get(roi_id,None)
             if roi_name is None:
                 raise RuntimeError('should call add method before setRoi')
             roi_list.append((roi_name,Core.Roi(x,y,width,height)))
         self.__roiCounterMgr.updateRois(roi_list)
     else:
         raise AttributeError('should be a vector as follow [roi_id0,x0,y0,width0,height0,...')
Ejemplo n.º 9
0
    def setKinPars(self, kin_win_size, kin_line_beg, kin_stripes):
        deb.Param('Setting kin pars: ' +
                  'kin_win_size=%s, kin_line_beg=%s, kin_stripes=%s' % \
                  (kin_win_size, kin_line_beg, kin_stripes))
        if kin_stripes > 1:
            deb.Warning('Ignoring kin_stripes=%d' % kin_stripes)

        bin = _FrelonAcq.getBin()
        if kin_win_size % bin.getY() != 0:
            msg = 'Invalid kinetics window size (%d): ' % kin_win_size + \
                  'must be multiple of vert. bin (%d)' % bin.getY()
            raise Core.Exception, msg

        roi = _FrelonAcq.getRoi()
        roi = roi.getUnbinned(bin)
        tl = Core.Point(roi.getTopLeft().x, kin_line_beg)
        size = Core.Size(roi.getSize().getWidth(), kin_win_size)
        roi = Core.Roi(tl, size)
        roi = roi.getBinned(bin)
        _FrelonAcq.setRoi(roi)

        _FrelonAcq.setRoiLineBegin(kin_line_beg)
Ejemplo n.º 10
0
cam_ctr = Core.CtControl(cam_int)

print("\n** Removing all files that could interfer with acquisition :")
os.system("rm -fv /mnt/DataHub3/iGEM/20170903/camera/testing*.tiff")

print("\n** Taking care of the saving format : 1st serie is wihtOUT saving")
cam_sav = cam_ctr.saving()
cam_sav.setDirectory("/mnt/DataHub3/iGEM/20170903/camera")
cam_sav.setPrefix("testing")
cam_sav.setSavingMode(Core.CtSaving.Manual)

print(cam_sav.getParameters())

print("** Testing the ROI : 100, 100, 2360, 1960 (in HardOnly mode)")
cam_ctr.image().setMode(Core.CtImage.HardOnly)
cam_ctr.image().setRoi(Core.Roi(100, 100, 2360,
                                1960))  ### left, top, width, height
the_roi = cam_ctr.image().getRoi()
print("\tThe retrieved roi is (%d, %d, %d, %d)" %
      (the_roi.getTopLeft().x, the_roi.getTopLeft().y,
       the_roi.getSize().getWidth(), the_roi.getSize().getHeight()))

print("\n**Testing the acquisition exposure and latency :")
## ##### Faster frame-rates, lower latency :
## cam.setElectronicShutterMode(Andor3.Camera.Rolling)
## cam.setAdcRate(cam.MHz280)
## cam.getLatTimeRange() ## 0.0103
## ##### Slower frame-rate, higher latency :
## cam.setElectronicShutterMode(Andor3.Camera.Global)
## cam.setAdcRate(cam.MHz100)
## cam.getLatTimeRange() ## 0.0286
def test_frelon_acc(enable_debug, espia_dev_nb, vert_bin, exp_time,
                    acc_max_exp_time, nb_frames, acc_time_mode):

    if enable_debug:
        Core.DebParams.enableModuleFlags(Core.DebParams.AllFlags)
        Core.DebParams.enableTypeFlags(Core.DebParams.AllFlags)
    else:
        Core.DebParams.disableModuleFlags(Core.DebParams.AllFlags)

    deb.Always("Creating FrelonAcq")
    acq = Frelon.FrelonAcq(espia_dev_nb)
    deb.Trace("Done!")

    cam = acq.getFrelonCamera()

    ct = acq.getGlobalControl()
    ct_image = ct.image()
    ct_acq = ct.acquisition()

    acq_state = Core.AcqState()
    status_cb = ImageStatusCallback(ct, acq_state)
    ct.registerImageStatusCallback(status_cb)

    deb.Always("Setting Full Frame Mode - Speed - Chan 3&4")
    cam.setSPB2Config(Frelon.SPB2Speed)
    cam.setFrameTransferMode(Frelon.FFM)
    cam.setInputChan(Frelon.Chan34)
    deb.Trace("Done!")

    frame_dim = acq.getFrameDim(max_dim=True)
    bin = Core.Bin(1, vert_bin)
    deb.Always("Setting binning %s" % bin)
    ct_image.setBin(bin)
    deb.Trace("Done!")

    image_size = frame_dim.getSize()
    nb_cols = image_size.getWidth()
    nb_lines = image_size.getHeight() / vert_bin
    roi = Core.Roi(Core.Point(0, nb_lines - 2), Core.Size(nb_cols, 1))
    deb.Always("Setting RoI %s" % roi)
    ct_image.setRoi(roi)
    deb.Trace("Done!")

    deb.Always("Setting Kinetic RoI mode")
    cam.setRoiMode(Frelon.Kinetic)
    deb.Trace("Done!")

    deb.Always("Setting Acc. mode")
    ct_acq.setAcqMode(Core.Accumulation)
    deb.Trace("Done!")

    deb.Always("Setting %s Acc. Time mode" % acc_time_mode)
    acc_mode = Core.CtAcquisition.Live \
               if acc_time_mode == 'Live' \
               else Core.CtAcquisition.Real
    ct_acq.setAccTimeMode(acc_mode)
    deb.Trace("Done!")

    deb.Always("Setting Acc. max. exp. time %s" % acc_max_exp_time)
    ct_acq.setAccMaxExpoTime(acc_max_exp_time)
    deb.Trace("Done!")

    deb.Always("Setting exp. time %s" % exp_time)
    ct_acq.setAcqExpoTime(exp_time)
    deb.Trace("Done!")

    deb.Always("Setting nb. frames %s" % nb_frames)
    ct_acq.setAcqNbFrames(nb_frames)
    deb.Trace("Done!")

    acc_nb_frames = ct_acq.getAccNbFrames()
    acc_dead_time = ct_acq.getAccDeadTime()
    acc_live_time = ct_acq.getAccLiveTime()
    deb.Always("AccNbFrames: %d, AccDeadTime: %.6f, AccLiveTime: %.6f" %
               (acc_nb_frames, acc_dead_time, acc_live_time))

    deb.Always("Preparing acq.")
    ct.prepareAcq()
    deb.Trace("Done!")

    deb.Always("Starting acq.")
    status_cb.start()
    ct.startAcq()
    deb.Trace("Done!")

    state_mask = Core.AcqState.Acquiring
    acq_state.waitNot(state_mask)
    deb.Always("Finished!")

    dead_time = cam.getDeadTime()
    read_time = cam.getReadoutTime()
    xfer_time = cam.getTransferTime()
    deb.Always("Dead Time: %.6f, Readout Time: %.6f, Transfer Time: %.6f" %
               (dead_time, read_time, xfer_time))
def main(argv):

    deb.Always("Creating Espia.Dev")
    edev = Espia.Dev(0)

    deb.Always("Creating Espia.Acq")
    acq = Espia.Acq(edev)

    acqstat = acq.getStatus()
    deb.Always("Whether the Acquisition is running : %s" % acqstat.running)

    deb.Always("Creating Espia.BufferMgr")
    buffer_cb_mgr = Espia.BufferMgr(acq)

    deb.Always("Creating BufferCtrlMgr")
    buffer_mgr = Core.BufferCtrlMgr(buffer_cb_mgr)

    deb.Always("Creating Espia.SerialLine")
    eser_line = Espia.SerialLine(edev)

    deb.Always("Creating Frelon.Camera")
    cam = Frelon.Camera(eser_line)

    deb.Always("Creating the Hw Interface ... ")
    hw_inter = Frelon.Interface(acq, buffer_mgr, cam)

    deb.Always("Creating HW BufferSave")
    buffer_save = Core.HwBufferSave(Core.HwBufferSave.EDF, "img", 0, ".edf",
                                    True, 1)

    deb.Always("Getting HW detector info")
    hw_det_info = hw_inter.getHwCtrlObj(Core.HwCap.DetInfo)

    deb.Always("Getting HW buffer")
    hw_buffer = hw_inter.getHwCtrlObj(Core.HwCap.Buffer)

    deb.Always("Getting HW Sync")
    hw_sync = hw_inter.getHwCtrlObj(Core.HwCap.Sync)

    deb.Always("Getting HW Bin")
    hw_bin = hw_inter.getHwCtrlObj(Core.HwCap.Bin)

    deb.Always("Getting HW RoI")
    hw_roi = hw_inter.getHwCtrlObj(Core.HwCap.Roi)

    mis_cb = MaxImageSizeCallback()
    hw_det_info.registerMaxImageSizeCallback(mis_cb)

    deb.Always("Setting FTM")
    cam.setFrameTransferMode(Frelon.FTM)
    deb.Always("Setting FFM")
    cam.setFrameTransferMode(Frelon.FFM)

    soft_roi = Core.Roi()
    acq_state = Core.AcqState()
    deb.Always("Creating a TestFrameCallback")
    cb = TestFrameCallback(hw_inter, soft_roi, buffer_save, acq_state)

    do_reset = False
    if do_reset:
        deb.Always("Reseting hardware ...")
        hw_inter.reset(HwInterface.HardReset)
        deb.Always("  Done!")

    size = hw_det_info.getMaxImageSize()
    image_type = hw_det_info.getCurrImageType()
    frame_dim = Core.FrameDim(size, image_type)

    bin = Core.Bin(Core.Point(1))
    hw_bin.setBin(bin)

    #Roi set_roi, real_roi;
    #set_hw_roi(hw_roi, set_roi, real_roi, soft_roi);

    effect_frame_dim = Core.FrameDim(frame_dim)  # was (frame_dim / bin)
    hw_buffer.setFrameDim(effect_frame_dim)
    hw_buffer.setNbBuffers(10)
    hw_buffer.registerFrameCallback(cb)

    hw_sync.setExpTime(2)
    hw_sync.setNbFrames(3)

    deb.Always("Starting Acquisition")
    acq_state.set(Core.AcqState.Acquiring)
    hw_inter.startAcq()

    deb.Always("Waiting acq finished...")
    acq_state.waitNot(Core.AcqState.Acquiring)
    deb.Always("Acq finished!!")

    deb.Always("Stopping Acquisition")
    hw_inter.stopAcq()

    deb.Always("This is the End...")
Ejemplo n.º 13
0
import sys,time,os
from Lima import Core,Andor3


cam = Andor3.Camera("/usr/local/andor/bitflow", 0)
cam_int = Andor3.Interface(cam)
cam_ctr = Core.CtControl(cam_int)

## Proper way of doing that is :
cam_ctr.acquisition().setAcqExpoTime(.001)
cam_ctr.acquisition().setLatencyTime(.001)
cam_ctr.image().setMode(Core.CtImage.HardOnly)
##cam_ctr.image().setMode(Core.CtImage.HardAndSoft)
cam_ctr.image().setRoi(Core.Roi(0, 0, 2048, 2048))  ### left, top, width, height


import time
import numpy
import numpy.fft
import matplotlib

matplotlib.use('TkAgg') # do this before importing pylab

import matplotlib.pyplot as plt

def get_image():
    cam.setNbFrames(1)
    cam_ctr.prepareAcq()
    cam_ctr.startAcq()
    while cam_ctr.getStatus().AcquisitionStatus: pass
    return cam_ctr.ReadImage().buffer
Ejemplo n.º 14
0
Core.DebParams.setTypeFlags(Core.DebParams.AllFlags)

cam = Simulator.Camera()

frame_dim = Core.FrameDim(Core.Size(800, 600), Core.Bpp32)
cam = Simulator.Camera()
getter = cam.getFrameGetter() 
getter.setFrameDim(frame_dim)

hwint = Simulator.Interface(cam)
control = Core.CtControl(hwint)

acq = control.acquisition()
acq.setAcqNbFrames(1)

img = control.image()
roi = Core.Roi(300,50,450,300)
img.setRoi(roi)
# img.setBin(Core.Bin(2, 2))
img.setRotation(Core.Rotation_90)

control.prepareAcq();
control.startAcq();

while control.getStatus() == Core.AcqRunning:
    time.sleep(0.001)

control.stopAcq();

frame = control.ReadImage(0)
Ejemplo n.º 15
0
cam_sav.setSuffix(".nxs")

## TIFF :
cam_sav.setFormat(Core.CtSaving.TIFFFormat)
cam_sav.setSuffix(".tiff")

cam_sav.getParameters()


## Proper way of doing that is :
cam_ctr.acquisition().setAcqExpoTime(.001)
cam_ctr.acquisition().setLatencyTime(.001)
cam_ctr.acquisition().setAcqNbFrames(10)
cam_ctr.image().setMode(Core.CtImage.HardOnly)
##cam_ctr.image().setMode(Core.CtImage.HardAndSoft)
cam_ctr.image().setRoi(Core.Roi(409, 201, 1776, 1760))  ### left, top, width, height 

## Core.DebParams.setTypeFlags( Core.DebParams.getTypeFlags() | Core.DebTypeTrace )
Core.DebParams.setTypeFlagsNameList(['Fatal', 'Error', 'Warning', 'Trace', 'Funct'])

cam_ctr.video().startLive()
time.sleep(3)
cam_ctr.video().stopLive()

cam_ctr.prepareAcq()
cam_ctr.startAcq()
time.sleep(1)
cam_ctr.stopAcq()


im1 = cam_ctr.ReadImage()
def test_frelon_control(enable_debug, use_events, print_time, sleep_time,
                        all_frames):

    if enable_debug:
        Core.DebParams.enableModuleFlags(Core.DebParams.AllFlags)
        Core.DebParams.enableTypeFlags(Core.DebParams.AllFlags)
    else:
        Core.DebParams.disableModuleFlags(Core.DebParams.AllFlags)

    deb.Always("Creating FrelonAcq")
    espia_dev_nb = 0
    acq = FrelonAcq(espia_dev_nb, use_events, print_time, sleep_time,
                    all_frames)
    deb.Always("Done!")
    
    acq.initSaving("data", "img", ".edf", 0, Core.CtSaving.EDF, 
                   Core.CtSaving.AutoFrame, 1);

    deb.Always("First run with default pars")
    acq.run()
    deb.Always("Done!")
    
    exp_time = 1e-6
    acq.setExpTime(exp_time)

    nb_acq_frames = 500
    acq.setNbAcqFrames(nb_acq_frames)

    deb.Always("Run exp_time=%s, nb_acq_frames=%s" % (exp_time, nb_acq_frames))
    acq.run()
    deb.Always("Done!")
    
    bin = Core.Bin(2, 2)
    acq.setBin(bin)

    nb_acq_frames = 5
    acq.setNbAcqFrames(nb_acq_frames)

    deb.Always("Run bin=<%sx%s>, nb_acq_frames=%s" % 
               (bin.getX(), bin.getY(), nb_acq_frames))
    acq.run()
    deb.Always("Done!")
    
    roi = Core.Roi(Core.Point(256, 256), Core.Size(512, 512));
    acq.setRoi(roi);

    roi_tl, roi_size = roi.getTopLeft(), roi.getSize()
    deb.Always("Run roi=<%s,%s>-<%sx%s>" %
               (roi_tl.x, roi_tl.y,
                roi_size.getWidth(), roi_size.getHeight()))
    acq.run()
    deb.Always("Done!")
    
    roi = Core.Roi(Core.Point(267, 267), Core.Size(501, 501));
    acq.setRoi(roi);

    roi_tl, roi_size = roi.getTopLeft(), roi.getSize()
    deb.Always("Run roi=<%s,%s>-<%sx%s>" %
               (roi_tl.x, roi_tl.y,
                roi_size.getWidth(), roi_size.getHeight()))
    acq.run()
    deb.Always("Done!")
Ejemplo n.º 17
0
getter = cam.getFrameGetter()
getter.setFrameDim(frame_dim)

hwint = Simulator.Interface(cam)
control = Core.CtControl(hwint)

acq = control.acquisition()
acq.setAcqNbFrames(1)
acq.setAcqExpoTime(0.001)

img = control.image()

print("Attach debugger now")
input()

roi = Core.Roi(1, 1, 598, 298)  # Almost full frame
#roi = Core.Roi(0, 0, 600, 300) # Full frame
img.setRoi(roi)

rots = [
    Core.Rotation_0, Core.Rotation_90, Core.Rotation_180, Core.Rotation_270
]
binnings = [Core.Bin(1, 1), Core.Bin(1, 2), Core.Bin(2, 1), Core.Bin(2, 2)]
flips = [
    Core.Flip(False, False),
    Core.Flip(False, True),
    Core.Flip(True, False),
    Core.Flip(True, True)
]

Ejemplo n.º 18
0
#frame_dim = Core.FrameDim(Core.Size(800, 600), Core.Bpp32)
frame_dim = Core.FrameDim(Core.Size(600, 600), Core.Bpp32)
cam = Simulator.Camera()
getter = cam.getFrameGetter()
getter.setFrameDim(frame_dim)

hwint = Simulator.Interface(cam)
control = Core.CtControl(hwint)

acq = control.acquisition()
acq.setAcqNbFrames(1)
acq.setAcqExpoTime(0.001)

img = control.image()
#roi = Core.Roi(300,50,450,300)
roi = Core.Roi(160, 60, 120, 200)
img.setRoi(roi)

rots = [
    Core.Rotation_0, Core.Rotation_90, Core.Rotation_180, Core.Rotation_270
]
binnings = [Core.Bin(1, 1), Core.Bin(1, 2), Core.Bin(2, 1), Core.Bin(2, 2)]
flips = [
    Core.Flip(False, False),
    Core.Flip(False, True),
    Core.Flip(True, False),
    Core.Flip(True, True)
]


# Python function to print permutations of a given list (from SO)