def setUpClass(cls): cls.sem_int = xt_client.SEM(**CONFIG_SEM_XT) cls.sem_ext = semcomedi.SEMComedi(**CONFIG_SEM_EXT) for child in cls.sem_ext.children.value: if child.name == CONFIG_SCANNER_EXT["name"]: cls.ebeam_ext = child elif child.name == CONFIG_SED_EXT["name"]: cls.sed_ext = child for child in cls.sem_int.children.value: if child.name == CONFIG_SCANNER["name"]: cls.ebeam_int = child if child.name == CONFIG_DETECTOR["name"]: cls.sed_int = child det_kwargs = dict(name="test_detector", role="detector", dependencies={"external": cls.sed_ext}) cls.scanner = scanner.CompositedScanner( name="test_scanner", role="e-beam", dependencies={ "external": cls.ebeam_ext, "internal": cls.ebeam_int }, children={"detector": det_kwargs}, ) cls.detector = next(iter(cls.scanner.children.value))
def setUpClass(cls): cls.sem = semcomedi.SEMComedi(**CONFIG_SEM) for child in cls.sem.children.value: if child.name == CONFIG_SED["name"]: cls.sed = child elif child.name == CONFIG_SCANNER["name"]: cls.scanner = child
def test_scan(self): devices = semcomedi.SEMComedi.scan() self.assertGreater(len(devices), 0) for name, kwargs in devices: print "opening ", name sem = semcomedi.SEMComedi("test", "sem", **kwargs) self.assertTrue(sem.selfTest(), "SEM self test failed.") sem.terminate()
def setUpClass(cls): cls.ccd = cls.camera_type(**cls.camera_kwargs) cls.sem = semcomedi.SEMComedi(**CONFIG_SEM) for child in cls.sem.children: if child.name == CONFIG_SED["name"]: cls.sed = child elif child.name == CONFIG_SCANNER["name"]: cls.scanner = child
def test_scan(self): devices = semcomedi.SEMComedi.scan() self.assertGreater(len(devices), 0) for name, kwargs in devices: print("Opening device %s, %s" % (name, kwargs["device"])) sem = semcomedi.SEMComedi("test", "sem", **kwargs) self.assertTrue(sem.selfTest(), "SEM self test failed.") sem.terminate() # Needed to properly clean-up everything and not have issue when # starting another SEMComedi del sem gc.collect()
def test_pickle(self): try: os.remove("test") except OSError: pass daemon = Pyro4.Daemon(unixsocket="test") sem = semcomedi.SEMComedi(daemon=daemon, **CONFIG_SEM) dump = pickle.dumps(sem, pickle.HIGHEST_PROTOCOL) # print "dump size is", len(dump) sem_unpickled = pickle.loads(dump) self.assertEqual(len(sem_unpickled.children), 2) sem.terminate()
def setUpClass(cls): cls.sem = semcomedi.SEMComedi(**CONFIG_SEM2) cls.control = CLASS_TR_CTRL(**KWARGS_TR_CTRL) for child in cls.sem.children.value: if child.name == CONFIG_SED["name"]: cls.sed = child elif child.name == CONFIG_BSD["name"]: cls.bsd = child elif child.name == CONFIG_SCANNER["name"]: cls.scanner = child cls.pmt = CLASS_PMT(name="test", role="detector", dependencies={"detector": cls.bsd, "pmt-signal": cls.control})
def setUpClass(cls): cls.sem_ext = semcomedi.SEMComedi(**CONFIG_SEM_EXT) cls.sem_int = simsem.SimSEM(**CONFIG_SEM_INT) for child in cls.sem_ext.children.value: if child.name == CONFIG_SCANNER_EXT["name"]: cls.ebeam_ext = child elif child.name == CONFIG_SED_EXT["name"]: cls.sed = child for child in cls.sem_int.children.value: if child.name == CONFIG_SCANNER_INT["name"]: cls.ebeam_int = child cls.scanner = CLASS(name="test", role="e-beam", dependencies={"external": cls.ebeam_ext, "internal": cls.ebeam_int})
def setUpClass(cls): cls.pcu = CLASS_PCU(**KWARGS_PCU) confsed = CONFIG_SED.copy() confsed["power_supplier"] = cls.pcu semchild = { "detector0": confsed, "detector1": CONFIG_BSD, "scanner": CONFIG_SCANNER } cls.sem = semcomedi.SEMComedi(power_supplier=cls.pcu, children=semchild, **CONFIG_SEM2) for child in cls.sem.children.value: if child.name == CONFIG_SED["name"]: cls.sed = child
def test_pickle(self): try: os.remove("test") except OSError: pass daemon = Pyro4.Daemon(unixsocket="test") sem = semcomedi.SEMComedi(daemon=daemon, **CONFIG_SEM) dump = pickle.dumps(sem, pickle.HIGHEST_PROTOCOL) # print "dump size is", len(dump) sem_unpickled = pickle.loads(dump) self.assertIsInstance(sem_unpickled.children, model.VigilantAttributeBase) self.assertEqual(sem_unpickled.name, sem.name) # self.assertEqual(len(sem_unpickled.children.value), 2) sem.terminate() daemon.shutdown()
def test_creation(self): """ Doesn't even try to acquire an image, just create and delete components """ sem = semcomedi.SEMComedi(**CONFIG_SEM) self.assertEqual(len(sem.children.value), 2) for child in sem.children.value: if child.name == CONFIG_SED["name"]: sed = child elif child.name == CONFIG_SCANNER["name"]: scanner = child self.assertEqual(len(scanner.resolution.value), 2) self.assertIsInstance(sed.data, model.DataFlow) self.assertTrue(sem.selfTest(), "SEM self test failed.") sem.terminate()
def _prepare_hardware(self, ebeam_kwargs=None, ebeam_mag=2000, ccd_img=None): if ccd_img is None: localpath = os.path.dirname(andorcam2.__file__) imgpath = os.path.abspath( os.path.join(localpath, "andorcam2-fake-spots-4x4.h5")) else: # Force absolute path, to be able to accept path relative from here localpath = os.path.dirname(__file__) imgpath = os.path.abspath(os.path.join(localpath, ccd_img)) fakeccd = andorcam2.AndorCam2(name="camera", role="ccd", device="fake", image=imgpath) # Set the pixel size from the image (as there is no lens + md_updater) converter = dataio.find_fittest_converter(imgpath, mode=os.O_RDONLY) img = converter.read_data(imgpath)[0] fakeccd.updateMetadata( {model.MD_PIXEL_SIZE: img.metadata[model.MD_PIXEL_SIZE]}) self.ccd = fakeccd # Force a ratio and hfw_nomag conf_scan = CONFIG_SCANNER.copy() if ebeam_kwargs: conf_scan.update(ebeam_kwargs) conf_sem = CONFIG_SEM.copy() conf_sem["children"]["scanner"] = conf_scan self.sem = semcomedi.SEMComedi(**conf_sem) for child in self.sem.children.value: if child.name == CONFIG_SED["name"]: self.sed = child elif child.name == CONFIG_SCANNER["name"]: self.ebeam = child self.ebeam.magnification.value = ebeam_mag