Example #1
0
    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))
Example #2
0
    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
Example #3
0
    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()
Example #4
0
    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
Example #5
0
    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()
Example #6
0
    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()
Example #7
0
    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})
Example #8
0
    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})
Example #9
0
    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
Example #10
0
    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()
Example #11
0
    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()
Example #12
0
    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