File size: 2,930 Bytes
50bf100
 
 
 
 
 
 
 
90f985a
50bf100
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
252a09e
50bf100
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
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)