Esempio n. 1
0
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)
Esempio n. 2
0
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
Esempio n. 3
0
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)
Esempio n. 4
0
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