dzs commited on
Commit
81e15fe
·
1 Parent(s): 8b1580d

initial upload

Browse files
Files changed (44) hide show
  1. .DS_Store +0 -0
  2. .gitattributes +1 -0
  3. Dockerfile +18 -0
  4. Kps_function/.DS_Store +0 -0
  5. Kps_function/Kps_model/coeffs.npz +3 -0
  6. Kps_function/Kps_model/meta.json +114 -0
  7. Kps_function/__pycache__/read_Kps_model.cpython-313.pyc +0 -0
  8. Kps_function/read_Kps_model.py +201 -0
  9. assets/style.css +8 -0
  10. data/.DS_Store +0 -0
  11. data/Kps-experiment.xlsx +3 -0
  12. data/Tissue_Diffusion_Data_v4.xlsx +3 -0
  13. data/__pycache__/functions.cpython-313.pyc +0 -0
  14. data/data-descriptors-mordred-numconfs51.xlsx +3 -0
  15. data/db-D-interp-37-clean.xlsx +3 -0
  16. data/db-D-interp-50-clean.xlsx +3 -0
  17. data/db-D-interp-allT-clean.xlsx +3 -0
  18. data/db-Kpt-corrected.xlsx +3 -0
  19. data/db-polymer-properties-and-categories.xlsx +3 -0
  20. data/extreme-solutes-universe.xlsx +3 -0
  21. data/functions.py +303 -0
  22. data/param_distribution_37.json +1 -0
  23. data/param_distribution_50.json +1 -0
  24. data/param_distribution_allT.json +0 -0
  25. data/polymer_names.tsv +54 -0
  26. data/polymer_names_noglasses.tsv +39 -0
  27. data/soluteData.xlsx +3 -0
  28. data/solvent-viscosity.xlsx +3 -0
  29. data/solventData.xlsx +3 -0
  30. data/vrentas-duda-params.xlsx +3 -0
  31. data/~$db-Kpt-corrected.xlsx +3 -0
  32. fast_bisect/.DS_Store +0 -0
  33. fast_bisect/README +6 -0
  34. fast_bisect/build/.DS_Store +0 -0
  35. fast_bisect/build/lib.macosx-11.1-arm64-cpython-313/fast_bisect.cpython-313-darwin.so +0 -0
  36. fast_bisect/build/temp.macosx-11.1-arm64-cpython-313/fast_bisect.o +0 -0
  37. fast_bisect/fast_bisect.c +0 -0
  38. fast_bisect/fast_bisect.cpython-313-darwin.so +0 -0
  39. fast_bisect/fast_bisect.py +7 -0
  40. fast_bisect/fast_bisect.pyx +28 -0
  41. fast_bisect/fast_bisect_example.py +16 -0
  42. main.py +823 -0
  43. requirements.txt +25 -0
  44. transportEqs.py +156 -0
.DS_Store ADDED
Binary file (6.15 kB). View file
 
.gitattributes CHANGED
@@ -33,3 +33,4 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
 
 
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
36
+ *.xlsx filter=lfs diff=lfs merge=lfs -text
Dockerfile ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Use Python base image
2
+ FROM python:3.12
3
+
4
+ # Set working directory
5
+ WORKDIR /app
6
+
7
+ # Copy current files into container
8
+ COPY . /app
9
+
10
+ # Install Flask
11
+ RUN pip install --no-cache-dir -r requirements.txt
12
+
13
+ # Expose default port
14
+ EXPOSE 7860
15
+
16
+ # Run with Gunicorn
17
+ CMD ["gunicorn", "-w", "4", "-b", "0.0.0.0:7860", "CHRIS:app"]
18
+
Kps_function/.DS_Store ADDED
Binary file (6.15 kB). View file
 
Kps_function/Kps_model/coeffs.npz ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:a6732a08b936cc768bafc6aa80883c6a85ae232ec101288d0383db616e5f476d
3
+ size 24413
Kps_function/Kps_model/meta.json ADDED
@@ -0,0 +1,114 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "features": [
3
+ "c",
4
+ "x",
5
+ "xy2",
6
+ "y_m",
7
+ "y2_m",
8
+ "y3_m"
9
+ ],
10
+ "taus": [
11
+ 0.01,
12
+ 0.02,
13
+ 0.03,
14
+ 0.04,
15
+ 0.05,
16
+ 0.060000000000000005,
17
+ 0.06999999999999999,
18
+ 0.08,
19
+ 0.09,
20
+ 0.09999999999999999,
21
+ 0.11,
22
+ 0.12,
23
+ 0.13,
24
+ 0.14,
25
+ 0.15000000000000002,
26
+ 0.16,
27
+ 0.17,
28
+ 0.18000000000000002,
29
+ 0.19,
30
+ 0.2,
31
+ 0.21000000000000002,
32
+ 0.22,
33
+ 0.23,
34
+ 0.24000000000000002,
35
+ 0.25,
36
+ 0.26,
37
+ 0.27,
38
+ 0.28,
39
+ 0.29000000000000004,
40
+ 0.3,
41
+ 0.31,
42
+ 0.32,
43
+ 0.33,
44
+ 0.34,
45
+ 0.35000000000000003,
46
+ 0.36000000000000004,
47
+ 0.37,
48
+ 0.38,
49
+ 0.39,
50
+ 0.4,
51
+ 0.41000000000000003,
52
+ 0.42000000000000004,
53
+ 0.43,
54
+ 0.44,
55
+ 0.45,
56
+ 0.46,
57
+ 0.47000000000000003,
58
+ 0.48000000000000004,
59
+ 0.49,
60
+ 0.5,
61
+ 0.51,
62
+ 0.52,
63
+ 0.53,
64
+ 0.54,
65
+ 0.55,
66
+ 0.56,
67
+ 0.5700000000000001,
68
+ 0.5800000000000001,
69
+ 0.59,
70
+ 0.6,
71
+ 0.61,
72
+ 0.62,
73
+ 0.63,
74
+ 0.64,
75
+ 0.65,
76
+ 0.66,
77
+ 0.67,
78
+ 0.68,
79
+ 0.6900000000000001,
80
+ 0.7000000000000001,
81
+ 0.7100000000000001,
82
+ 0.72,
83
+ 0.73,
84
+ 0.74,
85
+ 0.75,
86
+ 0.76,
87
+ 0.77,
88
+ 0.78,
89
+ 0.79,
90
+ 0.8,
91
+ 0.81,
92
+ 0.8200000000000001,
93
+ 0.8300000000000001,
94
+ 0.8400000000000001,
95
+ 0.85,
96
+ 0.86,
97
+ 0.87,
98
+ 0.88,
99
+ 0.89,
100
+ 0.9,
101
+ 0.91,
102
+ 0.92,
103
+ 0.93,
104
+ 0.9400000000000001,
105
+ 0.9500000000000001,
106
+ 0.9600000000000001,
107
+ 0.97,
108
+ 0.98,
109
+ 0.99
110
+ ],
111
+ "has_intercept": true,
112
+ "library": "statsmodels.QuantReg",
113
+ "notes": "Save preprocessing steps separately if any (scaling, transforms)."
114
+ }
Kps_function/__pycache__/read_Kps_model.cpython-313.pyc ADDED
Binary file (9.34 kB). View file
 
Kps_function/read_Kps_model.py ADDED
@@ -0,0 +1,201 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import json
2
+ import numpy as np
3
+ from pathlib import Path
4
+
5
+ class QuantileGridFromCoeffs:
6
+ def __init__(self, export_dir):
7
+ self.export_dir = Path(export_dir)
8
+ meta = json.loads((self.export_dir / "meta.json").read_text())
9
+ self.features = meta["features"]
10
+ self.taus = np.array(meta["taus"], dtype=float)
11
+ self.has_intercept = meta.get("has_intercept", False)
12
+
13
+ # load coefficients
14
+ coeffs = np.load(self.export_dir / "coeffs.npz")
15
+ # build a matrix shape (n_taus, n_coef)
16
+ coefs = []
17
+ for t in self.taus:
18
+ key = f"tau_{t}"
19
+ if key not in coeffs:
20
+ # try rounding formatting
21
+ found = [k for k in coeffs.files if k.startswith("tau_") and abs(float(k.split("_")[1]) - t) < 1e-12]
22
+ if not found:
23
+ raise KeyError(f"Coefficient for tau={t} not found in {coeffs.files}")
24
+ key = found[0]
25
+ coefs.append(coeffs[key])
26
+ self.coef_matrix = np.vstack(coefs) # shape (m_taus, n_coef)
27
+
28
+ def _create_polynomial_features(self, X):
29
+ """
30
+ Create polynomial features for interaction terms.
31
+
32
+ Parameters:
33
+ X (array): Array with columns [x, y]
34
+
35
+ Returns:
36
+ Design matrix with polynomial features
37
+ """
38
+ x = X[:, 0]
39
+ y = X[:, 1]
40
+
41
+ A = 2
42
+
43
+ # Create design matrix with polynomial features up to the specified degree
44
+ features = []
45
+
46
+ # Constant term (intercept)
47
+ if 'c' in self.features:
48
+ features.append(np.ones_like(x))
49
+ # Linear terms
50
+ if 'x' in self.features:
51
+ features.append(x)
52
+ if 'y' in self.features:
53
+ features.append(y)
54
+ if 'y_m' in self.features:
55
+ features.append(y-A)
56
+ if 'y_p' in self.features:
57
+ features.append(y+A)
58
+ # Interaction terms
59
+ if 'xy' in self.features:
60
+ features.append(x * y)
61
+ if 'xy_m' in self.features:
62
+ features.append(x * (y-A))
63
+ if 'xy_p' in self.features:
64
+ features.append(x * (y+A))
65
+ if 'xy2' in self.features:
66
+ features.append(x * y**2)
67
+ if 'xy2_m' in self.features:
68
+ features.append(x * (y-A)**2)
69
+ if 'xy2_p' in self.features:
70
+ features.append(x * (y+A)**2)
71
+ if 'x2y' in self.features:
72
+ features.append(x**2 * y)
73
+ if 'xy3' in self.features:
74
+ features.append(x * y**3)
75
+ if 'xy4' in self.features:
76
+ features.append(x * y**4)
77
+ if 'xy3_m' in self.features:
78
+ features.append(x * (y-A)**3)
79
+ if 'xy3_p' in self.features:
80
+ features.append(x * (y+A)**3)
81
+ if 'x3y' in self.features:
82
+ features.append(x**3 * y)
83
+ # Higher order terms
84
+ if 'x2' in self.features:
85
+ features.append(x**2)
86
+ if 'x3' in self.features:
87
+ features.append(x**3)
88
+ if 'y2' in self.features:
89
+ features.append(y**2)
90
+ if 'y3' in self.features:
91
+ features.append(y**3)
92
+ if 'y4' in self.features:
93
+ features.append(y**4)
94
+ if 'y2_m' in self.features:
95
+ features.append((y-A)**2)
96
+ if 'y3_m' in self.features:
97
+ features.append((y-A)**3)
98
+ if 'y4_m' in self.features:
99
+ features.append((y-A)**4)
100
+ if 'y2_p' in self.features:
101
+ features.append((y+A)**2)
102
+ if 'y3_p' in self.features:
103
+ features.append((y+A)**3)
104
+ if 'y4_p' in self.features:
105
+ features.append((y+A)**4)
106
+ return np.column_stack(features)
107
+
108
+ def predict_quantiles(self, X_new):
109
+ """
110
+ Return Q (n_points, m_taus) predicted quantiles.
111
+ """
112
+ X_new = np.asarray(X_new, dtype=float)
113
+ Xd = self._create_polynomial_features(X_new) # shape (n, p)
114
+ # matrix multiply: (m_taus, p) @ (p, n) -> (m_taus, n) then transpose
115
+ Q = (self.coef_matrix @ Xd.T).T
116
+ # optionally enforce monotonicity in tau
117
+ Q_sorted = np.sort(Q, axis=1)
118
+ return self.taus, Q_sorted
119
+
120
+ def predict_tau(self, X_new, tau_star):
121
+ taus, Q = self.predict_quantiles(X_new)
122
+ # vectorized interpolation (same approach as earlier)
123
+ # implement interpolation between nearest taus
124
+ import numpy as np
125
+ t0_idx = np.searchsorted(taus, tau_star, side='right') - 1
126
+ # for simplicity assume scalar tau_star
127
+ j = int(np.clip(t0_idx, 0, len(taus)-2))
128
+ t0, t1 = taus[j], taus[j+1]
129
+ q0, q1 = Q[:, j], Q[:, j+1]
130
+ w = (tau_star - t0) / (t1 - t0)
131
+ return q0 + w * (q1 - q0)
132
+
133
+ def sample(self, X_new, n_samples=1, rng=None):
134
+ """
135
+ Draw samples from the approximate conditional distribution at X_new
136
+ using inverse-CDF sampling based on the saved quantile grid.
137
+
138
+ Parameters
139
+ ----------
140
+ X_new : array-like, shape (n_points, 2)
141
+ New points [x, y] in your domain (e.g., LogP, PolarityIndex).
142
+ n_samples : int
143
+ Number of samples per point.
144
+ rng : None, int, or np.random.Generator
145
+ Random seed or Generator for reproducibility.
146
+
147
+ Returns
148
+ -------
149
+ samples : ndarray, shape (n_points, n_samples)
150
+ Samples drawn from the interpolated quantile function.
151
+ """
152
+ if n_samples < 1:
153
+ raise ValueError("n_samples must be >= 1")
154
+
155
+ # Setup RNG
156
+ if isinstance(rng, np.random.Generator):
157
+ gen = rng
158
+ else:
159
+ gen = np.random.default_rng(rng)
160
+
161
+ X_new = np.asarray(X_new, dtype=float)
162
+ if X_new.ndim != 2 or X_new.shape[1] != 2:
163
+ raise ValueError("X_new must be a 2D array with exactly two columns [x, y]")
164
+
165
+ # Get quantile grid predictions: Q has shape (n_points, n_taus)
166
+ taus, Q = self.predict_quantiles(X_new)
167
+ taus = np.asarray(taus, dtype=float)
168
+ Q = np.asarray(Q, dtype=float)
169
+
170
+ n_points, m = Q.shape
171
+ if m < 2:
172
+ raise RuntimeError("Need at least two taus to sample with interpolation.")
173
+
174
+ # Sample u in the supported tau range of the grid
175
+ u = gen.uniform(taus[0], taus[-1], size=(n_points, n_samples))
176
+
177
+ # For each u, find interval [taus[j], taus[j+1]]
178
+ j = np.searchsorted(taus, u, side="right") - 1
179
+ j = np.clip(j, 0, m - 2)
180
+
181
+ # Gather endpoints
182
+ t0 = taus[j]
183
+ t1 = taus[j + 1]
184
+
185
+ row_idx = np.arange(n_points)[:, None]
186
+ q0 = Q[row_idx, j]
187
+ q1 = Q[row_idx, j + 1]
188
+
189
+ # Linear interpolation
190
+ w = (u - t0) / (t1 - t0)
191
+ samples = q0 + w * (q1 - q0)
192
+
193
+ return samples
194
+
195
+ ## read saved model
196
+ #model = QuantileGridFromCoeffs(export_dir='Kps_model')
197
+ ## example points: [(LogP, Polarity_Index), ...]
198
+ #X_new = np.array([[2.34665198, 10.2], ])
199
+ ## sample the distribution at each X
200
+ #samples = model.sample(X_new, n_samples=50, rng=0)
201
+ #print(samples[0])
assets/style.css ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
 
1
+ input:disabled {
2
+ color: transparent !important;
3
+ }
4
+
5
+ /* Hide dropdown selected text */
6
+ .Select.is-disabled .Select-value-label {
7
+ color: transparent !important;
8
+ }
data/.DS_Store ADDED
Binary file (6.15 kB). View file
 
data/Kps-experiment.xlsx ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:ca08f5e7ab9a80b2eae454bebdc18c1770465f332664fd314002d4037ed28b38
3
+ size 95371
data/Tissue_Diffusion_Data_v4.xlsx ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:be437fe3d7667b1e1b20ebd3d31ca88aaa96cc1fa147f706a60176e8082a1f4f
3
+ size 124874
data/__pycache__/functions.cpython-313.pyc ADDED
Binary file (17.4 kB). View file
 
