File size: 3,973 Bytes
38167d4 3b2483d f0f4b86 2c910b8 86d5177 10892df edf48ac 38167d4 10892df ba3027e 38167d4 ba3027e d6bb045 38167d4 1395bd5 38167d4 1395bd5 38167d4 10892df 8a5ab3e 38167d4 ba3027e 38167d4 8a5ab3e 38167d4 ba3027e cb8b3fe 810a2b0 f28eb9c 5a3f0a1 96f15f0 1266228 38167d4 8a5ab3e 38167d4 ba3027e 8a5ab3e 38167d4 8a5ab3e 82d483e ba3027e 8a5ab3e 86d5177 8a5ab3e 38167d4 ba3027e 8a5ab3e 38167d4 edf48ac 38167d4 8a5ab3e 1395bd5 d286ccb e0f05ce d286ccb 78040a5 2c910b8 38167d4 8a5ab3e 38167d4 ba3027e e0f05ce cb8b3fe 86d5177 f0f4b86 38167d4 8a5ab3e 38167d4 ba3027e e0f05ce 38167d4 ba3027e 38167d4 8a5ab3e 38167d4 ba3027e 8a5ab3e 38167d4 8a5ab3e a7a1433 38167d4 8a5ab3e 38167d4 ba3027e 8a5ab3e 38167d4 |
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 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 |
import streamlit as st
import streamlit.components.v1 as components
import pandas as pd
from my_model.tabs.run_inference import InferenceRunner
from my_model.tabs.results import run_demo
from my_model.tabs.home import run_home
from my_model.state_manager import StateManager
from my_model.dataset_analysis import run_dataset_analyzer
class UIManager():
"""Manages the user interface for the Streamlit application."""
def __init__(self):
"""Initializes the UIManager with predefined tabs."""
self.tabs = {
"Home": self.display_home,
"Dataset Analysis": self.display_dataset_analysis,
"Results": self.display_results,
"Run Inference": self.display_run_inference,
"Dissertation Report": self.display_dissertation_report,
"Code": self.display_code
}
state_manager = StateManager()
state_manager.initialize_state()
def add_tab(self, tab_name, display_function):
"""Adds a new tab to the UI."""
self.tabs[tab_name] = display_function
def display_sidebar(self):
"""Displays the sidebar for navigation."""
st.sidebar.title("Navigation")
selection = st.sidebar.radio("Go to", list(self.tabs.keys()), disabled=st.session_state['loading_in_progress'])
st.sidebar.image("Files/mm.jpeg", use_column_width=True)
st.sidebar.markdown("**[Mohammed H AlHaj](https://www.linkedin.com/in/m7mdal7aj)**")
return selection
def display_selected_page(self, selection):
"""Displays the selected page based on user's choice."""
if selection in self.tabs:
self.tabs[selection]()
def display_home(self):
"""Displays the Home page of the application."""
run_home()
def display_dataset_analysis(self):
"""Displays the Dataset Analysis page."""
st.title("OK-VQA Dataset Analysis")
st.write("This is a Place Holder until the contents are uploaded.")
run_dataset_analyzer()
def display_results(self):
"""Displays Evaluation Results page."""
st.title("Evaluation Results & Analyses")
st.write("This page demonstrates the model evaluation results and analyses in an interactive way.")
st.write("\n")
run_demo()
def display_run_inference(self):
"""Displays the Run Inference page."""
st.title("Run Inference")
st.write("""Please note that this is not a general purpose model, it is specifically trained on
[OK-VQA Dataset](https://okvqa.allenai.org/) and desgined to give short and direct answers to the
given questions about the given image.\n""")
inference_runner = InferenceRunner()
inference_runner.run_inference()
def display_dissertation_report(self):
"""Displays the Dissertation Report page."""
st.title("Dissertation Report")
st.write("Click the link below to view the PDF.")
# Error handling for file access should be considered here
st.download_button(
label="Download PDF",
data=open("Files/Dissertation Report.pdf", "rb"),
file_name="example.pdf",
mime="application/octet-stream"
)
def display_code(self):
"""Displays the Code page with a link to the project's code repository."""
st.title("Code")
st.markdown("You can view the code for this project on HuggingFace Space files page.")
st.markdown("[View Code](https://huggingface.co/spaces/m7mdal7aj/Mohammed_Alhaj_KB-VQA/tree/main)", unsafe_allow_html=True)
def display_placeholder(self):
"""Displays a placeholder for future content."""
st.title("Stay Tuned")
st.write("This is a Place Holder until the contents are uploaded.")
|