| import numpy as np |
| from flask import render_template, request |
| |
| from functions import SigFigs, Piringer, WilkeChang, SheetRelease, SheetRates, RatePlot |
|
|
| from polymers import Polymers |
| from ChemID import ResolveChemical |
| from . import blueprint |
|
|
| import rdkit |
| from rdkit.Chem import AllChem as Chem |
|
|
| |
| polymers, Ap = Polymers() |
|
|
| |
| |
| |
| get_properties = ['mp'] |
| |
| show_properties = False |
| |
| debug = False |
|
|
| |
| @blueprint.route('/exposure', methods=['GET']) |
| def exposure(): |
| return render_template('exposure_index.html', polymers=polymers) |
|
|
|
|
| |
| @blueprint.route('/exposure', methods=['POST']) |
| def exp_post(): |
|
|
| chemName = request.form["chemName"] |
| IDtype = request.form["IDtype"] |
|
|
| if debug: |
| 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']) |
| LogP_origin, rho_origin, mp_origin = f' ({LogP_origin})', f' ({rho_origin})', f' ({mp_origin})', |
| else: |
| LogP_origin, rho_origin, mp_origin = '','','' |
| iupac, cas, smiles, MW, LogP, rho, mp, molImage, error = ResolveChemical(chemName, IDtype, get_properties=get_properties) |
|
|
| if error > 0: |
| |
| return render_template('chemError.html') |
|
|
| |
| if 'logp' not in get_properties: |
| LogP = 'Not searched' |
| elif LogP is np.nan or LogP is None: |
| LogP = 'Not found' |
| else: |
| LogP = SigFigs(LogP, 4) |
| if 'rho' not in get_properties: |
| rho = 'Not searched' |
| elif rho is np.nan or rho is None: |
| rho = 'Not found' |
| else: |
| rho = SigFigs(rho, 4) |
| if 'mp' not in get_properties: |
| mp = 'Not searched' |
| elif mp is np.nan or mp is None: |
| mp = 'Not found' |
|
|
| |
| mol = Chem.MolFromSmiles(smiles) |
| natoms = mol.GetNumAtoms() |
| ceramic = False |
| if natoms == 1 and smiles != '[C]': |
|
|
| |
| |
| return render_template('metalError.html', show_properties=show_properties, chemName=chemName, MW=MW, LogP=LogP, rho=rho, mp=mp, iupac=iupac, |
| cas=cas, smiles=smiles, molImage=molImage, |
| LogP_origin=LogP_origin, rho_origin=rho_origin, mp_origin=mp_origin) |
| else: |
| if (type(mp) is float or type(mp) is int) and mp > 1000.: |
|
|
| |
| |
| |
| |
| MW = 1100. |
| ceramic = True |
|
|
| if MW < 100.: |
| return render_template('MwError.html', show_properties=show_properties, chemName=chemName, MW=MW, LogP=LogP, rho=rho, mp=mp, iupac=iupac, cas=cas, smiles=smiles, molImage=molImage, |
| LogP_origin=LogP_origin, rho_origin=rho_origin, mp_origin=mp_origin) |
|
|
| amount = float(request.form["amount"]) |
| mass = float(request.form["mass"]) |
| density = float(request.form["density"]) |
| vol = mass / density |
| polymer = request.form["polymer"] |
| pIndex = (np.where(polymers == polymer)[0])[0] |
| area = float(request.form["area"]) |
| exposure = request.form["exposure"] |
|
|
| if exposure != "limited": |
| time = 24. |
| else: |
| time = float(request.form["exptime"]) |
|
|
| if exposure != "long-term": |
| TTC = 0.12 |
| else: |
| TTC = 0.0015 |
|
|
| assume = np.array((request.form.get("assume1") is not None, request.form.get("assume2") is not None, |
| request.form.get("assume3") is not None, request.form.get("assume4") is not None, |
| request.form.get("assume5") is not None)) |
|
|
| if not np.isnan(Ap[pIndex]): |
| diff = Piringer(MW, Ap[pIndex]) |
| else: |
| diff = WilkeChang(MW) |
|
|
| release = SheetRelease(amount, vol, area, time, diff) |
|
|
| MOS = TTC / release |
|
|
| release = SigFigs(release, 2) |
| MOS = SigFigs(MOS, 2) |
| diff = SigFigs(diff, 2) |
|
|
| |
| tarray = np.arange(1., 31., 1.) |
| rates = SheetRates(amount, vol, area, tarray, diff) |
| pngImageB64String = RatePlot(tarray, rates) |
|
|
| return render_template('exposure_report.html', show_properties=show_properties, polymers=polymers, pIndex=pIndex, release=release, |
| assume=assume, area=area, vol=vol, amount=amount, diff=diff, time=time, exposure=exposure, TTC=TTC, |
| MOS=MOS, chemName=chemName, image=pngImageB64String, MW=MW, LogP=LogP, rho=rho, mp=mp, iupac=iupac, cas=cas, smiles=smiles, molImage=molImage, |
| LogP_origin=LogP_origin, rho_origin=rho_origin, mp_origin=mp_origin, ceramic=ceramic) |
|
|
|
|