data/data-descriptors-mordred-numconfs51.xlsx ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:121f72b88fa46a0f16af6a1244af761ee6b9d679af7ab2e32d545538f8b5c5b5
3
+ size 10251595
data/db-D-interp-37-clean.xlsx ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:5c046f45ede6419629615b2e7397d74dc22c19db8556853638dd0c54ef9fad3f
3
+ size 546002
data/db-D-interp-50-clean.xlsx ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:2086bf5769a47fb6ff95f4f1dc4368788f03d6365300e5c40f6631798929116d
3
+ size 314780
data/db-D-interp-allT-clean.xlsx ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:b34934f1be324e95766d57b156ee29822b1ed282b3f0b4402e5405a8752c8acd
3
+ size 10436853
data/db-Kpt-corrected.xlsx ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:bb9bf13d777b9fdd26d0390880741da42fb9795606458f38d81dd773c7e4cb92
3
+ size 2250742
data/db-polymer-properties-and-categories.xlsx ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:4e2cd733617280ef264e2fdc16cfbe97680d7f2b48655c19127b18f9295fd56c
3
+ size 25960
data/extreme-solutes-universe.xlsx ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:23d1f455faa69aeda2cf25d3f15358f7b638ec758ad6e3ebfa7b405b870d1eb9
3
+ size 10360
data/functions.py ADDED
@@ -0,0 +1,303 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import json,pickle
2
+ import numbers
3
+ import numpy as np
4
+ import pandas as pd
5
+ import scipy as sp
6
+ from scipy.optimize import bisect
7
+ import scipy.special
8
+
9
+ import rdkit
10
+ from rdkit.Chem import AllChem as Chem
11
+ import chemicals
12
+
13
+ import mordred
14
+ import mordred.descriptors
15
+
16
+ def Piringer(Mw, Ap, T=310.):
17
+
18
+ # Semi-empirical model for D(Mw) given polymer property Ap- Toxicol. Sci. 2019, 172 (1), 201–212.
19
+ if Mw > 1100.: # if molecule is greater than 1100 g/mol, default to that value as worst case
20
+ Mw = 1100.
21
+ return 1e4 * np.exp(Ap - 0.1351 * Mw ** (2. / 3.) + 0.003 * Mw - 10454. / T)
22
+
23
+ def PowerLaw(Mw, A, B):
24
+
25
+ logMw = np.log(Mw)
26
+ logD = A+logMw*B
27
+ return np.exp(logD)
28
+
29
+ def Polymers():
30
+
31
+ PolyData = pd.read_csv('data/polymer_names_noglasses.tsv', sep='\t')
32
+ polymers = np.array(list(PolyData['Polymer_Name']))
33
+ categories = np.array(list(PolyData['New Class']))
34
+ #polymers = np.array(list(PolyData['Polymer_Name']) + ['Other polymer'])
35
+ #categories = np.array(list(PolyData['New Class']) + [None])
36
+
37
+ return polymers, categories
38
+
39
+ # Get polymers
40
+ polymers, categories = Polymers()
41
+
42
+ # Get solutes
43
+ soluteData = pd.read_excel('data/soluteData.xlsx')
44
+ nSolutes = len(soluteData)
45
+
46
+ ## list of solvents to include, all semi-polar and non-polar solvents in ISO 10993-18:2020 Table D.1 (except DMSO, which is not used in practice)
47
+ df_visc = pd.read_excel('data/solventData.xlsx')
48
+ solvents = df_visc["Solvent_Name"].tolist()
49
+
50
+ ## sampling parameters
51
+ N_sample = int(1e5)
52
+ #rng = np.random.Generator(np.random.PCG64(seed=12345))
53
+
54
+ ## c distribution parameters
55
+ T_cut = 20
56
+ MW_cut = 20
57
+
58
+ use_new = True
59
+ T_cut_new = 0.5
60
+
61
+ #### read data files
62
+ # CHRIS parameter distributions
63
+ if not use_new:
64
+ param_dists = {}
65
+ with open('data/param_distribution_37.json','r') as fp:
66
+ param_dists[37] = json.load(fp)
67
+ with open('data/param_distribution_50.json','r') as fp:
68
+ param_dists[50] = json.load(fp)
69
+ else:
70
+ with open('data/param_distribution_allT.json','r') as fp:
71
+ param_dists = json.load(fp)
72
+ # other stuff
73
+
74
+ df_desc = pd.read_excel(f'data/data-descriptors-mordred-numconfs51.xlsx', usecols=['Solute_InChIKey', 'Vabc','VMcGowan'])
75
+ if not use_new:
76
+ ## clean data
77
+ df_final_37 = pd.read_excel('data/db-D-interp-37-clean.xlsx')
78
+ df_final_50 = pd.read_excel('data/db-D-interp-50-clean.xlsx')
79
+ # convert all T to K
80
+ df_final_37['T'] = df_final_37['T'] + 273.15
81
+ df_final_37['Polymer_Tg'] = df_final_37['Polymer_Tg'] + 273.15
82
+ df_final_37['Polymer_Tm'] = df_final_37['Polymer_Tm'] + 273.15
83
+ df_final_50['T'] = df_final_50['T'] + 273.15
84
+ df_final_50['Polymer_Tg'] = df_final_50['Polymer_Tg'] + 273.15
85
+ df_final_50['Polymer_Tm'] = df_final_50['Polymer_Tm'] + 273.15
86
+ # add volumes
87
+ df_final_37 = pd.merge(df_final_37, df_desc[['Solute_InChIKey', 'Vabc', 'VMcGowan']], how='left', on='Solute_InChIKey', suffixes=('', '_dupe'))
88
+ df_final_50 = pd.merge(df_final_50, df_desc[['Solute_InChIKey', 'Vabc', 'VMcGowan']], how='left', on='Solute_InChIKey', suffixes=('', '_dupe'))
89
+ else:
90
+ ## clean data
91
+ df_final = pd.read_excel('data/db-D-interp-allT-clean.xlsx')
92
+ # convert all T to K
93
+ df_final['T'] = df_final['T'] + 273.15
94
+ df_final['Polymer_Tg'] = df_final['Polymer_Tg'] + 273.15
95
+ df_final['Polymer_Tm'] = df_final['Polymer_Tm'] + 273.15
96
+ # add volumes
97
+ df_final = pd.merge(df_final, df_desc[['Solute_InChIKey', 'Vabc', 'VMcGowan']], how='left', on='Solute_InChIKey', suffixes=('', '_dupe'))
98
+
99
+ #### solvent-specific viscosity
100
+ # add MW
101
+ Solvent_MWs = {solv:df_visc.loc[df_visc['Solvent_Name']==solv,'MW'].iloc[0] for solv in solvents}
102
+ #Solvent_Densities = {solv:string2density(solv)[0] for solv in solvents}
103
+ Solvent_Densities = {solv:df_visc.loc[df_visc['Solvent_Name']==solv,'density'].iloc[0] for solv in solvents}
104
+ Solvent_PIs = {solv:df_visc.loc[df_visc['Solvent_Name']==solv,'polarity index'].iloc[0] for solv in solvents}
105
+ # linear relation to estimate Vabc when it fails for a molecule
106
+ Vabc = df_desc['Vabc']
107
+ Vmcg = df_desc['VMcGowan']
108
+ m = ~pd.isna(Vabc)
109
+ popt_V = np.polyfit(Vmcg[m], Vabc[m], 1)
110
+
111
+ def get_WC(T,solv,V):
112
+ params = df_visc[df_visc['Solvent_Name']==solv].iloc[0]
113
+ if params['Equation'] == '10^A(1/T-1/B)':
114
+ eta = 10**(params['A']*(1/T-1/params['B']))
115
+ elif params['Equation'] == 'A*exp(B/T)':
116
+ eta = params['A']*np.exp(params['B']/T)
117
+ elif params['Equation'] == 'E*exp(A+B/(T/298.15)+C/(T/298.15)^2+D/(T/298.15)^3)':
118
+ eta = params['E']*np.exp(params['A'] + params['B']/(T/298.15) + params['C']/(T/298.15)**2 + params['D']/(T/298.15)**3)
119
+ elif params['Equation'] == 'A*exp(-0.01*B*(T-298.15))':
120
+ eta = params['A']*np.exp(-0.01*params['B']*(T-298.15))
121
+ elif params['Equation'] == 'A+BT/1+CT+DT^2':
122
+ eta = (params['A']+params['B']*T) / (1 + params['C']*T + params['D']*T**2)
123
+ elif params['Equation'] == 'A+B/T+C/T^2+D/T^3':
124
+ eta = params['A'] + params['B']/T + params['C']/T**2 + params['D']/T**3
125
+ elif params['Equation'] == 'A*298.15/T':
126
+ eta = params['A'] * 298.15/T
127
+ elif params['Equation'] == 'A*T+B':
128
+ eta = params['A'] * T + params['A']
129
+ else:
130
+ eta = np.nan
131
+ D_WC = 7.4e-8*(params['MW']*params['WC_assoc_param'])**0.5*(T)/eta/V**0.6
132
+ return D_WC, eta, params['MW']
133
+
134
+ #### add Wilke-Chang
135
+ if not use_new:
136
+ ## 50 C
137
+ # estimate Vabc for those with nan values
138
+ m = pd.isna(df_final_50['Vabc'])
139
+ v = np.polyval(popt_V, df_final_50['VMcGowan'][m])
140
+ df_final_50.loc[m, 'Vabc'] = v
141
+ T = df_final_50['T']
142
+ V = df_final_50['Vabc']
143
+ for solv in solvents:
144
+ D_WC, eta, MW_solvent = get_WC(T, solv, V)
145
+ df_final_50[f'eta_{solv}'] = eta
146
+ df_final_50[f'D_WC_{solv}'] = D_WC
147
+ df_final_50[f'MW_solvent_{solv}'] = MW_solvent
148
+ ## 37 C
149
+ # estimate Vabc for those with nan values
150
+ m = pd.isna(df_final_37['Vabc'])
151
+ v = np.polyval(popt_V, df_final_37['VMcGowan'][m])
152
+ df_final_37.loc[m, 'Vabc'] = v
153
+ T = df_final_37['T']
154
+ V = df_final_37['Vabc']
155
+ for solv in solvents:
156
+ D_WC, eta, MW_solvent = get_WC(T, solv, V)
157
+ df_final_37[f'eta_{solv}'] = eta
158
+ df_final_37[f'D_WC_{solv}'] = D_WC
159
+ df_final_37[f'MW_solvent_{solv}'] = MW_solvent
160
+ else:
161
+ # estimate Vabc for those with nan values
162
+ m = pd.isna(df_final['Vabc'])
163
+ v = np.polyval(popt_V, df_final['VMcGowan'][m])
164
+ df_final.loc[m, 'Vabc'] = v
165
+ T = df_final['T']
166
+ V = df_final['Vabc']
167
+ for solv in solvents:
168
+ D_WC, eta, MW_solvent = get_WC(T, solv, V)
169
+ df_final[f'eta_{solv}'] = eta
170
+ df_final[f'D_WC_{solv}'] = D_WC
171
+ df_final[f'MW_solvent_{solv}'] = MW_solvent
172
+
173
+ def get_V(smiles):
174
+ mol = Chem.MolFromSmiles(smiles)
175
+ calc = mordred.Calculator([mordred.descriptors.VdwVolumeABC, mordred.descriptors.McGowanVolume])
176
+ Vabc,Vmcg = list(calc(mol).values())
177
+ if not isinstance(Vabc, numbers.Number):
178
+ Vabc = np.polyval(popt_V, Vmcg)
179
+ return Vabc
180
+
181
+ #### Vrentas-Duda setup
182
+ df_vd_solv = pd.read_excel('data/vrentas-duda-params.xlsx', sheet_name='Solutes')
183
+ df_vd_solv.drop_duplicates(keep='first', inplace=True, ignore_index=True) # drop exact duplicates
184
+ df_vd_poly = pd.read_excel('data/vrentas-duda-params.xlsx', sheet_name='Polymers')
185
+ df_vd_poly.drop_duplicates(keep='first', inplace=True, ignore_index=True) # drop exact duplicates
186
+ df_props = pd.read_excel('data/db-polymer-properties-and-categories.xlsx')
187
+ df_vd_poly = pd.merge(df_vd_poly, df_props[['Polymer_Name','Polymer_Tg','Polymer_Tm', 'CHRIS Class', 'New Class']], how='left', on='Polymer_Name')
188
+ df_vd_poly['New Class'] = df_vd_poly['New Class'].fillna('none')
189
+ df_vd_poly['CHRIS Class'] = df_vd_poly['CHRIS Class'].fillna('none')
190
+
191
+ ## Calculate c
192
+ dfs_vd_allT = []
193
+ for T in np.arange(100,800,20):
194
+ fV_polyT = (df_vd_poly['K12']*(df_vd_poly['K22-Tg2']+T))
195
+ #fV_polyT[fV_polyT<0.025] = 0.025
196
+ for solvname in set(df_vd_solv['Solute_Name']):
197
+ df_sol = df_vd_solv[df_vd_solv['Solute_Name']==solvname]
198
+ for row in df_sol.iterrows():
199
+ row = row[1]
200
+ fV_sol = (row['K11']*(row['K21-Tg1']+T))
201
+ c_sol = fV_sol / fV_polyT
202
+ df_vd_allT = pd.concat([row]*len(df_vd_poly), axis=1, ignore_index=True).T
203
+ df_vd_allT = pd.concat([df_vd_allT, df_vd_poly], axis=1)
204
+ df_vd_allT['c'] = c_sol
205
+ df_vd_allT['T'] = T
206
+ dfs_vd_allT.append(df_vd_allT)
207
+ df_vd_allT = pd.concat(dfs_vd_allT, ignore_index=True)
208
+ df_vd_allT['T-Tg'] = df_vd_allT['T']-df_vd_allT['Tg2']
209
+ df_vd_allT['T-Tg1'] = df_vd_allT['T']-df_vd_allT['Tg1']
210
+
211
+ def get_c_dist(T,Tg,MW):
212
+ m = (~pd.isna(df_vd_allT['c'])) & (np.abs(df_vd_allT['T-Tg']-max(T_cut,T-Tg))<T_cut) & (np.abs(df_vd_allT['M1']-MW)<MW_cut)
213
+ cs = df_vd_allT.loc[m, 'c']
214
+ cs = np.array(cs)
215
+ cs = cs[~np.isnan(cs)]
216
+ cs = cs[cs>0]
217
+ return cs
218
+
219
+ def get_c_dist_cat(T,CHRIS_category,MW):
220
+ m = (~pd.isna(df_vd_allT['c'])) & (df_vd_allT['T-Tg']>0) & (np.abs(df_vd_allT['T']-T)<T_cut) & (np.abs(df_vd_allT['M1']-MW)<MW_cut) & (df_vd_allT['New Class']==CHRIS_category)
221
+ cs = df_vd_allT.loc[m, 'c']
222
+ cs = np.array(cs)
223
+ cs = cs[~np.isnan(cs)]
224
+ cs = cs[cs>0]
225
+ return cs
226
+
227
+ def get_D_Extract(w,T,Polymer_Tg,Solvent_Name,Solvent_MW,Solute_MW,Solute_Vabc,CHRIS_category,N=10000,return_DCs=False,input_Ds=None):
228
+
229
+ df_final_T = df_final.loc[np.abs(df_final['T']-T)<T_cut_new]
230
+ if (T <= Polymer_Tg) or (input_Ds is not None):
231
+ cs = get_c_dist(T,Polymer_Tg,Solvent_MW)
232
+ else:
233
+ cs = get_c_dist_cat(T,CHRIS_category,Solvent_MW)
234
+ if not len(cs):
235
+ cs = get_c_dist(T,Polymer_Tg,Solvent_MW)
236
+ rng = np.random.Generator(np.random.PCG64(seed=12345))
237
+ c = rng.choice(cs, N)
238
+ if Solute_Vabc is None:
239
+ if Solute_MW < 50:
240
+ m50 = df_final_T['MW']<=50
241
+ else:
242
+ m50 = df_final_T['MW']>50
243
+ ## within cutoffs, with at least N closest (by sorting, separating at MW = 50)
244
+ m2 = (np.abs(df_final_T['Polymer_Tg']-Polymer_Tg)<T_cut) & (np.abs(df_final_T['MW']-Solute_MW)<MW_cut) & m50
245
+ if m2.sum()<25:
246
+ vT = df_final_T.loc[m50,'Polymer_Tg']-Polymer_Tg; vM = df_final_T.loc[m50,'MW']-Solute_MW; m3 = pd.concat([np.abs(vT), np.abs(vM)], axis=1).sort_values(by=['Polymer_Tg', 'MW']).index[1:26]
247
+ m2 = list(set(m2.index[m2]).union(set(m3)))
248
+ if return_DCs:
249
+ Ds,DWCs,DCs = rng.choice([df_final_T.loc[m2,'D'], df_final_T.loc[m2,f'D_WC_{Solvent_Name}'], df_final_T.loc[m2,f'D_CHRIS_q50']], N, axis=1)
250
+ else:
251
+ Ds,DWCs = rng.choice([df_final_T.loc[m2,'D'], df_final_T.loc[m2,f'D_WC_{Solvent_Name}']], N, axis=1)
252
+ else:
253
+ DWCs, eta, MW_solvent = get_WC(T, Solvent_Name, Solute_Vabc)
254
+ ## distribution of D_CHRIS
255
+ if input_Ds is None:
256
+ if Solute_MW > 50:
257
+ subkey = f'{CHRIS_category}_hi'
258
+ else:
259
+ subkey = f'{CHRIS_category}_lo'
260
+ allparams = [param_dists[Ti][subkey] for Ti in param_dists if T+T_cut_new >= int(Ti)+273.15 >= T-T_cut_new]
261
+ D_list = []
262
+ for params in allparams:
263
+ if params[0] == 'pir':
264
+ A_list = params[1:]
265
+ D_list += [Piringer(Solute_MW, Ai, T) for Ai in A_list]
266
+ else:
267
+ Ball = params[1]
268
+ A_list = params[2:]
269
+ D_list += [PowerLaw(Solute_MW, Ai, Ball) for Ai in A_list]
270
+ else:
271
+ D_list = input_Ds
272
+ D_dist_noswell = rng.choice(D_list, N)
273
+ if Solute_Vabc is None:
274
+ lnD_D0 = c*w/(1+(c-1)*w) * np.log(DWCs/Ds)
275
+ else:
276
+ lnD_D0 = c*w/(1+(c-1)*w) * np.log(DWCs/D_dist_noswell)
277
+ D_dist_swell = np.exp(np.log(D_dist_noswell)+lnD_D0)
278
+ if return_DCs:
279
+ return D_dist_noswell, D_dist_swell, (c, Ds, DWCs, DCs)
280
+ else:
281
+ return D_dist_swell
282
+
283
+ def get_D_CHRIS(Solute_MW,CHRIS_category,N=10000):
284
+
285
+ T = 310.15
286
+ rng = np.random.Generator(np.random.PCG64(seed=12345))
287
+ if Solute_MW > 50:
288
+ subkey = f'{CHRIS_category}_hi'
289
+ else:
290
+ subkey = f'{CHRIS_category}_lo'
291
+ allparams = [param_dists[Ti][subkey] for Ti in param_dists if T+T_cut_new >= int(Ti)+273.15 >= T-T_cut_new]
292
+ D_list = []
293
+ for params in allparams:
294
+ if params[0] == 'pir':
295
+ A_list = params[1:]
296
+ D_list += [Piringer(Solute_MW, Ai, T) for Ai in A_list]
297
+ else:
298
+ Ball = params[1]
299
+ A_list = params[2:]
300
+ D_list += [PowerLaw(Solute_MW, Ai, Ball) for Ai in A_list]
301
+
302
+ return rng.choice(D_list, N)
303
+
data/param_distribution_37.json ADDED
@@ -0,0 +1 @@
 
 
1
+ {"R1_hi": ["pow", -1.7210813178252082, -5.316806497783963, -5.4494932012881385, -5.768182223826546, -5.571599248471992, -5.332462794946952, -7.7161800923227855, -6.7846218883178455, -6.076436830393357, -5.937324027930641, -5.4290991858647075, -8.06074734080945, -7.5509946441655025, -7.493319728112297, -6.143393011163276, -5.744119873303038, -5.713536449930954, -5.245794412301276, -7.238997768936623, -5.246358505784474, -7.01323922285557, -6.732878249465795, -7.137122775103951, -6.995280165475592, -6.353291780114349, -6.60469811090624, -6.855747987914241, -7.488719438432026, -3.686551067727473, -4.906329498045797, -6.299715462690976, -6.092875266113934, -4.449148280201202, -4.043683172093038, -5.59407597774206, -6.761372264473744, -6.5340270263058375, -5.28826387782572, -5.399291242888079, -5.362353646239544, -5.264893285811262, -4.975886197021524, -6.728235603941291, -4.40329100075691, -5.42668007116478, -3.4735286648330526, -5.604917835117476, -4.205308139781945, -3.117079553113051, -4.1045445085218155, -7.222528259107547, -4.479020746168608, -5.019597582319088, -3.8126021264233447, -3.711452642465966, -5.794556224017823, -5.624768403371121, -5.511332473707748, -5.477073523886732, -5.4439494764616985, -7.40547897110641, -5.015193553795691, -5.202109661610419, -5.089936046548357, -5.06939543619712, -5.015210965555377, -4.967362287592345, -4.806192928438766, -4.725648349995709, -4.562492813648419, -4.804063081264166, -4.47419668077444, -5.786312580378455, -5.564588475718475, -5.5093257970434255, -5.493325455696981, -5.431767562697544, -5.355175117216165, -5.719599369230702, -3.0110924543782396, -4.471805359115528, -5.678932197580275, -4.25264187822491, -4.136745965820747, -5.270383467767244, -6.3093373140554885, -5.775779599078444, -5.325302392183064, -5.187379248977564, -4.489641394709018, -6.041664148276629, -5.360226922718938, -5.3299796776337525, -5.089342879502225, -5.028221205098874, -4.906656288125235, -5.106087271035764, -4.896855436707289, -4.813698205333914, -4.799519566066893, -4.747938165674524, -4.616908082526731, -4.4344773245915, -4.541878754985465, -4.437328759426393, -4.755578863614566, -4.686585992127615, -4.591275812323291, -3.886721769329922, -5.092182961389753, -5.047871915064842, -5.011393706462435, -4.912021232649231, -4.552647231741332, -4.465950369615124, -4.364056061933782, -4.3332844032670295, -4.019801684870515, -3.8199142185286252, -4.030149599048311, -3.69873677027514, -6.334949506327934, -4.706109206747083, -4.840483090455065, -4.063433230325538, -6.945617242633551, -8.876743080235489, -6.274053394791105, -5.698689249887543, -3.4005316050888794, -3.8491684359265594, -6.5213314694474835, -4.705349137197854, -4.805775773794115, -4.0753659465165235, -4.331497855262688, -5.039776387514195, -3.8535770398115385, -4.175990421389996, -5.125488089604216, -6.958504846040052, -5.196129623276725, -5.7913673239637316, -5.610783387068311, -5.529403780799933, -5.499786611096285, -5.421241582300871, -4.7624579005188075, -4.320748395959462, -7.0959603840666094, -6.5597447745010165, -4.736391774002963, -3.9297168076059066, -4.907522654741255], "R1_lo": ["pow", -0.6666666666666666, -9.547900288370853, -10.347152366158955, -9.18162810591226, -10.104783194230297, -12.62099235936005, -10.599433938433503, -10.531955992422105, -9.22812058876685, -11.783007256257694, -11.830311674975341, -10.290617509037729, -8.931727117875429, -8.894685846195078, -9.93849722164411, -9.873464751373255, -10.998370484787628, -10.012213388032336, -10.601791439054374, -9.624874298435373, -10.304481997076754, -10.25343296484746, -10.242562215310546, -9.265502595549307, -9.702014184229053, -9.662008849615354, -8.629975098870352, -8.201538665635134, -8.034484580971966, -7.935683996227874, -7.797557259074279, -8.592324333876409, -8.067347109870209, -7.930145988356725, -9.178776332654472, -8.86007003691121, -7.462141715309399, -11.007441491182139, -10.584050166805822, -9.401300581360697, -9.331395513126434, -9.313954805617946, -7.978701099450433, -7.791489557362286, -8.776488101835824, -8.547398964835232, -7.621677133536355, -7.597396974354245, -8.591251534569606, -8.57562200595405, -9.12168916757902, -9.481896702963024, -8.28564431863589, -8.75701487397002, -9.044035231287356, -8.406457901882222, -9.798708001194402, -9.009438179689994, -8.920806375328226, -8.874286359693333, -8.787274982703703, -8.875203334013136, -8.523911474987466, -8.31464587871929, -8.13854954246564, -7.99990126022817, -7.874195177292349, -11.046473542819353, -9.713289007013408], "R2_hi": ["pir", 10.643868636844893, 10.57861221248885, 12.563742110382424, 13.753581442303012, 11.238725017157229, 10.654281005222224, 12.793320491154446, 12.420698049663866, 10.808038462442305, 12.721650925899851, 13.079428139883163, 11.921092015164216, 10.117843596461288, 13.389417467041202, 13.146845862295233, 12.90521855326336, 12.200124721154378, 12.43214302827542, 13.045435969845826, 12.382478371090162, 12.731175817402448, 11.191928920969602, 12.336739707422929, 9.90222638204239, 13.07482571209141, 14.401735491692925, 13.11003176836649, 14.493736247174702, 14.499475695812773, 11.189318258918139, 12.684858498787584, 13.442424704217075, 13.470715566670023, 14.300043355665021, 12.966055414994134, 14.281527272781695, 14.305777528935447, 14.265023747921681, 13.058556994811482, 14.442401912945318, 14.452422466202272, 12.489985424051351, 13.917677764535682, 11.009011930464833, 13.372757292214757, 14.599243376282637, 14.61787473737975, 11.180777617089056, 11.974515431342535, 11.47986522190676, 12.277471181432695, 13.40616221007885, 12.713048572645086, 14.210644362725336, 14.216137367042833, 11.864084883648335, 11.864487178303197, 10.697410835226815, 13.135923945348708, 13.650940330834818, 13.000039191105326, 13.314532422457685, 13.038407454303435, 14.312537629982483, 14.342807960370084, 13.241361342998449, 14.33823923276682, 13.263147856019128, 13.32548471116613, 14.332834405364316, 13.549260713432492, 13.690065635501924, 11.081475015678514, 12.77090882787785, 12.553231470316707, 13.162891123534767, 13.200658663113071, 12.427255282345868, 14.277895464469438, 14.297819182797245, 11.384836315440207, 12.348415126058441, 9.702674530987462, 11.631630295457555, 12.224940198271046, 12.606195295227835, 12.070638787700023, 12.511783707759303, 13.127353065307897, 12.745590323805125, 9.154708844200485, 12.641008390543174, 12.832714152203653, 12.045209542848756, 12.482111676400343, 9.240651602530207, 12.373992133502451, 12.606607636993377, 12.665590917981692, 12.837593136426154, 11.951167822948992, 11.473324712006658, 11.783483876683274, 9.09895049199418, 9.222043264438017, 12.367098075580262, 11.08711001146317, 11.875656784418343, 12.166467023725694, 11.74132447989387, 9.116441464025513, 12.557221171130053, 12.132014750855824, 9.404862656253655, 11.335555845189134, 12.907167146851034, 11.85680191437184, 11.251434247631785, 11.237948243978192, 8.661439407189995, 12.838700775780598, 13.112600658659279, 9.726717411843303, 13.237447631911682, 11.45607481306467, 11.535016655962195, 13.332236276055514, 12.34295502887731, 13.519852779233638, 11.763703591251506, 12.075509390995485, 9.271868042071585, 12.549825079303364, 8.67527212987304, 10.957178398566771, 11.633472161382514, 13.531382689673812, 10.507057291318311, 12.830871313993065, 10.139097566778037, 13.1533996199842, 13.244601893177684, 13.741307678616202, 12.172541568174935, 10.697441802071157, 12.246418923135153, 12.921375595087916, 10.502454014114821, 10.76737328626374, 11.066761705257278, 12.460999779144359, 12.560327597695448, 12.874727858816126, 11.049022768865925, 11.392925470533406, 13.131895177780134, 13.213124227210965, 13.633219613849999, 11.497086188646819, 11.325979574431425, 12.094863207916315, 12.335695704973148, 11.581836227841947, 12.50131627850438, 12.015009251220757, 11.605949832930527, 11.78511838599599, 12.341381727064565, 11.986322119486257, 12.193614160209577, 13.26539248443327, 10.779970004887502, 12.129902163753059, 11.74385414625733, 10.742245539871423, 12.997360836265244, 13.595677889806403, 13.09942945695229, 7.5859624131325845, 8.50225314500674, 9.47681278500487, 10.399873004934271, 11.32801720618745, 11.326435542816192, 11.729539317981711, 13.039472785015665, 9.951974750571615, 12.927770418497023, 11.36082292611258, 12.54964547185827, 13.874950762908938, 10.390502926036305, 12.482654271124758, 9.46597570073142, 12.385688657946133, 13.418555403184222, 12.786751109260717, 13.106230785591634, 13.146070878469605, 12.297900711592934, 11.635397903447256, 12.910376314424493, 12.986731821229196, 13.077030312271802, 12.94294234321423, 12.22483069142379, 13.327420940403016, 11.91846261717317, 12.899525496331488, 11.97415658605103, 12.830153104085745, 13.639596931945778, 12.846477784115272, 12.445695169903573, 12.053673330780526, 11.45693369600292, 13.469132461083497, 13.808922275056368, 13.435656617517896, 12.626100860449661, 13.065172940821991, 13.326735669048652, 12.870226537132424, 12.277196966331584, 13.376775898146548, 13.791139863947258, 12.079745051695859, 13.047265155912172, 12.752316366534071, 12.923233734428155, 14.334407538165042, 12.212636834976959, 12.943265246868012, 11.797916832945031, 17.0224704233019, 9.551667093206351, 12.44675158181828, 9.895415622545368, 9.951644172016554, 12.959073155350673, 13.320975463854058, 9.887265608410921, 12.182625705885204, 12.30314416041664, 10.347627366389172, 10.495123492615896, 12.170168239522521, 13.034754195821787, 13.131282258907465, 11.070333084614639, 11.18310569570042, 12.548775136123425, 12.663397241084464, 12.348502911093036, 12.478184584095242, 10.806604060090752, 10.838054161338107, 11.782835355165467, 11.748837811354964, 11.782818497043248, 11.12973730974743, 11.200201565808719, 10.582847269675714, 10.685392346142947, 12.475156883142287, 12.579002342482124, 11.470772871077699, 11.576210494346526, 12.698820948715849, 11.9420611547405, 12.146578357664524, 12.30172039633488, 12.333065804860496, 9.599236336274519, 9.646064122158226, 12.348503585613937, 12.49607566478413, 13.374847819852775, 13.478957259875866, 12.215203775806856, 12.47165050213739, 12.236578635391588, 12.99363729843494, 13.025982319444019, 12.680977263030979, 12.717587511519447, 12.162267889782076, 12.8551036930922, 12.544547948277522, 12.669388707596443, 12.868898794313164, 13.574832306034391, 13.805514934521764, 12.865850476087033, 13.451383053822134, 12.068461474756315, 12.941659463890737, 11.941195964193806, 12.68095041161445, 12.00159520849586, 12.632569227144607, 13.52479427345235, 12.257312469987703, 12.383019640767884, 12.107989241114009, 10.963996662999183, 13.267819741030994, 13.682689208863557, 13.727819978495251, 12.66460260987174, 12.916401848460865, 12.898376867888118, 13.597247221175952, 11.66050119414722, 13.126081159990356, 12.410287331946162, 12.23318329685964, 13.280238349681486, 14.036770513465132, 12.865325137372484, 14.26846608096466, 11.801230483274814, 12.822082444797939, 9.522500254620223, 12.556226615377213, 11.75343294986001, 12.98833415425263, 13.268978240673654, 12.303639971562742, 11.611732719450014, 11.504036580261161, 11.754265739165703, 12.712715329418149, 13.376921380783784, 13.217784867011666, 11.587284402842474, 12.085990514489747, 12.69522237020741, 12.090358221939738, 12.36071332935866, 13.110617870774679, 11.71761781959718, 12.531430790310637, 12.687861964894928, 11.100875649334856, 12.229046097347538, 13.51874682935832, 12.278187172524067, 10.56118458750207, 10.795865281412425, 8.996755270033173, 7.984047632975706, 8.27518779053933, 9.61269198748979, 11.503542359362076, 0.13768463548351662, 2.2276829250505337, 6.216167682864654, 8.270327699005303, 8.791711435419959, 9.321520621020383, 9.611441205588136, 9.095596750710204, 6.530540733377794, 9.0649219526472, 9.343741337841134, 9.563913118766187, 9.798420428730712, 9.927232605423587, 10.252287020573476, 10.340394288083743, 10.374843334982515, 10.481155778365725, 10.705250352100638, 10.820071676262693, 10.965565135540398, 11.076420491702923, 11.338058041293259, 8.551240184374787, 9.088462685381955, 9.56266920371657, 10.065215388235266, 10.13713522202622, 11.185738123068134, 12.581725564621387, 12.659339611325887, 12.735701979421453, 1.4300002520289468, 1.9926645877275675, 4.909375433856717, 6.212702682111619, 6.289734466453261, 6.714973730930673, 6.822803007031506, 8.61680905644134, 0.8014863276301369, 7.855468372852496, 9.88476273453631, 10.847893706399738, 11.613362208297794, 7.529929201954467, 1.0614605457592035, -0.18135795199996352, 7.573833889841268, 9.858874673184395, 10.012121928973336, 9.772554950816271, 8.775812563174874, 7.038093396167355, 0.5973926357969717, 0.3476172378237834, 8.607998280679002, 10.272806956897679, 11.36433599484372, 12.030806324657291, 8.201811731318006, 0.27242334462645346, 5.178455247710467, 0.6483605046754946, 9.341386146806364, 10.642311404670949, 11.864676452538298, 12.537455432266995, 13.196140225052275, 14.253045512288395, 14.530717991035111, 14.882180939005885, -2.176179179067333, -0.7175939337615276, 4.740152420319383, 7.427569140567378, 8.457099442161109, 1.5494271040452077, 1.5634454973774297, 2.634559547213506, 3.1173444282154463, 3.7044821564105987, 5.041838365598366, 6.057834904700492, 7.692081282904681, 9.784483726688265, 11.566003636194267, 12.585856580380078, 13.126915468068287, 8.74778654606909, 7.582040609979384, 8.693271362606705, 9.924757904566029, 8.818121118321304, -1.036760410049233, 10.648445665078924, 11.590020724476524, 12.034901523235234, 8.918208380380946, 10.071700085507736, 7.690629018112624, 8.093173178506067], "R2_lo": ["pow", -0.6666666666666666, -14.319412770827302, -13.979674336419468, -12.722223747940545, -13.300829114692188, -12.259915313924031, -11.305669284758928, -11.230683477874365, -12.276516708211336, -11.811627795713513, -15.130663870991821, -11.358781679811381, -13.745267800399374, -11.692423607425528, -11.11979922327595, -10.502051715388884, -11.734670390787889, -9.7519144127441, -11.150875747155307, -11.336942310714162, -14.68443273473449, -13.68715513713801, -12.743998221699385, -12.254084865391192, -11.54734863024937, -13.410445710085895, -13.51224722085544, -12.712802357783577, -12.301064617739296, -11.711416080806135, -13.722358397405378, -12.105333024337726, -11.748133095559323, -11.211681035525821, -8.183278166250249, -13.10510234197599, -10.462444915097873, -10.134651649598798, -10.090976586096136, -9.875277978389388, -11.963882432284596, -11.542719930869945, -11.392958784718576, -11.08132413510312, -10.766193626945185, -9.637721208082048, -9.468052662460138, -11.028604004709731, -10.084385765166555, -9.840609119158067, -10.654775475286968, -9.8436540323889, -9.674960593351026, -10.753892027200116, -9.752817895314065, -9.594580869391804, -9.386883166992572, -12.056786526303263, -12.23385808844916, -11.495111293213427, -11.857700071294769, -8.789825399683213, -11.114865309632274, -11.582325197319456, -10.516386477274628, -12.127035499170077, -11.407685714937099, -10.534091543292181, -10.319962849221795, -11.782709891601968, -11.646936826711933, -10.914281083197263, -10.596991813135656, -11.460596662248154, -11.459909920886158, -11.260837969203527, -10.434517413077462, -10.434080395820276, -10.25544310477381, -14.479555228248806, -12.553447706489674, -11.544181511784155, -11.796693552010181, -11.827540244702167, -9.51119779347719, -11.242335777202953, -10.715426064133915, -10.810457147039108, -11.513740317713172, -10.53374760184727, -9.934172241144385, -9.61432399282307, -10.9341665249002, -10.871590411825181, -10.46903435774751, -7.121233701437887, -9.81285030967583, -9.735076086537031, -11.495827325313224, -10.924359356172012, -10.55258095859892, -10.462876447390595, -6.5960147516719445, -12.126290036236663, -11.466391645861485, -9.818085672901237, -16.521180362950474, -15.39709032682484, -17.02560644767684, -14.210850289437651, -14.160031041041439, -14.133362793959277, -14.09676021498173, -12.903414503230081, -12.537170108275198, -12.476288462668954, -11.472314162920494, -18.05048249140485, -17.759620766035688, -17.581275357621372, -17.42655568773609, -16.824461549857155, -15.141182723623166, -15.98238529071967, -15.933060423460297, -15.112975870542563, -14.440816833341227], "P1_hi": ["pir", 8.59129016192501, 11.030594976412484, 7.4765295790446125, 4.908912279667469, 8.277782916823352, 10.316931908492077, 11.064843512117218, 11.46549242887087, 7.832304323798542, 7.654918247574912, 6.54435906893746, 10.504672440103658, 10.788514739261228, 10.675111676702656, 11.4873533789082, 11.100870512020979, 5.129972021339231, 10.599247186030908, 8.90338654478953, 11.154473530145331, 10.985833117925562, 10.687978001199312, 9.21859868491843, 10.961569864020838, 10.303546286929496, 8.571208979449068, 10.844462395208161, 9.32809414954431, 9.061293791170744, 9.507580893799165, 9.17837880518331, 9.627623209829345, 11.35860181280728, 11.801001665576454, 9.809496885333875, 4.046559777384402, 11.841168559636024, 12.24299174461482, 5.061752524093816, 9.908501976859895, 10.234114196804242, 7.961459756744507, 9.559677471563514, 9.84871945242217, 8.21803524627206, 10.037613143978373, 4.052177800046195, 11.4364997184881, 9.066558936663444, 9.470867094565222, 9.059254917135661, 9.217789370841068, 9.721843276154168, 12.122539007594668, 12.285489465913802, 12.627686746834367, 12.688984809017345, 11.931678251412997, 9.156190266356258, 9.83094985355692, 11.179668085114901, 9.7376603379283, 10.087949132574849, 11.485362433499073, 11.64548416841086, 9.8779154664741, 10.537161095358364, 9.650609395513893, 9.951063589426443, 9.08925572056841, 8.15872421409252, 8.727124574319923, 9.77911467203866, 10.33873045997408, 9.607083358552973, 8.46983998047098, 8.80087249379637, 7.273846500587847, 9.873519508021474, 9.90229078507145, 8.194736690226058, 9.581031051345946, 10.573913439475632, 8.782903214605504, 11.598564754345759, 8.256905853098107, 9.352561969356657, 10.03435016494048, 11.50055300188222, 9.471400592199096, 11.806490012354509, 11.316286012814857, 9.70097521818479, 10.328170342545942, 8.996538812964019, 8.211467100004747, 9.71247509490701, 8.779497882270228, 8.894128849715727, 10.289680905909421, 11.416449041385814, 8.72493242889339, 12.050678577222683, 6.813281055337189, 8.339796491184341, 9.689051209350886, 10.107045547460821, 9.34354494311805, 9.359364459062189, 10.021275890642816, 10.3139840296549, 11.560841610184191, 9.18644126092342, 11.06099695831017, 11.500062138822287, 11.833385871662394, 7.81071711414625, 8.580852239082152, 9.445187264975171, 10.64107042113022, 11.096808962927607, 9.331006211739918, 10.521711228067275, 10.857503056436585, 11.17011005457842, 10.047017611396885, 10.069542386051406, 11.081143297729884, 8.99095572457923, 7.694860063256108, 8.698771190712993, 9.739676711044716, 9.900527883523775, 12.079611631692895, 12.041906492129414, 10.203686643603959, 10.666831260303471, 7.761159982778594, 8.563703123836852, 9.764601409038555, -0.09054319138219569, 7.935552759047521, 8.894668649814573, 9.2128714727077, 10.243443550055279, 10.495531710826217, 10.635741769726767, 10.831305006252546, 7.336711212458017, 10.138227052303893, 11.232206715378378, 12.208190619333667, 12.37894202149442, 9.061403892953301, 9.950159853697485, 9.423043362843654, 8.127658547265991, 7.389796276873387, 8.70423133801875, 9.534545299154289, 9.629985048327342, 9.68251837676484, 11.223317326377966, 7.632553085219012, 8.965743746799724, 9.709282125423922, 10.281672864937683, 10.377067574437746, 11.721093820081826, 9.137928548133424, 9.413816327145224, 9.397127855801177, 9.926970225533104, 9.415203597130091, 9.618873090401273, 9.717217167362037, 11.297667542922884, 10.010392320521596, 10.35429314951923, 11.93474352508008, 10.310680089611221, 10.831629999991002, 12.316781368320466, 9.222793728951277, 11.358658562593462, 10.44068109421871, 9.137578091716549, 11.202925467303224, 11.896928560190037, 12.202374943898455, 9.657422874375019, 9.600865433674848, 6.751967640342325, 7.021816729765934, 6.47275297747845, 6.810794350562464, 11.23644214319236, 6.702061366163164, 7.193721825464593, 10.949136679866513, 11.389086046082888, 1.4180914094355757, 12.031996867669296, 9.3273309591704, 9.404118102384171, 9.85214282491113, 9.98219595315933, 10.029824002148583, 9.869877350625696, 10.524625666940196, 11.365535585805222, 9.957503340568959, 11.372112065222701, 11.872079180180975, 11.496296102150904, 9.384522562918054, 9.913253375230958, 10.028493670254552, 10.503128688175245, 8.406731705629927, 8.409573531660676, 7.277049682771619, 5.1808900962775795, 6.097180828151728, 8.08888121909909, 9.698319131533193, 8.340104606147563, 10.083003104368501, 10.204022814816113, 7.183343636516373, 9.517085747156262, 8.605875620920742, 10.12840354682908, 10.256011921150485, 9.640585911495226, 10.346483265442671, 9.800874704324656, 10.99714892520145, 10.246116923167346, 12.085071449066778, 9.295602034925096, 10.137161604531382, 11.566107413373395, 11.232814737096767, 11.461257474868148, 10.822602068878883, 11.581251132328735, 8.676584630254606, 11.856937250285927, 12.702382329043505, 11.595439833973774, 11.832772525958934, 11.04283645682797, 8.683865667461934, 11.324130292758838, 10.853837959706826, 8.47278374904818, 12.573146383595844, 8.833675143365848, 12.860828456047624, 10.031700228715419, 11.566107413373395, 10.965392953955497, 12.105535242685725, 10.3112230873108, 11.835164806103247, 11.308043740084337, 11.668024087908918, 11.748357521717516, 10.986370807794675, 11.254556988702312, 11.365248469886755, 9.356488519911856, 10.047452662041401, 9.514069344958617, 11.710245244315743, 11.1335631030969, 11.722704484896813, 11.455356080479092, 10.54105678221504, 10.97863932355206, 11.124087810829728, 11.872323760733469, 12.27765863594955, 13.083761300089254, 11.380677969561276, 10.259005645009498, 11.198703396408686, 11.136773953045928, 11.156149755607796, 10.609046200420547, 11.183581227035717, 12.134249473305793, 11.213254745178055, 12.023472213746992, 12.498489146039773, 14.05329645640533, 11.32577027388973, 11.936199007899422, 11.32781685190022, 10.94162614366181, 9.579676074801043, 9.675738142702006, 11.835164806103247, 12.33727639993631, 11.605580106341687, 11.045336576692723, 12.522885525804387, 9.968894317005159, 9.690756666951213, 12.515062647314423, 10.274690358389218, 9.096643791948061, 11.163333997907085, 10.767746354857177, 13.060983017735655, 9.985611946769918, 11.326705818387019, 10.889902132218005, 9.84597829021354, 9.375581319571605, 10.55640787622978, 12.074338277765808, 12.840150354766049, 12.567220651084234, 9.792502567598198, 12.295913198055231, 11.716087896443423, 10.154876353444923, 10.606747030183453, 12.287691974121255, 11.487807857477186, 11.096823966203072, 7.075289799482821, 7.09723797026906, 7.738679745288735], "P1_lo": ["pow", -0.6666666666666666, -10.13042042278164, -9.840301242852526, -9.60782621937167, -11.242094709713648, -10.9336130100912, -15.010183479310978, -10.286832801808906, -9.841136277198938, -9.58865116480271, -10.766056957728999, -10.689629770530596, -10.387936750828946, -14.384270438747823, -13.99545978981092, -13.860280697241599, -13.85851030665533, -12.595150818119706, -11.680656320851082, -12.086643699606423, -12.832074271523066, -11.820750015192193, -12.831703823813118, -11.654683050590258, -14.915393247330249, -13.798025302275075, -13.569052298538141, -13.517214337288149, -13.399233744649326, -13.376713069999335, -13.341227454263297, -13.289587015892431, -13.098948221029334, -12.201418354548538, -13.5415922865434, -13.35871565884781, -12.182621685486428, -10.588605075613332, -12.076046063904236, -12.840545615779227, -14.863529600140684, -13.162588300254928, -12.94291885091172, -12.900529779860936, -12.74572614541578, -11.927257997657456, -17.265435443019122, -11.499228660409944, -15.123596405663104, -11.719217278445365, -15.771943715739488, -14.315523721880002, -13.073828547035646, -11.514475450907227, -12.374801942557351, -14.904499531971258, -14.868131887800384, -14.157285130141037, -13.332801947520004, -12.76225708905239, -10.887116010885286, -13.789268114856185, -13.224725197448478, -12.26709081284248, -11.574617920737811, -11.448631499894056, -10.73988978225329, -15.205626047464179, -14.531170999916387, -13.107835367116145, -12.535316174344814, -11.188242526378207, -13.33803218326113, -12.041293096230351, -11.789070642231842, -11.195389473191543, -13.192861096674225, -12.28519411514612, -14.480991270324404, -14.082083562762401, -13.337643087814904, -12.446670163925038, -12.396659743350378, -11.40975144426227, -14.61170130493578, -14.482615810115972, -14.301335717890515, -12.882391933835319, -12.829803443515322, -12.365254140728073, -11.624324053159027, -11.296604529283139, -12.73727348759582, -12.527255935404993, -10.854677834627264, -10.636442609385234, -10.300382302382381, -10.182731021438697, -13.573831697898616, -15.505825837211075, -14.837996464635419, -14.197493017560896, -13.80107774497265, -12.866768507595816, -12.1385300072246, -16.165033890931575, -15.577247226029456, -14.812641081487367, -13.797910276799957, -13.737285654983523, -12.658475993611592, -13.530695312538551, -10.27973706476034, -9.928683415105267, -12.32738259278965, -12.60928697355115, -11.536852801960855], "P2_hi": ["pir", 5.288094594630671, 7.860737346947076, 8.162579192160674, 3.9196544508944946, 5.658521931218477, 5.431726581454793, 5.695367012999331, 9.090146466209777, 6.791463431908046, 11.848240571354008, 5.147106768963344, 10.73310620796316, 7.153669752301919, 7.935482569947521, 7.529260230316055, 8.510089483327782, 8.005383711166424, 6.262852533175234, 9.533789357669892, 9.019720261552731, 5.017475785710296, 10.538936703572542, 7.150594641537467, 10.417988403745845, 7.971937212165372, 5.610843849732369, 10.418530099683835, 7.498101863153437, 7.1623456808516295, 7.020511551908051, 8.79710091436132, 10.292226015646719, 6.323670272991492, 5.4031387892930915, 5.517371186158066, 10.506932651629466, 8.54077777418011, 9.322679065204227, 7.239377629526622, 6.101270067876765, 8.086923999484469, 6.835705055219165, 6.9136332373699325, 7.070724637599273, 6.20044343980501, 7.042130714170728, 7.163250796918213, 6.205887237335109, 9.493532105978012, 6.333587726051839, 6.406821681876988, 7.581591529831023, 8.192369481523585, 7.964651499838148, 6.2421490055080255, 10.6285383407442, 6.834495896757485, 6.437020433552341, 11.20007983218941, 9.411198595986185, 8.027731506131254, 7.704903860693609, 6.184867365331861, 6.661216582155173, 3.665127250831002, 8.943806277080135, 8.532307439272113, 7.057399334784606, 7.847636737253477, 4.34055270877942, 6.000868719500179, 5.412970188703422, 6.838433747856595, 2.3910354432657854, 3.0750630856348096, 7.543392495011144, 4.024704587425845, 7.162402634208441, 3.7451504998641703, 6.288193827048545, 5.825291275363462, 6.409117279610065, 4.3010360284892855, 5.108688049398104, 5.608688049398104, 5.77787944516497, 6.981852249490906, 7.006544862081277, 7.018666222613625, 7.0996352851472935, 7.121614191866065, 1.497375316200305, 6.669646853088519, 7.328243450464981, 1.4363503680751037, 1.7930253120138389, 2.3038509357798276, 5.35328266457492, 8.949830738555029, 1.5065950691435859, 1.768959333611079, 2.4998468421538718, 2.6697458789492714, 2.8675716222791934, 2.9416795944329124, 3.452505218198901, 3.714869482666394, 3.9044903419419583, 4.214645270245796, 4.502327342697583, 4.801385448119333, 5.144181228869975, 5.1954745232575235, 5.783261188159642, 6.3741295195991725, 7.446766321864018, 7.741005794861962, 2.8515922678809424, 3.190444524289351, 6.5577403542758255, 7.881249343518242, 8.391192857944354, 8.414007535710528, 4.356996276686015, 7.099928926184372, 9.043880210754352, 2.300601747023009, 6.174746245904348, 8.78047873197502, 9.50999355670584, 7.010915649167799, 7.067510869108958, 3.0032592542397545, 4.500767034407293, 7.646945489691248, 7.667148197008768, 8.208781921001048, 7.006180477554139, 7.60618047755414, 7.007346335874114, 8.024280593527955, 8.592973599614496, 4.105490337294128, 5.984874702266897, 6.377917290376502, 6.696371021495036, 7.725539633907186, 8.354148293329562, 5.408724947654136, 6.753546185545776, 9.47022043139133, 0.5361769708622859, 0.910870420303695, 1.899481813757486, 2.7434518840520106, 3.0799241206732226, 3.274080135114179, 3.3853057702244094, 3.4365990646119577, 3.53190924441628, 4.104428437187611, 4.129746245171905, 5.308401241513547, 6.2698124086681695, 6.707005142464613, 8.900810348097043, 6.653081251946396, 6.217596395844581, 5.173685096155339, 6.783123008589438, 7.55631289682292, 3.9503524634796, 9.696156471434485, 9.992312419774855, 8.554300273781589, 8.577114951547763, 4.117276259940141, 7.199563868483427, 4.501327572893622, 4.701327572893618, 2.8078156661867197, 8.757155865335768, 7.8186521743109765, 9.485024008497433, 4.968889978960277, 6.86600996384616, 3.99890893421939, 5.75079227690042, 6.616416093189873, 7.855334562791857, 6.966927199320221, 6.562762688579362, 8.127404025545594, 5.982273075772387, 7.317569753120939, 7.982267773702258, 7.991746517656804, 5.86983730817148, 6.829613151985374, 6.871285848385941, 5.92913585947495, 7.042123777939292, 8.308373492488993, 4.551263177670819, 7.361125270225372, 7.129259850361809, -0.9484389091702283, 1.802301776876785, 2.002301776876781, 5.102301776876782, 6.092145011166824, 8.751405048099603, 8.846715227903932, 8.712806022611812, 7.656506859871346, 7.82713237690211, 7.989651306399885, 8.099999363568752, 5.964244361631522, 5.967475113800262, 4.128097879766248, 9.509969127084933, 9.525876779944387, 9.834630379033626, 5.894362344392402, 6.318176591168761, 6.485230675831932, 4.559095344169716, 2.790182922256893, 10.996024782314585, 6.933045545390129, 3.6538275735338672, 5.040121934653762, 3.6526623645584806, 6.002370011180695, 6.594314482989727, 4.342871936105652, 6.089775642735436, 7.369385861266991, 7.487904461502332, 4.603397823058565, 5.32252049002177, 5.7262747337263065, 6.634312323843741, 7.114279959249824, 7.147896570048811, 8.210039178935528, 8.31825276357576, 8.459128912194323, 9.864177270287534, 10.391263414925305, 7.326443971014356, 7.893228248428393, 7.603125135650991, 8.654584381942119, 8.674387009238295, 6.945868200455461, 2.6930731176480904, 3.9355795859762637, 5.688805391202081, 7.5076202780979955, 7.5280936058059105, 6.206748482736934, 6.674088994563185, 7.14409262380892, 4.018659079793537, 6.811019513004521, 8.46067863892549, 6.282515086740059, 6.2891894973864275, 8.051875394046288, 6.540123401061802, 8.299045429269643, 5.628773304417155, 5.006680423268044, 3.12952627965441, 5.082735731191338, 3.0927689064613553, 8.160169691134136, 3.139750783464553, 4.326656799287715, 1.5394777118816734, 2.4065992341297253, 4.025685320897924, 3.2105642066872804, 3.4325091467325883, 2.323581970320401, 2.658972516078638, 2.9483839618930325, 2.3944852472643525, 4.888470153479247, 5.657972214143786, 9.432037602882694, 4.711664884776383, 2.821952885895186, 3.510234246531663, 2.831781883948345, 5.273341276780393, 10.077019421648536, 5.319255088799363, 6.1091973978887815, 6.953019614486784, 3.078826779996369, 5.525649270804433, 5.829456909283412, 6.72809072643706, 6.084505457089467, 4.857530145439913, 3.3224570092817487, 5.269032108517273, 5.016016806802821, 6.9947759663922895, 6.194457762395768, 6.518417142187381, 4.552375174885277, 7.205246613789633, 6.5902689370202765, 7.68042278757606, 5.94906880474468, 8.315618288907405, 8.033863461098186, 7.18573036436063, 4.56976069178593, 6.844074147238704, 7.865288070558247, 5.937466294581018, 8.843920309455935, 8.867189334105202, 6.425424003361265, 7.308461056750108, 6.350254658591165, 8.175628573754587, 7.618052329757706, 7.06415361512903, 8.217701274385966, 7.700054720855206, 7.225201458630906, 5.185276960903963, 7.399544160887267, 6.9378862947155575, 7.106503177198, 4.739318617799643, 7.010604134482509, 8.534533562961816, 6.433356628484393, 8.503196807057403, 8.744933648373848, 6.0248968931424365, 8.360369459658784, 6.298338080296826, 7.387382814436631, 7.681385225998984, 7.768546941135924, 8.33104702324977, 8.610818980090265, 8.696418441763726, 7.171820962702746, 7.99562470417947, 8.187707175527475, 7.788459725269277, 10.049960488679368, 8.544643865287433, 8.774307555721993, 8.954902464976428, 11.180798692701114, 4.358956112759763, 4.865566326020556, 7.604859957940597, 2.0695895669921747, 7.604868998754398, 6.465121236559831, 4.407365169085772, 3.7203898062580265, 5.003147666742311, 2.2932883315611328, 8.184566583538718, 8.658919297511378, 8.765610688306502, 8.886984651481843, 8.492051283286678, 8.292235971902905, 5.580501213125448, 7.406107577444576, 7.8656399068230165, 5.65562477737879, 6.93130383278039, 9.067991818330587, 4.505331480092117, 6.974844951586988, 10.59699670844007, 9.349206408841507, 7.523402325493183, 7.775721860488485], "P2_lo": ["pow", -0.6666666666666666, -17.6766746374216, -13.310644700308274, -12.975132185061028, -13.348794905405732, -12.656292018727473, -16.557456317198156, -15.014044606226381, -11.990704057269301, -12.018169309244694, -17.145694710707982, -13.359838280482961, -14.703031233003257, -14.058811656978193, -14.01282654373637, -13.979674336419468, -13.747872722362143, -13.903487203977377, -13.422384316269994, -13.27701846599847, -13.20333075020731, -13.028321840259641, -13.241101508887212, -11.460503258087318, -10.643742121560196, -10.568426784333758, -10.731521825357628, -12.439841764314636, -12.404194425584398, -12.239537704970248, -12.151152135102555, -12.400287067571497, -12.116521997046414, -12.066850387249177, -11.978371658565598, -11.674689244767375, -15.923021874370338, -14.594838552800702, -11.379093126963308, -11.274993477979724, -11.170893828996139, -14.850804672174771, -17.043027903856927, -10.491785029259052, -10.625687319840427, -10.179545967053638, -10.826486600754196, -16.37987863943109, -16.178456911263716, -14.530024896862232, -14.173111814632799, -14.426045017369328, -14.327189345849094, -13.706955950251274, -17.41121284025549, -13.863745263132365, -13.36384337101003, -13.730391945012382, -13.077147389690086, -12.830630764434238, -14.889001276380466, -16.081004753209, -17.511626603328597, -13.200077690122281, -12.493797328956457, -13.557454200180594, -15.947818469162904, -15.281037497313713, -16.16834053035547, -13.986639224852878, -15.438794055817556, -14.615485729871661, -13.007379547085375, -13.063383604545312, -14.647584682509134, -14.555595978497475], "P3_hi": ["pir", 4.549441102967979, 4.364058208874219, 4.050621587045185, 8.49162110535421, 5.46437220006332, 2.0769965133706805, 2.1113315537552495, 2.2529966098035246, 2.686443480196843, 2.772297588389236, 3.1504287278552994, 3.2877688893935897, 3.493779131701025, 3.5624492124701703, 4.330679233844037, 4.429392474949687, -6.5918771958617555, 5.208688049398106, 0.615327855184276, 4.396966827039755, 6.4482374917528915, 7.1377398446811995, 6.314352218826592, 7.281381040047631, 6.607111593619031, 4.300601747023009, 0.29372842703229907, 8.386527551294272, 8.406068201950593, 2.900352463479603, 2.039270019279158, 5.1974695401142625, 8.302970188486565, 5.066507549395382, 5.667339408176844, 4.294142594118057, 4.871883816486221, 9.168057397467877, 7.168745445815471, 7.292295287325267, 7.795980430430305, 7.973412723717786, 8.547205774166812, -2.9917985754034504, 6.6242977494054465, 7.270194629881974, 5.970784154162562, 7.202301776876784, 11.569701851311589, 7.834600533129333, 5.501032764494585, 7.50312513565099, 9.711865381031018, 9.817375909491474, 6.7186590797935395, 7.091559705657218, 5.670522396093457, 4.792768906461351, 4.236833887942307, 4.310941860096033, 4.562256288376933, 4.76292698383909, 4.84993836082872, 4.934115186955459, 5.021126563945089, 6.407420925064983, 4.526568721683116, 5.7315002160030595, 4.303251925338628, 4.6397241619598475, 7.724467522894578, 4.912147055243043, 4.750574675516923, 4.999036034815418, 5.404501142923586, 3.917648582941819, 3.954919977739049, 4.41573518093038, 4.683999167525062, 4.986280039397993, 4.930450041849092, 6.474559679747173, 4.589811225437252, 7.443433842039088, 8.26159768651489, 0.5842688919021697, 7.861758547715301, 7.928762542772699, 7.933602214641137, 2.728639066381671, 4.1228103939832685, 1.7022126906146866, 4.666350628734417, 4.896609138033821, 3.9151295276860303, 4.007232931405799, 3.2785505296209223, 3.5318348898502663, 3.1706614235585846, 3.400919932857988, 2.239362598963883, 3.484654104984706, 3.530705806844587, 3.760906621238682, 3.8530100249584436, -0.8266665163739546, 3.304552313238542, -5.482124664898286, 3.7223328169226946, 4.5946474528833505], "P3_lo": ["pow", -0.6666666666666666, -15.72168815744957, -12.857208548249538, -12.82498060473614, -13.381137767525878, -14.318204961323577, -14.539605173040457, -14.305807738635025, -12.702653052078826, -17.03054820145006, -15.247161630783545, -15.234000484208597, -14.961087407255327, -14.929911342155574, -14.581301713587212, -14.465949646785543, -14.359683988377007, -14.255506447633817, -15.053061985350496, -15.016020713522611, -11.403915456999888, -13.362844505377588, -14.15109544633227, -14.01222383309797, -12.903973399037099, -12.87024665411676, -14.21491851406066, -14.796499033521673, -13.815248165255525, -16.432186794386666, -16.355036161819502, -16.32239923250648, -16.189441398830862, -11.503302150309104, -10.98858064094389, -10.966295456448893, -10.904137710199041, -13.840370561533591, -13.817847899727427, -18.14690304032693, -17.718753628236787, -10.433695710998116, -10.381771232070747, -12.271747816468622, -12.099949609159736, -12.088319982899332, -17.12707196660403, -17.081349171278486, -14.93820576438947, -14.86112265649703, -14.257834571185064, -16.466912505760497, -16.532952932495956, -15.567907519229324, -12.264876073757488, -14.438744443510458, -17.794674510683198, -15.977408642841821, -15.69254549475072], "P4_hi": ["pir", 0.9701849950654093, 5.640891404309226, 4.64413662106363, 2.871359393056519, 0.9635813801811466, -4.912124013174747, 0.9739800182754124, -7.3625972285245425, -3.5918174920856103, 4.142616360080996, 0.9245490448163949, 2.5259601808608636, 2.697635382783737, 3.234945750340401, 3.5225182207921506, 4.484757727569814, 4.549135928290887, 5.502378994198548, 5.613951368217457, 4.253861930085229, 0.1937777304079873, 4.276972619164752, 3.924769122351215, 5.322124849046272, 5.869550167417351, -3.4878486521575525, 3.3908353783519267, 8.879332628855789, 6.824841681139922, -5.050319923463292, -4.97027721578975, 3.427664408580295, -0.6318114909958652, 1.9322935263160232, 4.089788525678319, 2.880209317388527, -7.5968537820179165, -5.93264714004205, -5.842834640772708, -1.3530465289034623, -6.510664013348361, -5.817516832788414, -4.802370437341857, 3.089058291547655, 6.661690600821029, -0.7835818201823557, 0.4359462240263383, 2.596253045196036, 3.109955594781759, 3.3098813729239076, 0.3395904888985939, 0.7323489457376411, 0.8594659481845, 0.929059239983701, 0.06272485293845165, 1.6721627653725477, 2.460620125736817, 3.058457126492442, 1.5786534860724402, 1.6158324893141938, -0.2960559149261712, 0.9567070535692039, 1.0902384461937231, 1.4957035543018904, 2.0065291780678756, 4.750589816693118, 4.0481501570638905, 4.482909974525068, -2.605504201499535, -2.3541897732186285, -1.5556820770008528, -0.6393913451267039, 1.8455153046612978, -5.611516531764686, -4.641440070529221, 4.145899881238762, 5.011484739545345], "P4_lo": ["pow", -0.6666666666666666, -15.443458360970702, -12.347397096201558, -19.12575593705386, -11.439264768773361, -13.098285247392084, -14.815004888818722, -20.280424919115188, -15.791427531958956, -15.30661053538811, -14.377968972840433, -16.344591040901612, -17.22718008956586, -19.153906027615466, -14.230044484423466, -14.254367927697817, -14.218809473933295, -11.030000829152485, -14.909645172197703, -14.812583459354574, -15.057804774534716, -14.73772259281024, -13.667884774685481, -13.337643087814904, -13.296844272621492, -13.210875426223874, -15.737569074180946, -10.318202274416876, -10.33492883315145, -11.884844922235507, -16.531278285886458, -16.100495369794004, -14.576000643911884, -14.31748994876038, -13.910738666841473, -14.440948538509135, -13.516251593317694, -16.83959348332869, -16.658891204924878, -17.05315072144229, -16.8231660034738, -16.609608765360203, -16.396051527246602, -15.284414775218803, -16.664323083029743, -17.239284877950965, -16.253636086657433, -15.974368929124275, -14.078700134666361, -14.357967292199527, -15.376471043202839, -15.59002828131644, -15.195768764799025, -14.670089409442477, -19.943310442862852, -20.124012721266666, -18.005165573033654, -17.939455653614086, -19.089379243456534, -18.43228004926085, -12.288521198593195, -13.262186774020893, -13.472709060599854, -13.920068919580153, -14.49900520767229, -12.630644078917452, -15.26217266115447, -13.18454580675985, -14.316103097121765, -14.763487120735501, -13.474062280072815, -13.868791567408369, -14.448501123770768, -12.554259672595588, -13.370033533089064, -14.948974847064719, -13.764811149691507, -14.159540437027061, -14.554269724362612], "G1_hi": ["pow", -2.5613655927361205, -15.774235191870776, -14.537125293361306, -14.986001291000477, -14.801338231083548, -15.809132322797087, -16.91725679709083, -18.86420478676453, -13.453521002329115, -15.39549752544502, -19.950410795307675, -15.523443401113347, -16.17297951056405, -16.312228350881366, -19.52566103276578, -20.84833980673526, -19.987996039004173, -11.785955417164983, -15.913733978912646, -17.016793708487455, -24.40315384683843, -23.515041237838737, -22.64875369672564, -18.46485859141042, -13.450522884402764, -15.168772319620361, -16.577996338912463, -16.167086386734944, -16.05622528967973, -16.37187228132317, -15.429321136186278, -13.329085289464045, -9.737104845768345, -9.700115193845154, -15.593731442110174, -16.550913320632056, -14.023464328875862, -15.989881440443336, -19.344677220607124, -13.92093709468508, -14.568522637700683, -13.590055960282514, -15.97965243026619, -14.044580401459887, -13.823550287482242, -21.758385517785314, -16.362702130133457, -20.549905886611675, -19.2605114293227, -17.560511429322705, -15.609231233649657, -16.043293919835286, -16.645774158534774, -14.106600181775129, -17.94904829350763, -17.649048293507633, -17.44904829350763, -16.94904829350763, -16.749048293507627, -15.949048293507628, -15.149048293507631, -14.616652394267138, -20.014250582707962, -16.605443153227924, -17.35632475533435, -16.676468430953086, -14.18577384266881, -18.074925768709257, -16.63812092192881, -20.89727401483651, -20.09727401483651, -19.99727401483651, -19.697274014836513, -18.697274014836513, -18.288285985876094, -15.782311752657789, -13.105333441343696, -17.654582783414057, -19.902915031146136, -20.912073982606266, -19.84287557914445, -19.347087832743, -16.832574574184473, -16.725541849477246, -16.59639906771107, -16.525439817788047, -16.455690620227255, -15.697670649793622, -15.685433742392973, -19.06927968804245, -19.193324470020045, -9.603573453143822, -20.90940806859812, -21.18858821962334, -20.954973368441834, -20.8749306607683, -20.977394683348628, -21.20765319264803, -20.87118095602682, -20.737649563402293, -15.426655121842954, -19.58587866515061, -19.1986476083771, -21.538084489359164, -20.68893306032264, -20.299791783928214, -17.721371663735344, -20.38255088643521, -20.48553974943131, -24.380172391489097, -23.9021365905461, -22.894010030585996, -23.124268539885392, -22.8619042754179, -22.291359416950293, -20.541632618473137, -16.54432533843297, -14.63389522462329, -20.18501590733782, -20.10552183229997, -22.547435041853934, -22.482896520716363, -22.036609418087938, -21.88818941296967, -21.72912471833998, -21.524984114151383, -20.898687557650923, -19.91110634094951], "G1_lo": ["pow", -0.6666666666666666, -14.559056040518058, -15.336720494823727, -14.051313517547337, -16.62546323302669, -23.323162774886683, -19.31929961182294, -16.351815885731497, -23.19254093095687, -22.892328977491474, -21.773668669890817, -21.19800947499932, -19.44302387760672, -16.32835746057897, -25.66189340664735, -23.86483568281509, -23.53725501880308, -17.920327270125807, -20.050038499178044, -19.13128604869923, -17.317218811616257, -17.153135309736825, -16.637655352584723, -15.678768769808197, -19.814703579852207, -16.005871794730446, -16.394885012044966, -16.29822887157867, -15.766723042575137, -17.27987833491521, -16.294513547335352, -16.034209297515957, -16.757494108076802, -22.31449215592714, -16.70253063048998, -22.098473555569214, -21.73675951266263, -18.750866459309538, -16.696264180111974, -21.273816155178064, -19.19461952982335, -17.831926269202782, -15.959903945829286, -16.289722014687637, -13.769672329026239, -17.699777828731662, -21.62371662802893, -19.506507338912776, -13.538467460728864, -12.704294012659362, -17.28049869730563, -16.415766027123045, -13.728341487410868, -15.204604124421596, -14.416146764057327, -14.387029365486597, -15.720600151909832, -16.2736013666704, -16.16931901823292, -16.23700606112809, -14.768845468391996, -17.64930866041167, -17.38242971558965, -16.94156268043057, -18.032823242568156, -15.431666753969603, -17.828772841543106, -16.969669785821065, -13.39655776651784, -12.707032601023293, -17.93730593615227, -18.186652173628474, -17.87019113662665, -17.292840115527376, -25.998628304717613, -26.186256892041605, -25.811563442600196, -15.075726785869088, -21.6355199389884, -22.75470673031733, -21.987451577603665, -21.5819864694955, -21.08554958318161, -11.538114542113027, -14.082069499571727, -14.007505168274733, -13.502779929501807, -17.673006293198917, -18.655085981743817, -17.044050176633462, -17.150845675534065, -15.269435482863543, -14.989133517709387, -14.965337984146949], "G2_hi": ["pow", -5.192851281053363, -8.30988378236929, -9.162133672082959, -12.94601918469779, -12.55297659658818, -10.027247952279929, -9.49661970121776, -10.57620252041347, -10.025536653329869, -2.7461531748403942, -8.877478595947089, -16.08008631049017, -5.27531208067737, -5.387275164326589, -3.344375430680717, -6.459084882456246, -6.447414798395194, -6.359084882456244, -6.339784134202823, -6.259084882456243, -6.1590848824562485, -12.838965926737288, -10.641741349401066, -10.174734527554154, -7.977509950217932, -9.757376334063327, -11.371932178978327, -9.169430544541264, -11.414605262524187, -9.192062877203679, -10.201240972830899, -7.993966059641178, -15.306620842637816, -15.156047984158445, -12.95524558547434, -6.9351318863768086, -6.439344139975361, -9.745961075086097, -7.538686161896379, -6.691388301509175, -6.440073873228268, -12.269802559829674, -10.077218362049951, -5.3694210998498555, -4.86964531227045, -4.436842438837353, -8.421224854293765, -6.609262677748191, -6.2262704254920855, -5.142925608954766, -5.30834022016732, -11.496499449706505, -10.957502948973818, -8.885818896575927, -8.387980468336746, -8.378466751948661, -7.678466751948658, -11.125883632588636, -10.633407147490846, -12.21934402767182, -10.022119450335598, -7.103348217917738, -12.683245236378792, -12.601899943454693, -10.40109754477059, -7.257500127964217, -7.419160310221184, -6.414846470486587, -5.935273390224701, -3.723521464414187, -8.466978207352554, -6.274934988758329, -5.3204230440639755, -9.614763748103783, -7.412262113666717, -6.495971381792565, -8.386026163091987, -7.629266986569899, -11.283042450201428, -7.992093828646176, -6.2669555782433335, -4.998733207753915, -5.8596478299307755, -5.767544426211007, -12.319806101061072, -7.356071629593789, -7.148838971224318, -7.012831259125317, -6.989805408195377, -11.666937441676879, -9.47948160333253, -9.458253811961619, -8.375396474144953, -7.8423008034237505, -7.681119846914168, -9.342502014538201, -13.09913316202638, -6.691158639229052, -3.925337844062984], "G2_lo": ["pow", -0.6666666666666666, -21.828710628421664, -14.644988336486175, -14.069981398230453, -15.715429748187589, -15.367123053919372, -15.160587239004823, -15.10929394461727, -14.942239859954107, -14.833040567989112, -14.644988336486175, -14.562750238249201, -14.28831339254744, -14.089462533802276, -13.711700028243449, -13.125162582741758, -13.064537960925325, -12.853228867258117, -12.76225708905239, -12.60191443897721, -16.04330808591037, -14.28831339254744, -15.668249569412293, -15.633564011424404, -15.55702393430207, -15.243366375447028, -14.890545000824286, -14.812583459354574, -14.589439908040362, -14.197397820264339, -14.170729573182179, -14.132015061001486, -13.365664476418246, -13.308506062578296, -13.107835367116145, -13.020823990126516, -15.321774449690414, -15.15472036502725, -15.045521073062256, -14.423832856484458, -14.136150784032674, -14.043369050581708, -14.018367748376294, -13.625325160266685, -13.165792830888245, -13.01918935669637, -12.93217797970674, -14.86572472814562, -13.890681403867573, -19.211785527009976, -10.996638999989736, -13.46818533062754, -16.198973017771024, -15.793507909662855, -15.005050549298586, -14.740357995071504, -14.476206420029916, -14.358423384373532, -14.197493017560896, -13.559915688155762, -13.063478801841871, -13.020919187423075, -17.462097118323523, -17.347027788538735, -16.79364255035395, -16.781220030355392, -16.484321302798687, -16.388177442245787, -16.165033890931575, -15.928645112867347, -15.828561654310363, -15.262166179389563, -15.2354979323074, -14.17260372624137, -14.08559234925174, -13.93144166942448, -13.862448797937528, -17.07880433556745, -15.16507522601646, -14.247222523566485, -13.997480889690763, -17.376876740775174, -15.204604124421596, -15.802441125177218, -17.978945974314833, -17.570380347145413, -17.552357393227535, -17.115119075014405, -16.44811998751672, -16.112279898638647, -11.883951432222059, -11.459743481522635, -20.097019291538672, -19.279500574313698, -16.637117530483692, -16.345144848722096, -16.23526395322085, -18.17731054704565, -18.85813785740724, -18.540839481279374, -25.140401657738565, -22.556553976186017, -11.504520143504092, -15.892485895003972, -21.175669185027832, -18.37024061368365, -16.023207285239923, -14.799082684235916], "None_hi": ["pow", -0.6, -8.600721103050565, -8.620519560551742, -8.645125984596751, -8.79628027312896, -8.586480336300855, -8.584659622393898, -8.79934266878208, -8.610673673557304, -8.505606883886376, -8.635620958041649, -8.39974271366038, -8.06173692416405, -8.502705216062544, -8.598185321808485, -8.458387426068077, -8.362662222393924, -8.35439771254403, -8.266259875973192, -8.344932944107125, -8.305434810350656, -8.584806113016523, -8.841043266879321, -8.65946280245499, -8.50609608346789, -7.980396923123506, -8.80543567453492, -8.460976247416342, -8.389394838109896, -8.516223800325054, -7.923792321727381, -8.466819243087992, -8.677407118753987, -8.13733632795244, -8.12291795252817, -8.960675936168357, -8.308973746133397, -8.310343139498517, -8.46809705132185, -8.286288475074414, -8.087837536350577, -7.950061812557169, -8.521149884416358, -8.121712299490838, -8.348352038555598, -8.668031630762192, -8.632891578284744, -8.720623634037464, -8.368343037972155, -8.315776332007374, -8.388380639337436, -8.499802133427618, -8.470008257655657, -8.785096799107958, -8.513596557107963, -8.504669876781826, -8.13270100921667, -8.640196961852265, -8.636649159960566, -8.640626100834645, -8.615047815969609, -8.8204528110913, -8.748429494647473, -8.643861754816792, -8.42221109703559, -8.90586269537075, -8.769776071764392, -8.713765820183955, -8.57883306805488, -8.60677987888404, -8.665029249663036, -8.710672073268924, -8.675905308626177, -8.673762951616098, -8.56728113326632, -8.539525105936823, -8.408061356113265, -8.63943684764641, -8.239718399837498, -8.659108766488576, -8.432335447123787, -8.399990074778712, -8.605193580355486, -8.627427743333723, -8.860512709976366, -8.674691177349253, -8.5634028447884, -8.756532674028257, -8.612917108142202, -8.89469727571521, -8.467525575324533, -8.673128439985067, -8.549732551297407, -8.64657178183816, -7.971701945268629, -8.66852500061989, -8.467865856746345, -8.620322088506073, -8.627294832896105, -8.625763343387232, -8.510699998614099, -8.175419363515086, -8.743695511712373, -8.695488476334036, -8.673176512599632, -8.536588235915845, -8.60603796486083, -8.367574903139868, -8.51299741990497, -8.335016807130161, -8.528642805652327, -8.620624254290302, -8.512219105167578, -8.496365288554191, -8.64633438805555, -8.542988567160155, -9.742374260778726, -8.483001800398128, -7.683532370944743, -9.731279701709155, -9.482818342410654, -9.38750816260633, -9.146346105789442, -9.262879922045395, -9.250120578291634, -9.503021049728174, -9.31561042342675, -9.160734843241542, -8.976000740042203, -8.469718728706535, -8.630789397472391, -8.495671072455476, -8.493518005227127, -8.545454606844249, -7.944079423100636, -7.77702533843747, -8.57323589630671, -8.548852089992046, -8.873667314801077, -9.293876781322428, -9.17481742130644, -8.993346566392798, -8.959870637196408, -9.069970708222426, -8.178751581159284, -8.643634041702162, -8.488950099458748, -8.335051741927435, -8.501473801265169, -8.484999090342583, -8.483155962868787, -8.607998481729773, -8.672600367140362, -8.799603012029205, -8.701541798852993, -9.255115941188635, -8.673711880918075, -8.189566079841743, -8.532885934864884, -8.531590261095305, -8.563504419952412, -8.617489157457829, -8.439924192962973, -8.574287087545756, -8.579343351087068, -8.203515142960429, -8.499748804954034, -8.585495652906024], "None_lo": ["pow", -0.6, -8.600721103050565, -8.620519560551742, -8.645125984596751, -8.79628027312896, -8.586480336300855, -8.584659622393898, -8.79934266878208, -8.610673673557304, -8.505606883886376, -8.635620958041649, -8.39974271366038, -8.06173692416405, -8.502705216062544, -8.598185321808485, -8.458387426068077, -8.362662222393924, -8.35439771254403, -8.266259875973192, -8.344932944107125, -8.305434810350656, -8.584806113016523, -8.841043266879321, -8.65946280245499, -8.50609608346789, -7.980396923123506, -8.80543567453492, -8.460976247416342, -8.389394838109896, -8.516223800325054, -7.923792321727381, -8.466819243087992, -8.677407118753987, -8.13733632795244, -8.12291795252817, -8.960675936168357, -8.308973746133397, -8.310343139498517, -8.46809705132185, -8.286288475074414, -8.087837536350577, -7.950061812557169, -8.521149884416358, -8.121712299490838, -8.348352038555598, -8.668031630762192, -8.632891578284744, -8.720623634037464, -8.368343037972155, -8.315776332007374, -8.388380639337436, -8.499802133427618, -8.470008257655657, -8.785096799107958, -8.513596557107963, -8.504669876781826, -8.13270100921667, -8.640196961852265, -8.636649159960566, -8.640626100834645, -8.615047815969609, -8.8204528110913, -8.748429494647473, -8.643861754816792, -8.42221109703559, -8.90586269537075, -8.769776071764392, -8.713765820183955, -8.57883306805488, -8.60677987888404, -8.665029249663036, -8.710672073268924, -8.675905308626177, -8.673762951616098, -8.56728113326632, -8.539525105936823, -8.408061356113265, -8.63943684764641, -8.239718399837498, -8.659108766488576, -8.432335447123787, -8.399990074778712, -8.605193580355486, -8.627427743333723, -8.860512709976366, -8.674691177349253, -8.5634028447884, -8.756532674028257, -8.612917108142202, -8.89469727571521, -8.467525575324533, -8.673128439985067, -8.549732551297407, -8.64657178183816, -7.971701945268629, -8.66852500061989, -8.467865856746345, -8.620322088506073, -8.627294832896105, -8.625763343387232, -8.510699998614099, -8.175419363515086, -8.743695511712373, -8.695488476334036, -8.673176512599632, -8.536588235915845, -8.60603796486083, -8.367574903139868, -8.51299741990497, -8.335016807130161, -8.528642805652327, -8.620624254290302, -8.512219105167578, -8.496365288554191, -8.64633438805555, -8.542988567160155, -9.742374260778726, -8.483001800398128, -7.683532370944743, -9.731279701709155, -9.482818342410654, -9.38750816260633, -9.146346105789442, -9.262879922045395, -9.250120578291634, -9.503021049728174, -9.31561042342675, -9.160734843241542, -8.976000740042203, -8.469718728706535, -8.630789397472391, -8.495671072455476, -8.493518005227127, -8.545454606844249, -7.944079423100636, -7.77702533843747, -8.57323589630671, -8.548852089992046, -8.873667314801077, -9.293876781322428, -9.17481742130644, -8.993346566392798, -8.959870637196408, -9.069970708222426, -8.178751581159284, -8.643634041702162, -8.488950099458748, -8.335051741927435, -8.501473801265169, -8.484999090342583, -8.483155962868787, -8.607998481729773, -8.672600367140362, -8.799603012029205, -8.701541798852993, -9.255115941188635, -8.673711880918075, -8.189566079841743, -8.532885934864884, -8.531590261095305, -8.563504419952412, -8.617489157457829, -8.439924192962973, -8.574287087545756, -8.579343351087068, -8.203515142960429, -8.499748804954034, -8.585495652906024]}
data/param_distribution_50.json ADDED
@@ -0,0 +1 @@
 
 
1
+ {"R1_hi": ["pow", -1.6262316789438618, -5.50185410338233, -5.551506081306524, -5.640166932367276, -5.0774720330797845, -4.8465333971262865, -7.306914804413413, -6.551608295949734, -5.31916784160199, -5.2102227021918175, -5.013306057379731, -7.0922522577744616, -5.91857723636671, -5.1341615045459275, -4.855520139300957, -4.838199101387842, -6.870493374411286, -5.520985345829364, -5.505923052233272, -5.386098277027242, -5.354041598337607, -5.085701831388277, -4.689651950926169, -4.623208100695711, -4.066798931985653, -5.260392007120365, -5.19391342320939, -5.125967565987341, -5.0590628287516095, -4.932396995616217, -4.895922347801624, -4.82870981800471, -4.9072533887357945, -4.602954698099427, -4.4908544288401275, -5.497071122681117, -4.844230857942064, -4.765058279916984, -4.15218235313127, -5.452178448601278, -5.351226290108451, -5.247314199936507, -5.178290890942839, -5.126340700502047, -4.995716042532128, -4.942732004984044, -4.9193966605470605, -4.902494480504807, -4.884731588016332, -4.7316504758321924, -4.597259200352506, -4.7773612562390575, -4.619309244720295, -4.597270554973395, -3.690540460864307, -3.956582223951986, -4.349337533455889, -4.900640612377033, -4.392013166495038, -5.00311821868926, -4.558493574576041, -6.4172088816739, -4.465150394483604, -4.388983053975519, -5.007611604833761], "R1_lo": ["pow", -0.6666666666666666, -9.354219240344637, -10.034735047203085, -8.886910933861714, -9.778425944756851, -11.917549913250246, -9.150164778152224, -9.98479500985561, -11.16473105142342, -8.999650038231117, -8.45369159870999, -7.601430807442367, -9.04439626164664, -7.15701600090834, -10.761186951897901, -10.295734963636324, -9.189154867046767, -9.09590436554236, -7.389281781124428, -8.702775525732017, -7.285553918890487, -9.630383485949146, -8.66949194704732, -7.7291576451378985, -10.765235469715616, -9.55341261158648, -7.922731054562891, -7.81050328459185, -7.65393422390031], "R2_hi": ["pir", 9.977546350668533, 9.825606922020484, 11.449240739008165, 12.542278871371657, 10.168871860281183, 9.820804292080958, 11.728829649860302, 11.377107065350781, 10.090658938470732, 11.637789282982059, 11.947717711060587, 11.055996369508293, 9.60081298030056, 12.287278139270747, 12.03937021620369, 11.832482866326604, 11.138108982811875, 11.374995686140377, 11.897826765214774, 11.096918822893553, 11.621330632168704, 10.11609027417412, 10.979484139661025, 9.519503522062116, 12.041574389694507, 13.314640414096594, 12.03492228462392, 13.378584608348678, 10.354373564549814, 11.616212613630253, 12.32750505834181, 13.093819818513001, 12.076426678942955, 13.254373944845565, 13.181714815581287, 12.007355669304442, 13.292893602514287, 11.55431949057849, 12.735914404096171, 10.148860697751836, 12.274479550923552, 13.389135396548824, 10.203434593165063, 11.102711205092213, 10.590178097545774, 11.367195481341653, 12.234847528633292, 11.610686048479824, 13.02756290511249, 10.945791567043877, 11.133720046210158, 9.744490512781208, 12.037437278097684, 12.51945891065294, 11.89207391445974, 12.21410870792479, 12.001944213346057, 13.269889304075441, 12.105081396645748, 13.181027947609529, 12.253918528372122, 12.179648860983058, 13.188833197015068, 12.441926885456596, 12.550596359621721, 10.454859188402892, 11.679855357643383, 11.45608330362538, 12.071378313085152, 11.454274667278625, 13.093394276297808, 13.117900462197927, 10.821549551860201, 11.432057527187705, 8.88813025199575, 10.823803782948886, 11.257674132046137, 11.54842099149026, 11.134678520350402, 11.461972448572183, 12.020005897977967, 11.61735228568135, 8.480928445712287, 11.534463427331758, 11.749435322980109, 10.868183711037165, 11.36424253249713, 8.582453393128848, 11.368456299365768, 11.510531807863, 11.530312523556102, 11.807351543170377, 10.842636622147214, 10.259671298359851, 10.739550063479566, 8.804061659144736, 8.889110616034113, 11.318904435828419, 10.273801676984704, 10.936638365507061, 11.17775682441205, 10.681524997506237, 8.7542792319571, 11.531706810610569, 11.144621928923886, 8.994447392856188, 10.518197278467785, 11.755249295613446, 10.853087083221016, 10.602382323339583, 10.406555786121675, 8.33055220385856, 11.69691336156978, 12.01265749158787, 9.462241857885193, 12.090665317896875, 10.617861135899318, 10.699378187633652, 12.144482780582972, 11.27995841243671, 12.3401859659199, 10.847211952224232, 11.089547724526021, 8.122930482924879, 11.387279674981038, 8.415421678355315, 10.774738973746281, 9.489446903704302, 11.808487643540658, 12.115776308878107, 12.323512062046436, 12.72937913401011, 11.60117924879539, 11.260609583674544, 9.985335683194869, 11.440496487529607, 11.940463212576276, 11.40776924708339, 9.798730355879133, 9.934075720353121, 10.284646051831764, 11.66123027959426, 11.931536564746317, 12.082802603612013, 10.111637134449612, 10.441154254794167, 12.30352909464381, 12.619144419911969, 10.858661415499455, 10.369946830227835, 11.033567030335892, 11.29683980373019, 10.743206912718932, 11.472136185601965, 10.974806122442182, 10.67620539672351, 10.70210436148436, 11.30175720482736, 10.996040416768416, 11.28484762435119, 12.094192228818876, 10.056032774808578, 11.102064661412754, 10.997808186685749, 9.889611058346166, 11.844281845347211, 12.468272282864685, 11.987481993234152, 10.641370392730607, 10.48482045838428, 10.775943707766725, 11.985330666518696, 9.02419133039993, 11.8055876957612, 10.390682329227868, 11.487516841656824, 12.722262976223305, 9.857759374873744, 11.471974838288443, 8.784219875814799, 11.298461749602456, 12.111767837006017, 12.026927567051334, 11.365344422652893, 11.759394555577558, 12.009129683496113, 11.960311751509025, 11.808671043600146, 12.165460276638825, 10.749242138454534, 11.910992413136963, 10.889989222651042, 11.781263658021569, 12.420193595967078, 11.702401747870834, 11.373409817163093, 11.109871814535623, 10.588031568924873, 12.285887122767122, 12.62185926230585, 12.267383541147286, 11.758551668215908, 12.051980842072748, 12.01199445749565, 12.152404389902447, 12.177922332467784, 12.724004937839148, 11.45725745394462, 11.83438825833376, 11.59321007604255, 11.851245165531594, 13.122085584424887, 11.43497515583526, 11.821257411183112, 16.022658592468222, 16.213378711761596, 8.743716597394869, 11.30084412774535, 9.559447944852963, 9.601699551992088, 11.687078983553448, 12.309097496614445, 9.398883748577113, 10.9625230511806, 11.263569432677553, 9.244250828676225, 9.354403275909597, 11.107419273629137, 11.927099060804796, 11.993794628959488, 10.210982865389639, 10.318408019034074, 11.415738986924747, 11.33154139813993, 11.456917628546044, 10.07256393387004, 10.136841057226746, 10.845814973555893, 10.585154000607172, 10.622698884421009, 9.843718073077781, 9.901647812922342, 10.035167710517953, 11.26843456735222, 11.362816208983158, 10.528011681320141, 10.551306904732513, 11.46562570879783, 11.565049555402137, 11.1790209787648, 11.288863081303191, 11.082609058751896, 11.090154979091558, 9.117040126424275, 9.227755308468272, 11.03477497372566, 11.365404980814684, 12.13524928147568, 12.227501564046637, 11.177523644272686, 11.399974057725625, 11.718385191521438, 11.667430058867552, 11.249660023653437, 11.78155877904786, 11.665875081017955, 11.619324265218111, 11.819456322574997, 12.498397938689852, 12.729080567177224, 11.854941055506544, 12.48571704886444, 10.995814729902374, 11.848259804735918, 10.829147848748743, 11.608165285056291, 10.958414767177832, 11.642737278310953, 12.312792756295273, 11.231296431372577, 11.328349099599748, 11.209601139875481, 10.168287256147092, 12.119995114276989, 12.529058861636923, 12.370564410733348, 11.686675313438652, 11.831363565847948, 11.738197859217518, 12.519435933974783, 10.852737119888097, 11.992350484522404, 11.326920113572715, 11.778566155544812, 13.067337290998065, 11.024559058875482, 11.724489607329048, 8.714179388833315, 11.670548717643882, 10.943198997629711, 11.919062232147446, 12.289773873351137, 11.247913313527754, 10.638428452281548, 10.57602079708516, 10.807934444028433, 11.615826040210791, 12.314154830841211, 12.204600532297437, 10.533833719081695, 11.126528850610821, 11.605702693200733, 11.144172331748386, 11.416310897077576, 12.138639150176491, 10.780000379703797, 11.47113434765529, 11.621694569059137, 9.980872705567482, 11.283859828234217, 12.459493758802438, 11.318083382393809, 9.743873809463743, 10.030888357337943, -0.08990651476169376, 1.3632960735772777, 2.3976195005817296, 5.522689006566512, 6.118145699007176, 8.125043186626439, 8.415572042079205, 8.815052207663307, 8.111823448333446, 9.442267440273401, 10.517777546448166, 9.00108871491669, 9.382864997582011, 9.756816630303838, 11.709156607475343, 11.938759380698585, 11.969563822851637, 6.172673634192563, 2.343508978339244, 7.881163194512613, 9.54246031871584, 10.537270134573731, 11.003911349578672, -0.2118996908717108, 2.6288645539436253, 1.2769126062243146, 1.8562850622937823, 1.382471011926178, 8.559715967274748, 10.075221097000004, 10.872742167521114, 11.449817038420779, 1.943767903608908, 1.76669871938077, 9.596938859918183, 11.311793315098313, 12.216191995127353, 12.448871884594219, 13.584525444942678, 13.718520726229457, 13.999821154345476, -0.7379277734486109, 2.9804217692258668, 1.5772298275177477, -0.7622196084187962, 2.361047952232177, 2.6475031269460203, 3.389960928095462, 4.169919033221049, 5.59875975434263, 8.129332088809612, -0.8505474586704267, 9.599622037459845, 11.362490847493039, 12.128827472821648, 12.542053222153648, 9.19485899806785, -0.47045043549386634, 0.30721254040673784, 9.648942731392275, 10.705688414718654, 11.424441285464852, 6.33337345035072, 8.089139316930872, 9.26335434634193, -1.2741437163267904], "R2_lo": ["pow", -0.6666666666666666, -12.203672829339233, -11.9080523146687, -11.156623185104687, -10.999020209971198, -9.421904654304058, -13.69973467505017, -13.250244777949602, -12.81197776023566, -11.960862672314395, -11.555190988649208, -10.946736704924227, -12.60702975802759, -12.682310742224335, -11.948387180097033, -11.622451143670627, -11.156045053752237, -13.04433314299327, -11.432959674168542, -11.147521170234182, -10.68283053504472, -7.471904041709303, -12.533438788164542, -10.103637790877658, -9.794564897077029, -9.750889833574368, -9.60071252681218, -11.467792582275777, -11.085630855232889, -10.942109832981002, -10.675716081636791, -10.28882414863481, -9.468052662460138, -9.840609119158067, -10.559034681273712, -10.210166647448876, -9.674960593351026, -10.4216054295527, -9.386883166992572, -9.463915338434177, -11.351652525661798, -11.675756364415577, -11.243047867195793, -11.151756648255198, -11.674172599068543, -11.400722088989452, -10.199406827495238, -9.999000918911602, -11.161817563603512, -10.587893407448412, -10.391233689358458, -11.093410527030699, -10.87177824335998, -10.10812973732861, -9.911470019238658, -10.890576877837052, -11.380549265430393, -11.41139595812238, -11.161044918377215, -9.31944503397474, -10.508548546971419, -10.32624820691869, -11.158781234234329, -10.945889042860308, -10.21143977204528, -10.016653149202169, -9.533244280602666, -9.155674886211145, -10.4675199067802, -10.372555373946817, -10.01191984817925, -6.462900630042536, -9.532044734199141, -9.365348745492724, -10.961500175715395, -10.571772737870216, -10.232756813679147, -9.94338613275872, -5.951721959050428, -11.718432160620447, -8.675713572170825, -14.590561742912888, -10.538832960609353, -15.17412530305922, -14.603115544536742, -13.897956207528797], "P1_hi": ["pir", 9.368112487827023, 8.89581321704765, 9.041628056511964, 9.804365694619314, 3.9686007893015898, 7.957906226959334, 9.7476745682665, 7.36877294295649, 10.253572749396778, 11.207784675535073, 8.113611526803318, 10.668858766708432, 12.256926571585929, 9.473965825798242, 9.678712005515571, 7.3698690065580195, 9.254420032481665, 9.216657871713728, 7.805731593269023, 9.651802486794423, 8.09327434866378, 9.042198558265593, 8.677094597178577, 11.244388659265518, 11.292578947737809, 6.919172624411324, 9.925173619682422, 9.942911973600932, 10.864911959051689, 8.938970894078349, 9.443547374780575, 9.99654792359728, 10.616267635602409, 11.988545671489732, 8.51251317980278, 9.10107601865574, 9.546462855747336, 9.12860291015199, 9.16187903128527, 11.1734477750886, 10.400935932834148, 10.83893764490568, 11.04412547864483, 12.43569172541072, 9.185913704611092, 8.56371941430799, 9.348338245660624, 9.891136290828833, 10.172182328329196, 11.494029341002719, 10.27559679299798, 7.86914143116266, 8.366389519798712, -0.3869186686785042, 8.646912448833067, 9.253621369953098, 10.124028888606166, 10.172202045891854, 11.069830888030676, 8.470974109443269, 9.97182467193516, 9.050325801392074, 8.92441729717578, 9.019812006675842, 10.363838252319923, 9.54866152760938, 8.82296655794169, 9.519951547703066, 8.653136752759693, 8.997037581757326, 10.577487957318176, 9.205776218793812, 11.537533397782482, 6.947095770923806, 10.845119376136552, 5.344805798401261, 5.836466257702689, 11.247015293184067, 11.585998344031466, 10.97368457303088, 10.1128543147099, 10.171217704218446, 10.014856497460798, 10.514823612419072, 9.348894445706005, 11.27990205166055, 8.255099710032944, 10.118268434126428, 8.726726017297054, 9.095820191919739, 9.239462894148584, 9.314073757939756, 9.339881641895627, 9.70705585633413, 9.209849173861173, 9.495512969498257, 11.057779106335332, 8.88098001822727, 9.349057465237827, 10.538815070641949, 10.283567416601816, 10.433055401685916, 9.863365662533543, 10.630085425164214, 8.107239419967907, 11.143326763278417, 11.884979176883917, 10.601204992810409, 10.903278760080216, 7.817589107544329, 10.25588210178097, 9.858568745159545, 8.40802027944952, 11.726716439599933, 9.214594645460501, 10.538815070641949, 10.085514307909609, 10.98269353163441, 9.55278196208102, 10.807872463371801, 10.719264173770021, 10.899537694853432, 9.91087695400591, 10.58231524573317, 8.864944877300402, 9.437351486131579, 10.686953988198503, 10.783549776159127, 10.487940433546235, 9.990305253141557, 10.125698101138365, 10.428193397353496, 11.078804441787447, 11.158007006623915, 12.473348921308823, 10.409716258781884, 9.021155978170967, 10.153067390862773, 10.366478520907588, 9.769125270872703, 10.217690891934954, 11.128086396186134, 10.722146776742683, 11.38324962639081, 11.816973638931032, 13.220355487616427, 10.487484596935513, 10.974459611985122, 10.179226477756448, 8.949121444884234, 9.070055699745986, 10.807872463371801, 11.191576922722458, 11.13310346482492, 9.987232262584882, 11.590208693081255, 9.154952718919631, 9.63423972188459, 11.802702053139097, 10.746966555780933, 8.37904009996273, 10.051956832341094, 9.624970543519709, 11.77295015210861, 9.193589955035744, 10.064792264216894, 9.667490767945594, 8.851756922590607, 9.056710011003869, 9.891305389160639, 11.325126897738041, 11.651339005934943, 11.305715695843805, 9.235183972694355, 11.12495759116674, 10.654885505080568, 8.89060406843101, 9.491906057027936, 11.07536840799516, 10.315710928735747, 6.793260676385913, 6.8334295607250795, 7.354374853294033], "P1_lo": ["pow", -0.6666666666666666, -9.63277054179795, -9.39569241501443, -9.110176338387983, -10.551017502185857, -10.527600523222961, -10.264359721871756, -14.560520591137546, -9.865624438593871, -9.607131630968365, -9.201763483034828, -10.148284691680283, -10.110858278853641, -9.732723741383335, -13.784347759228293, -12.992515290571248, -11.77961347670889, -12.65194797994475, -11.08015671786466, -11.440453909436258, -12.055669002888795, -11.116060895869524, -12.054808398327609, -11.028074769213127, -12.832212335887055, -12.85647421956627, -12.819457569110202, -12.73797821030722, -12.694372556338143, -12.563385274633395, -12.23963907385726, -11.769635444611525, -12.260257203194497, -11.15152734060343, -12.543178317436993, -11.432252497145718, -10.203502069350304, -11.455964952124786, -12.286853012553724, -11.499228660409944, -14.113160411799974, -12.717948174523013, -12.205489750381581, -12.015156850471968, -11.930581864588035, -11.059973149079843, -13.980390775517087, -12.460649303122072, -13.23440166592998, -12.551704834103873, -11.131246552687664, -10.997556813854562, -10.92118198138538, -10.244426682565074, -12.684595341643334, -11.535385451621167, -11.26488504401097, -10.675120579316033, -12.702947036150395, -11.955230890115665, -14.156223781335852, -13.948832326807986, -13.580302493990608, -12.320997644333515, -12.163963704803882, -11.869138256982293, -11.113846920146921, -10.801141429594919, -12.31081693370561, -12.197292710374537, -10.522410749329103, -10.37010671390066, -10.152853105373767, -9.990812508515987, -13.475914089264577, -12.954624676541929, -9.713938683362894, -9.727256924111206], "P2_hi": ["pir", 7.278272966438312, 5.583642505571657, 4.841853899413831, 8.614906605660966, 9.703213538305391, 7.408150637295979, 9.127981789385618, 6.792377769018884, 7.906664988334967, 6.87882841536825, 9.560136124058342, 7.283598806792671, 10.358855275271896, 8.901350171582411, 7.88912344671774, 6.996176626065733, 4.416293663879419, 8.106732409553114, 7.712005820733943, 5.421320220696199, 2.811732599758937, 5.33905706023663, 5.137415081178403, 4.590384878045498, 6.500724459951719, 2.5211482667686766, 2.9023060622014896, 3.0949108898993813, 2.4084317546018426, 2.6382121748290572, 3.4136137320143547, 3.6029824698159345, 3.751021379801692, 3.9457217712064505, 4.131502242832646, 4.569044961001055, 4.596832012513062, 4.86143243079016, 4.953735594281326, 5.524942521307537, 5.820845736018185, 5.870452549519406, 6.618430736316327, 7.249387196735249, 7.893338889049922, 8.449455642285315, 9.043367483024909, 4.419194396300977, 4.821500707636574, 6.393617225541572, 6.187225192141369, 7.444192881922405, 3.177224932429535, 10.817099337595394, 2.853512495126644, 4.051469379892232, 8.738520150825604, 1.6523250960776856, 1.8971521887193639, 2.805040089380743, 3.6785910866572102, 3.8618172821914563, 4.001005442816979, 4.1115770908738405, 4.137389756438356, 4.580386249833868, 5.6653485963051615, 6.70465746576448, 5.124109502765755, 6.666647666965183, 6.839183380167231, 6.376977185218152, 3.3473867902977474, 7.80627223280813, 4.6783048411162795, 5.205507120817458, 6.770148457783691, 6.796384619056958, 6.245263494161396, 8.124822642979375, 5.717563048108861, -0.885987297044359, 8.437790943812832, 5.799772196576406, 4.600886986628812, 3.9678543570602436, 6.880772762779944, 5.283987896717164, 7.032131278275234, 7.954721781540062, 7.048531528127661, 5.173073202616177, 5.182867833299898, 6.941476440673075, 5.529908169852728, 3.7254801634294346, 2.9244128553699476, 7.187977980985085, 8.180967148329309, 8.297396364035446, 8.408508627091067, 6.318222090637153, 8.33740894582651, 6.570654107863032, 9.862340463416817, 8.61209569576183], "P2_lo": ["pow", -0.6666666666666666, -12.58506630287015, -12.404160848258428, -12.748182980080593, -12.11496127044741, -11.59836586500137, -11.648917020456867, -15.089943709466777, -12.57670273109797, -13.866854630472668, -13.11255149971803, -12.464206083401706, -10.352434298464097, -11.871436567090397, -15.03688082774281, -15.491695441606963, -12.844952697825153, -13.60345931537168, -13.105796037855574, -13.037244764452439, -12.526419140686446, -12.241585009971896, -14.118485052740876, -12.587008681776489, -14.249352986540924, -12.753908831309321, -11.945458720605863, -13.091004938694315, -15.033640317888796, -14.870749350922774, -13.343133495766098], "P3_hi": ["pir", 5.007161049498308, 4.766971446853848, 4.378260394907155, 4.905613859155629, 1.3798324683535554, 6.236114228293992, 5.725974080860897, 2.919194396300977, 6.257028894089952, 6.775912329352174, 6.792532177414376, 0.8182085201463707, 8.00180752745031, 8.075768511454388, 4.961428017709011, 5.217361391846211, 2.621943136867536, 8.14022778375329, 4.743573227174878, 5.139333633289201, 9.069626911775039, 7.690993576124093, 8.169025646056674, 8.170273969033143, -2.757734007466972, 5.880021747707925, 7.207819902146209, 7.3432293402059265, 7.5630502923216305, 7.981936145239818, 8.585456956684059, 5.9075993523819825, 9.445115267839007, 9.832281450960185, 4.313266828331553, 6.381279674187766, 5.155358236771772, 5.42372312769675, 6.913262493899381, 7.604766770354967, 1.6918792324258867, 7.053649231759369, 2.0821981541985615, 2.4027482071534436, -0.3244728488051791, 3.5499907890532256, 3.9322743294510474, 3.237391885121447], "P3_lo": ["pow", -0.6666666666666666, -14.834030532748255, -12.30183752119564, -12.270171188933475, -12.793692503734817, -13.580634796785912, -13.587746131643506, -13.567913087521276, -12.128561653326484, -15.975385378535051, -14.416657440820742, -14.411195904444902, -14.177581053263395, -14.141043814981224, -14.114015142298303, -13.746120383451913, -13.666755429497407, -13.491399835661214, -13.443611878183196, -13.261290321389241, -13.848900308440651, -14.237165785640691, -14.20012451366534, -11.038868208880189, -12.788753106625245, -13.478354386042234, -13.472481972263601, -12.296946626453005, -12.263394604892136, -13.623360047882759, -10.692547675823647, -17.075047578991544, -16.619982460093482, -10.299238653021085, -11.83766375766473, -16.570498999039742, -14.273259157034952, -13.384348126616775, -14.795411944817351], "P4_hi": ["pir", -3.6315687562696226, -5.075457112464214, -4.834955397579378, -3.8992509353488387, -2.544648204074065, 4.319313750480628, 8.229181372301337, 6.448909276554005, -0.9213093437355653, 1.2389974774341326, 1.7527000270198556], "P4_lo": ["pow", -0.6666666666666666, -11.837266967418902, -11.09293789235211, -12.634956047855546, -15.160794870954248, -14.9046737777287, -13.92737902967985, -15.80404151394386, -17.440746125456986, -13.756461635998878, -13.676146632837384, -10.6515339935846, -14.390177093499776, -13.969885452715829, -12.839280272324338, -12.715520686548427, -15.308984838439617, -10.086468435178686, -9.534753946922752, -13.787274682337403, -13.632075227976246, -12.947559353656029, -19.943310442862852, -20.124012721266666, -12.554259672595588, -13.370033533089064, -14.948974847064719, -13.764811149691507, -14.159540437027061, -14.554269724362612, -13.055530828793245, -13.476599566584614, -13.713437138985945, -14.214563307382925, -14.477716165606626, -12.214625749516237, -12.609355036851792, -13.083030181654454, -13.504074754812379], "G1_hi": ["pow", -4.06903110031264, -10.34773375991358, -6.2878889964560365, -11.796060385646555, -11.424500242777004, -10.270616330075306, -5.2714700041988465, -4.065154225860205, -5.531766059799143, -9.824687097180927, -15.341159987786842, -12.323765902698714, -9.419888782474626, -11.30228440173148, -7.066302902386351, -6.8838359302061285, -8.2036055259459, -7.106426590665578, -8.548012534960154, -7.016093085562996, -7.83756548590469, -5.975283197745451, -6.908061732982304, -11.454542381136832, -9.552269153013246, -8.522188532968979, -8.15970413250491, -6.80160623792808, -9.365797811750568, -9.911597540422992, -9.21159754042299, -8.911597540422992, -8.411597540422992, -7.911597540422992, -9.882256324952387, -7.740000497965461, -7.474701214312564, -6.974701214312564, -9.283298991437544, -8.216417898631963, -10.598913192553539, -11.544330315019565, -9.465861943957272, -9.707770243693382, -7.616053395971154, -4.167129435818428, -9.498761469614784, -9.45881760348314, -9.372308360573857, -9.260065505293088, -9.218947258363617, -9.07363716654648, -8.353513889097915, -8.341276981697266, -1.5779563065409512, -1.816882543012401, -0.8831734926472237, -8.580508298507942, -10.831932702566856, -10.478922347780003, -12.575922278003048, -8.262473785197628, -6.440948750248971, -12.693160514168564, -12.161384583878498, -12.806757513213423, -11.93520741217418], "G1_lo": ["pow", -0.6666666666666666, -14.114360085424003, -14.67717882234837, -13.436083160628156, -15.912978996122945, -22.738094285760216, -22.785556867853156, -19.178006262158775, -15.667288528232469, -22.46464009453732, -25.818060404230664, -22.282814553982902, -20.476400458884285, -19.18705349570882, -15.793999065388157, -24.76104069750174, -23.436119539273434, -19.71208673935386, -18.656904008613086, -16.633036787755895, -16.15155201466665, -19.635399290922866, -15.770833594517423, -17.070260099202876, -16.891117809470675, -14.69342883201887, -15.411071502582843, -18.301672220265488, -15.395925982889285, -15.379707112387017, -13.306782400954603, -17.170804413595036, -18.92625637306329, -13.100244615714045, -12.22627109710948, -15.772885092531046, -16.198935442607258, -13.344737121688407, -15.267092689037554, -15.751025366413188, -14.328917769408749, -17.42327752860827, -15.762480495372824, -12.902706941009498, -12.215622843939084, -15.947961360735142, -14.223949873589794, -11.215188130314834, -13.524672025347526, -12.964569243171486, -17.19988814554771, -16.391830048206614, -14.313245036651079], "G2_hi": ["pow", -5.839544516115287, -0.2658952466153792, -4.413457938820287, -3.923432393539528, -6.238361619299116, -5.748301999507181, -5.490762946050403, -5.000737400769644, -1.7217911656133822, -11.928104401494934, -1.8322035512890835, -7.95241872288965, -5.755838084039045, -6.016516641940758, -3.809833584723197, -4.582474565736234, -6.382055079378183, -4.183443823337257, -6.393489908417486, -4.185976946053344, -6.386335022313677, -4.187264091694217, -10.599459648899664, -9.472075223338845, -8.400501519412604, -3.3921539300295933, -5.508255575548354, -3.304766280528689, -7.352678689412208, -5.15770250269663, 0.45127620245418143, -0.34411815978451443, -4.271546252573028, -1.680220875328633, -1.8442810044087246, -4.23850526863486, -7.369655527650984, -3.9568056651102097, -3.3720250682296644, -8.004043849516815, -5.805085720029755, -3.506489796546145, 0.11899601230543055, -4.504216781543011, -2.311481498368618, -5.693561135765773, -3.4957584645035134, -4.590790297716168, -3.7987181371240766, -7.722319111911574, -5.127458799632365, -8.18823552853977, 0.20852893747556678, -14.500457530584512], "G2_lo": ["pow", -0.6666666666666666, -20.943377057208604, -13.957571830635214, -13.267241860829726, -18.482880807711645, -16.470014480180463, -14.750538081418457, -13.665972594660495, -13.466526441734963, -16.970656712605987, -16.615857509878175, -19.27847986199169, -15.658931083783093, -19.279401376501454, -18.864560189536068, -15.885182600596112, -15.716819231136522, -15.633018148223748, -18.026628915570306, -24.069835803339778, -16.208947782993846, -16.172107213772776, -15.384853089810395, -14.115271317017335], "None_hi": ["pow", -0.6, -8.309308735260476, -8.311695419316637, -8.335065935935951, -8.45316793573321, -8.29830866573294, -8.297518271617095, -8.518084069515533, -8.236267604712202, -8.34846430308719, -8.134372793753904, -7.811732220276344, -8.214909547934909, -8.324008836059072, -7.973040546590248, -8.100349409923341, -8.052610172448743, -8.311015936664287, -8.554919571355093, -8.109955059913457, -8.570686718243746, -8.017949917143985, -8.220030618132387, -8.230454034358422, -8.194438207026593, -8.388105493716674, -8.376781644933992, -8.805892105375065, -8.021436801365567, -8.050970224017457, -8.174449669633917, -7.671228742399134, -8.238807522067528, -7.818483627967848, -8.083838381456694, -8.40735171185924, -8.297460287414333, -8.375437694421652, -8.072172006915782, -8.043143272516552, -8.095900769746818, -8.205130075447304, -8.226014350403075, -8.22214050798684, -7.863909125925597, -8.334935262093525, -8.285206446803835, -8.332822404108443, -8.322783171998388, -8.567738059343991, -8.544672609766218, -8.147134849793506, -8.544227538877404, -8.487411256052049, -8.316295352353944, -8.375478085271656, -8.516598275611006, -8.440744304225817, -8.414335951182611, -8.36088974247969, -8.285627066858549, -8.367047962363314, -8.288256376782968, -8.13042071395526, -8.329402092334384, -7.947465732974619, -7.987260842702368, -8.128967779940385, -8.308912104051704, -8.339712601412538, -8.33569320115851, -8.27862454351892, -8.578281611479447, -8.587350009492177, -8.182768516070894, -8.398879683793446, -8.283337591733758, -8.340324354157424, -7.676012559401206, -8.391520697893291, -8.020854112325047, -8.339293194504963, -8.319356727027603, -8.33999197578046, -8.227878283841138, -7.847074395732447, -8.395235547004313, -8.24671123217423, -8.31397152914776, -8.088661585172762, -8.293855402130326, -8.061819619627713, -8.260582015532028, -8.33001480238102, -8.217480206667432, -8.203530324752414, -8.363347415817653, -9.651079599782808, -8.230874485740792, -7.2647369546662315, -9.28396748366549, -9.07735323430249, -8.952190091348484, -8.820130369335418, -8.184916853573501, -8.349825020336521, -8.223192142955114, -8.179070897607403, -8.261901182726087, -7.250768579206312, -8.289786715703102, -8.397552856600218, -8.279188256519184, -8.76721293969941, -7.971621461943785, -8.356762803811604, -8.036439192539282, -8.03791909526152, -8.207759108602854, -8.187594616625429, -8.328441582500854, -8.375990994569843, -9.022746563343414, -8.397130422912086, -7.899459704756639, -8.310093123302707, -8.233869025495393, -8.260219515034553, -8.248856920504878, -8.35072680186568, -8.080551505021901, -8.435390228232006, -8.336105917293473, -8.2840036423467, -7.9276702252107665, -8.215000237513609, -8.311629975822482], "None_lo": ["pow", -0.6, -8.309308735260476, -8.311695419316637, -8.335065935935951, -8.45316793573321, -8.29830866573294, -8.297518271617095, -8.518084069515533, -8.236267604712202, -8.34846430308719, -8.134372793753904, -7.811732220276344, -8.214909547934909, -8.324008836059072, -7.973040546590248, -8.100349409923341, -8.052610172448743, -8.311015936664287, -8.554919571355093, -8.109955059913457, -8.570686718243746, -8.017949917143985, -8.220030618132387, -8.230454034358422, -8.194438207026593, -8.388105493716674, -8.376781644933992, -8.805892105375065, -8.021436801365567, -8.050970224017457, -8.174449669633917, -7.671228742399134, -8.238807522067528, -7.818483627967848, -8.083838381456694, -8.40735171185924, -8.297460287414333, -8.375437694421652, -8.072172006915782, -8.043143272516552, -8.095900769746818, -8.205130075447304, -8.226014350403075, -8.22214050798684, -7.863909125925597, -8.334935262093525, -8.285206446803835, -8.332822404108443, -8.322783171998388, -8.567738059343991, -8.544672609766218, -8.147134849793506, -8.544227538877404, -8.487411256052049, -8.316295352353944, -8.375478085271656, -8.516598275611006, -8.440744304225817, -8.414335951182611, -8.36088974247969, -8.285627066858549, -8.367047962363314, -8.288256376782968, -8.13042071395526, -8.329402092334384, -7.947465732974619, -7.987260842702368, -8.128967779940385, -8.308912104051704, -8.339712601412538, -8.33569320115851, -8.27862454351892, -8.578281611479447, -8.587350009492177, -8.182768516070894, -8.398879683793446, -8.283337591733758, -8.340324354157424, -7.676012559401206, -8.391520697893291, -8.020854112325047, -8.339293194504963, -8.319356727027603, -8.33999197578046, -8.227878283841138, -7.847074395732447, -8.395235547004313, -8.24671123217423, -8.31397152914776, -8.088661585172762, -8.293855402130326, -8.061819619627713, -8.260582015532028, -8.33001480238102, -8.217480206667432, -8.203530324752414, -8.363347415817653, -9.651079599782808, -8.230874485740792, -7.2647369546662315, -9.28396748366549, -9.07735323430249, -8.952190091348484, -8.820130369335418, -8.184916853573501, -8.349825020336521, -8.223192142955114, -8.179070897607403, -8.261901182726087, -7.250768579206312, -8.289786715703102, -8.397552856600218, -8.279188256519184, -8.76721293969941, -7.971621461943785, -8.356762803811604, -8.036439192539282, -8.03791909526152, -8.207759108602854, -8.187594616625429, -8.328441582500854, -8.375990994569843, -9.022746563343414, -8.397130422912086, -7.899459704756639, -8.310093123302707, -8.233869025495393, -8.260219515034553, -8.248856920504878, -8.35072680186568, -8.080551505021901, -8.435390228232006, -8.336105917293473, -8.2840036423467, -7.9276702252107665, -8.215000237513609, -8.311629975822482]}
data/param_distribution_allT.json ADDED
The diff for this file is too large to render. See raw diff
 
