dmsaylor commited on
Commit
d641b7e
·
2 Parent(s): 805c0c9e33154d

Merge remote-tracking branch 'origin/master'

Browse files
CHRIS.py CHANGED
@@ -25,6 +25,9 @@ app.register_blueprint(blueprint)
25
  from exposure3_module import blueprint
26
  app.register_blueprint(blueprint)
27
 
 
 
 
28
  @app.route('/', methods=['GET'])
29
  def app_init():
30
  return render_template('main.html')
 
25
  from exposure3_module import blueprint
26
  app.register_blueprint(blueprint)
27
 
28
+ from quantity_module import blueprint
29
+ app.register_blueprint(blueprint)
30
+
31
  @app.route('/', methods=['GET'])
32
  def app_init():
33
  return render_template('main.html')
ChemID.py CHANGED
@@ -963,7 +963,7 @@ def string2mp(name, namespace='name'):
963
  if pd.isna(mp):
964
  mask = df_pred['CASRN'] == cas
965
  if sum(mask):
966
- mp = float(df_pred[mask]['MELTING_POINT_DEGC_OPERA_PRED'])
967
  mp_origin = 'comptox/pred'
968
  # try to scrape from PubChem
969
  if pd.isna(mp):
 
963
  if pd.isna(mp):
964
  mask = df_pred['CASRN'] == cas
965
  if sum(mask):
966
+ mp = float(df_pred[mask]['MELTING_POINT_DEGC_OPERA_PRED'].iloc[0])
967
  mp_origin = 'comptox/pred'
968
  # try to scrape from PubChem
969
  if pd.isna(mp):
functions.py CHANGED
@@ -13,12 +13,16 @@ def SigFigs(number, n):
13
  if number == 0: return number
14
  return round(number, n - int(math.floor(math.log10(math.fabs(number)))) - 1)
15
 
16
- def Piringer(Mw, Ap):
 
 
 
 
 
 
17
  # Semi-empirical model for D(Mw) given polymer property Ap- Toxicol. Sci. 2019, 172 (1), 201–212.
18
  if Mw > 1100.: # if molecule is greater than 1100 g/mol, default to that value as worst case
19
  Mw = 1100.
20
- T = 310.
21
-
22
  return 1e4 * np.exp(Ap - 0.1351 * Mw ** (2. / 3.) + 0.003 * Mw - 10454. / T)
23
 
24
  def WilkeChang(Mw):
@@ -82,6 +86,27 @@ def RatePlot(tarray, rates):
82
  return pngImageB64String
83
 
84
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
85
  def PlaneSheetFiniteBathMass(M0, D, K, PolymerVolume, SurfaceArea, SolventVolume, ExtractionTime, nterms):
86
  L = PolymerVolume / SurfaceArea # effective length scale of the component
87
  alpha = SolventVolume / PolymerVolume / K
 
13
  if number == 0: return number
14
  return round(number, n - int(math.floor(math.log10(math.fabs(number)))) - 1)
15
 
16
+ def HtmlNumber(number,n):
17
+ number_str = f'{number:.{n}e}'
18
+ base, exponent = number_str.split('e')
19
+ html_output = f'{base} × 10<sup>{exponent[0] if exponent[0]=="-" else ""}{int(exponent[1:]):d}</sup>'
20
+ return html_output
21
+
22
+ def Piringer(Mw, Ap, T=310.):
23
  # Semi-empirical model for D(Mw) given polymer property Ap- Toxicol. Sci. 2019, 172 (1), 201–212.
24
  if Mw > 1100.: # if molecule is greater than 1100 g/mol, default to that value as worst case
25
  Mw = 1100.
 
 
26
  return 1e4 * np.exp(Ap - 0.1351 * Mw ** (2. / 3.) + 0.003 * Mw - 10454. / T)
27
 
28
  def WilkeChang(Mw):
 
86
  return pngImageB64String
87
 
88
 
89
+ def CdfPlot(vals, units=None):
90
+
91
+ xlabel = 'Total quantity' if units is None else f'Total quantity ({units})'
92
+ fig, ax = plt.subplots(figsize=(6, 4))
93
+ ax.ecdf(vals, c='b', lw=3)
94
+ q50 = np.nanquantile(vals,0.5)
95
+ ax.plot([q50,q50],[0,0.5],'k--',[q50],[0.5],'ko',[ax.get_xlim()[0],q50],[0.5,0.5],'k--',lw=2,ms=10)
96
+ ax.set_xscale('log')
97
+ ax.set(
98
+ xlabel=xlabel,
99
+ ylabel='Cumulative probability',
100
+ )
101
+ plt.tight_layout()
102
+ pngImage = io.BytesIO()
103
+ FigureCanvas(fig).print_png(pngImage)
104
+ pngImageB64String = "data:image/png;base64,"
105
+ pngImageB64String += base64.b64encode(pngImage.getvalue()).decode('utf8')
106
+
107
+ return pngImageB64String
108
+
109
+
110
  def PlaneSheetFiniteBathMass(M0, D, K, PolymerVolume, SurfaceArea, SolventVolume, ExtractionTime, nterms):
111
  L = PolymerVolume / SurfaceArea # effective length scale of the component
112
  alpha = SolventVolume / PolymerVolume / K
