Skip to content
Snippets Groups Projects

QTR

Merged Michele Nottoli requested to merge update into main
1 file
+ 1
1
Compare changes
  • Side-by-side
  • Inline
@@ -9,10 +9,13 @@ import gext.grassmann
import utils
SMALL = 1e-10
THRESHOLD = 1e-2
THRESHOLD = 5e-2
@pytest.mark.parametrize("datafile", ["urea.json", "glucose.json"])
def test_extrapolation(datafile):
@pytest.mark.parametrize("fitting", ["leastsquare", "qtr"])
@pytest.mark.parametrize("regularization", [0.0, 1e-6, 5e-6])
@pytest.mark.parametrize("descriptor", ["distance", "coulomb"])
def test_extrapolation(datafile, fitting, regularization, descriptor):
# load test data from json file
data = utils.load_json(f"tests/{datafile}")
@@ -26,7 +29,9 @@ def test_extrapolation(datafile):
assert n < nframes
# initialize an extrapolator
extrapolator = gext.Extrapolator(nelectrons, nbasis, natoms, nsteps=n)
extrapolator = gext.Extrapolator(nelectrons, nbasis, natoms,
nsteps=n, fitting=fitting, fitting_regularization=regularization,
descriptor=descriptor)
# load data in the extrapolator up to index n - 1
for (coords, coeff, overlap) in zip(data["trajectory"][:n],
@@ -106,3 +111,37 @@ def test_coefficient_extrapolation(datafile):
assert np.linalg.norm(guessed_density - density, ord=np.inf) < THRESHOLD
assert np.linalg.norm(guessed_density - density, ord=np.inf) \
/np.linalg.norm(density, ord=np.inf) < THRESHOLD
@pytest.mark.parametrize("datafile", ["urea.json", "glucose.json"])
def test_errors(datafile):
# load test data from json file
data = utils.load_json(f"tests/{datafile}")
nelectrons = data["nelectrons"]
natoms = data["trajectory"].shape[1]
nbasis = data["overlaps"].shape[1]
nframes = data["trajectory"].shape[0]
# amount of data we want to use for fitting
n = 9
assert n < nframes
# initialize an extrapolator
extrapolator = gext.Extrapolator(nelectrons, nbasis, natoms, nsteps=n)
with pytest.raises(ValueError):
extrapolator.guess(data["trajectory"][0])
# initialize a new extrapolator
extrapolator = gext.Extrapolator(nelectrons, nbasis, natoms, nsteps=n,
allow_partially_filled=False)
# load data in the extrapolator up to index m - 1
m = 4
for (coords, coeff, overlap) in zip(data["trajectory"][:m],
data["coefficients"][:m], data["overlaps"][:m]):
extrapolator.load_data(coords, coeff, overlap)
# check an extrapolation at index m
with pytest.raises(ValueError):
extrapolator.guess(data["trajectory"][m])
Loading