data/polymer_names.tsv ADDED
@@ -0,0 +1,54 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ Polymer_Name Long_Name Additional_Names New Class Class ID Simpler_Name
2
+ ABS Acrylonitrile butadiene styrene G1 6 Acrylonitrile butadiene styrene
3
+ PIB Butyl rubber Polyisobutylene P2 3 Butyl rubber
4
+ Epoxy Epoxy resin R2 1 Epoxy resin
5
+ EPDM Ethylene-propylene-diene monomer rubber R2 1 Ethylene-propylene-diene monomer rubber
6
+ HPIB Halobutyl rubber (chlorobutyl/bromobutyl) R2 1 Halobutyl rubber chlorobutyl/bromobutyl
7
+ PI Natural rubber Polyisoprene R2 1 Natural rubber
8
+ NBR Nitrile rubber Acrylonitrile-butadiene rubber R2 1 Nitrile rubber
9
+ PEHMA Poly(2-ethylhexyl methacrylate) P1 2 Poly2-ethylhexyl methacrylate
10
+ PAN Polyacrylonitrile G1 6 Polyacrylonitrile
11
+ Nylon Polyamide Nylon P4 5 Polyamide
12
+ PBD Polybutadiene R2 1 Polybutadiene
13
+ PBD-H Polybutadiene (hydrogenated) R2 1 Polybutadiene hydrogenated
14
+ PBT Poly(butylene terephthalate) G1 6 Polybutylene terephthalate
15
+ PC Polycarbonate G2 7 Polycarbonate
16
+ PCP Polychloroprene Neoprene R2 1 Polychloroprene
17
+ ECO Polyepichlorohydrin R2 1 Polyepichlorohydrin
18
+ PEEK Poly(ether ether ketone) G1 6 Polyether ether ketone
19
+ PEI Poly(ether imide) G1 6 Polyether imide
20
+ PEBAX Poly(ether-block-amide) PEBAX P1 2 Polyether-block-amide
21
+ HDPE Polyethylene (density > 0.94 g/cc) P3 4 Polyethylene density > 0.94 g/cc
22
+ LDPE Polyethylene (density <= 0.94 g/cc) P1 2 Polyethylene density <= 0.94 g/cc
23
+ PEN Poly(ethylene naphthalate) G2 7 Polyethylene naphthalate
24
+ PET Poly(ethylene terephthalate) G2 7 Polyethylene terephthalate
25
+ ECTFE Poly(ethylene-co-chlorotrifluoroethylene) P3 4 Polyethylene-co-chlorotrifluoroethylene
26
+ EPP Poly(ethylene-co-propylene) P1 2 Polyethylene-co-propylene
27
+ EVA Poly(ethylene-co-vinyl acetate) P1 2 Polyethylene-co-vinyl acetate
28
+ EVOH Poly(ethylene-co-vinyl alcohol) P3 4 Polyethylene-co-vinyl alcohol
29
+ PMMA Poly(methyl methacrylate) G2 7 Polymethyl methacrylate
30
+ PEMA Poly(ethyl methacrylate) P4 5 Polyethyl methacrylate
31
+ PBMA Poly(butyl methacrylate) P1 2 Polybutyl methacrylate
32
+ PMA Poly(methyl acrylate) P2 3 Polymethyl acrylate
33
+ PEA Poly(ethyl acrylate) P1 2 Polyethyl acrylate
34
+ PBA Poly(butyl acrylate) R2 1 Polybutyl acrylate
35
+ PECA Poly(ethyl cyanoacrylate) G2 7 Polyethyl cyanoacrylate
36
+ PBCA Poly(butyl cyanoacrylate) G2 7 Polybutyl cyanoacrylate
37
+ PHCA Poly(hexyl cyanoacrylate) G1 6 Polyhexyl cyanoacrylate
38
+ POM Polyoxymethylene P3 4 Polyoxymethylene
39
+ PP Polypropylene P2 3 Polypropylene
40
+ PS Polystyrene G1 6 Polystyrene
41
+ PSF Polysulfone G1 6 Polysulfone
42
+ PTFE Poly(tetrafluoroethylene) Teflon P2 3 Polytetrafluoroethylene
43
+ FEP Fluorinated ethylene propylene "Teflon FEP, poly(tetrafluoroethylene-co-hexafluoropropylene)" P2 3 Fluorinated ethylene propylene
44
+ PTFE-PP Poly(tetrafluoroethylene-co-propylene) AFLAS R2 1 Polytetrafluoroethylene-co-propylene
45
+ PU Polyurethane P1 2 Polyurethane
46
+ PVAc Poly(vinyl acetate) P3 4 Polyvinyl acetate
47
+ pPVC Poly(vinyl chloride) (plasticized) R2 1 Polyvinyl chloride plasticized
48
+ uPVC Poly(vinyl chloride) (unplasticized) G1 6 Polyvinyl chloride unplasticized
49
+ PVDF Poly(vinylidene difluoride) P3 4 Polyvinylidene difluoride
50
+ PVDF-HFP Poly(vinylidene fluoride-co-hexafluoropropylene) P1 2 Polyvinylidene fluoride-co-hexafluoropropylene
51
+ PVDF-HFP-PTFE Poly(vinylidene fluoride-co-hexafluoropropylene-co-tetrafluoroethylene) P1 2 Polyvinylidene fluoride-co-hexafluoropropylene-co-tetrafluoroethylene
52
+ Siloxane Silicones "poly(dimethyl siloxane), poly(methyl propyl siloxane), poly(methyl octyl siloxane), poly(methyl tetradecyl siloxane), poly(butyl ester siloxane), poly(methyl phenyl siloxane), poly[methyl(trifluoropropyl)siloxane]" R1 0 Silicones
53
+ SBR Styrene-butadiene rubber R2 1 Styrene-butadiene rubber
54
+ TPE Thermoplastic elastomers R2 1 Thermoplastic elastomers
data/polymer_names_noglasses.tsv ADDED
@@ -0,0 +1,39 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ Polymer_Name Long_Name Additional_Names New Class Class ID Simpler_Name
2
+ PIB Butyl rubber Polyisobutylene P2 3 Butyl rubber
3
+ Epoxy Epoxy resin R2 1 Epoxy resin
4
+ EPDM Ethylene-propylene-diene monomer rubber R2 1 Ethylene-propylene-diene monomer rubber
5
+ HPIB Halobutyl rubber (chlorobutyl/bromobutyl) R2 1 Halobutyl rubber chlorobutyl/bromobutyl
6
+ PI Natural rubber Polyisoprene R2 1 Natural rubber
7
+ NBR Nitrile rubber Acrylonitrile-butadiene rubber R2 1 Nitrile rubber
8
+ PEHMA Poly(2-ethylhexyl methacrylate) P1 2 Poly2-ethylhexyl methacrylate
9
+ Nylon Polyamide Nylon P4 5 Polyamide
10
+ PBD Polybutadiene R2 1 Polybutadiene
11
+ PBD-H Polybutadiene (hydrogenated) R2 1 Polybutadiene hydrogenated
12
+ PCP Polychloroprene Neoprene R2 1 Polychloroprene
13
+ ECO Polyepichlorohydrin R2 1 Polyepichlorohydrin
14
+ PEBAX Poly(ether-block-amide) PEBAX P1 2 Polyether-block-amide
15
+ HDPE Polyethylene (density > 0.94 g/cc) P3 4 Polyethylene density > 0.94 g/cc
16
+ LDPE Polyethylene (density <= 0.94 g/cc) P1 2 Polyethylene density <= 0.94 g/cc
17
+ ECTFE Poly(ethylene-co-chlorotrifluoroethylene) P3 4 Polyethylene-co-chlorotrifluoroethylene
18
+ EPP Poly(ethylene-co-propylene) P1 2 Polyethylene-co-propylene
19
+ EVA Poly(ethylene-co-vinyl acetate) P1 2 Polyethylene-co-vinyl acetate
20
+ EVOH Poly(ethylene-co-vinyl alcohol) P3 4 Polyethylene-co-vinyl alcohol
21
+ PEMA Poly(ethyl methacrylate) P4 5 Polyethyl methacrylate
22
+ PBMA Poly(butyl methacrylate) P1 2 Polybutyl methacrylate
23
+ PMA Poly(methyl acrylate) P2 3 Polymethyl acrylate
24
+ PEA Poly(ethyl acrylate) P1 2 Polyethyl acrylate
25
+ PBA Poly(butyl acrylate) R2 1 Polybutyl acrylate
26
+ POM Polyoxymethylene P3 4 Polyoxymethylene
27
+ PP Polypropylene P2 3 Polypropylene
28
+ PTFE Poly(tetrafluoroethylene) Teflon P2 3 Polytetrafluoroethylene
29
+ FEP Fluorinated ethylene propylene "Teflon FEP, poly(tetrafluoroethylene-co-hexafluoropropylene)" P2 3 Fluorinated ethylene propylene
30
+ PTFE-PP Poly(tetrafluoroethylene-co-propylene) AFLAS R2 1 Polytetrafluoroethylene-co-propylene
31
+ PU Polyurethane P1 2 Polyurethane
32
+ PVAc Poly(vinyl acetate) P3 4 Polyvinyl acetate
33
+ pPVC Poly(vinyl chloride) (plasticized) R2 1 Polyvinyl chloride plasticized
34
+ PVDF Poly(vinylidene difluoride) P3 4 Polyvinylidene difluoride
35
+ PVDF-HFP Poly(vinylidene fluoride-co-hexafluoropropylene) P1 2 Polyvinylidene fluoride-co-hexafluoropropylene
36
+ PVDF-HFP-PTFE Poly(vinylidene fluoride-co-hexafluoropropylene-co-tetrafluoroethylene) P1 2 Polyvinylidene fluoride-co-hexafluoropropylene-co-tetrafluoroethylene
37
+ Siloxane Silicones "poly(dimethyl siloxane), poly(methyl propyl siloxane), poly(methyl octyl siloxane), poly(methyl tetradecyl siloxane), poly(butyl ester siloxane), poly(methyl phenyl siloxane), poly[methyl(trifluoropropyl)siloxane]" R1 0 Silicones
38
+ SBR Styrene-butadiene rubber R2 1 Styrene-butadiene rubber
39
+ TPE Thermoplastic elastomers R2 1 Thermoplastic elastomers
data/soluteData.xlsx ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:4fcdcf105050265e26b8a02ea38ae6ce9a8d1618f9a29fd0282579b026fc4478
3
+ size 9612
data/solvent-viscosity.xlsx ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:967a90804b91a62ab8220affebd22eabdd459803340211ec3548618f5a0aba72
3
+ size 18595
data/solventData.xlsx ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:6e8423a4b7eac365ace7d8ce2bfb3ab83506f356ce86453c80d5654bfe957a44
3
+ size 15758
data/vrentas-duda-params.xlsx ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:56a52df0ca74da211a93de2ca5e7c735a1265026bf954f967ea21a01831bd8bb
3
+ size 23473
data/~$db-Kpt-corrected.xlsx ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:f8041dcacf42159dafd9a509c198ada4cf2c26a82e59b6e4398c4f9785c55452
3
+ size 165
fast_bisect/.DS_Store ADDED
Binary file (6.15 kB). View file
 
