예제 #1
0
    def test_dispersion_w_gain(self):
        from dials.algorithms.image.threshold import dispersion_w_gain

        nsig_b = 3
        nsig_s = 3
        result1 = dispersion_w_gain(self.image, self.mask, self.gain,
                                    self.size, nsig_b, nsig_s, self.min_count)

        # scaling both the image and the gain should not affect the result
        result2 = dispersion_w_gain(
            2.0 * self.image,
            self.mask,
            2.0 * self.gain,
            self.size,
            nsig_b,
            nsig_s,
            self.min_count,
        )
        assert result1 == result2

        # should get the same result as dispersion if the gain is unity
        from dials.algorithms.image.threshold import dispersion

        result3 = dispersion(self.image, self.mask, self.size, nsig_b, nsig_s,
                             self.min_count)
        result4 = dispersion_w_gain(
            self.image,
            self.mask,
            (0 * self.gain + 1),
            self.size,
            nsig_b,
            nsig_s,
            self.min_count,
        )
        assert result3 == result4
예제 #2
0
    def test_dispersion_threshold(self):
        from dials.algorithms.image.threshold import (
            DispersionThreshold,
            dispersion,
            dispersion_w_gain,
        )
        from dials.array_family import flex

        nsig_b = 3
        nsig_s = 3
        algorithm = DispersionThreshold(
            self.image.all(), self.size, nsig_b, nsig_s, 0, self.min_count
        )

        result1 = dispersion(
            self.image, self.mask, self.size, nsig_b, nsig_s, self.min_count
        )

        result2 = dispersion_w_gain(
            self.image, self.mask, self.gain, self.size, nsig_b, nsig_s, self.min_count
        )

        result3 = flex.bool(flex.grid(self.image.all()))
        result4 = flex.bool(flex.grid(self.image.all()))
        algorithm(self.image, self.mask, result3)
        algorithm(self.image, self.mask, self.gain, result4)
        assert result1 == result3
        assert result2 == result4
예제 #3
0
    def test_dispersion_debug(self):
        from dials.algorithms.image.threshold import (
            DispersionThresholdDebug,
            dispersion,
            dispersion_w_gain,
        )

        nsig_b = 3
        nsig_s = 3
        result1 = dispersion(
            self.image, self.mask, self.size, nsig_b, nsig_s, self.min_count
        )
        debug = DispersionThresholdDebug(
            self.image, self.mask, self.size, nsig_b, nsig_s, 0, self.min_count
        )
        result2 = debug.final_mask()
        assert result1.all_eq(result2)

        result3 = dispersion_w_gain(
            self.image, self.mask, self.gain, self.size, nsig_b, nsig_s, self.min_count
        )
        debug = DispersionThresholdDebug(
            self.image,
            self.mask,
            self.gain,
            self.size,
            nsig_b,
            nsig_s,
            0,
            self.min_count,
        )
        result4 = debug.final_mask()
        assert result3 == result4