File size: 2,837 Bytes
7545b49
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
a655909
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
7545b49
a655909
7545b49
 
 
 
 
 
a655909
7545b49
 
a655909
 
 
 
 
 
 
7545b49
 
a655909
 
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
import streamlit as st
st.set_page_config(layout="wide")
import numpy as np
import pandas as pd
import pymongo
import time

@st.cache_resource
def init_conn():
        
        uri = st.secrets['mongo_uri']
        client = pymongo.MongoClient(uri, retryWrites=True, serverSelectionTimeoutMS=500000)
        db = client["League_of_Legends_Database"]

        collection = db["gamelogs"] 
        team_names = collection.distinct("teamname")
        player_names = collection.distinct("playername")

        return db, team_names, player_names
    
db, team_names, player_names = init_conn()

# Create sidebar container for options
with st.sidebar:
    st.header("Team Analysis Options")
    selected_team = st.selectbox(
        "Select Team",
        options=team_names,
        index=team_names.index("T1") if "T1" in team_names else 0
    )
    
    st.subheader("Prediction Settings")
    win_loss = st.selectbox(
        "Select Win/Loss",
        options=["Win", "Loss"],
        index=0
    )

    kill_prediction = st.number_input(
        "Predicted Team Kills",
        min_value=0,
        max_value=100,
        value=15
    )
    
    death_prediction = st.number_input(
        "Predicted Team Deaths",
        min_value=0,
        max_value=100,
        value=10
    )

@st.cache_data(ttl = 60)
def init_team_data(team, win_loss, kill_prediction, death_prediction):  
        
        collection = db["gamelogs"] 
        cursor = collection.find({"teamname": team})
    
        raw_display = pd.DataFrame(list(cursor))
        raw_display = raw_display[['playername', 'teamname', 'playername_avg_kill_share_win', 'playername_avg_death_share_win', 'playername_avg_assist_share_win', 'playername_avg_cs_share_win', 'playername_avg_kill_share_loss', 'playername_avg_death_share_loss', 'playername_avg_assist_share_loss', 'playername_avg_cs_share_loss']]
        raw_display = raw_display.rename(columns = {'playername_avg_kill_share_win': 'wKill%', 'playername_avg_death_share_win': 'wDeath%', 'playername_avg_assist_share_win': 'wAssist%', 'playername_avg_cs_share_win': 'wCS%', 'playername_avg_kill_share_loss': 'lKill%', 'playername_avg_death_share_loss': 'lDeath%', 'playername_avg_assist_share_loss': 'lAssist%', 'playername_avg_cs_share_loss': 'lCS%'})
        team_data = raw_display.drop_duplicates(subset = ['playername'])

        if win_loss == "Win":
            team_data['Kill_Proj'] = team_data['wKill%'] * kill_prediction
            team_data['Death_Proj'] = team_data['wDeath%'] * death_prediction
        else:
            team_data['Kill_Proj'] = team_data['lKill%'] * kill_prediction
            team_data['Death_Proj'] = team_data['lDeath%'] * death_prediction

        return team_data

if st.button("Run"):
    st.dataframe(init_team_data(selected_team, win_loss, kill_prediction, death_prediction))