Beispiel #1
0
class DataImportWidget(QWidget, Ui_DataImportWidget):
    """
    This is a very simple widget that provides some buttons
    to load experimental data.

    @since: 2011-08-24
    """
    __author__ = "Moritz Wade"
    __contact__ = "*****@*****.**"
    __copyright__ = "Zuse Institute Berlin 2011"


    updatedDataEvent = Signal(OrderedDict)

    def __init__(self, parent, parkinController):
        super(DataImportWidget, self).__init__(parent)
        self.setupUi(self)
        
        self.currentExpDataFilename = None
        self.dataService = DataService()
        self.parkinController = parkinController

    def browseExpData(self):
        """
        Shows a file open dialog.
        """

        homeDir = filehelpers.getHomeDir()
        openDir = self.currentExpDataFilename if self.currentExpDataFilename else homeDir
        filenameTuple = QFileDialog.getOpenFileName(parent=self,
                                               caption="Browse for data file...",
                                               directory=openDir,
                                               filter="BioPARKIN CSV data file (*.csv *.txt);;Legacy PARKIN data file (*.dat);;All filetypes (*.*")

        self.setCurrentExpDataDirectory(filenameTuple[0])

    def setCurrentExpDataDirectory(self, filename):
        self.currentExpDataFilename = filename
        self.lineEdit.setText(self.currentExpDataFilename)

    def updateExpData(self, readFile=False):
        if self.dataService.has_data(self.currentExpDataFilename):   # don't load the same data twice (remove the data first, if you want to reload)
            logging.info("This data file is already loaded: %s" % self.currentExpDataFilename)
            return

        if readFile:
            self.currentExpDataFilename = self.lineEdit.text()
            format = self.getExpDataFileFormat()

            self.dataService.load_data([self.currentExpDataFilename], type=services.dataservice.EXPERIMENTAL,
                                       parkinController=self.parkinController, format=format)

        expData = self.dataService.get_experimental_data()
        if expData:
            self.updatedDataEvent.emit(expData)

    def getExpDataFileFormat(self):
        filename = self.currentExpDataFilename
        if filename.endswith("csv") or filename.endswith("txt"):
            format = datamanagement.dataset.FORMAT_EXP_SIMPLE_CSV
        elif filename.endswith("dat"):
            format = datamanagement.dataset.FORMAT_EXP_PARKIN
        else:
            format = None

        return format

    ###### SLOTS #######

    @Slot("")
    def on_buttonBrowse_clicked(self):
        #logging.debug("SimulationWorkbenchController: in on_buttonBrowseExpData_clicked()")
        self.browseExpData()
        if not self.currentExpDataFilename:
            logging.info("No file selected. Can't import data.")
            return
        self.updateExpData(readFile=True)
        self.lineEdit.clear()

    @Slot("")
    def on_buttonImport_clicked(self):
        if not self.currentExpDataFilename:
            logging.info("No filename given. Can't import data.")
            return
        #logging.debug("SimulationWorkbenchController: in on_buttonBrowseExpData_clicked()")
        self.updateExpData(readFile=True)
        self.lineEdit.clear()
class DataImportWidget(QWidget, Ui_DataImportWidget):
    """
    This is a very simple widget that provides some buttons
    to load experimental data.

    @since: 2011-08-24
    """
    __author__ = "Moritz Wade"
    __contact__ = "*****@*****.**"
    __copyright__ = "Zuse Institute Berlin 2011"

    updatedDataEvent = Signal(OrderedDict)

    def __init__(self, parent, parkinController):
        super(DataImportWidget, self).__init__(parent)
        self.setupUi(self)

        self.currentExpDataFilename = None
        self.dataService = DataService()
        self.parkinController = parkinController

    def browseExpData(self):
        """
        Shows a file open dialog.
        """

        homeDir = filehelpers.getHomeDir()
        openDir = self.currentExpDataFilename if self.currentExpDataFilename else homeDir
        filenameTuple = QFileDialog.getOpenFileName(
            parent=self,
            caption="Browse for data file...",
            directory=openDir,
            filter=
            "BioPARKIN CSV data file (*.csv *.txt);;Legacy PARKIN data file (*.dat);;All filetypes (*.*"
        )

        self.setCurrentExpDataDirectory(filenameTuple[0])

    def setCurrentExpDataDirectory(self, filename):
        self.currentExpDataFilename = filename
        self.lineEdit.setText(self.currentExpDataFilename)

    def updateExpData(self, readFile=False):
        if self.dataService.has_data(
                self.currentExpDataFilename
        ):  # don't load the same data twice (remove the data first, if you want to reload)
            logging.info("This data file is already loaded: %s" %
                         self.currentExpDataFilename)
            return

        if readFile:
            self.currentExpDataFilename = self.lineEdit.text()
            format = self.getExpDataFileFormat()

            self.dataService.load_data([self.currentExpDataFilename],
                                       type=services.dataservice.EXPERIMENTAL,
                                       parkinController=self.parkinController,
                                       format=format)

        expData = self.dataService.get_experimental_data()
        if expData:
            self.updatedDataEvent.emit(expData)

    def getExpDataFileFormat(self):
        filename = self.currentExpDataFilename
        if filename.endswith("csv") or filename.endswith("txt"):
            format = datamanagement.dataset.FORMAT_EXP_SIMPLE_CSV
        elif filename.endswith("dat"):
            format = datamanagement.dataset.FORMAT_EXP_PARKIN
        else:
            format = None

        return format

    ###### SLOTS #######

    @Slot("")
    def on_buttonBrowse_clicked(self):
        #logging.debug("SimulationWorkbenchController: in on_buttonBrowseExpData_clicked()")
        self.browseExpData()
        if not self.currentExpDataFilename:
            logging.info("No file selected. Can't import data.")
            return
        self.updateExpData(readFile=True)
        self.lineEdit.clear()

    @Slot("")
    def on_buttonImport_clicked(self):
        if not self.currentExpDataFilename:
            logging.info("No filename given. Can't import data.")
            return
        #logging.debug("SimulationWorkbenchController: in on_buttonBrowseExpData_clicked()")
        self.updateExpData(readFile=True)
        self.lineEdit.clear()