Spaces:
Running
Running
James McCool
commited on
Commit
·
268b562
1
Parent(s):
656c08a
Refactor assist projection calculation in player data initialization
Browse filesUpdate the assist projection method to:
- Separate base assist calculation from scaling
- Use different assist percentage columns for win and loss scenarios
- Improve clarity and maintainability of the projection logic
app.py
CHANGED
@@ -584,17 +584,17 @@ def init_player_data(game_count, players, opponent, win_loss_settings, kill_pred
|
|
584 |
if win_loss_settings[game] == "Win":
|
585 |
team_data['Kill_Proj'] = team_data.apply(lambda row: row['wKill%'] * opp_pos_kills_boost_win.get(row['position'], 1), axis=1)
|
586 |
team_data['Death_Proj'] = team_data.apply(lambda row: row['wDeath%'] * opp_pos_deaths_boost_win.get(row['position'], 1), axis=1)
|
587 |
-
|
588 |
-
assist_scale = min(1.0, team_data['Kill_Proj'].sum() /
|
589 |
-
team_data['Assist_Proj'] =
|
590 |
team_data['CS_Proj'] = team_data.apply(lambda row: row['wCS'] * opp_pos_cs_boost_win.get(row['position'], 1), axis=1)
|
591 |
team_data = team_data[['playername', 'teamname', 'position', 'Kill_Proj', 'Death_Proj', 'Assist_Proj', 'CS_Proj']]
|
592 |
else:
|
593 |
team_data['Kill_Proj'] = team_data.apply(lambda row: row['lKill%'] * opp_pos_kills_boost_loss.get(row['position'], 1), axis=1)
|
594 |
team_data['Death_Proj'] = team_data.apply(lambda row: row['lDeath%'] * opp_pos_deaths_boost_loss.get(row['position'], 1), axis=1)
|
595 |
-
|
596 |
-
assist_scale = min(1.0, team_data['Kill_Proj'].sum() /
|
597 |
-
team_data['Assist_Proj'] =
|
598 |
team_data['CS_Proj'] = team_data.apply(lambda row: row['lCS'] * opp_pos_cs_boost_loss.get(row['position'], 1), axis=1)
|
599 |
team_data = team_data[['playername', 'teamname', 'position', 'Kill_Proj', 'Death_Proj', 'Assist_Proj', 'CS_Proj']]
|
600 |
|
@@ -705,7 +705,7 @@ if st.button("Run"):
|
|
705 |
st.session_state.overall_sim_df = pd.DataFrame(overall_sim_results)
|
706 |
st.session_state.overall_sim_df = st.session_state.overall_sim_df.drop_duplicates(subset = ['Player', 'Stat'])
|
707 |
|
708 |
-
tab1, tab2, tab3, tab4 = st.tabs(["Gamelogs", "
|
709 |
with tab4:
|
710 |
if 'player_summary' in st.session_state:
|
711 |
st.subheader("Full Match Data")
|
|
|
584 |
if win_loss_settings[game] == "Win":
|
585 |
team_data['Kill_Proj'] = team_data.apply(lambda row: row['wKill%'] * opp_pos_kills_boost_win.get(row['position'], 1), axis=1)
|
586 |
team_data['Death_Proj'] = team_data.apply(lambda row: row['wDeath%'] * opp_pos_deaths_boost_win.get(row['position'], 1), axis=1)
|
587 |
+
team_data['Assist_Base'] = team_data.apply(lambda row: row['wAssist%'] * opp_pos_assists_boost_win.get(row['position'], 1), axis=1)
|
588 |
+
assist_scale = min(1.0, team_data['Kill_Proj'].sum() / team_data['Assist_Base'].sum()) if team_data['Assist_Base'].sum() > 0 else 1.0
|
589 |
+
team_data['Assist_Proj'] = team_data['Assist_Base'] * assist_scale
|
590 |
team_data['CS_Proj'] = team_data.apply(lambda row: row['wCS'] * opp_pos_cs_boost_win.get(row['position'], 1), axis=1)
|
591 |
team_data = team_data[['playername', 'teamname', 'position', 'Kill_Proj', 'Death_Proj', 'Assist_Proj', 'CS_Proj']]
|
592 |
else:
|
593 |
team_data['Kill_Proj'] = team_data.apply(lambda row: row['lKill%'] * opp_pos_kills_boost_loss.get(row['position'], 1), axis=1)
|
594 |
team_data['Death_Proj'] = team_data.apply(lambda row: row['lDeath%'] * opp_pos_deaths_boost_loss.get(row['position'], 1), axis=1)
|
595 |
+
team_data['Assist_Base'] = team_data.apply(lambda row: row['lAssist%'] * opp_pos_kills_boost_loss.get(row['position'], 1), axis=1)
|
596 |
+
assist_scale = min(1.0, team_data['Kill_Proj'].sum() / team_data['Assist_Base'].sum()) if team_data['Assist_Base'].sum() > 0 else 1.0
|
597 |
+
team_data['Assist_Proj'] = team_data['Assist_Base'] * assist_scale
|
598 |
team_data['CS_Proj'] = team_data.apply(lambda row: row['lCS'] * opp_pos_cs_boost_loss.get(row['position'], 1), axis=1)
|
599 |
team_data = team_data[['playername', 'teamname', 'position', 'Kill_Proj', 'Death_Proj', 'Assist_Proj', 'CS_Proj']]
|
600 |
|
|
|
705 |
st.session_state.overall_sim_df = pd.DataFrame(overall_sim_results)
|
706 |
st.session_state.overall_sim_df = st.session_state.overall_sim_df.drop_duplicates(subset = ['Player', 'Stat'])
|
707 |
|
708 |
+
tab1, tab2, tab3, tab4 = st.tabs(["Gamelogs", "Individual Game Data", "Opponent Boosts", "Full Match Data"])
|
709 |
with tab4:
|
710 |
if 'player_summary' in st.session_state:
|
711 |
st.subheader("Full Match Data")
|