quantity_functions.py ADDED
@@ -0,0 +1,316 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
+ from functions import PowerLaw, Piringer
17
+
18
+ ### TODO arbitrary T
19
+
20
+ ## sampling parameters
21
+ N_sample = int(1e6)
22
+ #rng = np.random.Generator(np.random.PCG64(seed=12345))
23
+
24
+ ## list of solvents to include
25
+ solvents = sorted(['ethanol', 'isopropanol', 'acetonitrile', 'toluene', 'dichloromethane', 'hexane'])
26
+
27
+ ## c distribution parameters
28
+ T_cut = 20
29
+ MW_cut = 20
30
+
31
+ use_new = True
32
+ T_cut_new = 0.5
33
+
34
+ #### read data files
35
+ # CHRIS bounds
36
+ #with open('quantity_module/data/bounds.pkl', 'rb') as fp:
37
+ # params_dict_ub, params_dict_lb, params_dict_ub_band, params_dict_lb_band, params_dict_q95, params_dict_q50, params_dict_q05 = pickle.load(fp)
38
+ #with open('quantity_module/data/bounds-50.pkl', 'rb') as fp:
39
+ # params_dict_ub_50, params_dict_lb_50, params_dict_ub_band_50, params_dict_lb_band_50, params_dict_q95_50, params_dict_q50_50, params_dict_q05_50 = pickle.load(fp)
40
+ # CHRIS parameter distributions
41
+ if not use_new:
42
+ param_dists = {}
43
+ with open('quantity_module/data/param_distribution_37.json','r') as fp:
44
+ param_dists[37] = json.load(fp)
45
+ with open('quantity_module/data/param_distribution_50.json','r') as fp:
46
+ param_dists[50] = json.load(fp)
47
+ else:
48
+ with open('quantity_module/data/param_distribution_allT.json','r') as fp:
49
+ param_dists = json.load(fp)
50
+ # other stuff
51
+ df_visc = pd.read_excel('quantity_module/data/solvent-viscosity.xlsx')
52
+ df_desc = pd.read_excel(f'quantity_module/data/data-descriptors-mordred-numconfs51.xlsx', usecols=['Solute_InChIKey', 'Vabc','VMcGowan'])
53
+ #dfp = pd.read_excel('quantity_module/data/db-properties-polymer.xlsx') ## XXX?
54
+ #df2 = pd.read_excel('quantity_module/data/db-D.xlsx', sheet_name=1) ## XXX?
55
+ #df2['CHRIS Class'] = df2['CHRIS Class'].fillna('none')
56
+ #df2['New Class'] = df2['New Class'].fillna('none')
57
+ if not use_new:
58
+ ## clean data
59
+ df_final_37 = pd.read_excel('quantity_module/data/db-D-interp-37-clean.xlsx')
60
+ df_final_50 = pd.read_excel('quantity_module/data/db-D-interp-50-clean.xlsx')
61
+ # convert all T to K
62
+ df_final_37['T'] = df_final_37['T'] + 273.15
63
+ df_final_37['Polymer_Tg'] = df_final_37['Polymer_Tg'] + 273.15
64
+ df_final_37['Polymer_Tm'] = df_final_37['Polymer_Tm'] + 273.15
65
+ df_final_50['T'] = df_final_50['T'] + 273.15
66
+ df_final_50['Polymer_Tg'] = df_final_50['Polymer_Tg'] + 273.15
67
+ df_final_50['Polymer_Tm'] = df_final_50['Polymer_Tm'] + 273.15
68
+ # add volumes
69
+ df_final_37 = pd.merge(df_final_37, df_desc[['Solute_InChIKey', 'Vabc', 'VMcGowan']], how='left', on='Solute_InChIKey', suffixes=('', '_dupe'))
70
+ df_final_50 = pd.merge(df_final_50, df_desc[['Solute_InChIKey', 'Vabc', 'VMcGowan']], how='left', on='Solute_InChIKey', suffixes=('', '_dupe'))
71
+ else:
72
+ ## clean data
73
+ df_final = pd.read_excel('quantity_module/data/db-D-interp-allT-clean.xlsx')
74
+ # convert all T to K
75
+ df_final['T'] = df_final['T'] + 273.15
76
+ df_final['Polymer_Tg'] = df_final['Polymer_Tg'] + 273.15
77
+ df_final['Polymer_Tm'] = df_final['Polymer_Tm'] + 273.15
78
+ # add volumes
79
+ df_final = pd.merge(df_final, df_desc[['Solute_InChIKey', 'Vabc', 'VMcGowan']], how='left', on='Solute_InChIKey', suffixes=('', '_dupe'))
80
+
81
+ #### solvent-specific viscosity
82
+ # add MW
83
+ mws = []
84
+ for solv in df_visc['Solvent_Name']:
85
+ mw = chemicals.search_chemical(solv).MW
86
+ mws.append(mw)
87
+ df_visc['MW'] = mws
88
+ ## selected solvent MWs
89
+ SolventMWs = {solv:df_visc.loc[df_visc['Solvent_Name']==solv,'MW'].iloc[0] for solv in solvents}
90
+ # linear relation to estimate Vabc when it fails for a molecule
91
+ Vabc = df_desc['Vabc']
92
+ Vmcg = df_desc['VMcGowan']
93
+ m = ~pd.isna(Vabc)
94
+ popt_V = np.polyfit(Vmcg[m], Vabc[m], 1)
95
+
96
+ def get_WC(T,solv,V):
97
+ params = df_visc[df_visc['Solvent_Name']==solv].iloc[0]
98
+ if params['Equation'] == '10^A(1/T-1/B)':
99
+ eta = 10**(params['A']*(1/T-1/params['B']))
100
+ elif params['Equation'] == 'A*exp(B/T)':
101
+ eta = params['A']*np.exp(params['B']/T)
102
+ elif params['Equation'] == 'E*exp(A+B/(T/298.15)+C/(T/298.15)^2+D/(T/298.15)^3)':
103
+ eta = params['E']*np.exp(params['A'] + params['B']/(T/298.15) + params['C']/(T/298.15)**2 + params['D']/(T/298.15)**3)
104
+ elif params['Equation'] == 'A*exp(-0.01*B*(T-298.15))':
105
+ eta = params['A']*np.exp(-0.01*params['B']*(T-298.15))
106
+ elif params['Equation'] == 'A+BT/1+CT+DT^2':
107
+ eta = (params['A']+params['B']*T) / (1 + params['C']*T + params['D']*T**2)
108
+ elif params['Equation'] == 'A+B/T+C/T^2+D/T^3':
109
+ eta = params['A'] + params['B']/T + params['C']/T**2 + params['D']/T**3
110
+ elif params['Equation'] == 'A*298.15/T':
111
+ eta = params['A'] * 298.15/T
112
+ elif params['Equation'] == 'A*T+B':
113
+ eta = params['A'] * T + params['A']
114
+ else:
115
+ eta = np.nan
116
+ D_WC = 7.4e-8*(params['MW']*params['WC_assoc_param'])**0.5*(T)/eta/V**0.6
117
+ return D_WC, eta, params['MW']
118
+
119
+ #### add Wilke-Chang
120
+ if not use_new:
121
+ ## 50 C
122
+ # estimate Vabc for those with nan values
123
+ m = pd.isna(df_final_50['Vabc'])
124
+ v = np.polyval(popt_V, df_final_50['VMcGowan'][m])
125
+ df_final_50.loc[m, 'Vabc'] = v
126
+ T = df_final_50['T']
127
+ V = df_final_50['Vabc']
128
+ for solv in solvents:
129
+ D_WC, eta, MW_solvent = get_WC(T, solv, V)
130
+ df_final_50[f'eta_{solv}'] = eta
131
+ df_final_50[f'D_WC_{solv}'] = D_WC
132
+ df_final_50[f'MW_solvent_{solv}'] = MW_solvent
133
+ ## 37 C
134
+ # estimate Vabc for those with nan values
135
+ m = pd.isna(df_final_37['Vabc'])
136
+ v = np.polyval(popt_V, df_final_37['VMcGowan'][m])
137
+ df_final_37.loc[m, 'Vabc'] = v
138
+ T = df_final_37['T']
139
+ V = df_final_37['Vabc']
140
+ for solv in solvents:
141
+ D_WC, eta, MW_solvent = get_WC(T, solv, V)
142
+ df_final_37[f'eta_{solv}'] = eta
143
+ df_final_37[f'D_WC_{solv}'] = D_WC
144
+ df_final_37[f'MW_solvent_{solv}'] = MW_solvent
145
+ else:
146
+ # estimate Vabc for those with nan values
147
+ m = pd.isna(df_final['Vabc'])
148
+ v = np.polyval(popt_V, df_final['VMcGowan'][m])
149
+ df_final.loc[m, 'Vabc'] = v
150
+ T = df_final['T']
151
+ V = df_final['Vabc']
152
+ for solv in solvents:
153
+ D_WC, eta, MW_solvent = get_WC(T, solv, V)
154
+ df_final[f'eta_{solv}'] = eta
155
+ df_final[f'D_WC_{solv}'] = D_WC
156
+ df_final[f'MW_solvent_{solv}'] = MW_solvent
157
+
158
+ def get_V(mol):
159
+ calc = mordred.Calculator([mordred.descriptors.VdwVolumeABC, mordred.descriptors.McGowanVolume])
160
+ Vabc,Vmcg = list(calc(mol).values())
161
+ if not isinstance(Vabc, numbers.Number):
162
+ Vabc = np.polyval(popt_V, Vmcg)
163
+ return Vabc
164
+
165
+ #### Vrentas-Duda setup
166
+ df_vd_solv = pd.read_excel('quantity_module/data/vrentas-duda-params.xlsx', sheet_name='Solutes')
167
+ df_vd_solv.drop_duplicates(keep='first', inplace=True, ignore_index=True) # drop exact duplicates
168
+ df_vd_poly = pd.read_excel('quantity_module/data/vrentas-duda-params.xlsx', sheet_name='Polymers')
169
+ df_vd_poly.drop_duplicates(keep='first', inplace=True, ignore_index=True) # drop exact duplicates
170
+ #df_vd_poly = pd.merge(df_vd_poly, dfp[['Polymer_Name','Polymer_Tg','Polymer_Tm']], how='left', on='Polymer_Name')
171
+ #df_vd_poly = pd.merge(df_vd_poly, df2[['Polymer_Name', 'CHRIS Class', 'New Class']], how='left', on='Polymer_Name')
172
+ #df_vd_poly['New Class'] = df_vd_poly['New Class'].fillna('none')
173
+ #df_vd_poly['CHRIS Class'] = df_vd_poly['CHRIS Class'].fillna('none')
174
+
175
+ ## Calculate c
176
+ dfs_vd_allT = []
177
+ for T in np.arange(100,800,20):
178
+ fV_polyT = (df_vd_poly['K12']*(df_vd_poly['K22-Tg2']+T))
179
+ #fV_polyT[fV_polyT<0.025] = 0.025
180
+ for solvname in set(df_vd_solv['Solute_Name']):
181
+ df_sol = df_vd_solv[df_vd_solv['Solute_Name']==solvname]
182
+ for row in df_sol.iterrows():
183
+ row = row[1]
184
+ fV_sol = (row['K11']*(row['K21-Tg1']+T))
185
+ c_sol = fV_sol / fV_polyT
186
+ df_vd_allT = pd.concat([row]*len(df_vd_poly), axis=1, ignore_index=True).T
187
+ df_vd_allT = pd.concat([df_vd_allT, df_vd_poly], axis=1)
188
+ df_vd_allT['c'] = c_sol
189
+ df_vd_allT['T'] = T
190
+ dfs_vd_allT.append(df_vd_allT)
191
+ df_vd_allT = pd.concat(dfs_vd_allT, ignore_index=True)
192
+ df_vd_allT['T-Tg'] = df_vd_allT['T']-df_vd_allT['Tg2']
193
+ df_vd_allT['T-Tg1'] = df_vd_allT['T']-df_vd_allT['Tg1']
194
+
195
+ def get_c_dist(T,Tg,MW):
196
+ 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)
197
+ cs = df_vd_allT.loc[m, 'c']
198
+ cs = np.array(cs)
199
+ cs = cs[~np.isnan(cs)]
200
+ cs = cs[cs>0]
201
+ return cs
202
+
203
+ def get_D_dists(w,T,Polymer_Tg,Solvent_Name,Solvent_MW,Solute_MW,CHRIS_category,rng,N=100000,return_DCs=False):
204
+ """
205
+ D_dist_noswell, D_dist_swell, (c, Ds, DWCs, DCs) = get_D_dists(Swelling_wtfrac,T,Polymer_Tg,Solvent_Name,Solvent_MW,Solute_MW,CHRIS_category,return_DCs=True,N=N)
206
+ """
207
+ if not use_new:
208
+ if np.abs(T-310)<2:
209
+ df_final_T = df_final_37
210
+ if np.abs(T-323)<2:
211
+ df_final_T = df_final_50
212
+ else:
213
+ df_final_T = df_final.loc[np.abs(df_final['T']-T)<T_cut_new]
214
+ #Solvent_MW = solvmws[Solvent_Name]
215
+ cs = get_c_dist(T,Polymer_Tg,Solvent_MW)
216
+ if Solute_MW < 50:
217
+ m50 = df_final_T['MW']<=50
218
+ else:
219
+ m50 = df_final_T['MW']>50
220
+ ## within cutoffs, with at least N closest (by sorting, separating at MW = 50)
221
+ m2 = (np.abs(df_final_T['Polymer_Tg']-Polymer_Tg)<T_cut) & (np.abs(df_final_T['MW']-Solute_MW)<MW_cut) & m50
222
+ if m2.sum()<25:
223
+ 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]
224
+ m2 = list(set(m2.index[m2]).union(set(m3)))
225
+ if return_DCs:
226
+ 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)
227
+ else:
228
+ Ds,DWCs = rng.choice([df_final_T.loc[m2,'D'], df_final_T.loc[m2,f'D_WC_{Solvent_Name}']], N, axis=1)
229
+ c = rng.choice(cs, N)
230
+ lnD_D0 = c*w/(1+(c-1)*w) * np.log(DWCs/Ds)
231
+ ## distribution of D_CHRIS
232
+ if not use_new:
233
+ if Solute_MW > 50:
234
+ params = param_dists[T-273.15][f'{CHRIS_category}_hi']
235
+ else:
236
+ params = param_dists[T-273.15][f'{CHRIS_category}_lo']
237
+ if params[0] == 'pir':
238
+ A_list = params[1:]
239
+ D_list = [Piringer(Solute_MW, Ai, T) for Ai in A_list]
240
+ else:
241
+ Ball = params[1]
242
+ A_list = params[2:]
243
+ D_list = np.exp([PowerLaw(Solute_MW, Ai, Ball) for Ai in A_list])
244
+ else:
245
+ if Solute_MW > 50:
246
+ subkey = f'{CHRIS_category}_hi'
247
+ else:
248
+ subkey = f'{CHRIS_category}_lo'
249
+ allparams = [param_dists[Ti][subkey] for Ti in param_dists if T+T_cut_new >= int(Ti)+273.15 >= T-T_cut_new]
250
+ #allparams = [param_dists[Ti][subkey] for Ti in param_dists if T+T_cut_new > int(Ti)+273.15 > T-T_cut_new]
251
+ D_list = []
252
+ for params in allparams:
253
+ if params[0] == 'pir':
254
+ A_list = params[1:]
255
+ D_list += [Piringer(Solute_MW, Ai, T) for Ai in A_list]
256
+ else:
257
+ Ball = params[1]
258
+ A_list = params[2:]
259
+ D_list += list(np.exp([PowerLaw(Solute_MW, Ai, Ball) for Ai in A_list]))
260
+ D_dist_noswell = rng.choice(D_list, N)
261
+ D_dist_swell = np.exp(np.log(D_dist_noswell)+lnD_D0)
262
+ if return_DCs:
263
+ return D_dist_noswell, D_dist_swell, (c, Ds, DWCs, DCs)
264
+ else:
265
+ return D_dist_noswell, D_dist_swell
266
+
267
+ def PlaneSheetFiniteBathMass(M0,D,K,PolymerVolume,SurfaceArea,SolventVolume,ExtractionTime,nterms):
268
+ ### works with scalar- or vector-valued M0 and D
269
+ L = PolymerVolume/SurfaceArea #effective length scale of the component
270
+ alpha = SolventVolume/PolymerVolume/K
271
+ Minfty = M0/(1.+1./(alpha))
272
+ eps = 1e-12
273
+ f = lambda x: np.tan(x)+alpha*x
274
+ qn = np.zeros((nterms))
275
+ for j in range(nterms):
276
+ rts = bisect(f,np.pi/2.+j*np.pi+eps, np.pi*(1.+j)-eps)
277
+ qn[j] = rts
278
+ result = 1.
279
+ for j in range(nterms):
280
+ result = result - (2.*alpha*(1.+alpha))*np.exp(-D*qn[j]**2.*ExtractionTime/L**2.)/(1.+alpha+alpha**2.*qn[j]**2.)
281
+ result = Minfty*result
282
+ return result
283
+
284
+ def PlaneSheetFiniteBathMassApprox(M0,D,K,PolymerVolume,SurfaceArea,SolventVolume,ExtractionTime):
285
+ ### works with scalar- or vector-valued M0 and D
286
+ L = PolymerVolume/SurfaceArea #effective length scale of the component
287
+ alpha = SolventVolume/PolymerVolume/K
288
+ Minfty = M0/(1.+1./(alpha))
289
+ T = D*ExtractionTime/L**2.
290
+ # if exp will blow up, use asymptotic expansion instead
291
+ if not np.ndim(T):
292
+ if(T/alpha**2.<100.):
293
+ result = (1.+alpha)*(1.-np.exp(T/alpha**2.)*sp.special.erfc(np.sqrt(T)/alpha))
294
+ else:
295
+ result = (1.+alpha)*(1.-alpha/(np.sqrt(np.pi)*np.sqrt(T))+alpha**3./(2.*np.sqrt(np.pi)*(T)**1.5)-3.*alpha**5./(4.*np.sqrt(np.pi)*(T)**2.5))
296
+ else:
297
+ result = np.zeros(len(T))
298
+ m = T/alpha**2.<100.
299
+ result[m] = (1.+alpha)*(1.-np.exp(T[m]/alpha**2.)*sp.special.erfc(np.sqrt(T[m])/alpha))
300
+ m = T/alpha**2.>=100.
301
+ result[m] = (1.+alpha)*(1.-alpha/(np.sqrt(np.pi)*np.sqrt(T[m]))+alpha**3./(2.*np.sqrt(np.pi)*(T[m])**1.5)-3.*alpha**5./(4.*np.sqrt(np.pi)*(T[m])**2.5))
302
+ result = Minfty*result
303
+ return result
304
+
305
+ def PlaneSheetAnalytical(M0,D,K,PolymerVolume,SurfaceArea,SolventVolume,ExtractionTime,nterms=5):
306
+ L = PolymerVolume/SurfaceArea #effective length scale of the component
307
+ T = D*ExtractionTime/L**2.
308
+ result = (T>0.05) * PlaneSheetFiniteBathMass(M0,D,K,PolymerVolume,SurfaceArea,SolventVolume,ExtractionTime,nterms) + \
309
+ (T<=0.05) * PlaneSheetFiniteBathMassApprox(M0,D,K,PolymerVolume,SurfaceArea,SolventVolume,ExtractionTime)
310
+ return result
311
+
312
+ def get_M_dist(D_dist, M_expt, PolymerVolume, SurfaceArea, SolventVolume, ExtractionTime, K_expt=10):
313
+ M_M0 = PlaneSheetAnalytical(1.0, D_dist, K_expt, PolymerVolume, SurfaceArea, SolventVolume, ExtractionTime, nterms=5) # much faster and indistinguishable distribution from Mfunc_film
314
+ M0_pred = M_expt/M_M0
315
+ return M0_pred
316
+
quantity_module/__init__.py ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
 
