Spaces:
Sleeping
Sleeping
rmm
commited on
Commit
·
94698a8
1
Parent(s):
be5e8dd
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 |
"""
|