Spaces:
Running
Running
import streamlit as st | |
from matplotlib import pyplot as plt | |
from utils import * | |
import warnings | |
st.write(" ") | |
raq_ra = st.number_input("# raq/ra ", value=None, placeholder="betweel 0 and 10") | |
fkt = st.number_input("# FKT ", value=None, placeholder="betweel 1e+6 and 1e+10") | |
fkv = st.number_input("# FKV ", value=None, placeholder="betweel 1 and 100") | |
num_points =st.number_input("# number of profile points ", value=128, placeholder=" e.g. 128") | |
num_points = int(num_points) | |
st.write("raq/ra = ", raq_ra, "FKT = ", fkt, "FKV = ", fkv, "profile points = ", num_points) | |
if raq_ra is not None and fkt is not None and fkv is not None: | |
with open('numpy_networks/mlp_[128, 128, 128, 128, 128].pkl', 'rb') as file: | |
mlp = pickle.load(file) | |
r_list = [raq_ra] | |
t_list = [fkt] | |
v_list = [fkv] | |
for i in range(len(r_list)): | |
if r_list[i]<0 or r_list[i]>9.5: | |
st.warning('RaQ/Ra is outside the range of the training dataset', icon="⚠️") | |
if t_list[i]<1e+6 or t_list[i]>5e+9: | |
st.warning('FKT is outside the range of the training dataset', icon="⚠️") | |
if v_list[i]<1 or v_list[i]>95: | |
st.warning('FKV is outside the range of the training dataset', icon="⚠️") | |
y_prof = np.concatenate(([1], np.linspace(0+1/(num_points*2),1-1/(num_points*2),num_points-2)[::-1], [0])) | |
### calculates temperature profile ### | |
x_in = get_input(r_list, t_list, v_list, y_prof) | |
y_pred_nn_pointwise = get_profile(x_in, mlp, num_sims=len(r_list), prof_points=num_points) | |
### calculates temperature profile ### | |
### writes out temperature profile ### | |
profs = np.concatenate((y_prof.reshape(num_points,1),y_pred_nn_pointwise.reshape(num_points,1)), axis=1) | |
table = ''' | |
Depth Temperature | |
''' | |
for p in profs: | |
table += str(p[0]) + " " + str(p[1]) + "\n" | |
fname = "profile_raq_ra" + str(r_list[0]) + "_fkt" + str(t_list[0]) + "_fkv" + str(v_list[0]) + ".txt" | |
st.download_button('Download temperature profile', table, fname) | |
### writes out temperature profile ### | |
### plots temperature profile ### | |
for i in range(len(r_list)): | |
fig = plt.figure() | |
plt.plot(y_pred_nn_pointwise[i,:], y_prof, 'k-', linewidth=3.0, label="neural network") | |
plt.ylim([1,0]) | |
plt.xlabel("Temperature") | |
plt.ylabel("Depth") | |
plt.legend() | |
plt.grid() | |
st.pyplot(fig) | |
### plots temperature profile ### |