[classifier] better messaging

This commit is contained in:
Jan Grewe 2025-02-26 11:16:04 +01:00
parent 9e2c6f343a
commit ff3e0841a6

View File

@ -247,7 +247,7 @@ class ConsistencyWorker(QRunnable):
if steps > 0 and f % steps == 0:
progress += 1
self.signals.progress.emit(progress, processed, errors)
self.signals.message.emit("Tracking stopped at frame %i.", f)
self.signals.message.emit(f"Tracking stopped at frame {f}.")
self.signals.stopped.emit(f)
@ -548,11 +548,17 @@ class ConsistencyClassifier(QWidget):
self._tracks = self._dataworker.tracks
self._dataworker = None
if np.sum(self._userlabeled) < 1:
logging.error("ConsistencyTracker: I need at least 1 user-labeled frame to start with!")
msg = "ConsistencyTracker: I need at least 1 user-labeled frame to start with!"
logging.error(msg)
self._messagebox.append(msg)
self.setEnabled(False)
else:
t1_userlabeled = self._frames[self._userlabeled & (self._tracks == 1)]
t2_userlabeled = self._frames[self._userlabeled & (self._tracks == 2)]
if any([len(t1_userlabeled) == 0, len(t2_userlabeled)== 0]):
self._messagebox.append("Error preparing data! Make sure that the first user-labeled frames contain both tracks!")
self.setEnabled(False)
return
max_startframe = np.min([t1_userlabeled[-1], t2_userlabeled[-1]])
min_startframe = np.max([t1_userlabeled[0], t2_userlabeled[0]])
self._maxframes = np.max(self._frames)
@ -574,10 +580,7 @@ class ConsistencyClassifier(QWidget):
def stop(self):
if self._worker is not None:
self._worker.stop()
self._startbtn.setEnabled(True)
self._proceedbtn.setEnabled(True)
self._stopbtn.setEnabled(False)
self._refreshbtn.setEnabled(True)
self._messagebox.append("Stopping tracking.")
def start(self):
self._startbtn.setEnabled(False)
@ -590,6 +593,7 @@ class ConsistencyClassifier(QWidget):
self._worker.signals.progress.connect(self.worker_progress)
self._worker.signals.message.connect(self.worker_error)
self._worker.signals.currentframe.connect(self.worker_frame)
self._messagebox.append("Tracking in progress ...")
self.threadpool.start(self._worker)
def worker_frame(self, frame):
@ -602,8 +606,11 @@ class ConsistencyClassifier(QWidget):
self.start()
def refresh(self):
self.setEnabled(False)
self._dataworker = ConsitencyDataLoader(self._data)
self._dataworker.signals.stopped.connect(self.data_processed)
self._messagebox.clear()
self._messagebox.append("Refreshing...")
self.threadpool.start(self._dataworker)
def worker_progress(self, progress, processed, errors):
@ -612,13 +619,15 @@ class ConsistencyClassifier(QWidget):
self._assignedlabel.setText(str(processed))
def worker_stopped(self, frame):
self._apply_btn.setEnabled(True)
self._startbtn.setEnabled(True)
self._proceedbtn.setEnabled(True)
self._stopbtn.setEnabled(False)
self._apply_btn.setEnabled(True)
self._refreshbtn.setEnabled(True)
self._startframe_spinner.setValue(frame-1)
self._proceedbtn.setEnabled(bool(frame < self._maxframes-1))
self._refreshbtn.setEnabled(True)
self._processed_frames = frame
self._messagebox.append("... done.")
def assignedTracks(self):
return self._tracks
@ -683,7 +692,7 @@ def main():
import pickle
from fixtracks.info import PACKAGE_ROOT
datafile = PACKAGE_ROOT / "data/merged_small_starter.pkl"
datafile = PACKAGE_ROOT / "data/merged_small_beginning.pkl"
with open(datafile, "rb") as f:
df = pickle.load(f)