Skip to content

Commit 541fe76

Browse files
committed
Adds orso script
1 parent 37b0478 commit 541fe76

File tree

1 file changed

+181
-0
lines changed

1 file changed

+181
-0
lines changed
Lines changed: 181 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,181 @@
1+
import pathlib
2+
3+
import numpy as np
4+
5+
import RATapi as RAT
6+
from RATapi.utils.enums import BackgroundActions
7+
8+
DATA_PATH = pathlib.Path(__file__).parents[0] / "ORSO_data"
9+
sld_values = np.loadtxt(DATA_PATH / "test_3_sld.dat")
10+
11+
12+
def make_orso_project():
13+
"""Set up a project with all the ORSO validation data included."""
14+
orso_project = RAT.Project(absorption=True)
15+
16+
orso_project.parameters.set_fields("Substrate Roughness", min=0.0)
17+
orso_project.background_parameters.set_fields(0, min=0.0, value=0.0)
18+
orso_project.resolution_parameters.set_fields(0, min=0.0, value=0.0)
19+
orso_project.scalefactors.set_fields(0, max=1.0, value=1.0)
20+
21+
orso_project.bulk_in.extend(
22+
[
23+
RAT.models.Parameter(name="Bulk In 0", value=2.07e-6),
24+
RAT.models.Parameter(name="Bulk In 1", value=0.0),
25+
RAT.models.Parameter(name="Bulk In 2", value=0.0),
26+
RAT.models.Parameter(name="Bulk In 3", value=0.0),
27+
RAT.models.Parameter(name="Bulk In 6", value=2.07e-6),
28+
RAT.models.Parameter(name="Bulk In 7", value=0.0),
29+
]
30+
)
31+
32+
orso_project.bulk_out.extend(
33+
[
34+
RAT.models.Parameter(name="Bulk Out 0", value=6.0e-6),
35+
RAT.models.Parameter(name="Bulk Out 1", value=2.0704e-6),
36+
RAT.models.Parameter(name="Bulk Out 2", value=6.36e-6),
37+
RAT.models.Parameter(name="Bulk Out 3", value=6.36e-6),
38+
RAT.models.Parameter(name="Bulk Out 6", value=6.36e-6),
39+
RAT.models.Parameter(name="Bulk Out 7", value=6.36e-6),
40+
]
41+
)
42+
43+
orso_project.data.extend(
44+
[
45+
RAT.models.Data(name="Data 0", data=np.loadtxt(DATA_PATH / "test_0.dat")),
46+
RAT.models.Data(name="Data 1", data=np.loadtxt(DATA_PATH / "test_1.dat")),
47+
RAT.models.Data(name="Data 2", data=np.loadtxt(DATA_PATH / "test_2.dat")),
48+
RAT.models.Data(name="Data 3", data=np.loadtxt(DATA_PATH / "test_3.dat")),
49+
RAT.models.Data(name="Data 6", data=np.loadtxt(DATA_PATH / "test_6.dat")),
50+
RAT.models.Data(name="Data 7", data=np.loadtxt(DATA_PATH / "test_7.dat")),
51+
]
52+
)
53+
54+
orso_project.contrasts.append(
55+
name="ORSO Contrast",
56+
background="Background 1",
57+
background_action=BackgroundActions.Add,
58+
scalefactor="Scalefactor 1",
59+
resolution="Resolution 1",
60+
resample=False,
61+
)
62+
63+
# Now set up parameters and layers for each test
64+
65+
# Test 0
66+
orso_project.parameters.append(name="Test 0 Layer 1 Thickness", value=100.0)
67+
orso_project.parameters.append(name="Test 0 Layer 1 SLD real", value=3.45e-6)
68+
orso_project.parameters.append(name="Test 0 Layer 1 SLD imaginary", value=1.0e-7)
69+
orso_project.parameters.append(name="Test 0 Layer 1 Roughness", value=3.0)
70+
71+
orso_project.layers.append(
72+
name="Test 0 Layer 1",
73+
thickness="Test 0 Layer 1 Thickness",
74+
SLD_real="Test 0 Layer 1 SLD real",
75+
SLD_imaginary="Test 0 Layer 1 SLD imaginary",
76+
roughness="Test 0 Layer 1 Roughness",
77+
)
78+
79+
orso_project.parameters.append(name="Test 0 Layer 2 Thickness", value=200.0)
80+
orso_project.parameters.append(name="Test 0 Layer 2 SLD real", value=5.0e-6)
81+
orso_project.parameters.append(name="Test 0 Layer 2 SLD imaginary", value=1.0e-8)
82+
orso_project.parameters.append(name="Test 0 Layer 2 Roughness", value=1.0)
83+
84+
orso_project.layers.append(
85+
name="Test 0 Layer 2",
86+
thickness="Test 0 Layer 2 Thickness",
87+
SLD_real="Test 0 Layer 2 SLD real",
88+
SLD_imaginary="Test 0 Layer 2 SLD imaginary",
89+
roughness="Test 0 Layer 2 Roughness",
90+
)
91+
92+
# Test 1
93+
orso_project.parameters.append(name="Test 1 Layer 1 Thickness", value=30.0)
94+
orso_project.parameters.append(name="Test 1 Layer 1 SLD real", value=-1.9493e-6)
95+
orso_project.parameters.append(name="Test 1 Layer 1 SLD imaginary", value=0.0)
96+
orso_project.parameters.append(name="Test 1 Layer 1 Roughness", value=0.0)
97+
98+
orso_project.layers.append(
99+
name="Test 1 Layer 1",
100+
thickness="Test 1 Layer 1 Thickness",
101+
SLD_real="Test 1 Layer 1 SLD real",
102+
SLD_imaginary="Test 1 Layer 1 SLD imaginary",
103+
roughness="Test 1 Layer 1 Roughness",
104+
)
105+
106+
orso_project.parameters.append(name="Test 1 Layer 2 Thickness", value=70.0)
107+
orso_project.parameters.append(name="Test 1 Layer 2 SLD real", value=9.4245e-6)
108+
orso_project.parameters.append(name="Test 1 Layer 2 SLD imaginary", value=0.0)
109+
orso_project.parameters.append(name="Test 1 Layer 2 Roughness", value=0.0)
110+
111+
orso_project.layers.append(
112+
name="Test 1 Layer 2",
113+
thickness="Test 1 Layer 2 Thickness",
114+
SLD_real="Test 1 Layer 2 SLD real",
115+
SLD_imaginary="Test 1 Layer 2 SLD imaginary",
116+
roughness="Test 1 Layer 2 Roughness",
117+
)
118+
119+
# Test 2
120+
orso_project.parameters.append(name="Test 2 Layer 1 Thickness", value=0.0)
121+
orso_project.parameters.append(name="Test 2 Layer 1 SLD real", value=0.0)
122+
orso_project.parameters.append(name="Test 2 Layer 1 SLD imaginary", value=0.0)
123+
orso_project.parameters.append(name="Test 2 Layer 1 Roughness", value=0.0)
124+
125+
orso_project.layers.append(
126+
name="Test 2 Layer 1",
127+
thickness="Test 2 Layer 1 Thickness",
128+
SLD_real="Test 2 Layer 1 SLD real",
129+
SLD_imaginary="Test 2 Layer 1 SLD imaginary",
130+
roughness="Test 2 Layer 1 Roughness",
131+
)
132+
133+
# Test 3
134+
orso_project.parameters.append(name="Test 3 Thickness", value=0.025)
135+
orso_project.parameters.append(name="Test 3 SLD imaginary", value=0.0)
136+
orso_project.parameters.append(name="Test 3 Roughness", value=0.0)
137+
138+
for i, sld in enumerate(sld_values):
139+
orso_project.parameters.append(name=f"Test 3 Layer {i} SLD real", value=sld)
140+
orso_project.layers.append(
141+
name=f"Test 3 Layer {i}",
142+
thickness="Test 3 Thickness",
143+
SLD_real=f"Test 3 Layer {i} SLD real",
144+
SLD_imaginary="Test 3 SLD imaginary",
145+
roughness="Test 3 Roughness",
146+
)
147+
148+
# Test 6
149+
orso_project.parameters.append(name="Test 6 Layer 1 Thickness", value=1200.0)
150+
orso_project.parameters.append(name="Test 6 Layer 1 SLD real", value=4.66e-6)
151+
orso_project.parameters.append(name="Test 6 Layer 1 SLD imaginary", value=1.6e-8)
152+
orso_project.parameters.append(name="Test 6 Layer 1 Roughness", value=10.0)
153+
154+
orso_project.layers.append(
155+
name="Test 6 Layer 1",
156+
thickness="Test 6 Layer 1 Thickness",
157+
SLD_real="Test 6 Layer 1 SLD real",
158+
SLD_imaginary="Test 6 Layer 1 SLD imaginary",
159+
roughness="Test 6 Layer 1 Roughness",
160+
)
161+
162+
# Test 7
163+
orso_project.parameters.append(name="Test 7 Layer 1 Thickness", value=1200.0)
164+
orso_project.parameters.append(name="Test 7 Layer 1 SLD real", value=4.66e-6)
165+
orso_project.parameters.append(name="Test 7 Layer 1 SLD imaginary", value=1.6e-8)
166+
orso_project.parameters.append(name="Test 7 Layer 1 Roughness", value=10.0)
167+
168+
orso_project.layers.append(
169+
name="Test 7 Layer 1",
170+
thickness="Test 7 Layer 1 Thickness",
171+
SLD_real="Test 7 Layer 1 SLD real",
172+
SLD_imaginary="Test 7 Layer 1 SLD imaginary",
173+
roughness="Test 7 Layer 1 Roughness",
174+
)
175+
176+
return orso_project
177+
178+
179+
if __name__ == "__main__":
180+
orso_project = make_orso_project()
181+
orso_project.save(pathlib.Path(__file__).parents[0] / "orso_validation.json")

0 commit comments

Comments
 (0)