Example #1
0
 def setUp(self):
     default_syris_init()
     lens = Lens(3.0, f_number=1.4, focal_length=100.0 * q.mm)
     camera = Camera(1 * q.um, 0.1, 10, 1.0, 12, (64, 64))
     detector = Detector(None, lens, camera)
     ps = detector.pixel_size
     t = np.linspace(0, 1, 10) * q.mm
     x = t
     y = np.zeros(len(t))
     z = np.zeros(len(t))
     points = list(zip(x, y, z)) * q.mm
     mb_0 = MetaBall(
         Trajectory(points,
                    pixel_size=ps,
                    furthest_point=1 * q.um,
                    velocity=1 * q.mm / q.s),
         1 * q.um,
     )
     mb_1 = MetaBall(
         Trajectory(points,
                    pixel_size=ps,
                    furthest_point=1 * q.um,
                    velocity=2 * q.mm / q.s),
         1 * q.um,
     )
     self.experiment = Experiment([mb_0, mb_1], None, detector, 0 * q.m,
                                  None)
Example #2
0
 def setUp(self):
     default_syris_init(double_precision=True)
     self.energy = 20 * q.keV
     self.lam = 6.19920937165e-11 * q.m
     self.size = 64
     self.distance = 1 * q.m
     self.pixel_size = 1 * q.um
Example #3
0
 def setUp(self):
     default_syris_init(profiling=True)
     self.data = np.arange(10).astype(cfg.PRECISION.np_float)
     self.mem = cl.Buffer(cfg.OPENCL.ctx,
                          cl.mem_flags.READ_WRITE
                          | cl.mem_flags.COPY_HOST_PTR,
                          hostbuf=self.data)
Example #4
0
 def setUp(self):
     default_syris_init()
     self.energies = np.arange(10, 20) * q.keV
     self.energy = 15 * q.keV
     delta = np.linspace(1e-5, 1e-6, len(self.energies))
     beta = np.linspace(1e-8, 1e-9, len(self.energies))
     self.material = Material("foo", delta + beta * 1j, self.energies)
     self.thickness = 1 * q.mm
     self.fltr = MaterialFilter(self.thickness, self.material)
Example #5
0
 def setUp(self):
     # Double precision needed for spherical phase profile
     default_syris_init()
     self.ps = 1 * q.um
     self.n = 128
     self.size = (100, 100) * q.um
     self.sample_dist = 30 * q.m
     self.dE = 1 * q.keV
     self.energies = np.arange(1, 39, self.dE.magnitude) * q.keV
     self.trajectory = Trajectory([(self.n / 2, self.n / 2, 0)] * self.ps)
Example #6
0
 def setUp(self):
     default_syris_init()
     self.pixel_size = 1e-3
     self.precision_places = int(np.log10(1 / self.pixel_size))
     self.prg = g_util.get_program(g_util.get_metaobjects_source())
     self.poly_deg = 4
     self.roots_mem = cl.Buffer(
         cfg.OPENCL.ctx,
         cl.mem_flags.READ_WRITE,
         size=(self.poly_deg + 1) * cfg.PRECISION.cl_float,
     )
Example #7
0
 def setUp(self):
     default_syris_init()
     self.prg = g_util.get_program(
         g_util.get_source(["polyobject.cl", "heapsort.cl"],
                           precision_sensitive=True))
     self.num = 10
     self.data = np.array([1, 8, np.nan, -1, np.nan, 8, 680, 74, 2,
                           0]).astype(cfg.PRECISION.np_float)
     self.mem = cl.Buffer(cfg.OPENCL.ctx,
                          cl.mem_flags.READ_WRITE
                          | cl.mem_flags.COPY_HOST_PTR,
                          hostbuf=self.data)
Example #8
0
    def setUp(self):
        default_syris_init()
        self.data = []

        sizes = [8, 32]
        tile_counts = [2, 4]
        for j in range(len(sizes)):
            for i in range(len(sizes)):
                size = sizes[j], sizes[i]
                for t_j in range(len(tile_counts)):
                    for t_i in range(len(tile_counts)):
                        tiles_count = tile_counts[t_j], tile_counts[t_i]
                        self.data.append((size, tiles_count))
Example #9
0
 def setUp(self):
     default_syris_init()
     wavelengths = np.arange(10) * q.nm
     qe = np.ones(len(wavelengths))
     self.camera = Camera(
         1e-3 * q.um,
         1.0,
         10.0,
         0,
         10,
         (64, 64),
         wavelengths=wavelengths,
         quantum_efficiencies=qe,
         exp_time=1 * q.s,
         fps=1 / q.s,
     )
