Spaces:
Sleeping
Sleeping
rmm
commited on
Commit
·
19b7ec2
1
Parent(s):
9e88b3e
chore: moved all session state init to relevant modules
Browse files- src/classifier/classifier_image.py +11 -0
- src/input/input_handling.py +4 -0
- src/main.py +7 -20
- src/utils/st_logs.py +11 -0
- src/utils/workflow_ui.py +10 -0
src/classifier/classifier_image.py
CHANGED
|
@@ -12,6 +12,17 @@ from utils.grid_maker import gridder
|
|
| 12 |
from utils.metadata_handler import metadata2md
|
| 13 |
from input.input_observation import InputObservation
|
| 14 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 15 |
def add_classifier_header() -> None:
|
| 16 |
"""
|
| 17 |
Add brief explainer text about cetacean classification to the tab
|
|
|
|
| 12 |
from utils.metadata_handler import metadata2md
|
| 13 |
from input.input_observation import InputObservation
|
| 14 |
|
| 15 |
+
def init_classifier_session_states() -> None:
|
| 16 |
+
'''
|
| 17 |
+
Initialise the session state variables used in classification
|
| 18 |
+
'''
|
| 19 |
+
if "classify_whale_done" not in st.session_state:
|
| 20 |
+
st.session_state.classify_whale_done = {}
|
| 21 |
+
|
| 22 |
+
if "whale_prediction1" not in st.session_state:
|
| 23 |
+
st.session_state.whale_prediction1 = {}
|
| 24 |
+
|
| 25 |
+
|
| 26 |
def add_classifier_header() -> None:
|
| 27 |
"""
|
| 28 |
Add brief explainer text about cetacean classification to the tab
|
src/input/input_handling.py
CHANGED
|
@@ -370,6 +370,10 @@ def init_input_data_session_states() -> None:
|
|
| 370 |
if "files" not in st.session_state:
|
| 371 |
st.session_state.files = {}
|
| 372 |
|
|
|
|
|
|
|
|
|
|
|
|
|
| 373 |
|
| 374 |
def add_input_UI_elements() -> None:
|
| 375 |
'''
|
|
|
|
| 370 |
if "files" not in st.session_state:
|
| 371 |
st.session_state.files = {}
|
| 372 |
|
| 373 |
+
if "public_observations" not in st.session_state:
|
| 374 |
+
st.session_state.public_observations = {}
|
| 375 |
+
|
| 376 |
+
|
| 377 |
|
| 378 |
def add_input_UI_elements() -> None:
|
| 379 |
'''
|
src/main.py
CHANGED
|
@@ -22,12 +22,11 @@ from input.input_handling import dbg_show_observation_hashes
|
|
| 22 |
|
| 23 |
from maps.alps_map import present_alps_map
|
| 24 |
from maps.obs_map import present_obs_map
|
| 25 |
-
from utils.st_logs import
|
| 26 |
-
from utils.
|
| 27 |
-
from utils.workflow_ui import refresh_progress_display, init_workflow_viz
|
| 28 |
from hf_push_observations import push_all_observations
|
| 29 |
|
| 30 |
-
from classifier.classifier_image import cetacean_just_classify, cetacean_show_results_and_review, cetacean_show_results
|
| 31 |
from classifier.classifier_hotdog import hotdog_classify
|
| 32 |
|
| 33 |
|
|
@@ -55,29 +54,17 @@ g_logger.setLevel(LOG_LEVEL)
|
|
| 55 |
st.set_page_config(layout="wide")
|
| 56 |
|
| 57 |
# initialise various session state variables
|
| 58 |
-
|
| 59 |
-
|
| 60 |
-
|
| 61 |
-
|
| 62 |
-
if "public_observations" not in st.session_state:
|
| 63 |
-
st.session_state.public_observations = {}
|
| 64 |
-
|
| 65 |
-
if "classify_whale_done" not in st.session_state:
|
| 66 |
-
st.session_state.classify_whale_done = {}
|
| 67 |
-
|
| 68 |
-
if "whale_prediction1" not in st.session_state:
|
| 69 |
-
st.session_state.whale_prediction1 = {}
|
| 70 |
|
|
|
|
| 71 |
if "tab_log" not in st.session_state:
|
| 72 |
st.session_state.tab_log = None
|
| 73 |
|
| 74 |
-
if "workflow_fsm" not in st.session_state:
|
| 75 |
-
# create and init the state machine
|
| 76 |
-
st.session_state.workflow_fsm = WorkflowFSM(FSM_STATES)
|
| 77 |
-
|
| 78 |
init_input_data_session_states()
|
| 79 |
init_input_container_states()
|
| 80 |
init_workflow_viz()
|
|
|
|
| 81 |
|
| 82 |
|
| 83 |
|
|
|
|
| 22 |
|
| 23 |
from maps.alps_map import present_alps_map
|
| 24 |
from maps.obs_map import present_obs_map
|
| 25 |
+
from utils.st_logs import parse_log_buffer, init_logging_session_states
|
| 26 |
+
from utils.workflow_ui import refresh_progress_display, init_workflow_viz, init_workflow_session_states
|
|
|
|
| 27 |
from hf_push_observations import push_all_observations
|
| 28 |
|
| 29 |
+
from classifier.classifier_image import cetacean_just_classify, cetacean_show_results_and_review, cetacean_show_results, init_classifier_session_states
|
| 30 |
from classifier.classifier_hotdog import hotdog_classify
|
| 31 |
|
| 32 |
|
|
|
|
| 54 |
st.set_page_config(layout="wide")
|
| 55 |
|
| 56 |
# initialise various session state variables
|
| 57 |
+
init_logging_session_states() # logging should be early
|
| 58 |
+
init_workflow_session_states()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 59 |
|
| 60 |
+
# TODO: this is obselete, now we have the st_logs functionality.
|
| 61 |
if "tab_log" not in st.session_state:
|
| 62 |
st.session_state.tab_log = None
|
| 63 |
|
|
|
|
|
|
|
|
|
|
|
|
|
| 64 |
init_input_data_session_states()
|
| 65 |
init_input_container_states()
|
| 66 |
init_workflow_viz()
|
| 67 |
+
init_classifier_session_states()
|
| 68 |
|
| 69 |
|
| 70 |
|
src/utils/st_logs.py
CHANGED
|
@@ -100,6 +100,16 @@ class StreamlitLogHandler(logging.Handler):
|
|
| 100 |
self.log_area.empty() # Clear previous logs
|
| 101 |
self.buffer.clear()
|
| 102 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 103 |
# Set up logging to capture all info level logs from the root logger
|
| 104 |
@st.cache_resource
|
| 105 |
def setup_logging(level:int=logging.INFO, buffer_len:int=15) -> StreamlitLogHandler:
|
|
@@ -126,6 +136,7 @@ def setup_logging(level:int=logging.INFO, buffer_len:int=15) -> StreamlitLogHand
|
|
| 126 |
# st.session_state['handler'] = handler
|
| 127 |
return handler
|
| 128 |
|
|
|
|
| 129 |
def parse_log_buffer(log_contents: deque) -> List[dict]:
|
| 130 |
"""
|
| 131 |
Convert log buffer to a list of dictionaries for use with a streamlit datatable.
|
|
|
|
| 100 |
self.log_area.empty() # Clear previous logs
|
| 101 |
self.buffer.clear()
|
| 102 |
|
| 103 |
+
|
| 104 |
+
def init_logging_session_states():
|
| 105 |
+
"""
|
| 106 |
+
Initialise the session state variables for logging.
|
| 107 |
+
"""
|
| 108 |
+
|
| 109 |
+
if "handler" not in st.session_state:
|
| 110 |
+
st.session_state['handler'] = setup_logging()
|
| 111 |
+
|
| 112 |
+
|
| 113 |
# Set up logging to capture all info level logs from the root logger
|
| 114 |
@st.cache_resource
|
| 115 |
def setup_logging(level:int=logging.INFO, buffer_len:int=15) -> StreamlitLogHandler:
|
|
|
|
| 136 |
# st.session_state['handler'] = handler
|
| 137 |
return handler
|
| 138 |
|
| 139 |
+
|
| 140 |
def parse_log_buffer(log_contents: deque) -> List[dict]:
|
| 141 |
"""
|
| 142 |
Convert log buffer to a list of dictionaries for use with a streamlit datatable.
|
src/utils/workflow_ui.py
CHANGED
|
@@ -1,4 +1,14 @@
|
|
| 1 |
import streamlit as st
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2 |
|
| 3 |
def refresh_progress_display() -> None:
|
| 4 |
"""
|
|
|
|
| 1 |
import streamlit as st
|
| 2 |
+
from utils.workflow_state import WorkflowFSM, FSM_STATES
|
| 3 |
+
|
| 4 |
+
def init_workflow_session_states():
|
| 5 |
+
"""
|
| 6 |
+
Initialise the session state variables for the workflow state machine
|
| 7 |
+
"""
|
| 8 |
+
|
| 9 |
+
if "workflow_fsm" not in st.session_state:
|
| 10 |
+
# create and init the state machine
|
| 11 |
+
st.session_state.workflow_fsm = WorkflowFSM(FSM_STATES)
|
| 12 |
|
| 13 |
def refresh_progress_display() -> None:
|
| 14 |
"""
|