1
+ from flask import Blueprint
2
+
3
+ blueprint = Blueprint('quantity_module', __name__, template_folder='templates', static_folder='static', static_url_path='/quantity_module')
4
+
5
+ from . import quantity
quantity_module/data/copy-data.sh ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/bin/bash
2
+
3
+ cp /Users/robert.elder/doc/experiments/01-diffusion/data/solvent-viscosity.xlsx .
4
+ cp /Users/robert.elder/doc/experiments/01-diffusion/data/tmp-plots/descs/data-descriptors-mordred-numconfs51.xlsx .
5
+ cp /Users/robert.elder/doc/experiments/01-diffusion/data/tmp-plots/bounds-99/param_distribution_allT.json .
6
+ cp /Users/robert.elder/doc/experiments/01-diffusion/data/tmp-plots/bounds-99/db-D-interp-allT-clean.xlsx .
7
+ cp /Users/robert.elder/doc/experiments/01-diffusion/data/vrentas-duda-params.xlsx .
8
+
9
+ if 0;
10
+ cp /Users/robert.elder/doc/experiments/01-diffusion/data/tmp-plots/bounds-99/param_distribution_37.json .
11
+ cp /Users/robert.elder/doc/experiments/01-diffusion/data/tmp-plots/bounds-99/param_distribution_50.json .
12
+ cp /Users/robert.elder/doc/experiments/01-diffusion/data/tmp-plots/bounds-99/db-D-interp-37-clean.xlsx .
13
+ cp /Users/robert.elder/doc/experiments/01-diffusion/data/tmp-plots/bounds-99/db-D-interp-50-clean.xlsx .
14
+ #cp /Users/robert.elder/doc/experiments/08-solubility/data/db-properties-polymer.xlsx .
15
+ #cp /Users/robert.elder/doc/experiments/01-diffusion/data/db-D.xlsx .
16
+ #cp /Users/robert.elder/doc/experiments/01-diffusion/data/tmp-plots/bounds-99/bounds.pkl .
17
+ #cp /Users/robert.elder/doc/experiments/01-diffusion/data/tmp-plots/bounds-99/bounds-50.pkl .
18
+ fi
quantity_module/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
quantity_module/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
quantity_module/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
quantity_module/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
quantity_module/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]}
quantity_module/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]}
quantity_module/data/param_distribution_allT.json ADDED
The diff for this file is too large to render. See raw diff
 
