import numpy as np import streamlit as st import funcs import pandas as pd import getpass # import pymysql import matplotlib.pyplot as plt from sqlalchemy import create_engine def variogram(nugget=0.0, srange=100., struct_type='Spherical'): var = 1.-nugget h = np.arange(0,150.,5.) gamma = h if struct_type == 'Spherical': gamma = nugget + var*((3*h)/(2*srange)-(h**3)/(2*srange**3)) gamma[h>srange]=1.0 gamma[0] = nugget elif struct_type == 'Power': gamma = nugget + var*(h/srange)**1.5 else: gamma = var*(1.0-np.cos((h**2/srange**2)*np.pi)*np.exp((-3*h)/(srange*1.2))) + nugget return gamma, h; def ex_var(example=1, hint='Hint: Contrary to popular flat earther beliefs.', key_nugget='nug1', key_range='range1', key_stype='stype1', im='sim1.jpg'): st.markdown("### Example " + str(example) + ":") st.markdown(hint) col1, col2 = st.beta_columns([1, 2]) with col1: struct_type = st.selectbox("Structure Type", options=["Spherical", "Power", "Hole Effect"], index=0, key=key_stype) nugget = st.slider('Nugget', 0.0, 1.0, 0.1, 0.05, key=key_nugget) srange = st.slider('Range', 0.0, 120., 100., 10., key=key_range) gamma, h = variogram(nugget, srange, struct_type) fig, ax = plt.subplots() plt.plot([0, 120.], [1.0, 1.0], '--k') plt.plot(h, gamma, '-r') plt.xlabel('Range (m)') plt.ylabel('Gamma') plt.xlim((0.,120.)) plt.ylim((0.,1.5)) st.pyplot(fig) with col2: st.write("") st.write("") st.write("") st.image("images//" + im, width=500) return struct_type, nugget, srange def variograms(): st.title("Variogram Exercise") st.write("") st.markdown("## Model the appropriate variogram for each grade pattern observed") text = funcs.get_text_block("variography_intro.txt") st.markdown(text) results = [] s,n,r = ex_var(example=1, hint='Hint: Contrary to popular flat earther beliefs.', key_nugget='nug1', key_range='range1', key_stype='stype1', im='sim1.jpg') results.append([1, s,n,r]) s,n,r = ex_var(example=2, hint='Hint: Think about the seasons.', key_nugget='nug2', key_range='range2', key_stype='stype2', im='sim2.jpg') results.append([2, s,n,r]) s,n,r = ex_var(example=3, hint='Hint: Think about sand...', key_nugget='nug3', key_range='range3', key_stype='stype3', im='sim3.jpg') results.append([3, s,n,r]) s,n,r = ex_var(example=4, hint='Hint: This is when you wonder why you bother to get out of bed in the morning.', key_nugget='nug4', key_range='range4', key_stype='stype4', im='sim4.jpg') results.append([4, s,n,r]) df = pd.DataFrame(data=results, columns=['Example', 'Structure Type', 'Nugget', 'Range']) uname = getpass.getuser() st.table(df)