def exercise_singular_least_squares(): obs = flex.double([1.234]) weights_2345 = flex.double([2.345]) weights_zero = flex.double([0]) r_free_flags = flex.bool([False]) a = flex.double([0]) b = flex.double([0]) for obs_type in ["F", "I"]: for weights, scale_factor in [(weights_2345, 3.456), (weights_zero, 0)]: tg = ext.targets_least_squares(compute_scale_using_all_data=False, obs_type=obs_type, obs=obs, weights=weights, r_free_flags=r_free_flags, f_calc=flex.complex_double(a, b), derivatives_depth=2, scale_factor=scale_factor) if (weights is weights_2345): assert approx_equal(tg.scale_factor(), scale_factor) assert list(tg.gradients_work()) == [0j] assert list(tg.hessians_work()) == [(1, 1, 1)] else: assert tg.scale_factor() is None assert tg.target_work() is None assert tg.target_test() is None assert tg.gradients_work().size() == 0 assert tg.hessians_work().size() == 0
def exercise_singular_least_squares(): obs = flex.double([1.234]) weights_2345 = flex.double([2.345]) weights_zero = flex.double([0]) r_free_flags = flex.bool([False]) a = flex.double([0]) b = flex.double([0]) for obs_type in ["F", "I"]: for weights,scale_factor in [ (weights_2345, 3.456), (weights_zero, 0)]: tg = ext.targets_least_squares( compute_scale_using_all_data=False, obs_type=obs_type, obs=obs, weights=weights, r_free_flags=r_free_flags, f_calc=flex.complex_double(a, b), derivatives_depth=2, scale_factor=scale_factor) if (weights is weights_2345): assert approx_equal(tg.scale_factor(), scale_factor) assert list(tg.gradients_work()) == [0j] assert list(tg.hessians_work()) == [(1,1,1)] else: assert tg.scale_factor() is None assert tg.target_work() is None assert tg.target_test() is None assert tg.gradients_work().size() == 0 assert tg.hessians_work().size() == 0
def __call__(self, f_calc, compute_gradients): assert f_calc.unit_cell().is_similar_to(self.f_obs.unit_cell()) assert f_calc.space_group() == self.f_obs.space_group() return ext.targets_least_squares( compute_scale_using_all_data=self.compute_scale_using_all_data, obs_type="F", obs=self.f_obs.data(), weights=self.weights, r_free_flags=self.r_free_flags.data(), f_calc=f_calc.data(), derivatives_depth=int(compute_gradients), scale_factor=self.scale_factor)
def get(O, derivatives_depth=0): if (O.target_type == "ls"): return ext.targets_least_squares( compute_scale_using_all_data=False, obs_type=O.obs_type, obs=O.obs, weights=O.weights, r_free_flags=O.r_free_flags, f_calc=flex.complex_double(O.a, O.b), derivatives_depth=derivatives_depth, scale_factor=O.scale_factor) if (O.target_type == "cc"): return ext.targets_correlation(obs_type=O.obs_type, obs=O.obs, weights=O.weights, r_free_flags=O.r_free_flags, f_calc=flex.complex_double( O.a, O.b), derivatives_depth=derivatives_depth) raise RuntimeError("Unknown target_type.")
def get(O, derivatives_depth=0): if (O.target_type == "ls"): return ext.targets_least_squares( compute_scale_using_all_data=False, obs_type=O.obs_type, obs=O.obs, weights=O.weights, r_free_flags=O.r_free_flags, f_calc=flex.complex_double(O.a, O.b), derivatives_depth=derivatives_depth, scale_factor=O.scale_factor) if (O.target_type == "cc"): return ext.targets_correlation( obs_type=O.obs_type, obs=O.obs, weights=O.weights, r_free_flags=O.r_free_flags, f_calc=flex.complex_double(O.a, O.b), derivatives_depth=derivatives_depth) raise RuntimeError("Unknown target_type.")