quantity_module/data/solvent-viscosity.xlsx ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:64b17f91b472ef9b99721bcc01c233e168e0e2eec883867c17539c5d6865052a
3
+ size 16550
quantity_module/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
quantity_module/quantity.py ADDED
@@ -0,0 +1,169 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import sys,numbers
2
+ import numpy as np
3
+ import pandas as pd
4
+ from flask import render_template, request
5
+ from functions import SigFigs, HtmlNumber, Piringer, WilkeChang, CdfPlot
6
+ from functions import Piecewise, PowerLaw
7
+ from qrf_functions import QRF_Apply, QRF_Ceramic
8
+ from . import blueprint
9
+ from polymers import Polymers, Polymers3
10
+ from ChemID import *
11
+ from quantity_functions import *
12
+ import rdkit
13
+ from rdkit.Chem import AllChem as Chem
14
+
15
+ # get additional physical properties, options are: logp, rho, mp
16
+ #get_properties = [] # don't get any; this breaks ceramics logic
17
+ #get_properties = ['logp','rho','mp'] # get all three
18
+ get_properties = ['mp'] # only get mp
19
+ # show additional physical properties
20
+ show_properties = False
21
+ # output additional info for physical properties
22
+ debug = False
23
+
24
+ # load polymer data including Ap values
25
+ polymers, categories, params = Polymers3()
26
+
27
+ # load the index page for the exposure module
28
+ @blueprint.route('/quantity', methods=['GET'])
29
+ def exposure():
30
+ return render_template('quantity_index.html', polymers=polymers, solvents=solvents) ## NOTE solvents are defined in quantity_functions.py
31
+
32
+
33
+ # build the report page for the exposure module
34
+ @blueprint.route('/quantity', methods=['POST'])
35
+ def exp_post():
36
+
37
+ Polymer_Tg = float(request.form['Polymer_Tg']) ## NOTE Tg is provided in C
38
+ T = float(request.form['T'])
39
+
40
+ if T<Polymer_Tg:
41
+ return render_template('quantity_temperatureError.html')
42
+
43
+ chemName = request.form['chemName']
44
+ IDtype = request.form['IDtype']
45
+
46
+ if debug:
47
+ iupac, cas, smiles, MW, LogP, LogP_origin, rho, rho_origin, mp, mp_origin, molImage, error = ResolveChemical(chemName, IDtype, debug=debug, get_properties=['logp','rho','mp'])
48
+ LogP_origin, rho_origin, mp_origin = f' ({LogP_origin})', f' ({rho_origin})', f' ({mp_origin})',
49
+ else:
50
+ LogP_origin, rho_origin, mp_origin = '','',''
51
+ iupac, cas, smiles, MW, LogP, rho, mp, molImage, error = ResolveChemical(chemName, IDtype, get_properties=get_properties)
52
+
53
+ if error > 0:
54
+ # TODO output more useful info
55
+ return render_template('quantity_chemError.html')
56
+
57
+ #MW = SigFigs(MW, 6)
58
+ if 'logp' not in get_properties:
59
+ LogP = 'Not searched'
60
+ elif LogP is np.nan or LogP is None:
61
+ LogP = 'Not found'
62
+ else:
63
+ LogP = SigFigs(LogP, 4)
64
+ if 'rho' not in get_properties:
65
+ rho = 'Not searched'
66
+ elif rho is np.nan or rho is None:
67
+ rho = 'Not found'
68
+ else:
69
+ rho = SigFigs(rho, 4)
70
+ if 'mp' not in get_properties:
71
+ mp = 'Not searched'
72
+ elif mp is np.nan or mp is None:
73
+ mp = 'Not found'
74
+
75
+ # metals/ceramics logic
76
+ if isinstance(mp, numbers.Number):
77
+ is_metal, is_ceramic = CeramicOrMetal(smiles,mp)
78
+ else:
79
+ is_metal, is_ceramic = CeramicOrMetal(smiles,100)
80
+ if is_metal:
81
+ return render_template('quantity_metalError.html', show_properties=show_properties, chemName=chemName, MW=MW,
82
+ LogP=LogP, rho=rho, mp=mp, iupac=iupac,
83
+ cas=cas, smiles=smiles, molImage=molImage,
84
+ LogP_origin=LogP_origin, rho_origin=rho_origin, mp_origin=mp_origin)
85
+ if is_ceramic:
86
+ MW = 1100.
87
+
88
+ M_expt = float(request.form['amount']) # amount
89
+ units = request.form['units']
90
+ mass = float(request.form['mass'])
91
+ PolymerDensity = float(request.form['density'])
92
+ PolymerVolume = mass / PolymerDensity # vol
93
+ SurfaceArea = float(request.form['area']) # area
94
+ SolventVolume = float(request.form['solventvol'])
95
+ SolventName = request.form['solventname']
96
+ Swelling_percent = float(request.form['swelling'])
97
+ Swelling_wtfrac = Swelling_percent/100
98
+ ExtractionTime = float(request.form['time'])
99
+ K_expt = float(request.form['K'])
100
+ SolventMW = SolventMWs[SolventName]
101
+ SoluteMW = MW
102
+
103
+ polymer = request.form['polymer']
104
+ pIndex = np.argmax(polymers == polymer)
105
+
106
+ use_qrf = False
107
+ if polymer == 'Other polymer':
108
+ use_qrf = True
109
+
110
+ ## TODO implement total quantity prediction with QRF
111
+ if use_qrf and False:
112
+ method = 'qrf'
113
+ if is_ceramic:
114
+ diff,domain_extrap = QRF_Ceramic(PolymerDensity, Polymer_Tg, quantiles=[0.03,0.5,0.97])
115
+ else:
116
+ diff,domain_extrap = QRF_Apply(PolymerDensity, Polymer_Tg, smiles, quantiles=[0.03,0.5,0.97])
117
+ diff = diff[2] # upper bound
118
+ if domain_extrap:
119
+ # outside training domain, default to Wilke-Chang
120
+ diff = Piecewise(MW, params[None])
121
+ method = 'qrf/wc'
122
+ else:
123
+ ## use categories
124
+ ## TODO what is the correct worst-case for a generic polymer? G2?
125
+ CHRIS_category = categories[pIndex]
126
+ rng = np.random.Generator(np.random.PCG64(seed=12345))
127
+ D_dist_noswell, D_dist_swell = get_D_dists(Swelling_wtfrac, T+273.15, Polymer_Tg+273.15, SolventName, SolventMW, SoluteMW, CHRIS_category, rng, return_DCs=False, N=N_sample)
128
+ M0_pred = get_M_dist(D_dist_swell, M_expt, PolymerVolume, SurfaceArea, SolventVolume, ExtractionTime*3600, K_expt=K_expt)
129
+ if 0:
130
+ print('Swelling_wtfrac, T+273.15, Polymer_Tg+273.15, SolventName, SolventMW, SoluteMW, CHRIS_category')
131
+ print(Swelling_wtfrac, T+273.15, Polymer_Tg+273.15, SolventName, SolventMW, SoluteMW, CHRIS_category)
132
+ print(np.nanquantile(D_dist_swell, [0.05,0.5,0.95]))
133
+ print('M_expt, PolymerVolume, SurfaceArea, SolventVolume, ExtractionTime*3600, K_expt')
134
+ print(M_expt, PolymerVolume, SurfaceArea, SolventVolume, ExtractionTime*3600, K_expt)
135
+ print(np.nanquantile(M0_pred, [0.05,0.5,0.95]))
136
+ if CHRIS_category:
137
+ method = 'category'
138
+ else:
139
+ method = 'wc'
140
+
141
+ # Generate the rate plot using matplotlib
142
+ #pngImageB64String = CdfPlot(M0_pred[~np.isnan(M0_pred)], units=units)
143
+
144
+ # table of percentiles
145
+ #vals = np.quantile(M0_pred, [0.05,0.25,0.5,0.75,0.95])
146
+ #vals = [SigFigs(v,6) for v in np.quantile(M0_pred, [0.05,0.25,0.5,0.75,0.95])]
147
+ vals = np.quantile(M0_pred, [0.05,0.25,0.5,0.75,0.95])
148
+ pcts = np.round(vals/vals[2]*100,1)
149
+ vals = [HtmlNumber(v,3) for v in vals]
150
+ #df_table = pd.DataFrame(data=np.array([[r'5<sup>th</sup>', r'25<sup>th</sup>', r'50<sup>th</sup> (median)', r'75<sup>th</sup>', r'95<sup>th</sup>'], vals]).T, columns=[r'Percentile', r'\( M_0 \)'])
151
+ df_table = pd.DataFrame(data=np.array([[r'5<sup>th</sup>', r'25<sup>th</sup>', r'50<sup>th</sup> (median)', r'75<sup>th</sup>', r'95<sup>th</sup>'], vals, pcts]).T, columns=[r'Percentile', r'\( M_0 \)'+f' ({units})', r'\( M_0 \) (% median)'])
152
+ #df_table[r'\( M_0 \)'] = df_table[r'\( M_0 \)'].astype(float)
153
+ #table = df_table.to_html(index=False, escape=False, justify='center')
154
+ #table = df_table.style.set_properties(subset=['\( M_0 \)'], **{'text-align': 'right'}).format(lambda x: f"{float(x):.3f}", subset='\( M_0 \)').set_table_attributes('border="1"').hide(axis='index').to_html(index=False, escape=False, justify='center')
155
+ table = df_table.style.set_properties(subset=[f'\( M_0 \) ({units})', r'\( M_0 \) (% median)'], **{'text-align': 'right'}).set_table_attributes('border="1"').hide(axis='index').to_html(index=False, escape=False, justify='center')
156
+ #print(table)
157
+
158
+ tau = np.nanquantile(D_dist_swell,0.5) * (ExtractionTime*3600) / (PolymerVolume/SurfaceArea)**2
159
+
160
+ M0_out = SigFigs(np.nanquantile(M0_pred,0.5),6)
161
+ tau_out = SigFigs(tau,6)
162
+
163
+ return render_template('quantity_report.html', show_properties=show_properties, polymers=polymers, pIndex=pIndex,
164
+ area=SurfaceArea, vol=PolymerVolume, units=units, M=M_expt, M0=M0_out, time=ExtractionTime,
165
+ solventvol=SolventVolume, solventname=SolventName, swelling=Swelling_percent, K=K_expt, T=T, tau=tau_out,
166
+ chemName=chemName, MW=MW, LogP=LogP, rho=rho, mp=mp, iupac=iupac, cas=cas, smiles=smiles, molImage=molImage, table=table,
167
+ LogP_origin=LogP_origin, rho_origin=rho_origin, mp_origin=mp_origin, ceramic=is_ceramic, methods=[method,Polymer_Tg,PolymerDensity],
168
+ mass=mass, density=PolymerDensity)
169
+
quantity_module/static/Changelog.html ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <title>CHRIS-COU</title>
5
+ <link rel="stylesheet" href="styles.css">
6
+ <meta charset="UTF-8">
7
+
8
+ </head>
9
+
10
+ <header>
11
+ <h1 style="text-align:center"><font color="#0070C0">CH</font>emical <font color="#0070C0">RIS</font>k calculators (CHRIS) - Extraction efficiency</h1>
12
+ </header>
13
+ <h2 id="change-log">Change Log</h2>
14
+ <h3 id="version-0.1---2025-04-29">Version 0.1 - 2025-04-29</h3>
15
+ <ul>
16
+ <li>Development version released</li>
17
+ </ul>
quantity_module/static/Changelog.md ADDED
@@ -0,0 +1,19 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ```{=html}
2
+ <!DOCTYPE html>
3
+ <html lang="en">
4
+ <head>
5
+ <title>CHRIS-COU</title>
6
+ <link rel="stylesheet" href="styles.css">
7
+ <meta charset="UTF-8">
8
+
9
+ </head>
10
+
11
+ <header>
12
+ <h1 style="text-align:center"><font color="#0070C0">CH</font>emical <font color="#0070C0">RIS</font>k calculators (CHRIS) - Extraction efficiency</h1>
13
+ </header>
14
+ ```
15
+ ## Change Log
16
+
17
+ ### Version 0.1 - 2025-04-29
18
+
19
+ * Development version released
quantity_module/static/images/FDAgraphic.png ADDED

