diff --git a/fixtracks/widgets/classifier.py b/fixtracks/widgets/classifier.py index 407f047..e610a29 100644 --- a/fixtracks/widgets/classifier.py +++ b/fixtracks/widgets/classifier.py @@ -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)