|
| 1 | +import numpy as np |
| 2 | + |
| 3 | +import RATapi as RAT |
| 4 | + |
| 5 | + |
| 6 | +def two_contrast_example(): |
| 7 | + # Two contrast example for the user guide |
| 8 | + problem = RAT.Project(name="DSPC monolayers") |
| 9 | + parameters = [ |
| 10 | + RAT.models.Parameter(name="Tails Thickness", min=10, value=20, max=30, fit=True), |
| 11 | + RAT.models.Parameter(name="Heads Thickness", min=3, value=11, max=16, fit=True), |
| 12 | + RAT.models.Parameter(name="Tails Roughness", min=2, value=5, max=9, fit=True), |
| 13 | + RAT.models.Parameter(name="Heads Roughness", min=2, value=5, max=9, fit=True), |
| 14 | + RAT.models.Parameter(name="Deuterated Tails SLD", min=4e-6, value=6e-6, max=2e-5, fit=True), |
| 15 | + RAT.models.Parameter(name="Hydrogenated Tails SLD", min=-0.6e-6, value=-0.4e-6, max=0, fit=True), |
| 16 | + RAT.models.Parameter(name="Deuterated Heads SLD", min=1e-6, value=3e-6, max=8e-6, fit=True), |
| 17 | + RAT.models.Parameter(name="Hydrogenated Heads SLD", min=0.1e-6, value=1.4e-6, max=3e-6, fit=True), |
| 18 | + RAT.models.Parameter(name="Heads Hydration", min=0, value=0.3, max=0.5, fit=True), |
| 19 | + ] |
| 20 | + |
| 21 | + problem.parameters.extend(parameters) |
| 22 | + H_Heads = RAT.models.Layer( |
| 23 | + name="Hydrogenated Heads", |
| 24 | + thickness="Heads Thickness", |
| 25 | + SLD="Hydrogenated Heads SLD", |
| 26 | + roughness="Heads Roughness", |
| 27 | + hydration="Heads Hydration", |
| 28 | + hydrate_with="bulk out", |
| 29 | + ) |
| 30 | + |
| 31 | + D_Heads = RAT.models.Layer( |
| 32 | + name="Deuterated Heads", |
| 33 | + thickness="Heads Thickness", |
| 34 | + SLD="Deuterated Heads SLD", |
| 35 | + roughness="Heads Roughness", |
| 36 | + hydration="Heads Hydration", |
| 37 | + hydrate_with="bulk out", |
| 38 | + ) |
| 39 | + |
| 40 | + D_Tails = RAT.models.Layer( |
| 41 | + name="Deuterated Tails", thickness="Tails Thickness", SLD="Deuterated Tails SLD", roughness="Tails Roughness" |
| 42 | + ) |
| 43 | + |
| 44 | + H_Tails = RAT.models.Layer( |
| 45 | + name="Hydrogenated Tails", |
| 46 | + thickness="Tails Thickness", |
| 47 | + SLD="Hydrogenated Tails SLD", |
| 48 | + roughness="Tails Roughness", |
| 49 | + ) |
| 50 | + |
| 51 | + problem.layers.extend([H_Heads, D_Heads, H_Tails, D_Tails]) |
| 52 | + |
| 53 | + problem.background_parameters.set_fields(0, name="Backs Value ACMW") |
| 54 | + problem.background_parameters.set_fields(0, value=5.5e-6) |
| 55 | + problem.background_parameters.append(name="Backs Value D2O", min=1e-8, value=2.8e-6, max=1e-5) |
| 56 | + |
| 57 | + problem.backgrounds.append(name="Background D2O", type="constant", value_1="Backs Value D2O") |
| 58 | + problem.backgrounds.set_fields(0, name="Background ACMW", value_1="Backs Value ACMW") |
| 59 | + |
| 60 | + problem.bulk_out.append(name="SLD ACMW", min=-0.6e-6, value=-0.56e-6, max=-0.3e-6, fit=True) |
| 61 | + |
| 62 | + d13acmw20 = np.array( |
| 63 | + [ |
| 64 | + [5.1793e-02, 1.8087e-05, 7.9683e-07], |
| 65 | + [5.4383e-02, 1.4582e-05, 6.3691e-07], |
| 66 | + [5.7102e-02, 1.3621e-05, 5.5407e-07], |
| 67 | + [5.9957e-02, 1.2409e-05, 4.8014e-07], |
| 68 | + [6.2955e-02, 1.0992e-05, 4.1824e-07], |
| 69 | + [6.6103e-02, 1.0619e-05, 3.7541e-07], |
| 70 | + [6.9408e-02, 1.0162e-05, 3.4945e-07], |
| 71 | + [7.2878e-02, 1.0716e-05, 3.3763e-07], |
| 72 | + [7.6522e-02, 8.3468e-06, 2.8040e-07], |
| 73 | + [8.0348e-02, 7.5250e-06, 2.5702e-07], |
| 74 | + [8.4365e-02, 6.4395e-06, 2.2528e-07], |
| 75 | + [8.8584e-02, 6.0544e-06, 2.0545e-07], |
| 76 | + [9.3013e-02, 5.9517e-06, 1.9417e-07], |
| 77 | + [9.7664e-02, 5.6433e-06, 1.8108e-07], |
| 78 | + [1.0255e-01, 4.8172e-06, 1.6076e-07], |
| 79 | + [1.0767e-01, 4.8066e-06, 1.5520e-07], |
| 80 | + [1.1306e-01, 4.1559e-06, 1.4115e-07], |
| 81 | + [1.1871e-01, 4.1418e-06, 1.3926e-07], |
| 82 | + [1.2465e-01, 3.4580e-06, 1.2273e-07], |
| 83 | + [1.3088e-01, 3.2376e-06, 1.1791e-07], |
| 84 | + [1.3742e-01, 3.0976e-06, 1.1948e-07], |
| 85 | + [1.4429e-01, 2.7478e-06, 1.1518e-07], |
| 86 | + [1.5151e-01, 2.5492e-06, 1.1573e-07], |
| 87 | + [1.5908e-01, 2.7500e-06, 1.2812e-07], |
| 88 | + [1.6704e-01, 2.1813e-06, 2.0450e-07], |
| 89 | + [1.7539e-01, 1.8609e-06, 5.4900e-07], |
| 90 | + [1.8416e-01, 1.9405e-06, 1.5660e-07], |
| 91 | + [1.9337e-01, 1.7421e-06, 2.3280e-07], |
| 92 | + [2.0304e-01, 1.8050e-06, 3.9820e-07], |
| 93 | + [2.1319e-01, 1.5801e-06, 1.4110e-07], |
| 94 | + [2.2385e-01, 1.6724e-06, 7.7900e-08], |
| 95 | + [2.3504e-01, 1.4150e-06, 4.0820e-07], |
| 96 | + [2.4679e-01, 1.4340e-06, 5.3180e-07], |
| 97 | + [2.5913e-01, 1.3102e-06, 2.6000e-07], |
| 98 | + [2.7209e-01, 1.3702e-06, 2.8540e-07], |
| 99 | + [2.8569e-01, 1.2468e-06, 2.3230e-07], |
| 100 | + [2.9998e-01, 1.2956e-06, 5.3240e-07], |
| 101 | + [3.1497e-01, 1.2947e-06, 3.9940e-07], |
| 102 | + [3.3072e-01, 1.2488e-06, 2.1390e-07], |
| 103 | + [3.4726e-01, 1.4620e-06, 3.3640e-07], |
| 104 | + [3.6462e-01, 1.3056e-06, 2.1600e-07], |
| 105 | + [3.8285e-01, 1.4553e-06, 2.3170e-07], |
| 106 | + [4.0200e-01, 1.1579e-06, 2.6740e-07], |
| 107 | + [4.2210e-01, 1.1753e-06, 3.0940e-07], |
| 108 | + [4.4320e-01, 1.0066e-06, 5.2040e-07], |
| 109 | + [4.6536e-01, 1.1043e-06, 3.1870e-07], |
| 110 | + [4.8863e-01, 1.2969e-06, 4.1670e-07], |
| 111 | + [5.1306e-01, 1.2495e-06, 2.0890e-07], |
| 112 | + [5.3871e-01, 1.3898e-06, 4.7560e-07], |
| 113 | + [5.6565e-01, 1.1225e-06, 3.0470e-07], |
| 114 | + [5.8877e-01, 8.3346e-07, 3.8944e-07], |
| 115 | + ] |
| 116 | + ) |
| 117 | + |
| 118 | + d70d2o20 = np.array( |
| 119 | + [ |
| 120 | + [5.1793e-02, 1.4943e-04, 3.2517e-06], |
| 121 | + [5.4383e-02, 1.1882e-04, 2.5846e-06], |
| 122 | + [5.7102e-02, 9.2164e-05, 2.0507e-06], |
| 123 | + [5.9957e-02, 7.7813e-05, 1.7070e-06], |
| 124 | + [6.2955e-02, 6.1143e-05, 1.3983e-06], |
| 125 | + [6.6103e-02, 4.8033e-05, 1.1343e-06], |
| 126 | + [6.9408e-02, 4.1379e-05, 1.0006e-06], |
| 127 | + [7.2878e-02, 3.5090e-05, 8.6919e-07], |
| 128 | + [7.6522e-02, 3.0350e-05, 7.5890e-07], |
| 129 | + [8.0348e-02, 2.4115e-05, 6.5226e-07], |
| 130 | + [8.4365e-02, 2.0755e-05, 5.7445e-07], |
| 131 | + [8.8584e-02, 1.7500e-05, 4.9617e-07], |
| 132 | + [9.3013e-02, 1.5011e-05, 4.3754e-07], |
| 133 | + [9.7664e-02, 1.3632e-05, 3.9907e-07], |
| 134 | + [1.0255e-01, 1.2997e-05, 3.7469e-07], |
| 135 | + [1.0767e-01, 1.1656e-05, 3.4282e-07], |
| 136 | + [1.1306e-01, 1.0820e-05, 3.2299e-07], |
| 137 | + [1.1871e-01, 9.5831e-06, 3.0088e-07], |
| 138 | + [1.2465e-01, 8.9996e-06, 2.8102e-07], |
| 139 | + [1.3088e-01, 8.6498e-06, 2.7363e-07], |
| 140 | + [1.3742e-01, 7.9412e-06, 2.7158e-07], |
| 141 | + [1.4429e-01, 7.4042e-06, 2.6829e-07], |
| 142 | + [1.5151e-01, 6.8321e-06, 2.6877e-07], |
| 143 | + [1.5908e-01, 5.6809e-06, 2.6232e-07], |
| 144 | + [1.6704e-01, 5.6646e-06, 2.8607e-07], |
| 145 | + [1.7539e-01, 4.7762e-06, 2.7767e-07], |
| 146 | + [1.8416e-01, 4.1971e-06, 2.7353e-07], |
| 147 | + [1.9337e-01, 4.1815e-06, 2.9140e-07], |
| 148 | + [2.0304e-01, 3.2725e-06, 2.3160e-07], |
| 149 | + [2.1319e-01, 2.3244e-06, 4.2270e-07], |
| 150 | + [2.2385e-01, 2.2892e-06, 1.4970e-07], |
| 151 | + [2.3504e-01, 1.9198e-06, 8.1460e-07], |
| 152 | + [2.4679e-01, 1.4828e-06, 1.0840e-07], |
| 153 | + [2.5913e-01, 1.1450e-06, 4.7440e-07], |
| 154 | + [2.7209e-01, 1.3047e-06, 1.8840e-07], |
| 155 | + [2.8569e-01, 9.6081e-07, 3.9385e-07], |
| 156 | + [2.9998e-01, 8.2280e-07, 2.3955e-07], |
| 157 | + [3.1497e-01, 6.3219e-07, 3.5324e-07], |
| 158 | + [3.3072e-01, 6.1254e-07, 5.0846e-07], |
| 159 | + [3.4726e-01, 7.4092e-07, 2.2312e-07], |
| 160 | + [3.6462e-01, 6.3584e-07, 4.2866e-07], |
| 161 | + [3.8285e-01, 7.7287e-07, 2.9493e-07], |
| 162 | + [4.0200e-01, 9.4637e-07, 2.3347e-07], |
| 163 | + [4.2210e-01, 7.0576e-07, 3.3494e-07], |
| 164 | + [4.4320e-01, 7.8969e-07, 2.3371e-07], |
| 165 | + [4.6536e-01, 5.8374e-07, 3.2624e-07], |
| 166 | + [4.8863e-01, 5.6711e-07, 6.0419e-07], |
| 167 | + [5.1306e-01, 4.7782e-07, 3.4822e-07], |
| 168 | + [5.3871e-01, 6.3813e-07, 4.3279e-07], |
| 169 | + [5.6565e-01, 4.6186e-07, 1.8863e-07], |
| 170 | + [5.8877e-01, 5.6129e-07, 4.3960e-07], |
| 171 | + ] |
| 172 | + ) |
| 173 | + |
| 174 | + problem.data.append(name="H-tail / D-head / ACMW", data=d13acmw20) |
| 175 | + problem.data.append(name="D-tail / H-head / D2O", data=d70d2o20) |
| 176 | + |
| 177 | + problem.contrasts.append( |
| 178 | + name="D-tail/H-Head/D2O", |
| 179 | + background="Background D2O", |
| 180 | + resolution="Resolution 1", |
| 181 | + scalefactor="Scalefactor 1", |
| 182 | + bulk_out="SLD D2O", |
| 183 | + bulk_in="SLD Air", |
| 184 | + data="D-tail / H-head / D2O", |
| 185 | + ) |
| 186 | + |
| 187 | + problem.contrasts.append( |
| 188 | + name="H-tail/D-Head/ACMW", |
| 189 | + background="Background ACMW", |
| 190 | + resolution="Resolution 1", |
| 191 | + scalefactor="Scalefactor 1", |
| 192 | + bulk_out="SLD ACMW", |
| 193 | + bulk_in="SLD Air", |
| 194 | + data="D-tail / H-head / D2O", |
| 195 | + ) |
| 196 | + |
| 197 | + problem.contrasts.set_fields(0, model=["Deuterated Tails", "Hydrogenated Heads"]) |
| 198 | + problem.contrasts.set_fields(1, model=["Hydrogenated Tails", "Deuterated Heads"]) |
| 199 | + |
| 200 | + problem.background_parameters.set_fields(0, fit=True) |
| 201 | + problem.background_parameters.set_fields(1, fit=True) |
| 202 | + problem.scalefactors.set_fields(0, fit=True) |
| 203 | + problem.bulk_out.set_fields(0, fit=True) |
| 204 | + |
| 205 | + return problem |
| 206 | + |
| 207 | + |
| 208 | +if __name__ == "__main__": |
| 209 | + problem = two_contrast_example() |
| 210 | + controls = RAT.Controls() |
| 211 | + problem, results = RAT.run(problem, controls) |
| 212 | + |
| 213 | + RAT.plotting.plot_ref_sld(problem, results, True) |
0 commit comments