Git LFS Details

  • SHA256: 309a923bc8a29fa479d28c5421f671274bf5c08667207630467bce622fa635fb
  • Pointer size: 130 Bytes
  • Size of remote file: 90.2 kB
quantity_module/static/images/FDAlogo.png ADDED

Git LFS Details

  • SHA256: b77c9db36215bee929580dba4ba52fe335ab4d35c750cc60e1d1922d348a4dd3
  • Pointer size: 130 Bytes
  • Size of remote file: 26.2 kB
quantity_module/static/md2html.sh ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
 
1
+ #!/bin/bash
2
+
3
+ pandoc quantity_COU.md > quantity_COU.html
4
+ pandoc Changelog.md > Changelog.html
5
+
quantity_module/static/quantity_COU.html ADDED
@@ -0,0 +1,48 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <title>Total Quantity-COU</title>
5
+ <link rel="stylesheet" href="../../static/styles.css">
6
+ <meta charset="UTF-8">
7
+ </head>
8
+
9
+ <header>
10
+ <img src="images/FDAlogo.png" style="float: left;" height="100"/>
11
+ <img src="images/FDAgraphic.png" style="float: right;" height="100"/>
12
+ <br clear="all" />
13
+ <h1 style="text-align:center">CHRIS: <font color="#0070C0">CH</font>emical <font color="#0070C0">RIS</font>k calculators - Total Quantity </h1>
14
+ </header>
15
+ <h2 id="context-of-use-cou">Context of Use (COU)</h2>
16
+ <p>The total quantity module of the CHemical RISk calculator (CHRIS)
17
+ allows the user to …</p>
18
+ <p>The CHRIS - Total Quantity module outputs a predicted … For
19
+ additional details on the model please see this <a
20
+ href="https://www.sciencedirect.com/science/article/pii/S0273230023000739">article</a>.</p>
21
+ <p>The tool is limited by the assumptions upon which the model is based.
22
+ The salient limitations are enumerated below:</p>
23
+ <ol type="1">
24
+ <li>The extractable is macroscopically homogeneous within the matrix.
25
+ Therefore, the output is only applicable to compounds that are
26
+ introduced either intentionally or unintentionally during synthesis
27
+ (e.g., residual monomers and oligomers, catalysts, initiators) or
28
+ compounding (e.g., stabilizers, antioxidants, plasticizers). The model
29
+ is not appropriate for surface residuals from processing, cleaning, and
30
+ sterilization.</li>
31
+ <li>The solvent is “perfectly mixed”. This should be a reasonable
32
+ assumption provided the samples are adequately agitated over the
33
+ timeframe of the testing. However, this assumption may not be
34
+ appropriate if sufficient agitation is not applied and a signficant
35
+ boundary layer develops that slows the release rate or if the extraction
36
+ is conducted under flow conditions.</li>
37
+ <li>Possible chemical reactions are not considered. Therefore, if the
38
+ polymer matrix undergoes substantive degradation during the extraction
39
+ test, the predictions may not be relevant. Further, the model does not
40
+ consider the potential for individual extractable compounds to degrade
41
+ over the selected timeframe.</li>
42
+ <li>The test article is comprised of a single polymer matrix. In
43
+ practice, complex devices may be comprised of multiple components and/or
44
+ polymer matrices. In these scenarios, careful consideration of the
45
+ potential contributions of each material constituent of the test article
46
+ to the extractables profile is critical when attempting to leverage the
47
+ model predictions.</li>
48
+ </ol>
quantity_module/static/quantity_COU.md ADDED
@@ -0,0 +1,29 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ```{=html}
2
+ <!DOCTYPE html>
3
+ <html lang="en">
4
+ <head>
5
+ <title>Total Quantity-COU</title>
6
+ <link rel="stylesheet" href="../../static/styles.css">
7
+ <meta charset="UTF-8">
8
+ </head>
9
+
10
+ <header>
11
+ <img src="images/FDAlogo.png" style="float: left;" height="100"/>
12
+ <img src="images/FDAgraphic.png" style="float: right;" height="100"/>
13
+ <br clear="all" />
14
+ <h1 style="text-align:center">CHRIS: <font color="#0070C0">CH</font>emical <font color="#0070C0">RIS</font>k calculators - Total Quantity </h1>
15
+ </header>
16
+ ```
17
+
18
+ ## Context of Use (COU)
19
+
20
+ The total quantity module of the CHemical RISk calculator (CHRIS) allows the user to ...
21
+
22
+ The CHRIS - Total Quantity module outputs a predicted ... For additional details on the model please see this [article](https://www.sciencedirect.com/science/article/pii/S0273230023000739).
23
+
24
+ The tool is limited by the assumptions upon which the model is based. The salient limitations are enumerated below:
25
+
26
+ 1. The extractable is macroscopically homogeneous within the matrix. Therefore, the output is only applicable to compounds that are introduced either intentionally or unintentionally during synthesis (e.g., residual monomers and oligomers, catalysts, initiators) or compounding (e.g., stabilizers, antioxidants, plasticizers). The model is not appropriate for surface residuals from processing, cleaning, and sterilization.
27
+ 2. The solvent is "perfectly mixed". This should be a reasonable assumption provided the samples are adequately agitated over the timeframe of the testing. However, this assumption may not be appropriate if sufficient agitation is not applied and a signficant boundary layer develops that slows the release rate or if the extraction is conducted under flow conditions.
28
+ 3. Possible chemical reactions are not considered. Therefore, if the polymer matrix undergoes substantive degradation during the extraction test, the predictions may not be relevant. Further, the model does not consider the potential for individual extractable compounds to degrade over the selected timeframe.
29
+ 4. The test article is comprised of a single polymer matrix. In practice, complex devices may be comprised of multiple components and/or polymer matrices. In these scenarios, careful consideration of the potential contributions of each material constituent of the test article to the extractables profile is critical when attempting to leverage the model predictions.
quantity_module/templates/quantity_chemError.html ADDED
@@ -0,0 +1,24 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <title>CHRIS-ChemError</title>
6
+ <link rel= "stylesheet" type= "text/css" href= "{{ url_for('static',filename='styles.css') }}">
7
+
8
+ </head>
9
+
10
+ <img src="{{ url_for('static',filename='images/FDAlogo.png') }}" style="float: left;" height="100"/>
11
+ <img src="{{ url_for('static',filename='images/FDAgraphic.png') }}" style="float: right;" height="100"/>
12
+ <br clear="all" />
13
+
14
+ <body>
15
+
16
+ <div style="font-size:5rem;text-align:center"> &#129318; </div>
17
+
18
+ <p style="font-size:2rem;text-align:center">
19
+ Uh-oh! Something went wrong. We were unable to match your chemical. Please return to the previous page and try a
20
+ different identifier.
21
+ </p>
22
+
23
+
24
+ </body>
quantity_module/templates/quantity_index.html ADDED
@@ -0,0 +1,269 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <title>CHRIS</title>
6
+ <!-- <script src="https://cdn.jsdelivr.net/npm/jquery@3.5.1/dist/jquery.slim.min.js" integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj" crossorigin="anonymous"></script> -->
7
+ <!-- <script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.1/dist/umd/popper.min.js" integrity="sha384-9/reFTGAW83EW2RDu2S0VKaIzap3H66lZH81PoYlFhbGU+6BZp6G7niu735Sk7lN" crossorigin="anonymous"></script> -->
8
+ <!-- <script src="https://cdn.jsdelivr.net/npm/bootstrap@4.6.1/dist/js/bootstrap.min.js" integrity="sha384-VHvPCCyXqtD5DqJeNxl2dtTyhF78xXNXdkwX1CZeRusQfRKp+tA7hAShOK/B/fQ2" crossorigin="anonymous"></script> -->
9
+ <script src="{{ url_for('static',filename='jquery.slim.min.js') }}" integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj" crossorigin="anonymous"></script>
10
+ <script src="{{ url_for('static',filename='popper.min.js') }}" integrity="sha384-9/reFTGAW83EW2RDu2S0VKaIzap3H66lZH81PoYlFhbGU+6BZp6G7niu735Sk7lN" crossorigin="anonymous"></script>
11
+ <script src="{{ url_for('static',filename='bootstrap.min.js') }}" integrity="sha384-VHvPCCyXqtD5DqJeNxl2dtTyhF78xXNXdkwX1CZeRusQfRKp+tA7hAShOK/B/fQ2" crossorigin="anonymous"></script>
12
+ <link rel= "stylesheet" type= "text/css" href= "{{ url_for('static',filename='styles.css') }}">
13
+
14
+ <style>
15
+ table, th, td {
16
+ border: 1px solid black;
17
+ text-align: left;
18
+ }
19
+ </style>
20
+ </head>
21
+
22
+ <img src="{{ url_for('static',filename='images/FDAlogo.png') }}" style="float: left;" height="100"/>
23
+ <img src="{{ url_for('static',filename='images/FDAgraphic.png') }}" style="float: right;" height="100"/>
24
+ <br clear="all" />
25
+
26
+ <header>
27
+ <h1 style="text-align:center"><font color="#0070C0">CH</font>emical <font color="#0070C0">RIS</font>k calculators (CHRIS) - Total Quantity</h1>
28
+ </header>
29
+
30
+ <p> For details on how to use the CHRIS total quantity module, please click the information icons next to each section header and read the
31
+ <a href="{{url_for('.static', filename='exposure_COU.html')}}"> context of use (COU)</a>, which includes limitations of use.
32
+ For a history of updates, please see the <a href="{{url_for('.static', filename='Changelog.html')}}"> changelog</a>. </p>
33
+
34
+ <body>
35
+
36
+ <form method="POST">
37
+
38
+ <!-- Chemical input section -->
39
+
40
+ <table id="table1" align="left" style="float: none;">
41
+ <tr><td colspan="2"><h4> Chemical identity <button type="button" class="Info_btn" data-toggle="modal" data-target="#LeachModal" >&#9432;</button> </h4></td></tr>
42
+
43
+ <tr>
44
+ <th> Identifier type </th>
45
+ <td> <select name="IDtype">
46
+ <option value="CAS" selected>CAS</option>
47
+ <option value="SMILES" >SMILES</option>
48
+ <option value="common" >Common name</option>
49
+ </select>
50
+ </td>
51
+ </tr>
52
+ <tr>
53
+ <th>Identifier</th>
54
+ <td><input name="chemName" id="chemName" type="text" value="" required></td>
55
+ </tr>
56
+ </tr>
57
+ <th>Extracted amount</th>
58
+ <td><input name="amount" id="amount" value="1.0" step="any" min="0.000001" type="number" required></td>
59
+ </tr>
60
+ </tr>
61
+ <th> Amount units</th>
62
+ <td><select name="units">
63
+ <option value="mg" selected>mg</option>
64
+ <option value="µg">µg</option>
65
+ </select>
66
+ </td>
67
+
68
+ <!-- Modal -->
69
+ <div id="LeachModal" class="modal fade" role="dialog">
70
+ <div class="modal-dialog">
71
+
72
+ <!-- Modal content-->
73
+ <div class="modal-content">
74
+ <div class="modal-header">
75
+ <h4 class="modal-title">Bulk chemical</h4>
76
+ </div>
77
+ <div class="modal-body">
78
+ <p><em>Identifier type and identifier</em> - Please select the identifier type and enter the chemical identifier.
79
+ For example, if the CAS number is known, select CAS from the pull down menu and enter the CAS number in the identifier field.
80
+ If the CAS number is unknown, CHRIS can identify the molecular structure through the SMILES code, which can
81
+ be found for many chemicals using <a href="https://pubchem.ncbi.nlm.nih.gov">PubChem</a> or generated based on
82
+ the molecular structure using tools such as <a href="https://cactus.nci.nih.gov/cgi-bin/osra/index.cgi">OSRA</a>.
83
+ Alternatively, CHRIS can attempt to identify the chemical using a common name for the chemical.</p>
84
+ <p><em>Extracted amount</em> - Enter the mass of the substance extracted from the device. </p>
85
+ <p><em>Amount units</em> - Select the appropriate units for the amount, micrograms (µg) or milligrams (mg).</p>
86
+ </div>
87
+ <div class="modal-footer">
88
+ <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
89
+ </div>
90
+ </div>
91
+
92
+ </div>
93
+ </div>
94
+
95
+ <!-- Polymer matrix input section -->
96
+
97
+ <tr><td colspan="2"><h4> Polymer matrix <button type="button" class="Info_btn" data-toggle="modal" data-target="#PolymerModal">&#9432;</button> </td></tr></h4>
98
+ <tr>
99
+ <th>Matrix</th>
100
+ <td><select name="polymer" id="polymer" style="max-width:20em;">
101
+ <option value="{{polymers[0]}}" selected>{{polymers[0]}}</option>
102
+ {% for polymer in polymers[1:] %}
103
+ <option value="{{polymer}}">{{polymer}}</option>
104
+ {% endfor %}
105
+ </select>
106
+ </td>
107
+ </tr>
108
+ <tr>
109
+ <th>Mass (g)</th>
110
+ <td><input name="mass" id="mass" step="any" value="1.0" min="0.000001" type="number" required> </td>
111
+ </tr>
112
+ <tr>
113
+ <th>Density (g/cm<sup>3</sup>)</th>
114
+ <td><input name="density" id="density" step="any" value="1.0" min="0.01" type="number" required></td>
115
+ </tr>
116
+ <tr>
117
+ <th>Glass transition temperature (&deg;C)</th>
118
+ <td><input name="Polymer_Tg" id="Polymer_Tg" step="any" min="-273.15" max="500" value="0" type="number" required></td>
119
+ </tr>
120
+
121
+ <!-- Modal -->
122
+ <div id="PolymerModal" class="modal fade" role="dialog">
123
+ <div class="modal-dialog">
124
+
125
+ <!-- Modal content-->
126
+ <div class="modal-content">
127
+ <div class="modal-header">
128
+ <h4 class="modal-title">Polymer Matrix</h4>
129
+ </div>
130
+ <div class="modal-body">
131
+ <p><em>Matrix</em> - Please select your polymer matrix from the list. If your polymer is
132
+ not listed below, please select &#34;Other polymer&#34;. For polymer mixtures/blends, co-polymers, or composites (e.g. glass fiber reinforced matrices), the component or phase that is worst-case for exposure, i.e. the softest or least glassy (lowest T<sub>g</sub>) component can be selected if listed (which, in turn, assumes the entire system is composed of the worst-case component or phase). In these scenarios, a justification should be provided for the choice of worst-case component of the polymer system. </p>
133
+ <p><em>Mass</em> - Enter the mass of the polymer matrix in grams.</p>
134
+ <p><em>Density</em> - Enter the estimated density of the polymer matrix in grams per cubic centimeter. Note that a rough estimate (e.g. +/- 10%) is acceptable.</p>
135
+ <p><em>Glass transition temperature</em> - Enter the T<sub>g</sub> of the polymer matrix in degrees Celsius. Note that the extraction temperature must be higher than T<sub>g</sub> to use this module. </p>
136
+ </div>
137
+ <div class="modal-footer">
138
+ <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
139
+ </div>
140
+ </div>
141
+
142
+ </div>
143
+ </div>
144
+
145
+ <!-- Extraction parameters input section -->
146
+
147
+ <tr><td colspan="2"><h4> Extraction parameters <button type=button class="Info_btn" data-toggle="modal" data-target="#ExtractionModal">&#9432;</button></td></tr> </h4>
148
+ <tr><th>Device surface area (cm<sup>2</sup>)</th><td> <input name="area" id="area" step="any" value="5.0" min="0.001" type="number" required></td></tr>
149
+ <tr><th>Duration (hours)</th><td> <input name="time" id="time" step="any" value="24.0" min="0.001" type="number" required></td></tr>
150
+ <tr><th>Temperature (&deg;C)</th><td> <input name="T" id="T" step="any" value="50.0" min="20" max="75" type="number" required></td></tr>
151
+ <tr><th>Solvent</th>
152
+ <td> <select name="solventname" id="solventname">
153
+ <option value="{{solvents[0]}}" selected>{{solvents[0]}}</option>
154
+ {% for solvent in solvents[1:] %}
155
+ <option value="{{solvent}}">{{solvent}}</option>
156
+ {% endfor %}
157
+ </select> </td></tr>
158
+ <tr><th>Solvent volume (mL)</th><td> <input name="solventvol" id="solventvol" step="any" value="10.0" min="0.001" type="number" required></td></tr>
159
+ <tr><th>Swelling amount (wt%)</th><td> <input name="swelling" id="swelling" step="any" value="10.0" max="100.0" min="0.0" type="number" required></td></tr>
160
+ <tr><th>Partition coefficient</th><td> <input name="K" id="K" step="any" value="10.0" min="0.00001" type="number" required></td></tr>
161
+ </table>
162
+
163
+ <!-- Modal -->
164
+ <div id="ExtractionModal" class="modal fade" role="dialog">
165
+ <div class="modal-dialog">
166
+
167
+ <!-- Modal content-->
168
+ <div class="modal-content">
169
+ <div class="modal-header">
170
+ <h4 class="modal-title">Extraction parameters</h4>
171
+ </div>
172
+ <div class="modal-body">
173
+ <p><em>Device surface area</em> - Enter the solvent-contacting surface area of the component being evaluated in square centimeters.
174
+ <p><em>Duration</em> - Enter the duration of the extraction experiment in hours.
175
+ <p><em>Temperature</em> - Enter the temperature of the extraction experiment in degrees Celsius.
176
+ <p><em>Solvent</em> - Select the extraction solvent from the list.
177
+ <p><em>Solvent volume</em> - Enter the volume of solvent used for extraction.
178
+ <p><em>Swelling amount</em> - Enter the amount of swelling by the extraction solvent in weight percent (i.e., change in mass divided by initial mass times 100).
179
+ Adjust the measured weight percent to account for crystallinity, if any (i.e., divide the measured about by the amorphous fraction).
180
+ <p><em>Partition coefficient</em> - If known, enter the polymer/solvent partition coefficient of the extractable.
181
+ If not known, the default worst-case value of 10 can be used for typical device polymers, hydrophobic extractables, and semi- or non-polar extraction solvents.
182
+ </div>
183
+ <div class="modal-footer">
184
+ <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
185
+ </div>
186
+ </div>
187
+
188
+ </div>
189
+ </div>
190
+
191
+ <p><button type="submit">Estimate total quantity</button></p>
192
+
193
+ <!--
194
+ <h4> Exposure assessment <button type=button class="Info_btn" data-toggle="modal" data-target="#ExposureModal">&#9432;</button> </h4>
195
+ Cumulative exposure duration(s):
196
+ <input type="checkbox" id="exposure1d" name="exposure1d" value="exposure1d" checked=True, disabled=True>
197
+ <label for="exposure1d">1 day</label>
198
+ <input type="checkbox" id="exposure30d" name="exposure30d" value="exposure30d" checked=True>
199
+ <label for="exposure30d">30 days</label>
200
+ <input type="checkbox" id="exposureuser" name="exposureuser" value="exposureuser" checked=True onclick="javascript:exposureuserCheck();">
201
+ <label for="exposureuser">Other duration (days)</label>
202
+ <span id="exposureuserspan" style="visibility:hidden">
203
+ &nbsp; <input name="exposureuserbox" id="exposureuserbox" step="any" min="0.001" max="36500" value="365" type="number" size=5 required><br><br>
204
+ </span>
205
+ <div id="ExposureModal" class="modal fade" role="dialog">
206
+ <div class="modal-dialog">
207
+ <div class="modal-content">
208
+ <div class="modal-header">
209
+ <h4 class="modal-title">Exposure assessment</h4>
210
+ </div>
211
+ <div class="modal-body">
212
+ <p><em>Cumulative exposure duration(s)</em> Check the boxes for the exposure duration(s) to use for cumulative release estimates. 1-day exposure is always calculated.
213
+ If the "Other duration" box is checked, enter the desired exposure duration in days (e.g., the maximum use duration of the device).
214
+ Note that this calculation assumes a single device is used for the entire duration. If multiple devices are used concurrently or sequentially (e.g., daily replacement), this should be accounted for during toxicological risk assessment.</p>
215
+ </div>
216
+ <div class="modal-footer">
217
+ <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
218
+ </div>
219
+ </div>
220
+ </div>
221
+ </div>
222
+ -->
223
+
224
+ </form>
225
+
226
+ <!-- Javascript to reveal/hide polymer input box (show/hide Tg)
227
+
228
+ <script type="text/javascript">
229
+ function polymerCheck() {
230
+ if (document.getElementById('polymer').value == 'Other polymer') {
231
+ document.getElementById('otherpolymer').style.visibility = 'visible';
232
+ } else {
233
+ document.getElementById('otherpolymer').style.visibility = 'hidden';
234
+ document.getElementById('polytg').value = '';
235
+ }
236
+ }
237
+ $(window).on('pageshow', function() { polymerCheck(); });
238
+ </script> -->
239
+
240
+ <!-- Javascript to reveal/hide exposure duration input box (limited contact)
241
+
242
+ <script type="text/javascript">
243
+ function exposureCheck() {
244
+ if (document.getElementById('limited').checked) {
245
+ document.getElementById('limitedtime').style.visibility = 'visible';
246
+ } else {
247
+ document.getElementById('limitedtime').style.visibility = 'hidden';
248
+ document.getElementById('time').value = '24';
249
+ }
250
+ }
251
+ $(window).on('pageshow', function() { exposureCheck(); });
252
+ </script> -->
253
+
254
+ <!-- Javascript to reveal/hide cumulative exposure duration box
255
+
256
+ <script type="text/javascript">
257
+ function exposureuserCheck() {
258
+ if (document.getElementById('exposureuser').checked) {
259
+ document.getElementById('exposureuserspan').style.visibility = 'visible';
260
+ } else {
261
+ document.getElementById('exposureuserspan').style.visibility = 'hidden';
262
+ document.getElementById('exposureuserspan').value = '365';
263
+ }
264
+ }
265
+ $(window).on('pageshow', function() { exposureuserCheck(); });
266
+ </script> -->
267
+
268
+ </body>
269
+ </html>
quantity_module/templates/quantity_metalError.html ADDED
@@ -0,0 +1,68 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <title>CHRIS-MetalError</title>
6
+ <link rel= "stylesheet" type= "text/css" href= "{{ url_for('static',filename='styles.css') }}">
7
+
8
+ <style>
9
+ * {
10
+ box-sizing: border-box;
11
+ }
12
+
13
+ /* Create two equal columns that floats next to each other */
14
+ .column {
15
+ float: left;
16
+ width: 50%;
17
+ padding: 10px;
18
+ vertical-align: top;
19
+ align: center;
20
+ }
21
+
22
+ /* Clear floats after the columns */
23
+ .row:after {
24
+ content: "";
25
+ display: table;
26
+ clear: both;
27
+ }
28
+ </style>
29
+
30
+ </head>
31
+
32
+ <img src="{{ url_for('static',filename='images/FDAlogo.png') }}" style="float: left;" height="100"/>
33
+ <img src="{{ url_for('static',filename='images/FDAgraphic.png') }}" style="float: right;" height="100"/>
34
+ <br clear="all" />
35
+
36
+ <body>
37
+
38
+ <div style="font-size:5rem;text-align:center"> &#129318; </div>
39
+
40
+ <h2> Compound </h2>
41
+
42
+ <div class="container">
43
+ <div class="row">
44
+ <div class="column">
45
+ Input :: {{chemName}} <br> <br>
46
+ IUPAC Name :: {{iupac}} <br> <br>
47
+ CAS :: {{cas}} <br> <br>
48
+ Molecular weight (g/mol) :: {{'%0.4f'%MW|float}} <br> <br>
49
+ {% if show_properties %}
50
+ LogKow :: {{LogP}}{{LogP_origin}} <br> <br>
51
+ Density (g/cm<sup>3</sup>) :: {{rho}}{{rho_origin}} <br> <br>
52
+ Melting point (&deg;C) :: {{mp}}{{mp_origin}} <br> <br>
53
+ {% endif %}
54
+ SMILES :: {{smiles}}
55
+ </div>
56
+ <div class="column">
57
+ <img src="{{molImage}}"/>
58
+ </div>
59
+ </div>
60
+ </div>
61
+
62
+ <p style="font-size:2rem;text-align:center">
63
+ Unfortunately, CHRIS cannot be used for metals. Please return to the previous page to evaluate
64
+ a different chemical.
65
+ </p>
66
+
67
+
68
+ </body>
quantity_module/templates/quantity_report.html ADDED
@@ -0,0 +1,156 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <title>CHRIS Report</title>
6
+
7
+ <!-- <script src="https://polyfill.io/v3/polyfill.min.js?features=es6"></script> -->
8
+ <script id="MathJax-script" async src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>
9
+ <!-- <script id="MathJax-script" async src="{{ url_for('static',filename='tex-mml-chtml.js') }}"></script> -->
10
+ <link rel= "stylesheet" type= "text/css" href= "{{ url_for('static',filename='styles.css') }}">
11
+
12
+ <style>
13
+ * {
14
+ box-sizing: border-box;
15
+ }
16
+
17
+ /* Create two equal columns that floats next to each other */
18
+ .column {
19
+ float: left;
20
+ width: 50%;
21
+ padding: 10px;
22
+ vertical-align: top;
23
+ align: center;
24
+ }
25
+
26
+ /* Clear floats after the columns */
27
+ .row:after {
28
+ content: "";
29
+ display: table;
30
+ clear: both;
31
+ }
32
+ </style>
33
+
34
+ </head>
35
+
36
+ <img src="{{ url_for('static',filename='images/FDAlogo.png') }}" style="float: left;" height="100"/>
37
+ <img src="{{ url_for('static',filename='images/FDAgraphic.png') }}" style="float: right;" height="100"/>
38
+ <br clear="all" />
39
+
40
+ <header>
41
+ <h1 style="text-align:center"><font color="#0070C0">CH</font>emical <font color="#0070C0">RIS</font>k calculators (CHRIS) Report - Total Quantity</h1>
42
+ </header>
43
+
44
+ <body>
45
+
46
+ <p> The following report was generated using CHRIS-Total Quantity v.0.1 on
47
+ <script> document.write(new Date().toLocaleDateString()); </script>.
48
+ </p>
49
+
50
+ <h2> Compound </h2>
51
+
52
+ <div class="container">
53
+ <div class="row">
54
+ <div class="column">
55
+ Input :: {{chemName}} <br> <br>
56
+ IUPAC Name :: {{iupac}} <br> <br>
57
+ CAS :: {{cas}} <br> <br>
58
+ Molecular weight (g/mol) :: {{'%0.4f'%MW|float}}
59
+ {% if ceramic %} :: inorganic detected, assume insoluble particle and slow diffusion (e.g., maximum Mw) {% endif %}
60
+ <br> <br>
61
+ {% if show_properties %}
62
+ LogKow :: {{LogP}}{{LogP_origin}}<br> <br>
63
+ Density (g/cm<sup>3</sup>) :: {{rho}}{{rho_origin}}<br> <br>
64
+ Melting point (&deg;C) :: {{mp}}{{mp_origin}}<br> <br>
65
+ {% endif %}
66
+ SMILES :: {{smiles}}
67
+ </div>
68
+ <div class="column">
69
+ <img src="{{molImage}}"/>
70
+ </div>
71
+ </div>
72
+ </div>
73
+
74
+ <h2> Exposure </h2>
75
+
76
+ <p>
77
+ {% if methods[0]=="category" %}
78
+ <u> Modeling extraction from {{polymers[pIndex]}} estimates the total quantity = {{M0}} {{units}}. </u>
79
+ {% elif methods[0]=="wc" %}
80
+ <u> Modeling extraction from the polymer (with worst-case diffusion in water assumed because no T<sub>g</sub> was specified) estimates the total quantity = {{M0}} {{units}}. </u>
81
+ {% elif methods[0]=="qrf" %}
82
+ <u> Modeling extraction from the polymer (with density = {{methods[2]}} g/cm<sup>3</sup> and T<sub>g</sub> = {{methods[1]}} &deg;C) estimates the total quantity = {{M0}} {{units}}. </u>
83
+ {% elif methods[0]=="qrf/wc" %}
84
+ <u> Modeling extraction from the polymer (with worst-case diffusion in water assumed because this system is outside the model training domain) estimates the total quantity = {{M0}} {{units}}. </u>
85
+ {% endif %}
86
+ <p>
87
+
88
+ <!-- <p>
89
+ This estimate was derived using solutions to the conservative plane sheet model for mass release, \( M \):
90
+
91
+ \[
92
+ M(\tau)= \left\{
93
+ \begin{array}{cr}
94
+ 2 M_0 \sqrt{\tau/\pi} & \tau \leq 0.2 \\
95
+ M_0\left(1-8 \exp\left[-\tau \pi^2/4 \right]/\pi^2\right) & \tau > 0.2
96
+ \end{array} \right.
97
+ \]
98
+
99
+ where \( \tau= D t A^2 / V^2 \) and \( A \) and \( V \) are the surface area and volume of the polymer matrix, respectively, \( M_0 \) is total mass initially contained in the polymer, \( D \) is a conservative estimate of the diffusion coefficient of the leachable within the polymer matrix, and \( t \) is time. Based on the input provided, the calculation was based on the following values:
100
+ </p>
101
+
102
+ <p>
103
+ \( A \) = {{area}} cm<sup>2</sup> <br>
104
+ \( V \) = {{vol}} cm<sup>3</sup> <br>
105
+ \( M_0 \) = {{amount}} {{units}} <br>
106
+ \( D \) = {{diff}} cm<sup>2</sup>/s <br>
107
+ \( t \) = {{time}} h <br>
108
+ </p>
109
+
110
+ <p>
111
+ It can be helpful to examine the cumulative amount released over various exposure durations. For example, the 30-day cumulative exposure may be compared to the TSL<sub>&le;30 d</sub> as recommended in ISO 10993-17:2023. Note that this calculation assumes a single device is used for the entire duration. If multiple devices are used concurrently or sequentially (e.g., daily replacement), this should be accounted for during toxicological risk assessment.
112
+ </p>
113
+
114
+ (1.+alpha)*(1.-np.exp(T/alpha**2.)*sp.special.erfc(np.sqrt(T)/alpha))
115
+ <div>
116
+ {{ release_table | safe }}
117
+ </div> -->
118
+
119
+ <p>
120
+ This estimate was derived using the solutions to the conservative plane sheet model for mass release, \( M \):
121
+
122
+ \[
123
+ \frac{M(\tau)}{M_0} = \left\{
124
+ \begin{array}{cr}
125
+ (1+\Psi) \left[1-\exp\left( \frac{\tau}{\alpha^2} \right) \mathop{\rm erfc} \left( \frac{\tau^{0.5}}{\Psi} \right) \right] & \tau \leq 0.05 \\
126
+ \frac{1}{1+1/\Psi}\left[1-\sum^\infty_{n=1} \frac{2\Psi(1+\Psi)}{1+\Psi+\Psi^2q_n^2}\exp\left(-\tau q_n^2\right)\right] & \tau > 0.05
127
+ \end{array} \right.
128
+ \]
129
+
130
+ where \( \tau= D t A^2 / V_p^2 \), \( A \) and \( V_p \) are the surface area and volume of the polymer matrix, respectively, \( D \) is a conservative estimate of the diffusion coefficient of the extractable within the polymer matrix, and \( t \) is time. The quantity \( \Psi = V_s/V_p K \), where \( V_s \) is the solvent volume and \( K \) is the polymer-solvent partition coefficient for the extractable. \( q_n \) are the roots of \( \tan x + \Psi x \). \( M_0 \) is total quantity initially contained in the polymer. Based on the input provided, the calculation used the following values:
131
+ </p>
132
+
133
+ <p>
134
+ Extracted amount \( M \) = {{M}} {{units}} <br>
135
+ Surface area \( A \) = {{area}} cm<sup>2</sup> <br>
136
+ Duration \( t \) = {{time}} h <br>
137
+ Temperature = {{T}} &deg;C <br>
138
+ Solvent = {{solventname}} <br>
139
+ Solvent volume \( V_s \) = {{solventvol}} cm<sup>3</sup> <br>
140
+ Polymer volume \( V_p \) = {{vol}} cm<sup>3</sup> (based on polymer mass = {{mass}} g and density = {{density}} g/cm<sup>3</sup>) <br>
141
+ Partition coefficient \( K \)= {{K}} <br>
142
+ Swelling = {{swelling}} wt% (used to estimate \( D \))<br>
143
+ </p>
144
+
145
+ <p>The total quantity reported above is the median of the distribution of predicted amounts. Additional percentiles are provided here for informational purposes:</p>
146
+
147
+ <div>
148
+ {{ table | safe }}
149
+ </div>
150
+
151
+ <p>The progress of the extraction can be expressed through the dimensionless time \( \tau = Dt/L^2 \), where \( D \) is the solute diffusivity in the polymer, \( t \) is the extraction duration, and \( L = V_p/A \) is the characteristic length scale. For your extraction, \( \tau \) = {{tau}}. Extractions with \( \tau \) &geq; 0.1 result in more accurate estimates of the total quantity, and when \( \tau \) &geq; 1.0 the extracted amount may be used directly as the total quantity.</p>
152
+
153
+ <p><button type="button" onclick="javascript:history.back()">Back</button></p>
154
+
155
+ </body>
156
+ </html>
quantity_module/templates/quantity_temperatureError.html ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <title>CHRIS-Temperature Error</title>
6
+ <link rel= "stylesheet" type= "text/css" href= "{{ url_for('static',filename='styles.css') }}">
7
+
8
+ </head>
9
+
10
+ <img src="{{ url_for('static',filename='images/FDAlogo.png') }}" style="float: left;" height="100"/>
11
+ <img src="{{ url_for('static',filename='images/FDAgraphic.png') }}" style="float: right;" height="100"/>
12
+ <br clear="all" />
13
+
14
+ <body>
15
+
16
+ <div style="font-size:5rem;text-align:center"> &#129318; </div>
17
+
18
+ <p style="font-size:2rem;text-align:center">
19
+ Unfortunately, the CHRIS-Total Quantity module can only be used for polymers with glass transition temperatures lower than the extraction temperature.
20
+ </p>
21
+
22
+
23
+ </body>
templates/main.html CHANGED
@@ -88,6 +88,13 @@ An updated version of the color additive module that can address additional poly
88
  An updated version of the bulk chemicals module that can address additional polymers using a machine learning method.
89
  </p>
90
 
 
 
 
 
 
 
 
91
  <!--<h2> Future modules <button type=button class="Info_btn" data-toggle="modal" data-target="#FutureModal">&#9432;</button> </h2>
92
 
93
  &#x2022; Updates to exposure model modules to increase the range of applicable systems <br>
 
88
  An updated version of the bulk chemicals module that can address additional polymers using a machine learning method.
89
  </p>
90
 
91
+ &#x2022; <a href="/quantity"> Total quantity estimator </a>
92
+
93
+ <p>
94
+ This module can be used to leverage the results of device extraction testing (either exhaustive or non-exhaustive) to estimate the total quantity of an extractable present in the device,
95
+ which can subsequently be used for exposure estimation using the color additives or bulk chemicals modules.
96
+ </p>
97
+
98
  <!--<h2> Future modules <button type=button class="Info_btn" data-toggle="modal" data-target="#FutureModal">&#9432;</button> </h2>
99
 
100
  &#x2022; Updates to exposure model modules to increase the range of applicable systems <br>