def save_displayed_data(self):

        # Bring up save dialog
        save_dialog = QFileDialog(self)
        save_dialog.setDefaultSuffix(".pkl")
        file_types = "Python pickle (*.pkl);;Matlab (*.mat)"
        save_path = save_dialog.getSaveFileName(self, 'Save displayed data',
                                                get_home_dir(),
                                                file_types)

        # Get the data from visuals
        names = []
        data = []
        for pc in self.get_plot_containers():
            names.append(pc.container.item_widget.label.text())
            data.append(self.data_array[pc.data_array_pos][0])

        data = np.vstack(data)

        dict_out = {'channel_names': names,
                    'data': data}

        path = save_path[0]
        # Evaluate the extension and save
        if save_path[1] == "Python pickle (*.pkl)":
            if '.pkl' not in path:
                path += '.pkl'
            with open(path, 'wb') as fid:
                pickle.dump(dict_out, fid)
        elif save_path[1] == "Matlab (*.mat)":
            if '.mat' not in path:
                path += '.mat'
            savemat(path, dict_out)

        return
Exemple #2
0
    def save_pysigview_session(self):

        # Bring up save dialog
        save_dialog = QFileDialog(self)
        save_dialog.setDefaultSuffix(".sps")
        save_path = save_dialog.getSaveFileName(self, 'Save pysigview session',
                                                get_home_dir(),
                                                "Pysigview session (*.sps)")
        if not save_path:
            return

        path = save_path[0]
        if path[-4:] != '.sps':
            path += '.sps'

        ss = {'main': {}, 'signal_display': {}, 'plugins': {}}

        # Main
        if self.session_path:
            ss['main']['session_path'] = self.session_path
        elif self.file_path:
            ss['main']['file_path'] = self.file_path
        else:
            return

        # TODO - run this automatically but channels have to be first!
        # Plugins
        ss['plugins'] = [{
            'channels': self.channels.save_plugin_data()
        }, {
            'annotations': self.annotations.save_plugin_data()
        }, {
            'measurement': self.measurement.save_plugin_data()
        }]

        # Signal display
        sd = self.signal_display
        if sd.curr_pc is None:
            ss['signal_display']['master_pc_pos'] = None
        else:
            ss['signal_display']['master_pc_pos'] = sd.curr_pc.plot_position
        if sd.curr_pc is None:
            ss['signal_display']['curr_pc_pos'] = None
        else:
            ss['signal_display']['curr_pc_pos'] = sd.curr_pc.plot_position
        ss['signal_display']['camera_rect'] = sd.camera.rect
        ss['signal_display']['grid_on'] = sd.grid is not None

        with open(path, 'wb') as fid:
            pickle.dump(ss, fid)

        return
    def save_image(self):
        im = pil_Image.fromarray(self.screen_img)

        save_dialog = QFileDialog(self)
        save_dialog.selectFile('pysigview_screenshot.png')
        save_path = save_dialog.getSaveFileName(self, 'Save File',
                                                get_home_dir(),
                                                "Images (*.png *.tiff *.jpg)")
        path = save_path[0]
        if not any([x for x in ['.png', '.tiff', '.jpg'] if x in path]):
            path += '.png'
        im.save(path)
        return
Exemple #4
0
    def open_file(self, path):

        load_dialog = QFileDialog(self)

        if path:
            self.file_path = path
        else:
            diag_title = 'Select file'
            diag_path = load_dialog.getOpenFileName(self, diag_title,
                                                    get_home_dir())
            self.file_path = diag_path[0]

        if self.file_path:
            self.open_data_source(self.file_path)
        else:
            return
Exemple #5
0
 def _filename_global(self):
     """Create a .ini filename located in user home directory.
     This .ini files stores the global spyder preferences.
     """
     if self.subfolder is None:
         config_file = osp.join(get_home_dir(), '.%s.ini' % self.name)
         return config_file
     else:
         folder = get_conf_path()
         # Save defaults in a "defaults" dir of .spyder2 to not pollute it
         if 'defaults' in self.name:
             folder = osp.join(folder, 'defaults')
             if not osp.isdir(folder):
                 os.mkdir(folder)
         config_file = osp.join(folder, '%s.ini' % self.name)
         return config_file
Exemple #6
0
    def open_pysigview_session(self):

        load_dialog = QFileDialog(self)
        load_path = load_dialog.getOpenFileName(self, 'Load pysigview session',
                                                get_home_dir(),
                                                "Pysigview session (*.sps)")

        if not load_path:
            return

        with open(load_path[0], 'rb') as fid:
            ss = pickle.load(fid)

        # TODO - if the path is missing user should now the original path
        if 'session_path' in ss['main'].keys():
            if os.path.exists(ss['main']['session_path']):
                self.open_session(ss['main']['session_path'])
            else:
                self.open_session()
        elif 'file_path' in ss['main'].keys():
            if os.path.exists(ss['main']['file_path']):
                self.open_file(ss['main']['file_path'])
            else:
                self.open_file()
        else:
            return

        for plugin in ss['plugins']:
            plugin_name = list(plugin.keys())[0]
            plugin_data = plugin[plugin_name]

            plugin_instance = getattr(self, plugin_name)
            plugin_instance.load_plugin_data(plugin_data)

            # Trigger signal_display parameter loading ater channels
            if plugin_name == 'channels':
                sd = self.signal_display
                master_pc_pos = ss['signal_display']['master_pc_pos']
                curr_pc_pos = ss['signal_display']['curr_pc_pos']
                for pc in sd.get_plot_containers():
                    if pc.plot_position == master_pc_pos:
                        sd.master_pc = pc
                    if pc.plot_position == curr_pc_pos:
                        sd.curr_pc = pc
                sd.camera.rect = ss['signal_display']['camera_rect']
                if ss['signal_display']['grid_on']:
                    sd.show_grid()
Exemple #7
0
    def open_session(self, path=None):

        load_dialog = QFileDialog(self)

        if path:
            self.session_path = path
        else:
            diag_title = 'Select mef session directory'
            diag_path = str(load_dialog.getExistingDirectory(self,
                                                             diag_title,
                                                             get_home_dir()))
            self.session_path = diag_path

        if self.session_path:
            self.open_data_source(self.session_path)
        else:
            return