[tracks] writing results works
This commit is contained in:
parent
a60bfdb418
commit
216be7b1e5
@ -8,6 +8,11 @@ class ProducerSignals(QObject):
|
||||
progress = Signal(float)
|
||||
progress2 = Signal((str, float, float))
|
||||
|
||||
class WriterSignals(QObject):
|
||||
error = Signal(str)
|
||||
finished = Signal(bool)
|
||||
|
||||
|
||||
class DetectionViewSignals(QObject):
|
||||
trackClicked = Signal(int)
|
||||
itemsSelected = Signal(list)
|
||||
|
@ -1,4 +1,3 @@
|
||||
import pickle
|
||||
import logging
|
||||
from PySide6.QtCore import QRunnable, Slot
|
||||
|
||||
|
@ -1,14 +1,16 @@
|
||||
import logging
|
||||
import pathlib
|
||||
import pickle
|
||||
import numpy as np
|
||||
import pandas as pd
|
||||
|
||||
from PySide6.QtCore import Qt, QThreadPool, Signal, QAbstractTableModel, QSortFilterProxyModel, QItemSelectionModel, QSize, QObject
|
||||
from PySide6.QtCore import Qt, QThreadPool, Signal, QAbstractTableModel, QSortFilterProxyModel, QSize, QObject
|
||||
from PySide6.QtGui import QImage, QBrush, QColor, QFont
|
||||
from PySide6.QtWidgets import QWidget, QVBoxLayout, QHBoxLayout, QLabel, QPushButton, QSizePolicy, QComboBox
|
||||
from PySide6.QtWidgets import QSpinBox, QSpacerItem, QProgressBar, QTableView, QSplitter, QGridLayout
|
||||
from PySide6.QtWidgets import QSpinBox, QSpacerItem, QProgressBar, QTableView, QSplitter, QGridLayout, QFileDialog
|
||||
|
||||
from fixtracks.utils.reader import PickleLoader
|
||||
from fixtracks.utils.writer import PickleWriter
|
||||
from fixtracks.widgets.detectionview import DetectionView
|
||||
from fixtracks.widgets.detectiontimeline import DetectionTimeline
|
||||
|
||||
@ -253,7 +255,12 @@ class DataController(QObject):
|
||||
self._data["track"][self._user_selections] = track_id
|
||||
|
||||
def save(self, filename):
|
||||
pass
|
||||
export_columns = self._columns.copy()
|
||||
export_columns.remove("index")
|
||||
dictionary = {c: self._data[c] for c in export_columns}
|
||||
df = pd.DataFrame(dictionary, index=self._data["index"])
|
||||
with open(filename, 'wb') as f:
|
||||
pickle.dump(df, f)
|
||||
|
||||
|
||||
class FixTracks(QWidget):
|
||||
@ -345,9 +352,11 @@ class FixTracks(QWidget):
|
||||
# tablebox.addLayout(tracktwo_box)
|
||||
|
||||
self._saveBtn = QPushButton("Save")
|
||||
self._saveBtn.setShortcut("Ctrl+S")
|
||||
self._saveBtn.setEnabled(False)
|
||||
self._saveBtn.clicked.connect(self.on_save)
|
||||
self._backBtn = QPushButton("Back")
|
||||
self._backBtn.setShortcut("ESC")
|
||||
self._backBtn.clicked.connect(self.on_back)
|
||||
|
||||
self._data_combo = QComboBox()
|
||||
@ -472,9 +481,27 @@ class FixTracks(QWidget):
|
||||
self._data.setData(self._reader.asdict)
|
||||
self._timeline.setDetectionData(self._data.data)
|
||||
self.update()
|
||||
self._saveBtn.setEnabled(True)
|
||||
|
||||
def on_save(self):
|
||||
logging.debug("Save fixtracks results")
|
||||
logging.debug("Saving fixtracks results")
|
||||
self._tasklabel.setText("Saving results to file...")
|
||||
file_dialog = QFileDialog(self)
|
||||
file_dialog.setAcceptMode(QFileDialog.AcceptMode.AcceptSave)
|
||||
file_dialog.setNameFilter("Pickle Files (*.pkl)")
|
||||
if file_dialog.exec():
|
||||
file_path = file_dialog.selectedFiles()[0]
|
||||
if not file_path.endswith(".pkl"):
|
||||
file_path += ".pkl"
|
||||
self._progress_bar.setRange(0,0)
|
||||
save_task = PickleWriter(self._data, file_path)
|
||||
save_task.signals.finished.connect(self.on_dataSaved)
|
||||
self._threadpool.start(save_task)
|
||||
|
||||
def on_dataSaved(self):
|
||||
self._tasklabel.setText("")
|
||||
self._progress_bar.setRange(0, 100)
|
||||
self._progress_bar.setValue(0)
|
||||
|
||||
def on_back(self):
|
||||
logging.debug("Back button pressed!")
|
||||
@ -519,7 +546,6 @@ class FixTracks(QWidget):
|
||||
|
||||
def main():
|
||||
from PySide6.QtWidgets import QApplication
|
||||
|
||||
app = QApplication([])
|
||||
window = QWidget()
|
||||
window.setMinimumSize(200, 200)
|
||||
|
Loading…
Reference in New Issue
Block a user