Spaces:
Sleeping
Sleeping
dzs commited on
Commit ·
81e15fe
1
Parent(s): 8b1580d
initial upload
Browse files- .DS_Store +0 -0
- .gitattributes +1 -0
- Dockerfile +18 -0
- Kps_function/.DS_Store +0 -0
- Kps_function/Kps_model/coeffs.npz +3 -0
- Kps_function/Kps_model/meta.json +114 -0
- Kps_function/__pycache__/read_Kps_model.cpython-313.pyc +0 -0
- Kps_function/read_Kps_model.py +201 -0
- assets/style.css +8 -0
- data/.DS_Store +0 -0
- data/Kps-experiment.xlsx +3 -0
- data/Tissue_Diffusion_Data_v4.xlsx +3 -0
- data/__pycache__/functions.cpython-313.pyc +0 -0
- data/data-descriptors-mordred-numconfs51.xlsx +3 -0
- data/db-D-interp-37-clean.xlsx +3 -0
- data/db-D-interp-50-clean.xlsx +3 -0
- data/db-D-interp-allT-clean.xlsx +3 -0
- data/db-Kpt-corrected.xlsx +3 -0
- data/db-polymer-properties-and-categories.xlsx +3 -0
- data/extreme-solutes-universe.xlsx +3 -0
- data/functions.py +303 -0
- data/param_distribution_37.json +1 -0
- data/param_distribution_50.json +1 -0
- data/param_distribution_allT.json +0 -0
- data/polymer_names.tsv +54 -0
- data/polymer_names_noglasses.tsv +39 -0
- data/soluteData.xlsx +3 -0
- data/solvent-viscosity.xlsx +3 -0
- data/solventData.xlsx +3 -0
- data/vrentas-duda-params.xlsx +3 -0
- data/~$db-Kpt-corrected.xlsx +3 -0
- fast_bisect/.DS_Store +0 -0
- fast_bisect/README +6 -0
- fast_bisect/build/.DS_Store +0 -0
- fast_bisect/build/lib.macosx-11.1-arm64-cpython-313/fast_bisect.cpython-313-darwin.so +0 -0
- fast_bisect/build/temp.macosx-11.1-arm64-cpython-313/fast_bisect.o +0 -0
- fast_bisect/fast_bisect.c +0 -0
- fast_bisect/fast_bisect.cpython-313-darwin.so +0 -0
- fast_bisect/fast_bisect.py +7 -0
- fast_bisect/fast_bisect.pyx +28 -0
- fast_bisect/fast_bisect_example.py +16 -0
- main.py +823 -0
- requirements.txt +25 -0
- 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)
|