Example #10
0
 def setUp(self):
     default_syris_init()
     self.num_0 = np.array([17 - 38j], dtype=cfg.PRECISION.np_cplx)
     self.num_1 = np.array([-135 + 563j], dtype=cfg.PRECISION.np_cplx)
     self.mem_0 = cl.Buffer(cfg.OPENCL.ctx,
                            cl.mem_flags.READ_WRITE
                            | cl.mem_flags.COPY_HOST_PTR,
                            hostbuf=self.num_0)
     self.mem_1 = cl.Buffer(cfg.OPENCL.ctx,
                            cl.mem_flags.READ_WRITE
                            | cl.mem_flags.COPY_HOST_PTR,
                            hostbuf=self.num_1)
     self.mem_out = cl.Buffer(cfg.OPENCL.ctx, cl.mem_flags.READ_WRITE,
                              cfg.PRECISION.cl_cplx)
     self.host_array = np.empty(1, cfg.PRECISION.np_cplx)
     src = gpu_util.get_source(["vcomplex.cl"])
     self.prg = cl.Program(cfg.OPENCL.ctx, src).build()
Example #11
0
    def setUp(self):
        # Double precision needed for spherical phase profile
        default_syris_init(double_precision=True)
        self.dE = 0.1 * q.keV
        self.energies = np.arange(14.8, 15, self.dE.magnitude) * q.keV
        self.trajectory = Trajectory([(0, 0, 0)] * q.m)
        self.ps = 10 * q.um

        self.source = BendingMagnet(
            2.5 * q.GeV,
            150 * q.mA,
            1.5 * q.T,
            30 * q.m,
            self.dE,
            np.array([0.2, 0.8]) * q.mm,
            self.ps,
            self.trajectory,
        )
Example #12
0
    def test_fft(self):
        data = gpu_util.get_array(
            np.random.normal(100, 100, size=(4, 4)).astype(cfg.PRECISION.np_float)
        )
        orig = gpu_util.get_host(data)
        data = ip.fft_2(data)
        ip.ifft_2(data)
        np.testing.assert_almost_equal(orig, data.get().real, decimal=4)

        # Test double precision
        default_syris_init(double_precision=True)
        data = gpu_util.get_array(
            np.random.normal(100, 100, size=(4, 4)).astype(cfg.PRECISION.np_float)
        )
        gt = np.fft.fft2(data.get())
        data = ip.fft_2(data)
        np.testing.assert_almost_equal(gt, data.get(), decimal=4)

        gt = np.fft.ifft2(data.get())
        data = ip.ifft_2(data)
        np.testing.assert_almost_equal(gt, data.get(), decimal=4)
Example #13
0
    def setUp(self):
        default_syris_init(double_precision=True)
        self.poly_deg = 4
        self.coeffs = np.array([5, 87, -2, 37, 17],
                               dtype=cfg.PRECISION.np_float)

        self.coeffs_mem = cl.Buffer(cfg.OPENCL.ctx,
                                    cl.mem_flags.READ_ONLY
                                    | cl.mem_flags.COPY_HOST_PTR,
                                    hostbuf=self.coeffs)
        self.scalar_mem = cl.Buffer(cfg.OPENCL.ctx,
                                    cl.mem_flags.READ_WRITE,
                                    size=cfg.PRECISION.cl_float)

        self.pixel_size = 1e-3
        self.precision_places = int(np.log10(1 / self.pixel_size))
        self.prg = g_util.get_program(g_util.get_metaobjects_source())
        self.roots_mem = cl.Buffer(
            cfg.OPENCL.ctx,
            cl.mem_flags.READ_WRITE,
            size=(self.poly_deg + 1) * cfg.PRECISION.cl_float,
        )
Example #14
0
 def test_creation(self):
     default_syris_init()
     energies = np.arange(1, 10, 1) * q.keV
     make_henke("foo", energies, formula="H")
Example #15
0
 def setUp(self):
     default_syris_init()
     self.energies = np.arange(1, 5, 1) * q.keV
     self.refractive_indices = np.array(
         [i + i * 1j for i in range(1,
                                    len(self.energies) + 1)])
Example #16
0
 def setUp(self):
     default_syris_init()
     energies = list(range(10, 20)) * q.keV
     self.energy = energies[len(energies) // 2]
     self.material = Material("foo", np.arange(len(energies), dtype=np.complex), energies)
Example #17
0
 def setUp(self):
     default_syris_init()
     self.triangles = make_cube()
     self.trajectory = Trajectory([(0, 0, 0)] * q.m)
     self.mesh = Mesh(self.triangles, self.trajectory)
Example #18
0
 def setUp(self):
     default_syris_init()
     self.pixel_size = 1 * q.um
Example #19
0
 def setUp(self):
     default_syris_init()
     self.n = 2
     self.kernel_fn = "vfloat_test.cl"