import streamlit as st import numpy as np import pandas as pd import pymongo st.set_page_config(layout="wide") @st.cache_resource def init_conn(): uri = st.secrets['mongo_uri'] client = pymongo.MongoClient(uri, retryWrites=True, serverSelectionTimeoutMS=500000) db = client["MLB_Database"] return db db = init_conn() st.markdown(""" """, unsafe_allow_html=True) @st.cache_resource(ttl = 61) def init_baselines(): db_pulls = ['Bullpen_Data', 'Hitter_Agg_Merge', 'Hitter_Long_Merge', 'Hitter_Short_Merge', 'Pitcher_Agg_Merge', 'Pitcher_Long_Merge', 'Pitcher_Short_Merge', 'Slate_Hitters_Merge', 'Slate_Team_Merge', 'Starting_Pitchers', 'True_AVG_Split', 'Pitcher_Info', 'Hitter_Info'] for table in db_pulls: collection = db[table] cursor = collection.find() df = pd.DataFrame(cursor) if table == 'Bullpen_Data': bp_data = df elif table == 'Hitter_Agg_Merge': hitter_agg = df elif table == 'Hitter_Long_Merge': hitter_long = df elif table == 'Hitter_Short_Merge': hitter_short = df elif table == 'Pitcher_Agg_Merge': pitcher_agg = df elif table == 'Pitcher_Long_Merge': pitcher_long = df elif table == 'Pitcher_Short_Merge': pitcher_short = df elif table == 'Slate_Hitters_Merge': slate_hitters = df elif table == 'Slate_Team_Merge': slate_team = df elif table == 'Starting_Pitchers': starting_pitchers = df elif table == 'True_AVG_Split': true_avg_split = df elif table == 'Pitcher_Info': pitcher_info = df elif table == 'Hitter_Info': hitter_info = df return bp_data, hitter_agg, hitter_long, hitter_short, pitcher_agg, pitcher_long, pitcher_short, slate_hitters, slate_team, starting_pitchers, true_avg_split, pitcher_info, hitter_info bp_data, hitter_agg, hitter_long, hitter_short, pitcher_agg, pitcher_long, pitcher_short, slate_hitters, slate_team, starting_pitchers, true_avg_split, pitcher_info, hitter_info = init_baselines() pitcher_tab, hitter_tab, team_tab = st.tabs(['Pitchers', 'Hitters', 'Team']) with pitcher_tab: with st.expander('Info and Display Options'): st.info('Note: Splits options are available for all baseline tables, they do not apply to True AVG, HWSr, or the Overview tables') col1, col2, col3 = st.columns(3) with col1: site_var_sp = st.selectbox('Site', ['DraftKings', 'FanDuel'], key = 'site_var_sp') with col2: table_var_sp = st.selectbox('Table', ['True AVG Splits', 'HWSr Splits', 'Current Slate Overview', 'Active Baselines', 'League Aggregate Baselines', 'League Short Term Baselines', 'League Long Term Baselines'], key = 'table_var_sp') with col3: splits_var_sp = st.selectbox('Splits', ['Overall', 'RHH', 'LHH'], key = 'splits_var_sp') if table_var_sp == 'True AVG Splits': st.dataframe(true_avg_split) elif table_var_sp == 'HWSr Splits': st.dataframe(true_avg_split) elif table_var_sp == 'Current Slate Overview': st.dataframe(starting_pitchers) elif table_var_sp == 'Active Baselines': st.dataframe(pitcher_info) elif table_var_sp == 'League Aggregate Baselines': st.dataframe(pitcher_agg) elif table_var_sp == 'League Short Term Baselines': st.dataframe(pitcher_short) elif table_var_sp == 'League Long Term Baselines': st.dataframe(pitcher_long) with hitter_tab: with st.expander('Info and Display Options'): st.info('Note: Splits options are available for all baseline tables') col1, col2, col3 = st.columns(3) with col1: site_var_hitter = st.selectbox('Site', ['DraftKings', 'FanDuel'], key = 'site_var_hitter') with col2: table_var_hitter = st.selectbox('Table', ['Active Baselines', 'League Aggregate Baselines', 'League Short Term Baselines', 'League Long Term Baselines'], key = 'table_var_hitter') with col3: splits_var_hitter = st.selectbox('Splits', ['Overall', 'RHP', 'LHP'], key = 'splits_var_hitter') if table_var_hitter == 'Current Slate Overview': st.dataframe(starting_pitchers) elif table_var_hitter == 'Active Baselines': st.dataframe(hitter_info) elif table_var_hitter == 'League Aggregate Baselines': st.dataframe(hitter_agg) elif table_var_hitter == 'League Short Term Baselines': st.dataframe(hitter_short) elif table_var_hitter == 'League Long Term Baselines': st.dataframe(hitter_long) with team_tab: with st.expander('Info and Display Options'): col1, col2, col3 = st.columns(3) with col1: site_var_team= st.selectbox('Site', ['DraftKings', 'FanDuel'], key = 'site_var_team') with col2: table_var_team = st.selectbox('Table', ['Team Baselines', 'Bullpen Baselines'], key = 'table_var_team') if table_var_team == 'Team Baselines': st.dataframe(slate_team) elif table_var_team == 'Bullpen Baselines': st.dataframe(bp_data)