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
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"
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'