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 test_self_consistent():
    from dials.algorithms.profile_model.modeller import SingleSampler

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

    for i in range(len(sampler)):
        coord = sampler.coord(i)
        index = sampler.nearest(0, coord)
        assert index == i
Exemplo n.º 3
0
def test_self_consistent():
    from dials.algorithms.profile_model.modeller import SingleSampler
    width = 1000
    height = 1000
    scan_range = (2, 12)
    depth = scan_range[1] - scan_range[0]
    nz = 2
    sampler = SingleSampler(scan_range, nz)

    for i in range(len(sampler)):
        coord = sampler.coord(i)
        index = sampler.nearest(0, coord)
        assert (index == i)
Exemplo n.º 4
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.º 5
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.º 6
0
  def tst_self_consistent(self):
    from dials.algorithms.profile_model.modeller import SingleSampler
    width = 1000
    height = 1000
    scan_range = (2, 12)
    depth = scan_range[1] - scan_range[0]
    nz = 2
    sampler = SingleSampler(scan_range, nz)

    for i in range(len(sampler)):
      coord = sampler.coord(i)
      index = sampler.nearest(coord)
      assert(index == i)

    print 'OK'
Exemplo n.º 7
0
def test_indexing():
    from dials.algorithms.profile_model.modeller import SingleSampler

    width = 1000
    height = 1000
    scan_range = (2, 12)
    nz = 2
    sampler = SingleSampler(scan_range, nz)
    zstep = sampler.step_size()
    zind = list(range(nz))

    xp = [width * 0.5 for k in range(nz)]
    yp = [height * 0.5 for k in range(nz)]
    zp = [(z + 0.5) * zstep + scan_range[0] for z in zind]

    eps = 1e-10

    for x0, y0, z0, i in zip(xp, yp, zp, range(len(sampler))):
        x1, y1, z1 = sampler.coord(i)
        assert abs(z0 - z1) <= eps
Exemplo n.º 8
0
  def tst_indexing(self):
    from dials.algorithms.profile_model.modeller import SingleSampler
    width = 1000
    height = 1000
    scan_range = (2, 12)
    depth = scan_range[1] - scan_range[0]
    nz = 2
    sampler = SingleSampler(scan_range, nz)
    zstep = sampler.step_size()
    zind = [k for k in range(nz)]

    xp = [width *0.5 for k in range(nz)]
    yp = [height *0.5 for k in range(nz)]
    zp = [(z + 0.5) * zstep + scan_range[0] for z in zind]

    eps = 1e-10

    for x0, y0, z0, i in zip(xp, yp, zp, range(len(sampler))):
      x1, y1, z1 = sampler.coord(i)
      assert(abs(z0 - z1) <= eps)

    print 'OK'