def test_big_detector_size(): """Change the size of the simulator Make sure the hardware detector size matches the request """ cam = Simulator.Camera() hw = Simulator.Interface(cam) ct = Core.CtControl(hw) cam.setFrameDim(Core.FrameDim(2048, 2000, Core.Bpp32)) dim = ct.image().getImageDim() assert dim.getSize() == Core.Size(2048, 2000) detinfo = hw.getHwCtrlObj(Core.HwCap.DetInfo) assert detinfo.getMaxImageSize() == Core.Size(2048, 2000)
def test_update_mode(): """Change the simulator mode of the detector Check that the size have not changed """ cam = Simulator.Camera() hw = Simulator.Interface(cam) ct = Core.CtControl(hw) cam.setFrameDim(Core.FrameDim(100, 100, Core.Bpp32)) dim = ct.image().getImageDim() assert dim.getSize() == Core.Size(100, 100) new_mode = Simulator.Camera.MODE_GENERATOR_PREFETCH cam.setMode(new_mode) dim = ct.image().getImageDim() assert dim.getSize() == Core.Size(100, 100)
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!")
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)
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 getMaxImageSize(self) : """Maximum size of the image @return """ return Core.Size(self.__width,self.__height)
# This software is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, see <http://www.gnu.org/licenses/>. ############################################################################ from Lima import Core, Simulator 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)
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!")
import time from Lima import Core, Simulator #Core.DebParams.setTypeFlags(Core.DebParams.AllFlags) cam = Simulator.Camera() frame_dim = Core.FrameDim(Core.Size(600, 300), 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() 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 ]
from Lima import Core, Simulator Core.DebParams.setTypeFlags(Core.DebParams.AllFlags) frame_dim = Core.FrameDim(Core.Size(800, 600), Core.Bpp32F) cam = Simulator.Camera() getter = cam.getFrameGetter() getter.setFrameDim(frame_dim) assert getter.getFrameDim() == frame_dim hwint = Simulator.Interface(cam) control = Core.CtControl(hwint) img = control.image() assert img.getMaxImageSize() == Core.Size(800, 600) assert img.getImageDim() == frame_dim ### img.reset() # Rotate first, define ROI, unrotate img.setRotation(Core.Rotation_90) assert img.getMaxImageSize() == Core.Size(600, 800) roi = Core.Roi(250, 300, 300, 450) img.setRoi(roi) img.setRotation(Core.Rotation_0) # InvalidValue: Invalid corner coords ### img.reset()
def getMaxImageSize(self): return Core.Size(self.__width, self.__height)