Skip to content

Commit 700f6b7

Browse files
authored
Adds ORSO validation tests (#155)
* Adds ORSO validation tests * Addresses review comments * Adds orso script
1 parent 051b4ba commit 700f6b7

File tree

18 files changed

+8662
-27
lines changed

18 files changed

+8662
-27
lines changed

RATapi/inputs.py

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -193,10 +193,16 @@ def make_problem(project: RATapi.Project) -> ProblemDefinition:
193193
# Get details of defined layers
194194
layer_details = []
195195
for layer in project.layers:
196-
layer_params = [
197-
project.parameters.index(getattr(layer, attribute), True)
198-
for attribute in list(RATapi.models.Layer.model_fields.keys())[1:-2]
199-
]
196+
if project.absorption:
197+
layer_params = [
198+
project.parameters.index(getattr(layer, attribute), True)
199+
for attribute in list(RATapi.models.AbsorptionLayer.model_fields.keys())[1:-2]
200+
]
201+
else:
202+
layer_params = [
203+
project.parameters.index(getattr(layer, attribute), True)
204+
for attribute in list(RATapi.models.Layer.model_fields.keys())[1:-2]
205+
]
200206
layer_params.append(project.parameters.index(layer.hydration, True) if layer.hydration else float("NaN"))
201207
layer_params.append(hydrate_id[layer.hydrate_with])
202208

RATapi/models.py

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -516,7 +516,7 @@ class AbsorptionLayer(RATModel, populate_by_name=True):
516516
name: str = Field(default_factory=lambda: f"New Layer {next(layer_number)}", min_length=1)
517517
thickness: str
518518
SLD_real: str = Field(validation_alias="SLD")
519-
SLD_imaginary: str = ""
519+
SLD_imaginary: str
520520
roughness: str
521521
hydration: str = ""
522522
hydrate_with: Hydration = Hydration.BulkOut
@@ -557,6 +557,20 @@ class Parameter(RATModel):
557557

558558
show_priors: bool = False
559559

560+
def model_post_init(self, __context: Any) -> None:
561+
"""Apply parameter value to limits if they are not set."""
562+
if "value" in self.model_fields_set:
563+
if self.value > 0.0:
564+
if "max" not in self.model_fields_set:
565+
self.max = self.value
566+
if "min" not in self.model_fields_set:
567+
self.min = self.value
568+
elif self.value < 0.0:
569+
if "min" not in self.model_fields_set:
570+
self.min = self.value
571+
if "max" not in self.model_fields_set:
572+
self.max = self.value
573+
560574
@model_validator(mode="after")
561575
def check_min_max(self) -> "Parameter":
562576
"""Ensure the maximum value of a parameter is greater than the minimum."""

RATapi/project.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -529,7 +529,9 @@ def set_absorption(self) -> "Project":
529529
handle = self.layers._class_handle.__name__
530530
if self.absorption and handle == "Layer":
531531
for layer in self.layers:
532-
layer_list.append(RATapi.models.AbsorptionLayer(**layer.model_dump()))
532+
layer_params = layer.model_dump()
533+
layer_params["SLD_imaginary"] = ""
534+
layer_list.append(RATapi.models.AbsorptionLayer(**layer_params))
533535
self.layers.data = layer_list
534536
self.layers._class_handle = RATapi.models.AbsorptionLayer
535537
elif not self.absorption and handle == "AbsorptionLayer":

RATapi/utils/enums.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -157,7 +157,6 @@ class Languages(RATEnum):
157157
class Hydration(RATEnum):
158158
"""Options for the 'hydrate with' parameter of a Layer."""
159159

160-
None_ = "none"
161160
BulkIn = "bulk in"
162161
BulkOut = "bulk out"
163162

tests/test_data/ORSO_data/test_0.dat

Lines changed: 1001 additions & 0 deletions
Large diffs are not rendered by default.

tests/test_data/ORSO_data/test_1.dat

Lines changed: 1998 additions & 0 deletions
Large diffs are not rendered by default.

tests/test_data/ORSO_data/test_2.dat

Lines changed: 1001 additions & 0 deletions
Large diffs are not rendered by default.

tests/test_data/ORSO_data/test_3.dat

Lines changed: 1001 additions & 0 deletions
Large diffs are not rendered by default.

0 commit comments

Comments
 (0)