Skip to content

Commit

Permalink
tests: add tests for #20 (close #20)
Browse files Browse the repository at this point in the history
  • Loading branch information
paulmueller committed Jan 4, 2022
1 parent f20dead commit 3e4d092
Show file tree
Hide file tree
Showing 3 changed files with 93 additions and 3 deletions.
2 changes: 1 addition & 1 deletion pyjibe/fd/tab_fit.py
Original file line number Diff line number Diff line change
Expand Up @@ -352,7 +352,7 @@ def fit_update_parameters(self, fdist):
# are important for the fit, but that users are not supposed to modify.
# Do not remove hidden parameters if in dev mode.
if not dev_mode:
par_names = [p for p in par_names if not p.name.startswith("_")]
par_names = [p for p in par_names if not p.startswith("_")]
self.assert_parameter_table_rows(itab, len(par_names), cb_first=True)
for ii, key in enumerate(par_names):
p = params[key]
Expand Down
4 changes: 3 additions & 1 deletion tests/helpers.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,9 @@ def __init__(self, model_key, **kwargs):
# rebase on hertz model
md = nanite.model.models_available["hertz_para"].module
for akey in dir(md):
setattr(self, akey, getattr(md, akey))
if akey not in kwargs and not akey.startswith("__"):
print("KEYS", akey)
setattr(self, akey, getattr(md, akey))
for kw in kwargs:
setattr(self, kw, kwargs[kw])
self.model_key = model_key
Expand Down
90 changes: 89 additions & 1 deletion tests/test_fd_base.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,13 @@
import numpy as np
import pytest

import lmfit
from nanite.model import model_hertz_paraboloidal

import nanite.model.residuals as nres
import pyjibe.head

from helpers import make_directory_with_data
from helpers import MockModelModule, make_directory_with_data


def test_simple(qtbot):
Expand Down Expand Up @@ -59,6 +63,90 @@ def test_fit_all(qtbot):
assert a1.fit_properties == a2.fit_properties


def test_hidden_parameters(qtbot):
def get_parameter_defaults():
params = lmfit.Parameters()
params.add("E", value=3e3, min=0)
params.add("R", value=10e-6, min=0, vary=False)
params.add("_nu", value=.5, min=0, max=0.5, vary=False)
params.add("contact_point", value=0)
params.add("baseline", value=0)
return params

def model_func(delta, E, R, _nu, contact_point=0, baseline=0):
return model_hertz_paraboloidal.hertz_paraboloidal(
delta=delta,
E=E,
R=R,
nu=_nu,
contact_point=contact_point,
baseline=baseline)
with MockModelModule(
model_key="petperpan",
parameter_keys=["E", "R", "_nu", "contact_point", "baseline"],
model_func=model_func,
model=nres.get_default_modeling_wrapper(model_func),
residual=nres.get_default_residuals_wrapper(model_func),
get_parameter_defaults=get_parameter_defaults) as mod:
main_window = pyjibe.head.PyJibe()
# disable developer mode
main_window.settings.setValue("developer mode", 0)
main_window.load_data(files=make_directory_with_data(2))
war = main_window.subwindows[0].widget()
# clear data
war.cb_autosave.setChecked(0)
# perform simple filter
war.tab_preprocess.set_preprocessing(["compute_tip_position"])
# set mock model
idx = war.tab_fit.cb_model.findData(mod.model_key)
war.tab_fit.cb_model.setCurrentIndex(idx)
# Check visibility of Poisson's ratio
itab = war.tab_fit.table_parameters_initial
assert itab.rowCount() == 4


def test_hidden_parameters_control_in_dev_mode(qtbot):
def get_parameter_defaults():
params = lmfit.Parameters()
params.add("E", value=3e3, min=0)
params.add("R", value=10e-6, min=0, vary=False)
params.add("_nu", value=.5, min=0, max=0.5, vary=False)
params.add("contact_point", value=0)
params.add("baseline", value=0)
return params

def model_func(delta, E, R, _nu, contact_point=0, baseline=0):
return model_hertz_paraboloidal.hertz_paraboloidal(
delta=delta,
E=E,
R=R,
nu=_nu,
contact_point=contact_point,
baseline=baseline)
with MockModelModule(
model_key="petperpan",
parameter_keys=["E", "R", "_nu", "contact_point", "baseline"],
model_func=model_func,
model=nres.get_default_modeling_wrapper(model_func),
residual=nres.get_default_residuals_wrapper(model_func),
get_parameter_defaults=get_parameter_defaults) as mod:
main_window = pyjibe.head.PyJibe()
# disable developer mode
main_window.settings.setValue("developer mode", 1)
main_window.load_data(files=make_directory_with_data(2))
war = main_window.subwindows[0].widget()
# clear data
war.cb_autosave.setChecked(0)
# perform simple filter
war.tab_preprocess.set_preprocessing(["compute_tip_position"])
# set mock model
idx = war.tab_fit.cb_model.findData(mod.model_key)
war.tab_fit.cb_model.setCurrentIndex(idx)
# Check visibility of Poisson's ratio
itab = war.tab_fit.table_parameters_initial
assert itab.rowCount() == 5


@pytest.mark.parametrize("method,contact_point", [
["gradient_zero_crossing", 1895],
["fit_constant_line", 1919],
Expand Down

0 comments on commit 3e4d092

Please sign in to comment.