fast_bisect/README ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
 
1
+ # 1. if needed, edit the user-defined function in fast_bisect.py to what you want
2
+
3
+ # 2. compile the Cython code
4
+ python fast_bisect.py build_ext --inplace
5
+
6
+ # 3. example usage of compiled cython code shown in fast_bisect_example.py
fast_bisect/build/.DS_Store ADDED
Binary file (6.15 kB). View file
 
fast_bisect/build/lib.macosx-11.1-arm64-cpython-313/fast_bisect.cpython-313-darwin.so ADDED
Binary file (80.1 kB). View file
 
fast_bisect/build/temp.macosx-11.1-arm64-cpython-313/fast_bisect.o ADDED
Binary file (51.9 kB). View file
 
fast_bisect/fast_bisect.c ADDED
The diff for this file is too large to render. See raw diff
 
fast_bisect/fast_bisect.cpython-313-darwin.so ADDED
Binary file (80.1 kB). View file
 
fast_bisect/fast_bisect.py ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
 
1
+ # setup.py
2
+ from setuptools import setup
3
+ from Cython.Build import cythonize
4
+
5
+ setup(
6
+ ext_modules = cythonize("fast_bisect.pyx"),
7
+ )
fast_bisect/fast_bisect.pyx ADDED
@@ -0,0 +1,28 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from scipy.optimize.cython_optimize cimport bisect
2
+
3
+ # import math from Cython
4
+ from libc cimport math
5
+
6
+ # user-defined struct for extra parameters
7
+ ctypedef struct test_params:
8
+ double alpha
9
+
10
+ # user-defined function
11
+ ## NOTE put your function here using Cython math
12
+ cdef double f(double x, void *args) noexcept:
13
+ cdef test_params *myargs = <test_params *> args
14
+ return math.tan(x) + myargs.alpha * x
15
+ #return myargs.C0 - math.exp(-(x - myargs.C1))
16
+
17
+ # Cython wrapper function for bisect
18
+ cdef double bisect_wrapper(dict args, double a, double b, double xtol, double rtol, int maxiter):
19
+ # Cython automatically casts dictionary to struct
20
+ cdef test_params myargs = args
21
+ return bisect(f, a, b, <test_params *> &myargs, xtol, rtol, maxiter, NULL)
22
+
23
+ # Python function
24
+ #def cbisect(args=myargs, a=XLO, b=XHI, xtol=XTOL, rtol=RTOL, maxiter=MITR):
25
+ def cbisect(args, a, b, xtol=1e-8, rtol=1e-15, maxiter=100):
26
+ '''Calls Cython wrapper from Python.'''
27
+ return bisect_wrapper(args, a, b, xtol, rtol, maxiter)
28
+
fast_bisect/fast_bisect_example.py ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import numpy as np
2
+ import scipy as sp
3
+ import scipy.optimize
4
+ from fast_bisect import cbisect
5
+
6
+ myargs = {'alpha': 1.0}
7
+
8
+ def f(x,args):
9
+ return np.tan(x)-args['alpha']*x
10
+
11
+ %timeit sp.optimize.bisect(f, a=0.5, b=2.0, args=myargs, xtol=1e-8, rtol=1e-15, maxiter=100)
12
+ # 10.2 μs ± 124 ns per loop (mean ± std. dev. of 7 runs, 100,000 loops each)
13
+
14
+ %timeit cbisect(a=0.5, b=2.0, args=myargs, xtol=1e-8, rtol=1e-15, maxiter=100)
15
+ # 241 ns ± 0.411 ns per loop (mean ± std. dev. of 7 runs, 1,000,000 loops each)
16
+
main.py ADDED
@@ -0,0 +1,823 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from dash import Dash, html, dcc, Input, Output, State
2
+ import dash_bootstrap_components as dbc
3
+ import plotly.graph_objects as go
4
+ import pandas as pd
5
+ from data.functions import *
6
+ from transportEqs import *
7
+ import numpy as np
8
+ from Kps_function.read_Kps_model import *
9
+ import os
10
+
11
+ app = Dash(
12
+ __name__,
13
+ assets_folder=os.path.join(os.path.dirname(__file__), "assets")
14
+ )
15
+
16
+ def build_figure(dataframe: pd.DataFrame) -> go.Figure:
17
+ fig = go.Figure()
18
+
19
+ # Condition 1
20
+ fig.add_bar(
21
+ y=dataframe["Condition 1"],
22
+ x=dataframe["CASRN"],
23
+ name="Condition 1",
24
+ orientation="v",
25
+ error_y=dict(
26
+ type="data",
27
+ symmetric=False,
28
+ array=dataframe["Cond1_err_plus"], # +x direction
29
+ arrayminus=dataframe["Cond1_err_minus"], # -x direction
30
+ visible=True,
31
+ ),
32
+ marker=dict(color="red"),
33
+ )
34
+
35
+ # Condition 2
36
+ fig.add_bar(
37
+ y=dataframe["Condition 2"],
38
+ x=dataframe["CASRN"],
39
+ name="Condition 2",
40
+ orientation="v",
41
+ error_y=dict(
42
+ type="data",
43
+ symmetric=False,
44
+ array=dataframe["Cond2_err_plus"],
45
+ arrayminus=dataframe["Cond2_err_minus"],
46
+ visible=True,
47
+ ),
48
+ marker=dict(color="blue"),
49
+ )
50
+
51
+ #fig.add_hline(
52
+ # y=0.9,
53
+ # line_width=3,
54
+ # line_color="green",
55
+ # line_dash="longdash"
56
+ #)
57
+
58
+ # --- Compute data-driven x-range (include error bars) ---
59
+ x1 = dataframe["Condition 1"].to_numpy(dtype=float)
60
+ x2 = dataframe["Condition 2"].to_numpy(dtype=float)
61
+
62
+ # --- Compute upper bounds including error bars ---
63
+ x1_max = x1 - dataframe["Cond1_err_minus"].to_numpy(dtype=float)
64
+ x2_max = x2 - dataframe["Cond2_err_minus"].to_numpy(dtype=float)
65
+
66
+ # Piecewise maxima across the two conditions (array length = number of CASRN)
67
+ piecewise_max = np.maximum(x1_max, x2_max)
68
+
69
+ # Minimum of the piecewise maxima array (ignoring NaNs)
70
+ min_of_piecewise_max = np.nanmin(piecewise_max)
71
+
72
+ # Fallback if everything is NaN or non-finite
73
+ if not np.isfinite(min_of_piecewise_max):
74
+ min_of_piecewise_max = 1.0
75
+
76
+ # Minimum y = 3 orders of magnitude below that
77
+ y_min = float(min_of_piecewise_max * 1e-1)
78
+
79
+ # Ensure strictly positive for log scale
80
+ y_min = float(np.maximum(y_min, np.nextafter(0.0, 1.0)))
81
+
82
+ fig.update_layout(
83
+ barmode="group",
84
+ legend=dict(
85
+ orientation="h",
86
+ x=0.5,
87
+ xanchor="center",
88
+ y=1.08,
89
+ font=dict(size=18) # ← legend text size
90
+ ),
91
+ yaxis=dict(
92
+ title=dict(
93
+ text=r"Fraction released",
94
+ font=dict(size=18) # ← axis label size
95
+ ),
96
+ type="log",
97
+ range=[np.log10(y_min), np.log10(1.)]
98
+ ),
99
+ xaxis=dict(
100
+ title=dict(
101
+ text=r"Boundary chemicals (CAS)",
102
+ standoff=0, # adjust: try 0–10 depending on how close you want it
103
+ font = dict(size=18) # ← axis label size
104
+ )
105
+ ),
106
+ margin=dict(l=50, r=50, t=20, b=20),
107
+ autosize=False,
108
+ height=600,
109
+ width=800,
110
+ )
111
+
112
+ fig.update_xaxes(tickfont=dict(size=14))
113
+ fig.update_yaxes(tickfont=dict(size=14))
114
+
115
+ return fig
116
+
117
+ # --------------------------------------------------------------------
118
+ # Layout
119
+ # --------------------------------------------------------------------
120
+ app.layout = html.Div(
121
+ style={
122
+ "fontFamily": "Arial, Helvetica, sans-serif",
123
+ "padding": "15px",
124
+ },
125
+ children=[
126
+ html.H1("Extraction condition comparison tool",
127
+ style={
128
+ "textAlign": "center",
129
+ "marginBottom": "20px",
130
+ "fontSize": "36px",
131
+ },
132
+ ),
133
+ html.Div(
134
+ style={
135
+ "display": "flex",
136
+ "gap": "40px",
137
+ },
138
+ children=[
139
+ # LEFT: Form / Controls
140
+ html.Div(
141
+ style={
142
+ "flex": "0 0 40%",
143
+ "maxWidth": "500px",
144
+ },
145
+ children=[
146
+ # Polymer component section
147
+ html.H3(
148
+ "Polymer component",
149
+ style={
150
+ "textDecoration": "underline",
151
+ "fontSize": "18px",
152
+ "marginBottom": "10px",
153
+ },
154
+ ),
155
+ html.Div(
156
+ style={
157
+ "display": "grid",
158
+ "gridTemplateColumns": "1fr 1fr",
159
+ "columnGap": "20px",
160
+ "rowGap": "10px",
161
+ "marginBottom": "10px",
162
+ },
163
+ children=[
164
+ # Left column
165
+ html.Div(
166
+ children=[
167
+ html.Div("Matrix"),
168
+ dcc.Dropdown(
169
+ id="matrix",
170
+ options=[{"label": x, "value": x} for x in polymers],
171
+ value=polymers[25], # default selection (optional)
172
+ clearable=False,
173
+ style={"width": "100%"}
174
+ ),
175
+ html.Div("Tg (°C)", style={"marginTop": "10px"}),
176
+ dcc.Input(
177
+ id="tg",
178
+ type="number",
179
+ placeholder="0.0",
180
+ value="0.0",
181
+ style={"width": "100%"},
182
+ required=True,
183
+ ),
184
+ html.Div(
185
+ "Crystallinity (%)",
186
+ style={"marginTop": "10px"},
187
+ ),
188
+ dcc.Input(
189
+ id="crystal",
190
+ type="number",
191
+ placeholder="0.0",
192
+ value="0.0",
193
+ style={"width": "100%"},
194
+ required=True,
195
+ ),
196
+ ]
197
+ ),
198
+ # Right column
199
+ html.Div(
200
+ children=[
201
+ html.Div("Density (g/cm³)"),
202
+ dcc.Input(
203
+ id="density",
204
+ type="number",
205
+ placeholder="1.0",
206
+ value="1.0",
207
+ style={"width": "100%"},
208
+ required=True,
209
+ ),
210
+ html.Div(
211
+ "Volume (cm³)",
212
+ style={"marginTop": "10px"},
213
+ ),
214
+ dcc.Input(
215
+ id="polymer_volume",
216
+ type="number",
217
+ placeholder="1.0",
218
+ value="1.0",
219
+ style={"width": "100%"},
220
+ required=True,
221
+ ),
222
+ html.Div(
223
+ "Surface area (cm²)",
224
+ style={"marginTop": "10px"},
225
+ ),
226
+ dcc.Input(
227
+ id="surface_area",
228
+ type="number",
229
+ placeholder="30.0",
230
+ value="30.0",
231
+ style={"width": "100%"},
232
+ required=True,
233
+ ),
234
+ ]
235
+ ),
236
+ ],
237
+ ),
238
+
239
+ # Conditions row
240
+ html.Div(
241
+ style={
242
+ "display": "grid",
243
+ "gridTemplateColumns": "1fr 1fr",
244
+ "columnGap": "30px",
245
+ },
246
+ children=[
247
+ # Condition 1
248
+ html.Div(
249
+ children=[
250
+ html.H3(
251
+ "Condition #1",
252
+ style={
253
+ "textDecoration": "underline",
254
+ "fontSize": "18px",
255
+ "marginBottom": "10px",
256
+ },
257
+ ),
258
+ html.Div(
259
+ [
260
+ html.Div(
261
+ dcc.RadioItems(
262
+ id="condition1_mode",
263
+ options=[
264
+ {
265
+ "label": "In vitro",
266
+ "value": "in_vitro",
267
+ },
268
+ {
269
+ "label": "In vivo (conservative)",
270
+ "value": "in_vivo_conservative",
271
+ },
272
+ {
273
+ "label": "In vivo (tissue)",
274
+ "value": "in_vivo_tissue",
275
+ },
276
+ ],
277
+ value="in_vitro",
278
+ labelStyle={
279
+ "display": "inline-block"
280
+ },
281
+ ),
282
+ style={"marginBottom": "10px"},
283
+ ),
284
+ ],
285
+ ),
286
+ html.Div("Solvent"),
287
+ dcc.Dropdown(
288
+ id="c1_solvent",
289
+ options=[{"label": x, "value": x} for x in solvents],
290
+ value=solvents[9], # default selection (optional)
291
+ clearable=False,
292
+ disabled=True,
293
+ style={"width": "100%"}
294
+ ),
295
+ html.Div(
296
+ "Volume (cm³)",
297
+ style={"marginTop": "10px"},
298
+ ),
299
+ dcc.Input(
300
+ id="c1_volume",
301
+ type="number",
302
+ placeholder="10.0",
303
+ value="10.0",
304
+ style={"width": "100%"},
305
+ disabled=True,
306
+ required=True,
307
+ ),
308
+ html.Div(
309
+ "Swelling ratio (m/m)",
310
+ style={"marginTop": "10px"},
311
+ ),
312
+ dcc.Input(
313
+ id="c1_swelling",
314
+ type="number",
315
+ placeholder="1.0",
316
+ value="1.0",
317
+ style={"width": "100%"},
318
+ disabled=True,
319
+ required=True,
320
+ ),
321
+ html.Div(
322
+ "Extraction T (°C)",
323
+ style={"marginTop": "10px"},
324
+ ),
325
+ dcc.Input(
326
+ id="c1_temp",
327
+ type="number",
328
+ placeholder="50.0",
329
+ value="50.0",
330
+ style={"width": "100%"},
331
+ disabled=True,
332
+ required=True,
333
+ ),
334
+ html.Div(
335
+ "Extraction time (h)",
336
+ style={"marginTop": "10px"},
337
+ ),
338
+ dcc.Input(
339
+ id="c1_time",
340
+ type="number",
341
+ placeholder="24.0",
342
+ value="24.0",
343
+ style={"width": "100%"},
344
+ #disabled=True,
345
+ required=True,
346
+ ),
347
+ html.Div(
348
+ "# of iterations",
349
+ style={"marginTop": "10px"},
350
+ ),
351
+ dcc.Input(
352
+ id="c1_iterations",
353
+ type="number",
354
+ placeholder="1",
355
+ value="1",
356
+ style={"width": "100%"},
357
+ disabled=True,
358
+ required=True,
359
+ ),
360
+ ]
361
+ ),
362
+ # Condition 2
363
+ html.Div(
364
+ children=[
365
+ html.H3(
366
+ "Condition #2",
367
+ style={
368
+ "textDecoration": "underline",
369
+ "fontSize": "18px",
370
+ "marginBottom": "10px",
371
+ },
372
+ ),
373
+ html.Div(
374
+ [
375
+ html.Div(
376
+ dcc.RadioItems(
377
+ id="condition2_mode",
378
+ options=[
379
+ {
380
+ "label": "In vitro",
381
+ "value": "in_vitro",
382
+ },
383
+ {
384
+ "label": "In vivo (conservative)",
385
+ "value": "in_vivo_conservative",
386
+ },
387
+ {
388
+ "label": "In vivo (tissue)",
389
+ "value": "in_vivo_tissue",
390
+ },
391
+ ],
392
+ value="in_vivo_conservative",
393
+ labelStyle={
394
+ "display": "inline-block"
395
+ },
396
+ ),
397
+ style={"marginBottom": "10px"},
398
+ ),
399
+ ],
400
+ ),
401
+ html.Div("Solvent"),
402
+ dcc.Dropdown(
403
+ id="c2_solvent",
404
+ options=[{"label": x, "value": x} for x in solvents],
405
+ value=solvents[2], # default selection (optional)
406
+ clearable=False,
407
+ disabled=True,
408
+ style={"width": "100%"}
409
+ ),
410
+ html.Div(
411
+ "Volume (cm³)",
412
+ style={"marginTop": "10px"},
413
+ ),
414
+ dcc.Input(
415
+ id="c2_volume",
416
+ type="number",
417
+ placeholder="10.0",
418
+ value="10.0",
419
+ style={"width": "100%"},
420
+ disabled=True,
421
+ required=True,
422
+ ),
423
+ html.Div(
424
+ "Swelling ratio (m/m)",
425
+ style={"marginTop": "10px"},
426
+ ),
427
+ dcc.Input(
428
+ id="c2_swelling",
429
+ type="number",
430
+ placeholder="1.0",
431
+ value="1.0",
432
+ style={"width": "100%"},
433
+ disabled=True,
434
+ required=True,
435
+ ),
436
+ html.Div(
437
+ "Extraction T (°C)",
438
+ style={"marginTop": "10px"},
439
+ ),
440
+ dcc.Input(
441
+ id="c2_temp",
442
+ type="number",
443
+ placeholder="50.0",
444
+ value="50.0",
445
+ style={"width": "100%"},
446
+ disabled=True,
447
+ required=True,
448
+ ),
449
+ html.Div(
450
+ "Extraction time (h)",
451
+ style={"marginTop": "10px"},
452
+ ),
453
+ dcc.Input(
454
+ id="c2_time",
455
+ type="number",
456
+ placeholder="24.0",
457
+ value="24.0",
458
+ style={"width": "100%"},
459
+ #disabled=True,
460
+ required=True,
461
+ ),
462
+ html.Div(
463
+ "# of iterations",
464
+ style={"marginTop": "10px"},
465
+ ),
466
+ dcc.Input(
467
+ id="c2_iterations",
468
+ type="number",
469
+ placeholder="1",
470
+ value="1",
471
+ style={"width": "100%"},
472
+ disabled=True,
473
+ required=True,
474
+ ),
475
+ ]
476
+ ),
477
+ ],
478
+ ),
479
+
480
+ # Calculate button
481
+ html.Div(
482
+ style={
483
+ "marginTop": "10px",
484
+ },
485
+ children=[
486
+ # ---- Header on its own line ----
487
+ html.H3(
488
+ "Monte Carlo",
489
+ style={
490
+ "textDecoration": "underline",
491
+ "fontSize": "18px",
492
+ "marginBottom": "15px",
493
+ },
494
+ ),
495
+
496
+ # ---- Two-column layout: Samples/Input | Calculate ----
497
+ html.Div(
498
+ style={
499
+ "display": "grid",
500
+ "gridTemplateColumns": "1fr 1fr",
501
+ "columnGap": "20px",
502
+ "marginTop": "10px",
503
+ },
504
+ children=[
505
+
506
+ # -------- Column 1: Samples label + input --------
507
+ html.Div(
508
+ style={"display": "flex", "flexDirection": "column",
509
+ },
510
+ children=[
511
+ html.Div("Samples"),
512
+ dcc.Input(
513
+ id="samples",
514
+ type="number",
515
+ placeholder="1000",
516
+ value="1000",
517
+ required=True,
518
+ ),
519
+ ],
520
+ ),
521
+
522
+ # -------- Column 2: Calculate button --------
523
+ html.Div(
524
+ style={"textAlign": "center"},
525
+ children=[
526
+ html.Button(
527
+ "Calculate",
528
+ id="calculate",
529
+ n_clicks=0,
530
+ style={
531
+ "padding": "8px 25px",
532
+ "border": "1px solid #333",
533
+ "borderRadius": "3px",
534
+ "backgroundColor": "white",
535
+ "cursor": "pointer",
536
+ },
537
+ )
538
+ ],
539
+ ),
540
+ ],
541
+ ),
542
+ ],
543
+ )
544
+ ],
545
+ ),
546
+
547
+ # RIGHT: Bar Chart
548
+ html.Div(
549
+ style={
550
+ "flex": "1",
551
+ "display": "flex",
552
+ "justifyContent": "center",
553
+ },
554
+ children=[
555
+ dcc.Loading(
556
+ id="mm0_loading",
557
+ type="default", # still works with custom_spinner
558
+ # This box defines the exact area of the graph and overlay
559
+ parent_style={
560
+ "position": "relative",
561
+ "width": "800px", # match figure layout.width
562
+ "height": "600px", # match figure layout.height
563
+ },
564
+ # This is the semi-transparent veil over that 600x800 box
565
+ overlay_style={
566
+ "backgroundColor": "rgba(255, 255, 255, 0.5)",
567
+ "display": "flex",
568
+ "justifyContent": "center",
569
+ "alignItems": "center",
570
+ },
571
+ custom_spinner=html.Div(
572
+ [
573
+ html.H2("Processing"),
574
+ dbc.Spinner(color="danger"),
575
+ ],
576
+ style={"textAlign": "center"},
577
+ ),
578
+ children=dcc.Graph(
579
+ id="mm0_chart",
580
+ config={"displayModeBar": False},
581
+ # Graph fills the 600x800 parent
582
+ style={
583
+ "width": "800px",
584
+ "height": "600px",
585
+ },
586
+ ),
587
+ ),
588
+ ],
589
+ ),
590
+ ],
591
+ ),
592
+ ],
593
+ )
594
+
595
+
596
+ # --------------------------------------------------------------------
597
+ # Callback placeholder:
598
+ # Wire this up to your actual calculation (update df + figure)
599
+ # --------------------------------------------------------------------
600
+ @app.callback(
601
+ [
602
+ Output("c1_solvent", "disabled"),
603
+ Output("c1_volume", "disabled"),
604
+ Output("c1_swelling", "disabled"),
605
+ Output("c1_temp", "disabled"),
606
+ #Output("c1_time", "disabled"),
607
+ Output("c1_iterations", "disabled"),
608
+ ],
609
+ Input("condition1_mode", "value"),
610
+ )
611
+ def toggle_condition1_inputs(mode):
612
+ disable = (mode != "in_vitro")
613
+ return [disable] * 5
614
+
615
+ @app.callback(
616
+ [
617
+ Output("c2_solvent", "disabled"),
618
+ Output("c2_volume", "disabled"),
619
+ Output("c2_swelling", "disabled"),
620
+ Output("c2_temp", "disabled"),
621
+ #Output("c2_time", "disabled"),
622
+ Output("c2_iterations", "disabled"),
623
+ ],
624
+ Input("condition2_mode", "value"),
625
+ )
626
+
627
+ def toggle_condition2_inputs(mode):
628
+ disable = (mode != "in_vitro")
629
+ return [disable] * 5
630
+
631
+ @app.callback(
632
+ Output("mm0_chart", "figure"),
633
+ Input("calculate", "n_clicks"),
634
+ State("matrix", "value"),
635
+ State("tg", "value"),
636
+ State("crystal", "value"),
637
+ State("density", "value"),
638
+ State("polymer_volume", "value"),
639
+ State("surface_area", "value"),
640
+ # Condition 1
641
+ State("condition1_mode", "value"),
642
+ State("c1_solvent", "value"),
643
+ State("c1_volume", "value"),
644
+ State("c1_swelling", "value"),
645
+ State("c1_temp", "value"),
646
+ State("c1_time", "value"),
647
+ State("c1_iterations", "value"),
648
+ # Condition 2
649
+ State("condition2_mode", "value"),
650
+ State("c2_solvent", "value"),
651
+ State("c2_volume", "value"),
652
+ State("c2_swelling", "value"),
653
+ State("c2_temp", "value"),
654
+ State("c2_time", "value"),
655
+ State("c2_iterations", "value"),
656
+ #prevent_initial_call=True,
657
+ State("samples", "value"),
658
+ )
659
+
660
+ def update_chart(n_clicks,
661
+ matrix, tg, crystal, density, polymer_volume, surface_area,
662
+ c1_mode, c1_solvent, c1_volume, c1_swelling,
663
+ c1_temp, c1_time, c1_iter,
664
+ c2_mode, c2_solvent, c2_volume,
665
+ c2_swelling, c2_temp, c2_time, c2_iter,samples):
666
+
667
+ # TODO: replace with logic that uses the form inputs
668
+ # For now, simply return the same figure when "Calculate" is clicked.
669
+
670
+ df = pd.DataFrame()
671
+ df['CASRN'] = soluteData['CASRN'].to_numpy()
672
+
673
+ N = int(samples)
674
+ pindex = where(polymers == matrix)[0][0]
675
+ CHRIS_category = categories[pindex]
676
+ Polymer_Density = float(density)
677
+ Polymer_Tg = float(tg) + 273.15
678
+ Polymer_X = float(crystal)/100.
679
+
680
+ L = float(polymer_volume)/float(surface_area)
681
+
682
+ # Condition 1
683
+ ExtractionTime = float(c1_time) * 3600.
684
+ if c1_mode == 'in_vivo_conservative':
685
+ medians, lowers, uppers = ConservativeMonteCarlo(soluteData, CHRIS_category, L, ExtractionTime, N)
686
+
687
+ elif c1_mode == 'in_vivo_tissue':
688
+ medians, lowers, uppers = TissueMonteCarlo(soluteData, CHRIS_category, L, ExtractionTime, N)
689
+
690
+ else:
691
+ Solvent_Name = c1_solvent
692
+ Solvent_MW = Solvent_MWs[Solvent_Name]
693
+ Solvent_Density = Solvent_Densities[Solvent_Name]
694
+ Solvent_PI = Solvent_PIs[Solvent_Name]
695
+ ExtractionT = float(c1_temp) + 273.15
696
+ Ms_M0 = float(c1_swelling)
697
+ Swell = 1.+(Ms_M0-1.)*Polymer_Density/Solvent_Density
698
+ w = (Ms_M0 - 1.)/(Ms_M0-Polymer_X)
699
+ Iterations = float(c1_iter)
700
+ Lbath = float(c1_volume) / float(surface_area)
701
+
702
+ medians, lowers, uppers = ExtractMonteCarlo(soluteData, Solvent_PI, w, ExtractionT, Polymer_Tg, Solvent_Name, Solvent_MW,
703
+ ExtractionTime, Swell, Iterations, CHRIS_category, L, Lbath, N)
704
+
705
+ df['Condition 1'] = medians
706
+ df['Cond1_err_plus'] = uppers-medians
707
+ df['Cond1_err_minus'] = medians-lowers
708
+
709
+ # Condition 2
710
+ ExtractionTime = float(c2_time) * 3600.
711
+ if c2_mode == 'in_vivo_conservative':
712
+ medians, lowers, uppers = ConservativeMonteCarlo(soluteData, CHRIS_category, L, ExtractionTime, N)
713
+
714
+ elif c2_mode == 'in_vivo_tissue':
715
+ medians, lowers, uppers = TissueMonteCarlo(soluteData, CHRIS_category, L, ExtractionTime, N)
716
+
717
+ else:
718
+ Solvent_Name = c2_solvent
719
+ Solvent_MW = Solvent_MWs[Solvent_Name]
720
+ Solvent_Density = Solvent_Densities[Solvent_Name]
721
+ Solvent_PI = Solvent_PIs[Solvent_Name]
722
+ ExtractionT = float(c2_temp) + 273.15
723
+ Ms_M0 = float(c2_swelling)
724
+ Swell = 1. + (Ms_M0 - 1.) * Polymer_Density / Solvent_Density
725
+ w = (Ms_M0 - 1.) / (Ms_M0 - Polymer_X)
726
+ Iterations = float(c2_iter)
727
+ Lbath = float(c2_volume) / float(surface_area)
728
+
729
+ medians, lowers, uppers = ExtractMonteCarlo(soluteData, Solvent_PI, w, ExtractionT, Polymer_Tg, Solvent_Name, Solvent_MW,
730
+ ExtractionTime, Swell, Iterations, CHRIS_category, L, Lbath, N)
731
+
732
+ df['Condition 2'] = medians
733
+ df['Cond2_err_plus'] = uppers - medians
734
+ df['Cond2_err_minus'] = medians - lowers
735
+
736
+ return build_figure(df)
737
+
738
+ def ConservativeMonteCarlo(soluteData, CHRIS_category, L, time, N):
739
+
740
+ nSolutes = len(soluteData)
741
+
742
+ medians = zeros(nSolutes)
743
+ lowers = zeros(nSolutes)
744
+ uppers = zeros(nSolutes)
745
+
746
+ for iSolute in range(nSolutes):
747
+
748
+ Solute_MW = soluteData['MW_new'].iloc[iSolute]
749
+ D_CHRIS = get_D_CHRIS(Solute_MW, CHRIS_category, N=N)
750
+ tau = D_CHRIS * time / L ** 2. # fixed 1 day
751
+ mass = Conservative(tau)
752
+
753
+ medians[iSolute] = percentile(mass, 50)
754
+ lowers[iSolute] = percentile(mass, 25)
755
+ uppers[iSolute] = percentile(mass, 75)
756
+
757
+ return medians, lowers, uppers
758
+
759
+ def TissueMonteCarlo(soluteData, CHRIS_category, L, time, N):
760
+
761
+ nSolutes = len(soluteData)
762
+
763
+ medians = zeros(nSolutes)
764
+ lowers = zeros(nSolutes)
765
+ uppers = zeros(nSolutes)
766
+
767
+ for iSolute in range(nSolutes):
768
+
769
+ Solute_MW = soluteData['MW_new'].iloc[iSolute]
770
+ Solute_logP = soluteData['LogP_new'].iloc[iSolute]
771
+
772
+ D_CHRIS = get_D_CHRIS(Solute_MW, CHRIS_category, N=N)
773
+ tau = D_CHRIS * time / L ** 2.
774
+
775
+ Dt = get_Dt(N)
776
+ Kpt = get_Kpt(Solute_logP, N)
777
+ beta = (1. / Kpt) * sqrt(Dt / D_CHRIS)
778
+
779
+ mass = SolubilityLimited(beta, tau)
780
+
781
+ medians[iSolute] = percentile(mass, 50)
782
+ lowers[iSolute] = percentile(mass, 25)
783
+ uppers[iSolute] = percentile(mass, 75)
784
+
785
+ return medians, lowers, uppers
786
+
787
+ def ExtractMonteCarlo(soluteData, Solvent_PI, w, ExtractionT, Polymer_Tg, Solvent_Name, Solvent_MW,
788
+ ExtractionTime, Swell, Iterations, CHRIS_category, L, Lbath, N):
789
+
790
+ nSolutes = len(soluteData)
791
+
792
+ medians = zeros(nSolutes)
793
+ lowers = zeros(nSolutes)
794
+ uppers = zeros(nSolutes)
795
+
796
+ for iSolute in range(nSolutes):
797
+
798
+ Solute_MW = soluteData['MW_new'].iloc[iSolute]
799
+ Solute_logP = soluteData['LogP_new'].iloc[iSolute]
800
+ Solute_Vabc = soluteData['Vabc'].iloc[iSolute]
801
+
802
+ D_Extract = get_D_Extract(w, ExtractionT, Polymer_Tg, Solvent_Name, Solvent_MW, Solute_MW, Solute_Vabc,
803
+ CHRIS_category, N=N)
804
+ tau = D_Extract * ExtractionTime / L ** 2.
805
+
806
+ ToKPS = array([[Solute_logP, Solvent_PI]])
807
+ model = QuantileGridFromCoeffs(export_dir='Kps_function/Kps_model')
808
+ Kps = 10**model.sample(ToKPS, n_samples=N)[0]
809
+ alpha = Lbath / L / Kps
810
+
811
+ massExtraction = zeros(N)
812
+ for i in range(N):
813
+ massExtraction[i] = Extraction(tau[i], alpha[i], Kps[i], Swell, Iterations)
814
+
815
+ medians[iSolute] = percentile(massExtraction, 50)
816
+ lowers[iSolute] = percentile(massExtraction, 25)
817
+ uppers[iSolute] = percentile(massExtraction, 75)
818
+
819
+ return medians, lowers, uppers
820
+
821
+
822
+ if __name__ == "__main__":
823
+ app.run(debug=True)
requirements.txt ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ flask
2
+ gunicorn
3
+ nltk==3.9.1
4
+ pandas==2.2.3
5
+ PubChemPy==1.0.4
6
+ CIRpy==1.0.2
7
+ chemicals==1.3.3
8
+ urllib3==2.2.3
9
+ requests==2.32.3
10
+ selenium==4.32.0
11
+ chromedriver-binary==138.0.7158.0.0
12
+ pillow==11.0.0
13
+ rdkit==2024.3.5
14
+ dill==0.3.8
15
+ scikit-learn==1.6.1
16
+ padelpy==0.1.16
17
+ Flask==3.1.0
18
+ matplotlib==3.9.2
19
+ scipy==1.14.1
20
+ quantile-forest==1.4.0
21
+ mordred==1.2.0
22
+ beautifulsoup4==4.12.3
23
+ setuptools==72.1.0
24
+ openpyxl==3.1.5
25
+
transportEqs.py ADDED
@@ -0,0 +1,156 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from numpy import *
2
+ import pandas as pd
3
+
4
+ def Conservative(tau):
5
+ release = 2. * sqrt(tau / pi) * (tau <= 0.2) + \
6
+ (1. - (8. / (pi ** 2.)) * exp(-tau * pi ** 2. / 4.)) * (tau > 0.2)
7
+
8
+ return release
9
+
10
+ from scipy.special import erfc
11
+ def SolubilityLimited(beta, tau, nmax=100):
12
+ result = 0.
13
+ for n in range(1, nmax + 1):
14
+ result = result + ((1. - beta) / (1. + beta)) ** (n - 1.) * (
15
+ exp(-n ** 2. / tau) - (n * sqrt(pi) / sqrt(tau)) * erfc(n / sqrt(tau)))
16
+
17
+ return ((2. * beta) / (1. + beta)) * sqrt(tau / pi) * (1. - (2. * beta / (1. + beta)) * result)
18
+
19
+
20
+ # finite bath model functions
21
+ from fast_bisect.fast_bisect import cbisect
22
+
23
+ def PlaneSheetFiniteBathMassC(tau, alpha, nterms):
24
+ Minfty = 1. / (1. + 1. / (alpha))
25
+
26
+ qn = zeros((nterms))
27
+ for j in range(nterms):
28
+ solved = False
29
+ eps = 1e-8
30
+ f = lambda x: tan(x) + alpha * x
31
+ myargs = {'alpha': alpha}
32
+ rts = cbisect(a=pi / 2. + j * pi + eps, b=pi * (1. + j) - eps, args=myargs)
33
+ # print(rts)
34
+ solved = True
35
+ qn[j] = rts
36
+
37
+ result = 1.
38
+ for j in range(nterms):
39
+ result = result - (2. * alpha * (1. + alpha)) * exp(-tau * qn[j] ** 2.) / (
40
+ 1. + alpha + alpha ** 2. * qn[j] ** 2.)
41
+ result = Minfty * result
42
+
43
+ return result
44
+
45
+
46
+ def PlaneSheetFiniteBathMassApprox(tau, alpha):
47
+ Minfty = 1. / (1. + 1. / (alpha))
48
+
49
+ # T = minimum(tau/alpha**2.,100)
50
+ # result = (tau/alpha**2.<100.)* Minfty*(1.+alpha)*(1.-exp(T)*erfc(sqrt(tau)/alpha))
51
+ # result = result + (tau/alpha**2.>=100.)* \
52
+ # Minfty*(1.+alpha)*(1.-alpha/(sqrt(pi)*sqrt(tau))+alpha**3./(2.*sqrt(pi)*(tau)**1.5)-3.*alpha**5./(4.*sqrt(pi)*(tau)**2.5))
53
+
54
+ T = tau / alpha ** 2.
55
+ if T < 100.:
56
+ result = Minfty * (1. + alpha) * (1. - exp(T) * erfc(sqrt(tau) / alpha))
57
+ else:
58
+ result = Minfty * (1. + alpha) * (1. - alpha / (sqrt(pi) * sqrt(tau)) + alpha ** 3. / (
59
+ 2. * sqrt(pi) * (tau) ** 1.5) - 3. * alpha ** 5. / (4. * sqrt(pi) * (tau) ** 2.5))
60
+
61
+ return result
62
+
63
+ def PlaneSheetAnalytical(tau, alpha, nterms=10):
64
+ # result = (tau>0.1) * PlaneSheetFiniteBathMassC(tau,alpha,nterms) + \
65
+ # (tau<=0.1) * PlaneSheetFiniteBathMassApprox(tau,alpha)
66
+
67
+ if tau > 0.1:
68
+ result = PlaneSheetFiniteBathMassC(tau, alpha, nterms)
69
+ else:
70
+ result = PlaneSheetFiniteBathMassApprox(tau, alpha)
71
+
72
+ return result
73
+
74
+ def multiEquilSwell(alpha, Kps, swell, iterations):
75
+
76
+ # alpha is initial before swelling
77
+ result = 1.-(Kps*(swell+alpha)/(Kps*(swell+alpha)+swell-1.))*(swell/(swell+alpha))**iterations
78
+
79
+ return result
80
+
81
+ def multiELSwell(tau, alpha, Kps, swell, iterations):
82
+
83
+ resultEq = multiEquilSwell(alpha, Kps, swell, iterations)
84
+ resultKinetic = Conservative(tau*iterations)
85
+
86
+ #result = (resultEq < resultKinetic) * resultEq + (resultEq >= resultKinetic) * resultKinetic
87
+
88
+ if resultEq < resultKinetic:
89
+ result = resultEq
90
+ else:
91
+ result = resultKinetic
92
+
93
+ return result
94
+
95
+ def Extraction(tau, alpha, Kps, swell, iterations):
96
+
97
+ tauSpec = tau*iterations
98
+ alphaSpec = (alpha*iterations/swell)-(swell-1)/swell/Kps # for a single iteration
99
+
100
+ #result = (tauSpec > 1.) * multiELSwell(tau, alpha, Kps, swell, iterations) + (tauSpec <= 1.) * PlaneSheetAnalytical(tauSpec,alphaSpec)
101
+
102
+ if tauSpec > 1.:
103
+ result = multiELSwell(tau, alpha, Kps, swell, iterations)
104
+ else:
105
+ result = PlaneSheetAnalytical(tauSpec,alphaSpec)
106
+ #result = PlaneSheetAnalytical(tauSpec,alphaSpec)
107
+
108
+ return result
109
+
110
+ # Kps data - switch out when Robert give me the updated one
111
+ Kpsdata = pd.read_excel('data/Kps-experiment.xlsx')
112
+ KpsData = Kpsdata["Kps"].to_numpy()
113
+
114
+ # Kpt data
115
+ KptData = pd.read_excel('data/db-Kpt-corrected.xlsx')
116
+
117
+ def get_Kpt(KowTarget, N):
118
+ rng = random.Generator(random.PCG64(seed=12345))
119
+
120
+ if KowTarget >= 1.8:
121
+ Kdata = KptData[KptData["LogKow"].ge(1.8)]
122
+ Kpt = Kdata["LogKpt"].to_numpy()
123
+ Kpt = Kpt[~isnan(Kpt)]
124
+
125
+ else:
126
+ Kdata = KptData[KptData["LogKow"].lt(1.8)]
127
+ Kpt = Kdata["LogKpt"].to_numpy()
128
+ Kow = Kdata["LogKow"].to_numpy()
129
+ KptNew = Kpt[~isnan(Kpt)]
130
+ KowNew = Kow[~isnan(Kpt)]
131
+
132
+ Kpt = KptNew + 1.03 * (KowTarget - KowNew)
133
+
134
+ return 10 ** rng.choice(Kpt, N)
135
+
136
+ # Dt data
137
+ DTdata = pd.read_excel('data/Tissue_Diffusion_Data_v4.xlsx')
138
+
139
+ barrier = DTdata['Barrier Tissue (Yes/No)']
140
+ DT = DTdata['Diffusion Coefficient (cm2/s)']
141
+
142
+ DTbarrier = DT[barrier == 'Yes'].to_numpy()
143
+ DTnonbarrier = DT[barrier == 'No'].to_numpy()
144
+
145
+ def get_Dt(N):
146
+ rng = random.Generator(random.PCG64(seed=12345))
147
+
148
+ return rng.choice(DTbarrier, N)
149
+
150
+ Kpsdata = pd.read_excel('data/Kps-experiment.xlsx')
151
+ KpsData = Kpsdata["Kps"].to_numpy()
152
+
153
+ def get_Kps(N):
154
+ rng = random.Generator(random.PCG64(seed=12345))
155
+
156
+ return rng.choice(KpsData, N)