def tst_with_flat_background(self): from dials.algorithms.integration.fit import fit_profile from scitbx.array_family import flex from tst_profile_helpers import gaussian # Create profile p = gaussian((9, 9, 9), 1, (4, 4, 4), (2, 2, 2)) s = flex.sum(p) p = p / s # Copy profile c0 = gaussian((9, 9, 9), 1, (4, 4, 4), (2, 2, 2)) b = flex.double(flex.grid(9, 9, 9), 5) m = flex.bool(flex.grid(9,9,9), True) c = c0 + b # Fit fit = fit_profile(p, m, c, b) I = fit.intensity() V = fit.variance() # Test intensity is the same eps = 1e-7 assert(abs(I - flex.sum(c0)) < eps) assert(abs(V - (flex.sum(c0) + flex.sum(b))) < eps) print 'OK'
def tst_identical(self): from dials.algorithms.integration.fit import fit_profile from scitbx.array_family import flex from tst_profile_helpers import gaussian # Create profile p = gaussian((9, 9, 9), 1, (4, 4, 4), (2, 2, 2)) s = flex.sum(p) p = p / s # Copy profile c = p.deep_copy() b = flex.double(flex.grid(9, 9, 9), 0) m = flex.bool(flex.grid(9,9,9), True) # Fit fit = fit_profile(p, m, c, b) I = fit.intensity() V = fit.variance() # Test intensity is the same eps = 1e-7 assert(abs(I - flex.sum(p)) < eps) assert(abs(V - I) < eps) print 'OK'
def tst_with_flat_background_partial(self): from dials.algorithms.integration.fit import fit_profile from scitbx.array_family import flex from tst_profile_helpers import gaussian # Create profile p = gaussian((9, 9, 9), 1, (4, 4, 4), (2, 2, 2)) s = flex.sum(p) p = p / s # Copy profile c0 = gaussian((9, 9, 9), 1, (4, 4, 4), (2, 2, 2)) b = flex.double(flex.grid(9, 9, 9), 5) m = flex.bool(flex.grid(9,9,9), True) c = c0 + b # Get the partial profiles pp = p[0:5,:,:] mp = m[0:5,:,:] cp = c[0:5,:,:] bp = b[0:5,:,:] c0p = c0[0:5,:,:] # Fit fit = fit_profile(pp, mp, cp, bp) I = fit.intensity() V = fit.variance() # Test intensity is the same eps = 1e-7 assert(abs(I - flex.sum(c0)) < eps) assert(abs(V - (flex.sum(c0p) + flex.sum(bp))) < eps) print 'OK'
def tst_scaled_partial(self): from dials.algorithms.integration.fit import fit_profile from scitbx.array_family import flex # Create profile p = gaussian((9, 9, 9), 1, (4, 4, 4), (2, 2, 2)) s = flex.sum(p) p = p / s # Copy profile c = gaussian((9, 9, 9), 1, (4, 4, 4), (2, 2, 2)) b = flex.double(flex.grid(9, 9, 9), 0) m = flex.bool(flex.grid(9, 9, 9), True) # Get the partial profiles pp = p[0:5, :, :] mp = m[0:5, :, :] cp = c[0:5, :, :] bp = b[0:5, :, :] # Fit fit = fit_profile(pp, mp, cp, bp) I = fit.intensity() V = fit.variance() # Test intensity is the same eps = 1e-7 assert (abs(I - flex.sum(c)) < eps) assert (abs(V - flex.sum(cp)) < eps) print 'OK'