Exemple #1
0
    def test_contains_w_units(self):

        domain = DomainXY.from_linspace(-1 * u.mm, 1 * u.mm, 11)

        self.assertTrue(domain.contains(-0.5 * u.mm, 0 * u.mm))
        self.assertFalse(domain.contains(2 * u.mm, 0 * u.mm))
        self.assertFalse(domain.contains(4 * u.mm, 2 * u.mm))

        # Raise if incompatible unit
        with self.assertRaises(AssertionError):
            domain.contains(-0.5 * u.s, 0 * u.kg)

        # Raise if missing unit
        with self.assertRaises(AssertionError):
            domain.contains(-0.5, 0 * u.mm)

        # Raise if missing unit
        with self.assertRaises(AssertionError):
            domain.contains(-0.5 * u.mm, 0)
Exemple #2
0
    def test_rectangular_domain(self):

        szx, szy = (20, 10)
        stepx, stepy = (0.1, 0.4)
        ampl = 1.0
        xy = DomainXY.from_shape((szy, szx), (stepy, stepx))
        constant_map = ampl * np.ones(xy.shape)
        spatial_funct = ScalarBidimensionalFunction(constant_map, domain=xy)
        spectr = bfft.direct(spatial_funct)
        freq_step_x, freq_step_y = spectr.domain.step

        self.assertAlmostEqual(0, spectr.xmap[szy // 2, szx // 2])
        self.assertAlmostEqual(0, spectr.ymap[szy // 2, szx // 2])
        self.assertAlmostEqual(np.sqrt(ampl * szx * szy),
                               spectr.values[szy // 2, szx // 2])

        self.assertAlmostEqual(-0.5 / stepx, spectr.xcoord[0])
        self.assertAlmostEqual(1 / (szx * stepx), freq_step_x)

        self.assertAlmostEqual(-0.5 / stepy, spectr.ycoord[0])
        self.assertAlmostEqual(1 / (szy * stepy), freq_step_y)
Exemple #3
0
    def test_shift_w_units(self):

        domain = DomainXY.from_shape((100, 100), pixel_size=1 * u.cm)
        self.assertAlmostEqual(domain.origin[0], 49.5)
        self.assertAlmostEqual(domain.origin[1], 49.5)

        domain.shift(0.1 * u.m, -3.1415 * u.mm)
        self.assertAlmostEqual(domain.origin[0], 39.5)
        self.assertAlmostEqual(domain.origin[1], 49.81415)

        # Raise if incompatible unit
        with self.assertRaises(AssertionError):
            domain.shift(0.1 * u.s, 0.2 * u.s)

        # Raise if missing unit
        with self.assertRaises(AssertionError):
            domain.shift(0.1 * u.m, 0.2)

        # Raise if missing unit
        with self.assertRaises(AssertionError):
            domain.shift(0.1, 0.2 * u.m)
Exemple #4
0
    def test_direct_sinus_x(self):
        sizeInPoints = 500
        pixelSize = 0.2
        periodInLengthUnits = 4.0
        amplitude = 13.4
        phase = 0.8
        spatialMap = self._makeSinusMap(sizeInPoints, pixelSize, amplitude,
                                        periodInLengthUnits, phase)
        xyDomain = DomainXY.from_shape((sizeInPoints, sizeInPoints), pixelSize)
        xyFunct = ScalarBidimensionalFunction(spatialMap, domain=xyDomain)
        fftFunct = bfft.direct(xyFunct)
        spectralMap = fftFunct.values
        freqX = bfft.frequencies_x_map(sizeInPoints, pixelSize)
        freqY = bfft.frequencies_y_map(sizeInPoints, pixelSize)

        self.assertEqual((sizeInPoints, sizeInPoints), spectralMap.shape)
        self.assertEqual(
            1.0 / periodInLengthUnits,
            np.abs(freqX.flatten()[np.argmax(np.abs(spectralMap))]))
        self.assertEqual(
            0.0, np.abs(freqY.flatten()[np.argmax(np.abs(spectralMap))]))
        self._checkParseval(spatialMap, spectralMap)
 def distances_x_map(sizeInPoints, pixelSize):
     domain = DomainXY.from_shape((sizeInPoints, sizeInPoints), pixelSize)
     return domain.xcoord
 def distances_norm_map(sizeInPoints, pixelSize):
     domain = DomainXY.from_shape((sizeInPoints, sizeInPoints), pixelSize)
     return np.linalg.norm(np.dstack((domain.xmap, domain.ymap)), axis=2)
 def _createFlatPhaseMap(self):
     nPx = self._pupilDiameterInPixels
     pupPxSize = self.pupilPlanePixelSizeInMeters()
     domain = DomainXY.from_shape((nPx, nPx), pupPxSize)
     phase = S2DF(np.ones((nPx, nPx)), domain=domain)
     return phase
 def _createPupilFunction(self):
     domain = DomainXY.from_shape((self._pupilDiameterInPixels,
                                   self._pupilDiameterInPixels),
                                  self.pupilPlanePixelSizeInMeters())
     self._pupilFunction = S2DF(
         self._mask.asTransmissionValue(), domain=domain)
Exemple #9
0
    def test_crop_w_units(self):

        domain = DomainXY.from_linspace(-1, 1, 11)

        with self.assertRaises(AssertionError):
            _ = domain.cropped(*([1, 2, 3, 4] * u.cm))
Exemple #10
0
 def test_step(self):
     domain = DomainXY.from_linspace(-1, 1, 11)
     self.assertAlmostEqual(0.2, domain.step[0])
     self.assertAlmostEqual(0.2, domain.step[1])