Skip to content
Merged
Show file tree
Hide file tree
Changes from all 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
8 changes: 5 additions & 3 deletions src/easydynamics/sample_model/components/mixins.py
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,8 @@ def _create_area_parameter(
stacklevel=3,
)
else:
area.min = minimum_area
if area.min < minimum_area:
area.min = minimum_area

return area

Expand Down Expand Up @@ -130,7 +131,7 @@ def _create_center_parameter(
raise ValueError('center must be None, a finite number or a Parameter')

center = Parameter(name=name + ' center', value=float(center), unit=unit)
if enforce_minimum_center:
if enforce_minimum_center and center.min < DHO_MINIMUM_CENTER:
center.min = DHO_MINIMUM_CENTER
return center

Expand Down Expand Up @@ -192,6 +193,7 @@ def _create_width_parameter(
raise ValueError(
f'The {param_name} of a {self.__class__.__name__} must be greater than zero.'
)
width.min = minimum_width
if width.min < minimum_width:
width.min = minimum_width

return width
14 changes: 13 additions & 1 deletion tests/unit/easydynamics/sample_model/components/test_gaussian.py
Original file line number Diff line number Diff line change
Expand Up @@ -197,20 +197,32 @@ def test_convert_unit(self, gaussian: Gaussian):
assert gaussian.width.value == pytest.approx(0.6 * 1e3)

def test_copy(self, gaussian: Gaussian):
# WHEN THEN
# WHEN
gaussian.area.min = 0.5
gaussian.width.min = 0.1
gaussian.area.fixed = True
gaussian.area.max = 5.0

# THEN
gaussian_copy = copy(gaussian)
# EXPECT
assert gaussian_copy is not gaussian
assert gaussian_copy.display_name == gaussian.display_name

assert gaussian_copy.area.value == gaussian.area.value
assert gaussian_copy.area.fixed == gaussian.area.fixed
assert gaussian_copy.area.min == gaussian.area.min
assert gaussian_copy.area.max == gaussian.area.max

assert gaussian_copy.center.value == gaussian.center.value
assert gaussian_copy.center.fixed == gaussian.center.fixed
assert gaussian_copy.center.min == gaussian.center.min
assert gaussian_copy.center.max == gaussian.center.max

assert gaussian_copy.width.value == gaussian.width.value
assert gaussian_copy.width.fixed == gaussian.width.fixed
assert gaussian_copy.width.min == gaussian.width.min
assert gaussian_copy.width.max == gaussian.width.max

assert gaussian_copy.unit == gaussian.unit

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -475,9 +475,17 @@ def test_from_dict(self, component_collection):
def test_copy(self, component_collection):
# WHEN
component_collection.temperature = 300
component_collection.components[0].area.min = 0.5
component_collection.components[0].area.fixed = True
component_collection.components[0].area.max = 5.0
component_collection.components[1].width.min = 0.1
component_collection.components[1].width.fixed = True
component_collection.components[1].width.max = 2.0

# THEN
model_copy = copy(component_collection)

# THEN: collection-level checks
# EXPECT collection-level checks
assert model_copy is not component_collection
assert model_copy.display_name == component_collection.display_name
assert len(model_copy.components) == len(component_collection.components)
Expand Down
Loading