Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Sc tests #21

Merged
merged 8 commits into from
Jan 10, 2025
Merged
Show file tree
Hide file tree
Changes from 5 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions src/hyspecppt/hppt/experiment_settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
DEFAULT_LATTICE = dict(a=1, b=1, c=1, alpha=90, beta=90, gamma=90, h=0, k=0, l=0)
DEFAULT_EXPERIMENT = dict(Ei=20, S2=30, alpha_p=0, plot_type=PLOT_TYPES[1])
DEFAULT_CROSSHAIR = dict(DeltaE=0, modQ=0)
MaxQ = 15

# invalid style
INVALID_QLINEEDIT = """
Expand Down
18 changes: 11 additions & 7 deletions src/hyspecppt/hppt/hppt_model.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
import numpy as np
from scipy.constants import e, hbar, m_n

from .experiment_settings import PLOT_TYPES
from .experiment_settings import DEFAULT_EXPERIMENT, PLOT_TYPES, MaxQ

logger = logging.getLogger("hyspecppt")

Expand Down Expand Up @@ -118,17 +118,21 @@ def set_crosshair(self, current_experiment_type: str, DeltaE: float = None, modQ
def get_crosshair(self) -> dict[str, float]:
"""Get the crosshair"""
if self.current_experiment_type == "single_crystal":
self.modQ = self.sc_parameters.calculate_modQ()
return dict(DeltaE=self.DeltaE, modQ=self.modQ)
modQ = self.sc_parameters.calculate_modQ()
if modQ < MaxQ:
self.modQ = modQ
return dict(DeltaE=self.DeltaE, modQ=modQ)
else:
return dict(DeltaE=self.DeltaE, modQ=self.modQ)


class HyspecPPTModel:
"""Main model"""

Ei: float = 0
S2: float = 0
alpha_p: float = 0
plot_type: str = ""
Ei: float = DEFAULT_EXPERIMENT["Ei"]
S2: float = DEFAULT_EXPERIMENT["S2"]
alpha_p: float = DEFAULT_EXPERIMENT["alpha_p"]
plot_type: str = DEFAULT_EXPERIMENT["plot_type"]
cp: CrosshairParameters
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

is the initialization of the other parameters: CrosshairParameters and SingleCrystalParameters from the experiment_settings happening in another PR?


def __init__(self):
Expand Down
8 changes: 8 additions & 0 deletions tests/hppt_model/test_HyspecPPTModel.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
import numpy as np # noqa: F401
Copy link
Collaborator

@mpatrou mpatrou Jan 9, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lets be consistent on the file names. so far the test filenames are small case separated by underscore.: e.g test_hyspecpptmodel.py


import hyspecppt.hppt.hppt_model as hppt_model # noqa: F401
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

better import what you need, for example:
from hyspecppt.hppt.hppt_model import HyspecPPTModel



def test_single_crystal_parameter_set_parameters():
"""Test SingleCrystalParameters set_parameters function"""
# saving for next story
99 changes: 99 additions & 0 deletions tests/hppt_model/test_single_crystal_model.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,99 @@
import numpy as np

import hyspecppt.hppt.hppt_model as hppt_model
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

same as above for import



def test_single_crystal_parameter_set_parameters():
"""Test SingleCrystalParameters set_parameters function"""
scp = hppt_model.SingleCrystalParameters()
sc_data = {"a": 1.0, "b": 1.0, "c": 1.0, "alpha": 90.0, "beta": 90, "gamma": 90, "h": 0, "k": 0, "l": 0}
scp.set_parameters(sc_data)

assert scp.a == 1.0
assert scp.b == 1.0
assert scp.c == 1.0
assert scp.alpha == 90.0
assert scp.beta == 90.0
assert scp.gamma == 90.0
assert scp.h == 0
assert scp.k == 0
assert scp.l == 0


def test_single_crystal_parameter_get_parameters():
"""Test SingleCrystalParameters get_parameters function"""
scp = hppt_model.SingleCrystalParameters()
sc_data = {"a": 1.0, "b": 1.0, "c": 1.0, "alpha": 90.0, "beta": 90, "gamma": 90, "h": 0, "k": 0, "l": 0}
scp.set_parameters(sc_data)

assert scp.get_parameters()["a"] == 1.0
assert scp.get_parameters()["b"] == 1.0
assert scp.get_parameters()["c"] == 1.0
assert scp.get_parameters()["alpha"] == 90.0
assert scp.get_parameters()["beta"] == 90.0
assert scp.get_parameters()["gamma"] == 90.0
assert scp.get_parameters()["h"] == 0
assert scp.get_parameters()["k"] == 0
assert scp.get_parameters()["l"] == 0


def test_single_crystal_parameter_calculate_modQ():
"""Test SingleCrystalParameters calculate_modQ function"""
scp = hppt_model.SingleCrystalParameters()
sc_data = {"a": 1.0, "b": 1.0, "c": 1.0, "alpha": 90.0, "beta": 90, "gamma": 90, "h": 0, "k": 0, "l": 0}
scp.set_parameters(sc_data)
assert scp.calculate_modQ() == 0.0

sc_data["h"] = 1
sc_data["k"] = 2
sc_data["l"] = 3
scp.set_parameters(sc_data)
assert np.isclose(scp.calculate_modQ(), 23.5095267)

sc_data["alpha"] = 60
sc_data["beta"] = 60
sc_data["gamma"] = 90
scp.set_parameters(sc_data)
assert np.isclose(scp.calculate_modQ(), 19.3660777)

sc_data["a"] = 10
sc_data["b"] = 10
sc_data["c"] = 15.12312
scp.set_parameters(sc_data)
assert np.isclose(scp.calculate_modQ(), 1.469240)


def test_cross_hair_parameters_set_crosshair():
"""Test Crosshair set_crosshair function"""
cp = hppt_model.CrosshairParameters()
current_experiment_type = "single_crystal"
DeltaE = 10.0
modQ = 1.23
cp.set_crosshair(current_experiment_type)
assert cp.current_experiment_type == "single_crystal"

cp.set_crosshair(current_experiment_type, DeltaE=DeltaE)
assert cp.DeltaE == 10.0

cp.set_crosshair(current_experiment_type, modQ=modQ)
assert cp.DeltaE == 10.0
assert cp.modQ == 1.23


def test_get_cross_hair_parameters_set_crosshair():
"""Test Crosshair get_crosshair function"""
cp = hppt_model.CrosshairParameters()
current_experiment_type = "single_crystal"
DeltaE = 10.0
modQ = 1.23

cp.set_crosshair(current_experiment_type, DeltaE=DeltaE, modQ=modQ)
cp.sc_parameters.set_parameters(
{"a": 1.0, "b": 1.0, "c": 1.0, "alpha": 90.0, "beta": 90, "gamma": 90, "h": 0, "k": 0, "l": 0}
)
assert cp.get_crosshair()["DeltaE"] == 10.0
assert cp.get_crosshair()["modQ"] == 0.0

cp.set_crosshair("powder", DeltaE=DeltaE, modQ=modQ)
assert cp.get_crosshair()["DeltaE"] == 10.0
assert cp.get_crosshair()["modQ"] == 1.23
Loading