Exemplo n.º 1
0
def test_weights():
    from scitbx import matrix

    from dials.algorithms.profile_model.modeller import SingleSampler

    scan_range = (2, 12)
    nz = 2
    sampler = SingleSampler(scan_range, nz)

    # Check the weight at the coord in 1.0
    eps = 1e-7
    for i in range(len(sampler)):
        coord = sampler.coord(i)
        weight = sampler.weight(i, 0, coord)
        assert abs(weight - 1.0) < eps

    # Ensure we get the expected weight at the next grid point at half way
    # between grid points
    expected = math.exp(-4.0 * math.log(2.0))
    for k in range(nz):
        coord1 = matrix.col(sampler.coord(k))
        if k > 0:
            coord = matrix.col(sampler.coord(k - 1))
            weight = sampler.weight(k, 0, coord)
            assert abs(weight - expected) < eps
            weight = sampler.weight(k, 0, (coord + coord1) / 2.0)
            assert abs(weight - 0.5) < eps
        if k < nz - 1:
            coord = matrix.col(sampler.coord(k + 1))
            weight = sampler.weight(k, 0, coord)
            assert abs(weight - expected) < eps
            weight = sampler.weight(k, 0, (coord + coord1) / 2.0)
            assert abs(weight - 0.5) < eps
Exemplo n.º 2
0
    def tst_weights(self):
        from dials.algorithms.profile_model.modeller import SingleSampler
        from scitbx import matrix
        from math import log, exp

        width = 1000
        height = 1000
        scan_range = (2, 12)
        depth = scan_range[1] - scan_range[0]
        nz = 2
        sampler = SingleSampler(scan_range, nz)

        # Check the weight at the coord in 1.0
        eps = 1e-7
        for i in range(len(sampler)):
            coord = sampler.coord(i)
            weight = sampler.weight(i, 0, coord)
            assert abs(weight - 1.0) < eps

        # Ensure we get the expected weight at the next grid point at half way
        # between grid points
        expected = exp(-4.0 * log(2.0))
        for k in range(nz):
            coord1 = matrix.col(sampler.coord(k))
            if k > 0:
                coord = matrix.col(sampler.coord(k - 1))
                weight = sampler.weight(k, 0, coord)
                assert abs(weight - expected) < eps
                weight = sampler.weight(k, 0, (coord + coord1) / 2.0)
                assert abs(weight - 0.5) < eps
            if k < nz - 1:
                coord = matrix.col(sampler.coord(k + 1))
                weight = sampler.weight(k, 0, coord)
                assert abs(weight - expected) < eps
                weight = sampler.weight(k, 0, (coord + coord1) / 2.0)
                assert abs(weight - 0.5) < eps

        print "OK"
Exemplo n.º 3
0
    def tst_weights(self):
        from dials.algorithms.profile_model.modeller import SingleSampler
        from scitbx import matrix
        from math import log, exp
        width = 1000
        height = 1000
        scan_range = (2, 12)
        depth = scan_range[1] - scan_range[0]
        nz = 2
        sampler = SingleSampler(scan_range, nz)

        # Check the weight at the coord in 1.0
        eps = 1e-7
        for i in range(len(sampler)):
            coord = sampler.coord(i)
            weight = sampler.weight(i, 0, coord)
            assert (abs(weight - 1.0) < eps)

        # Ensure we get the expected weight at the next grid point at half way
        # between grid points
        expected = exp(-4.0 * log(2.0))
        for k in range(nz):
            coord1 = matrix.col(sampler.coord(k))
            if k > 0:
                coord = matrix.col(sampler.coord(k - 1))
                weight = sampler.weight(k, 0, coord)
                assert (abs(weight - expected) < eps)
                weight = sampler.weight(k, 0, (coord + coord1) / 2.0)
                assert (abs(weight - 0.5) < eps)
            if k < nz - 1:
                coord = matrix.col(sampler.coord(k + 1))
                weight = sampler.weight(k, 0, coord)
                assert (abs(weight - expected) < eps)
                weight = sampler.weight(k, 0, (coord + coord1) / 2.0)
                assert (abs(weight - 0.5) < eps)

        print 'OK'