MaxBDKT commited on
Commit
c37f22d
·
verified ·
1 Parent(s): 96c6216

Update src/streamlit_app.py

Browse files
Files changed (1) hide show
  1. src/streamlit_app.py +27 -13
src/streamlit_app.py CHANGED
@@ -2,20 +2,28 @@ import streamlit as st
2
  import pandas as pd
3
  import numpy as np
4
  import plotly.graph_objects as go
 
5
 
 
6
  st.set_page_config(page_title="Brake_Lab_Test", layout="wide")
7
  st.title("🔬 Lab_test_visual : Analyse de Performance")
8
 
9
- # --- CHARGEMENT LOCAL ---
10
  @st.cache_data
11
  def load_data():
12
- # On lit le fichier que vous venez de déposer sur Hugging Face
13
- return pd.read_excel("Brake_Lab_Test_Data.xlsx", sheet_name='data')
 
 
 
 
14
 
15
  try:
16
  df = load_data()
17
- df.columns = df.columns.str.strip() # Nettoie les noms de colonnes
 
18
 
 
19
  st.sidebar.header("⚙️ Configuration")
20
  x_input = st.sidebar.slider("Valeur cible (X)", 40, 200, 100)
21
 
@@ -28,30 +36,36 @@ try:
28
  color = colors[i % len(colors)]
29
  model = row['model name']
30
 
31
- # Calcul Sec et Humide
32
  y_dry = row['dry a'] * x_range + row['dry b']
33
  y_wet = row['wet a'] * x_range + row['wet b']
34
 
 
35
  fig.add_trace(go.Scatter(x=x_range, y=y_dry, mode='lines',
36
  name=f"{model} (Sec)", line=dict(color=color, width=3)))
 
37
  fig.add_trace(go.Scatter(x=x_range, y=y_wet, mode='lines',
38
  name=f"{model} (Wet)", line=dict(color=color, width=2, dash='dot')))
39
 
 
40
  fig.add_vline(x=x_input, line_width=2, line_dash="dash", line_color="black")
41
- fig.update_layout(height=600, xaxis_title="Entrée (X)", yaxis_title="Performance (Y)")
42
  st.plotly_chart(fig, use_container_width=True)
43
 
44
- # --- TABLEAU ---
45
- recap_data = []
 
46
  for index, row in df.iterrows():
47
  val_dry = row['dry a'] * x_input + row['dry b']
48
  val_wet = row['wet a'] * x_input + row['wet b']
49
- recap_data.append({
50
  "Modèle": row['model name'],
51
- "Résultat Sec": round(val_dry, 2),
52
- "Résultat Humide": round(val_wet, 2)
 
53
  })
54
- st.table(pd.DataFrame(recap_data))
55
 
56
  except Exception as e:
57
- st.error(f"Erreur de lecture : {e}")
 
 
2
  import pandas as pd
3
  import numpy as np
4
  import plotly.graph_objects as go
5
+ import os
6
 
7
+ # Configuration
8
  st.set_page_config(page_title="Brake_Lab_Test", layout="wide")
9
  st.title("🔬 Lab_test_visual : Analyse de Performance")
10
 
11
+ # --- CHARGEMENT SÉCURISÉ ---
12
  @st.cache_data
13
  def load_data():
14
+ # Détecte le dossier se trouve ce script (src/)
15
+ current_dir = os.path.dirname(__file__)
16
+ file_path = os.path.join(current_dir, "Brake_Lab_Test_Data.xlsx")
17
+
18
+ # Lecture de l'onglet 'data' (minuscule comme demandé)
19
+ return pd.read_excel(file_path, sheet_name='data')
20
 
21
  try:
22
  df = load_data()
23
+ # Nettoyage automatique des noms de colonnes
24
+ df.columns = df.columns.str.strip()
25
 
26
+ # Barre latérale
27
  st.sidebar.header("⚙️ Configuration")
28
  x_input = st.sidebar.slider("Valeur cible (X)", 40, 200, 100)
29
 
 
36
  color = colors[i % len(colors)]
37
  model = row['model name']
38
 
39
+ # Calcul y = ax + b
40
  y_dry = row['dry a'] * x_range + row['dry b']
41
  y_wet = row['wet a'] * x_range + row['wet b']
42
 
43
+ # Courbe Sec
44
  fig.add_trace(go.Scatter(x=x_range, y=y_dry, mode='lines',
45
  name=f"{model} (Sec)", line=dict(color=color, width=3)))
46
+ # Courbe Humide
47
  fig.add_trace(go.Scatter(x=x_range, y=y_wet, mode='lines',
48
  name=f"{model} (Wet)", line=dict(color=color, width=2, dash='dot')))
49
 
50
+ # Ligne repère
51
  fig.add_vline(x=x_input, line_width=2, line_dash="dash", line_color="black")
52
+ fig.update_layout(height=600, xaxis_title="Entrée (X)", yaxis_title="Performance (Y)", hovermode="x unified")
53
  st.plotly_chart(fig, use_container_width=True)
54
 
55
+ # --- TABLEAU RÉCAPITULATIF ---
56
+ st.subheader(f"📊 Résultats pour X = {x_input}")
57
+ recap = []
58
  for index, row in df.iterrows():
59
  val_dry = row['dry a'] * x_input + row['dry b']
60
  val_wet = row['wet a'] * x_input + row['wet b']
61
+ recap.append({
62
  "Modèle": row['model name'],
63
+ "Sec": round(val_dry, 3),
64
+ "Humide": round(val_wet, 3),
65
+ "Delta": f"{round(val_dry - val_wet, 3)}"
66
  })
67
+ st.table(pd.DataFrame(recap))
68
 
69
  except Exception as e:
70
+ st.error(f"Erreur technique : {e}")
71
+ st.info("Vérifiez que le fichier 'Brake_Lab_Test_Data.xlsx' est bien présent dans le dossier 'src'.")