From e15963107c7f57d4a362d055958abb5495de2984 Mon Sep 17 00:00:00 2001 From: barthes <nicolas.barthes@cefe.cnrs.fr> Date: Tue, 11 Jun 2024 13:26:00 +0200 Subject: [PATCH] moved selectbox interface to style/header.py and called on eah pages --- src/Modules.py | 3 ++- src/app.py | 34 ++----------------------------- src/pages/1-samples_selection.py | 4 ++-- src/pages/2-model_creation.py | 8 +------- src/pages/3-prediction.py | 2 +- src/style/header.py | 35 +++++++++++++++++++++++++++++++- 6 files changed, 42 insertions(+), 44 deletions(-) diff --git a/src/Modules.py b/src/Modules.py index da66759..c399a6e 100644 --- a/src/Modules.py +++ b/src/Modules.py @@ -3,9 +3,10 @@ from Class_Mod import Plsr, LinearPCA, Umap, find_col_index, PinardPlsr, Nmf, AP from Class_Mod import LWPLSR, list_files, metrics, TpeIpls, reg_plot, resid_plot, Sk_Kmeans, DxRead, Hdbscan, read_dx, PlsProcess from Class_Mod.DATA_HANDLING import * from Class_Mod.Miscellaneous import prediction, download_results, plot_spectra, local_css -from style.header import add_header from Report import report css_file = Path("style/") +pages_folder = Path("pages/") +from style.header import add_header, add_sidebar from config.config import pdflatex_path local_css(css_file / "style.css") diff --git a/src/app.py b/src/app.py index e55e99d..cc8f226 100644 --- a/src/app.py +++ b/src/app.py @@ -1,43 +1,13 @@ from Packages import * st.set_page_config(page_title="NIRS Utils", page_icon=":goat:", layout="wide",) -if 'interface' not in st.session_state: - st.session_state['interface'] = 'simple' + from Modules import * from Class_Mod.DATA_HANDLING import * add_header() -pages_folder = Path("pages/") -# # TOC menu on the left -show_pages( - [Page("app.py", "Home"), - Page(str(pages_folder / "4-inputs.py"), "Inputs"), - Page(str(pages_folder / "1-samples_selection.py"), "Samples Selection"), - Page(str(pages_folder / "2-model_creation.py"), "Models Creation & Predictions"), - - ] -) - -with st.sidebar: - interface = st.selectbox(label="Interface", options=['simple', 'advanced'], key='interface') - # st.page_link(str(pages_folder / '1-samples_selection.py')) - if st.session_state['interface'] == 'simple': - # st.page_link(str(pages_folder / '2-model_creation.py')) - pass - # if advanced interface, split Models Creation and Predictions - elif st.session_state['interface'] == 'advanced': - show_pages( - [Page("app.py", "Home"), - Page(str(pages_folder / "4-inputs.py"), "Inputs"), - Page(str(pages_folder / "1-samples_selection.py"), "Samples Selection"), - Page(str(pages_folder / "2-model_creation.py"), "Models Creation"), - Page(str(pages_folder / "3-prediction.py"), "Predictions"), - ] - ) - # st.page_link(str(pages_folder / '2-model_creation.py')) - # st.page_link(str(pages_folder / '3-prediction.py')) - +add_sidebar(pages_folder) # Page header with st.container(): diff --git a/src/pages/1-samples_selection.py b/src/pages/1-samples_selection.py index 0b2aac3..8c9d605 100644 --- a/src/pages/1-samples_selection.py +++ b/src/pages/1-samples_selection.py @@ -15,6 +15,8 @@ if os.path.exists(repertoire_a_vider): add_header() #load specific model page css local_css(css_file / "style_model.css") +add_sidebar(pages_folder) + #define some variables tcr=pd.DataFrame() @@ -24,8 +26,6 @@ dim_red_methods=['', 'PCA','UMAP', 'NMF'] # List of dimensionality reduction al cluster_methods = ['', 'Kmeans','HDBSCAN', 'AP'] # List of clustering algos selec_strategy = ['center','random'] -# check session state and define default values if simple interface to automate processing -st.session_state["interface"] = st.session_state.get('interface') if st.session_state["interface"] == 'simple': st.write(':red[Automated Simple Interface]') hide_pages("Predictions") diff --git a/src/pages/2-model_creation.py b/src/pages/2-model_creation.py index 8c31f31..c5e2497 100644 --- a/src/pages/2-model_creation.py +++ b/src/pages/2-model_creation.py @@ -5,6 +5,7 @@ from Modules import * from Class_Mod.DATA_HANDLING import * from Class_Mod.Miscellaneous import desc_stats add_header() +add_sidebar(pages_folder) repertoire_a_vider = Path('Report/figures') if os.path.exists(repertoire_a_vider): @@ -17,13 +18,6 @@ if os.path.exists(repertoire_a_vider): json_sp = pd.DataFrame() -st.session_state["interface"] = st.session_state.get('interface') -if st.session_state["interface"] == 'simple': - hide_pages("Predictions") - -#path = os.path.dirname(os.path.abspath(__file__)).replace('\\','/') -#css_file = path[:path.find('/pages')]+'/style' -#local_css(css_file +"/style_model.css") local_css(css_file / "style_model.css") ####################################### page Design ####################################### diff --git a/src/pages/3-prediction.py b/src/pages/3-prediction.py index b79dafd..dcd5936 100644 --- a/src/pages/3-prediction.py +++ b/src/pages/3-prediction.py @@ -11,8 +11,8 @@ from Class_Mod.DATA_HANDLING import * # # Injecter le code HTML du bandeau # st.markdown(bandeau_html, unsafe_allow_html=True) add_header() +add_sidebar(pages_folder) -st.session_state["interface"] = st.session_state.get('interface') local_css(css_file / "style_model.css") diff --git a/src/style/header.py b/src/style/header.py index b91bf42..0c01027 100644 --- a/src/style/header.py +++ b/src/style/header.py @@ -8,4 +8,37 @@ def add_header(): </div> """, unsafe_allow_html=True, - ) \ No newline at end of file + ) + +def add_sidebar(pages_folder): + if 'interface' not in st.session_state: + st.session_state['interface'] = 'simple' + + # # TOC menu on the left + show_pages( + [Page("app.py", "Home"), + Page(str(pages_folder / "4-inputs.py"), "Inputs"), + Page(str(pages_folder / "1-samples_selection.py"), "Samples Selection"), + Page(str(pages_folder / "2-model_creation.py"), "Models Creation & Predictions"), + + ] + ) + + with st.sidebar: + interface = st.selectbox(label="Interface", options=['simple', 'advanced'], key='interface') + # st.page_link(str(pages_folder / '1-samples_selection.py')) + if st.session_state['interface'] == 'simple': + # st.page_link(str(pages_folder / '2-model_creation.py')) + pass + # if advanced interface, split Models Creation and Predictions + elif st.session_state['interface'] == 'advanced': + show_pages( + [Page("app.py", "Home"), + Page(str(pages_folder / "4-inputs.py"), "Inputs"), + Page(str(pages_folder / "1-samples_selection.py"), "Samples Selection"), + Page(str(pages_folder / "2-model_creation.py"), "Models Creation"), + Page(str(pages_folder / "3-prediction.py"), "Predictions"), + ] + ) + # st.page_link(str(pages_folder / '2-model_creation.py')) + # st.page_link(str(pages_folder / '3-prediction.py')) -- GitLab