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
14 changes: 10 additions & 4 deletions RATapi/inputs.py
Original file line number Diff line number Diff line change
Expand Up @@ -193,10 +193,16 @@ def make_problem(project: RATapi.Project) -> ProblemDefinition:
# Get details of defined layers
layer_details = []
for layer in project.layers:
layer_params = [
project.parameters.index(getattr(layer, attribute), True)
for attribute in list(RATapi.models.Layer.model_fields.keys())[1:-2]
]
if project.absorption:
layer_params = [
project.parameters.index(getattr(layer, attribute), True)
for attribute in list(RATapi.models.AbsorptionLayer.model_fields.keys())[1:-2]
]
else:
layer_params = [
project.parameters.index(getattr(layer, attribute), True)
for attribute in list(RATapi.models.Layer.model_fields.keys())[1:-2]
]
layer_params.append(project.parameters.index(layer.hydration, True) if layer.hydration else float("NaN"))
layer_params.append(hydrate_id[layer.hydrate_with])

Expand Down
16 changes: 15 additions & 1 deletion RATapi/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -516,7 +516,7 @@ class AbsorptionLayer(RATModel, populate_by_name=True):
name: str = Field(default_factory=lambda: f"New Layer {next(layer_number)}", min_length=1)
thickness: str
SLD_real: str = Field(validation_alias="SLD")
SLD_imaginary: str = ""
SLD_imaginary: str
roughness: str
hydration: str = ""
hydrate_with: Hydration = Hydration.BulkOut
Expand Down Expand Up @@ -557,6 +557,20 @@ class Parameter(RATModel):

show_priors: bool = False

def model_post_init(self, __context: Any) -> None:
"""Apply parameter value to limits if they are not set."""
if "value" in self.model_fields_set:
if self.value > 0.0:
if "max" not in self.model_fields_set:
self.max = self.value
if "min" not in self.model_fields_set:
self.min = self.value
elif self.value < 0.0:
if "min" not in self.model_fields_set:
self.min = self.value
if "max" not in self.model_fields_set:
self.max = self.value

@model_validator(mode="after")
def check_min_max(self) -> "Parameter":
"""Ensure the maximum value of a parameter is greater than the minimum."""
Expand Down
4 changes: 3 additions & 1 deletion RATapi/project.py
Original file line number Diff line number Diff line change
Expand Up @@ -529,7 +529,9 @@ def set_absorption(self) -> "Project":
handle = self.layers._class_handle.__name__
if self.absorption and handle == "Layer":
for layer in self.layers:
layer_list.append(RATapi.models.AbsorptionLayer(**layer.model_dump()))
layer_params = layer.model_dump()
layer_params["SLD_imaginary"] = ""
layer_list.append(RATapi.models.AbsorptionLayer(**layer_params))
self.layers.data = layer_list
self.layers._class_handle = RATapi.models.AbsorptionLayer
elif not self.absorption and handle == "AbsorptionLayer":
Expand Down
1 change: 0 additions & 1 deletion RATapi/utils/enums.py
Original file line number Diff line number Diff line change
Expand Up @@ -157,7 +157,6 @@ class Languages(RATEnum):
class Hydration(RATEnum):
"""Options for the 'hydrate with' parameter of a Layer."""

None_ = "none"
BulkIn = "bulk in"
BulkOut = "bulk out"

Expand Down
1,001 changes: 1,001 additions & 0 deletions tests/test_data/ORSO_data/test_0.dat

Large diffs are not rendered by default.

1,998 changes: 1,998 additions & 0 deletions tests/test_data/ORSO_data/test_1.dat

Large diffs are not rendered by default.

1,001 changes: 1,001 additions & 0 deletions tests/test_data/ORSO_data/test_2.dat

Large diffs are not rendered by default.

1,001 changes: 1,001 additions & 0 deletions tests/test_data/ORSO_data/test_3.dat

Large diffs are not rendered by default.

Loading