def check_fake(scheme, pseudo, dowcor, local, absmean, **kwargs): if pseudo: sys, ugrid, mol_dens, proatomdb = get_fake_pseudo_oo() else: sys, ugrid, mol_dens, proatomdb = get_fake_co() if dowcor: wcor_numbers = range(119) else: wcor_numbers = [] CPartClass = cpart_schemes[scheme] cpart = CPartClass(sys, ugrid, local, mol_dens, proatomdb, wcor_numbers, **kwargs) cpart.do_charges() charges = cpart['charges'] print abs(charges.sum()), abs(charges).mean(), abs( abs(charges).mean() - absmean) assert abs(charges.sum()) < 1e-2 assert abs(abs(charges).mean() - absmean) < 1e-3 if kwargs.get('greedy', False): # In case of a greedy algorithm, one should compare the proatoms # in the partitioning object with proatoms directly evaluate with the # proatom splines check_proatom_splines(cpart)
def test_weight_corrections(): from horton.part.test.common import get_fake_co sys, ugrid, mol_dens, proatomdb = get_fake_co() funcs = [ ( sys.coordinates[0], [ #proatomdb.get_spline(6, +1), proatomdb.get_spline(6, 0), #proatomdb.get_spline(6, -1), ]), ( sys.coordinates[1], [ #proatomdb.get_spline(8, +1), proatomdb.get_spline(8, 0), #proatomdb.get_spline(8, -1), ]), ] weights = ugrid.compute_weight_corrections(funcs) assert (weights != 1.0).any() assert (weights == 1.0).any() assert abs(ugrid.integrate(mol_dens, weights) - 14.0) < 6e-3 assert abs(ugrid.integrate(mol_dens) - 14.0) > 5e-2
def check_fake(scheme, pseudo, dowcor, local, absmean, **kwargs): if pseudo: coordinates, numbers, pseudo_numbers, ugrid, moldens, proatomdb = get_fake_pseudo_oo() else: coordinates, numbers, ugrid, moldens, proatomdb = get_fake_co() pseudo_numbers = numbers.astype(float) if dowcor: wcor_numbers = range(119) else: wcor_numbers = [] CPartClass = cpart_schemes[scheme] cpart = CPartClass(coordinates, numbers, pseudo_numbers, ugrid, moldens, proatomdb, local=local, wcor_numbers=wcor_numbers, **kwargs) assert cpart.local == local cpart.do_charges() charges = cpart['charges'] #print abs(charges.sum()), abs(charges).mean(), abs(abs(charges).mean() - absmean) assert abs(charges.sum()) < 1e-2 assert abs(abs(charges).mean() - absmean) < 1e-3 if kwargs.get('greedy', False): # In case of a greedy algorithm, one should compare the proatoms # in the partitioning object with proatoms directly evaluate with the # proatom splines check_proatom_splines(cpart)
def test_weight_corrections(): from horton.part.test.common import get_fake_co coordinates, numbers, ugrid, mol_dens, proatomdb = get_fake_co() funcs = [ (coordinates[0], [ #proatomdb.get_spline(6, +1), proatomdb.get_spline(6, 0), #proatomdb.get_spline(6, -1), ]), (coordinates[1], [ #proatomdb.get_spline(8, +1), proatomdb.get_spline(8, 0), #proatomdb.get_spline(8, -1), ]), ] weights = ugrid.compute_weight_corrections(funcs) assert (weights != 1.0).any() assert (weights == 1.0).any() assert abs(ugrid.integrate(mol_dens, weights)-14.0) < 6e-3 assert abs(ugrid.integrate(mol_dens)-14.0) > 5e-2