Exemplo n.º 1
0
 def test_wildcard_extension(self):
     self.assertIsInstance(FileFormat.get_reader("t.wild"),
                           WildcardReader)
     self.assertIsInstance(FileFormat.get_reader("t.wild2"),
                           WildcardReader)
     with self.assertRaises(OSError):
         FileFormat.get_reader("t.wild2a")
Exemplo n.º 2
0
 def test_wildcard_extension(self):
     self.assertIsInstance(FileFormat.get_reader("t.wild"),
                           WildcardReader)
     self.assertIsInstance(FileFormat.get_reader("t.wild2"),
                           WildcardReader)
     with self.assertRaises(OSError):
         FileFormat.get_reader("t.wild2a")
Exemplo n.º 3
0
 def canDropUrl(self, url: QUrl) -> bool:
     if url.isLocalFile():
         try:
             FileFormat.get_reader(url.toLocalFile())
             return True
         except Exception:  # noqa # pylint:disable=broad-except
             return False
     else:
         return url.scheme().lower() in ("http", "https", "ftp")
Exemplo n.º 4
0
 def dragEnterEvent(self, event):
     """Accept drops of valid file urls"""
     urls = event.mimeData().urls()
     if urls:
         try:
             FileFormat.get_reader(urls[0].toLocalFile())
             event.acceptProposedAction()
         except IOError:
             pass
Exemplo n.º 5
0
 def dragEnterEvent(event):
     """Accept drops of valid file urls"""
     urls = event.mimeData().urls()
     if urls:
         try:
             FileFormat.get_reader(urls[0].toLocalFile())
             event.acceptProposedAction()
         except IOError:
             pass
Exemplo n.º 6
0
 def _get_reader(self) -> FileFormat:
     if self.source == self.LOCAL_FILE:
         path = self.last_path()
         self.reader_combo.setEnabled(True)
         if self.recent_paths and self.recent_paths[0].file_format:
             qname = self.recent_paths[0].file_format
             qname_index = {
                 r.qualified_name(): i
                 for i, r in enumerate(self.available_readers)
             }
             if qname in qname_index:
                 self.reader_combo.setCurrentIndex(qname_index[qname] + 1)
             else:
                 # reader may be accessible, but not in self.available_readers
                 # (perhaps its code was moved)
                 self.reader_combo.addItem(qname)
                 self.reader_combo.setCurrentIndex(
                     len(self.reader_combo) - 1)
             try:
                 reader_class = class_from_qualified_name(qname)
             except Exception as ex:
                 raise MissingReaderException(
                     f'Can not find reader "{qname}"') from ex
             reader = reader_class(path)
         else:
             self.reader_combo.setCurrentIndex(0)
             reader = FileFormat.get_reader(path)
         if self.recent_paths and self.recent_paths[0].sheet:
             reader.select_sheet(self.recent_paths[0].sheet)
         return reader
     else:
         url = self.url_combo.currentText().strip()
         return UrlReader(url)
Exemplo n.º 7
0
    def _get_reader(self):
        """

        Returns
        -------
        FileFormat
        """
        if self.source == self.LOCAL_FILE:
            path = self.last_path()
            if path is None:
                return self.NoFileSelected
            if self.recent_paths and self.recent_paths[0].file_format:
                qname = self.recent_paths[0].file_format
                reader_class = class_from_qualified_name(qname)
                reader = reader_class(path)
            else:
                reader = FileFormat.get_reader(path)
            if self.recent_paths and self.recent_paths[0].sheet:
                reader.select_sheet(self.recent_paths[0].sheet)
            return reader
        else:
            url = self.url_combo.currentText().strip()
            if url:
                return UrlReader(url)
            else:
                return self.NoFileSelected
Exemplo n.º 8
0
    def _get_reader(self):
        """

        Returns
        -------
        FileFormat
        """
        if self.source == self.LOCAL_FILE:
            path = self.last_path()
            if path is None:
                return self.NoFileSelected
            if self.recent_paths and self.recent_paths[0].file_format:
                qname = self.recent_paths[0].file_format
                reader_class = class_from_qualified_name(qname)
                reader = reader_class(path)
            else:
                reader = FileFormat.get_reader(path)
            if self.recent_paths and self.recent_paths[0].sheet:
                reader.select_sheet(self.recent_paths[0].sheet)
            return reader
        else:
            url = self.url_combo.currentText().strip()
            if url:
                return UrlReader(url)
            else:
                return self.NoFileSelected
Exemplo n.º 9
0
    def run_analysis_done(self):
        self.infoLabel.setText("Finished running analysis!")
        self.btn_run.setEnabled(True)
        self.btn_run.setText('Run again')
        self.setStatusMessage('Finished!')
        #self.progressBarFinished()
        self.send("Results", self.host_results_dir)

        # Jimmy March 29 2017 added, create a dataset for DataTable widget to show TOP-40.tsv
        tsvFile = os.path.join(self.host_results_dir, 'FDR-0.1/TOP-40.tsv')
        tsvReader = FileFormat.get_reader(tsvFile)
        data = None
        try:
            data = tsvReader.read()

            # TODO Jimmy March 29 2017, tried to define domain for DataTable, didn't work
            '''
            domain = Orange.data.Domain(["Cell", "Plate", "Gene", "logFC", "logCPM", "PValue"], data.domain)

            domain = Orange.data.Domain(data.domain.attributes, data.domain.class_vars,
                [Orange.data.DiscreteVariable("Cell"),
                Orange.data.DiscreteVariable("Plate"),
                Orange.data.DiscreteVariable("Condition1"),
                Orange.data.DiscreteVariable("Condition2"),
                Orange.data.StringVariable("Gene"),
                Orange.data.ContinuousVariable("logFC"),
                Orange.data.ContinuousVariable("logCPM"),
                Orange.data.StringVariable("PValue")])

            data = data.from_table(domain, data)'''
        except Exception as ex:
            print(ex)
        self.send("Top 40", data)
Exemplo n.º 10
0
    def _get_reader(self):
        """

        Returns
        -------
        FileFormat
        """
        if self.source == self.LOCAL_FILE:
            path = self.last_path()
            if self.recent_paths and self.recent_paths[0].file_format:
                qname = self.recent_paths[0].file_format
                reader_class = class_from_qualified_name(qname)
                reader = reader_class(path)
                print('reader_class', reader_class)
            else:
                reader = FileFormat.get_reader(path)
                # Return reader instance that can be used to read the file
            if self.recent_paths and self.recent_paths[0].sheet:
                reader.select_sheet(self.recent_paths[0].sheet)

            return reader
        elif self.source == self.URL:
            url = self.url_combo.currentText().strip()
            if url:
                return UrlReader(url)
Exemplo n.º 11
0
 def test_single_preproc(self):
     # TODO problematic interface design: should be able to use Orange.data.Table directly
     path = os.path.join(get_sample_datasets_dir(), AGILENT_TILE)
     reader = FileFormat.get_reader(path)
     for p in PREPROCESSORS_INDEPENDENT_SAMPLES:
         reader.set_preprocessor(p)
         reader.read()
 def _get_reader(self):
     """
     Returns
     -------
     FileFormat
     """
     if self.source == self.LOCAL_FILE:
         path = self.last_path()
         if self.recent_paths and self.recent_paths[0].file_format:
             qname = self.recent_paths[0].file_format
             reader_class = class_from_qualified_name(qname)
             reader = reader_class(path)
         else:
             reader = FileFormat.get_reader(path)
         if self.recent_paths and self.recent_paths[0].sheet:
             reader.select_sheet(self.recent_paths[0].sheet)
         # set preprocessor here
         if hasattr(reader, "read_tile"):
             reader.set_preprocessor(self.preprocessor)
             if self.preprocessor is not None:
                 self.info_preproc.setText(
                     self._format_preproc_str(
                         self.preprocessor).lstrip("\n"))
         else:
             # only allow readers with tile-by-tile support to run.
             reader = None
         return reader
     elif self.source == self.URL:
         url = self.url_combo.currentText().strip()
         if url:
             return UrlReader(url)
Exemplo n.º 13
0
 def test_preprocessor_list(self):
     # TODO problematic interface design: should be able to use Orange.data.Table directly
     path = os.path.join(get_sample_datasets_dir(), AGILENT_TILE)
     reader = FileFormat.get_reader(path)
     pp = PreprocessorList(PREPROCESSORS_INDEPENDENT_SAMPLES[0:7])
     reader.set_preprocessor(pp)
     t = reader.read()
     assert len(t.domain.attributes) == 3
Exemplo n.º 14
0
    def load_data(self):
        self.closeContext()

        fns = self.current_filenames()

        data_list = []
        fnok_list = []

        for fn in fns:
            reader = FileFormat.get_reader(fn)
            if self.sheet in reader.sheets:
                reader.select_sheet(self.sheet)

            errors = []
            with catch_warnings(record=True) as warnings:
                try:
                    data_list.append(reader.read())
                    fnok_list.append(fn)
                except Exception as ex:
                    errors.append("An error occurred:")
                    errors.append(str(ex))
                    #FIXME show error in the list of data
                self.warning(warnings[-1].message.args[0] if warnings else '')

        #code below is from concatenate widget
        if data_list:
            tables = data_list
            domain = reduce(domain_union, (table.domain for table in tables))
            tables = [
                Orange.data.Table.from_table(domain, table) for table in tables
            ]
            data = concat(tables)
            source_var = Orange.data.StringVariable.make("Filename")
            source_values = list(
                chain(*(repeat(fn, len(table))
                        for fn, table in zip(fnok_list, tables))))
            label_var = Orange.data.StringVariable.make("Label")
            label_values = list(
                chain(*(repeat(self.label, len(table))
                        for fn, table in zip(fnok_list, tables))))
            data = append_columns(
                data, **{
                    "metas": [(source_var, source_values),
                              (label_var, label_values)]
                })
            self.data = data
            if OLD_DOMAINEDITOR:
                self.editor_model.set_domain(data.domain)
            else:
                self.openContext(data.domain)
        else:
            self.data = None
            if OLD_DOMAINEDITOR:
                self.editor_model.reset()
            else:
                self.domain_editor.set_domain(None)

        self.send("Data", self.data)
Exemplo n.º 15
0
    def get_writer_selected(self):
        writer = FileFormat.get_reader(self.type_ext)

        ext = self.type_ext + self.compress_ext
        if ext not in writer.EXTENSIONS:
            self.Error.unsupported_extension()
            return None
        writer.EXTENSIONS = [ext]
        return writer
Exemplo n.º 16
0
    def get_writer_selected(self):
        writer = FileFormat.get_reader(self.type_ext)

        ext = self.type_ext + self.compress_ext
        if ext not in writer.EXTENSIONS:
            self.Error.unsupported_extension()
            return None
        writer.EXTENSIONS = [ext]
        return writer
Exemplo n.º 17
0
    def load_data(self):
        self.closeContext()

        fns = self.current_filenames()

        data_list = []
        fnok_list = []

        for fn in fns:
            reader = FileFormat.get_reader(fn)

            errors = []
            with catch_warnings(record=True) as warnings:
                try:
                    if self.sheet in reader.sheets:
                        reader.select_sheet(self.sheet)
                    data_list.append(reader.read())
                    fnok_list.append(fn)
                except Exception as ex:
                    errors.append("An error occurred:")
                    errors.append(str(ex))
                    #FIXME show error in the list of data
                self.warning(warnings[-1].message.args[0] if warnings else '')

        #code below is from concatenate widget
        if data_list:
            tables = data_list
            domain = reduce(domain_union, (table.domain for table in tables))
            source_var = Orange.data.StringVariable.make("Filename")
            label_var = Orange.data.StringVariable.make("Label")
            domain = Orange.data.Domain(domain.attributes, domain.class_vars,
                                        domain.metas + (source_var, label_var))
            tables = [
                Orange.data.Table.from_table(domain, table) for table in tables
            ]
            data = type(tables[0]).concatenate(tables, axis=0)
            data[:, source_var] = np.array(
                list(
                    chain(
                        *(repeat(fn, len(table))
                          for fn, table in zip(fnok_list, tables))))).reshape(
                              -1, 1)
            data[:, label_var] = np.array(
                list(
                    chain(
                        *(repeat(self.label, len(table))
                          for fn, table in zip(fnok_list, tables))))).reshape(
                              -1, 1)
            self.data = data
            self.openContext(data.domain)
        else:
            self.data = None
            self.domain_editor.set_domain(None)

        self.apply_domain_edit()  # sends data
Exemplo n.º 18
0
 def Event_OnRunFinished(self):
     self.btnRun.setEnabled(True)
     tsvFile = os.path.join(self.getDirectory('bamfiles'), 'bamcounts.csv')
     self.send('Counts', tsvFile)
     tsvReader = FileFormat.get_reader(tsvFile)
     data = None
     try:
         data = tsvReader.read()
     except Exception as ex:
         print(ex)
     self.send("DataTable", data)
 def Event_OnRunFinished(self):
     self.btnRun.setEnabled(True)
     self.send('Results', self.output_dir_host)
     tsvFile = os.path.join(self.output_dir_host, 'deseq_results.csv')
     tsvReader = FileFormat.get_reader(tsvFile)
     data = None
     try:
         data = tsvReader.read()
     except Exception as ex:
         print(ex)
     self.send("DataTable", data)
Exemplo n.º 20
0
    def _get_reader(self):
        """

        Returns
        -------
        FileFormat
        """
        if self.source == self.LOCAL_FILE:
            reader = FileFormat.get_reader(self.last_path())
            if self.recent_paths and self.recent_paths[0].sheet:
                reader.select_sheet(self.recent_paths[0].sheet)
            return reader
        elif self.source == self.URL:
            return UrlReader(self.url_combo.currentText())
Exemplo n.º 21
0
    def _update_sheet_combo(self):
        sheets = Counter()

        for fn in self.current_filenames():
            reader = FileFormat.get_reader(fn)
            sheets.update(reader.sheets)

        sheets = sorted(sheets.items(), key=lambda x: x[0])

        self.sheets = [(s, s + " (" + str(n) + ")") for s, n in sheets]

        if len(sheets) < 2:
            self.sheet_box.hide()
            self.sheet = None
        else:
            self.sheets.insert(0, (None, "(None)"))
            self.sheet_combo.clear()
            self.sheet_combo.addItems([s[1] for s in self.sheets])
            self._select_active_sheet()
            self.sheet_box.show()
Exemplo n.º 22
0
        def load_from_file():
            filename = self.last_path()
            if not filename:
                return None, ""

            if not os.path.exists(filename):
                filename = os.path.basename(filename)
                filename = FileFormat.locate(filename, "")
                self.information("Loading '{}' from the current directory."
                                 .format(filename))

            reader = FileFormat.get_reader(filename)
            if isinstance(reader, ExcelReader):
                reader.select_sheet(self.xls_sheet)
            try:
                return load(lambda x: reader.read(), filename)
            except Exception as exc:
                self.warnings.setText(str(exc))
                # Let us not remove from recent files: user may fix them
                raise
Exemplo n.º 23
0
        def load_from_file():
            filename = self.last_path()
            if not filename:
                return None, ""

            if not os.path.exists(filename):
                filename = os.path.basename(filename)
                filename = FileFormat.locate(filename, "")
                self.information(
                    "Loading '{}' from the current directory.".format(
                        filename))

            reader = FileFormat.get_reader(filename)
            if isinstance(reader, ExcelReader):
                reader.select_sheet(self.xls_sheet)
            try:
                return load(lambda x: reader.read(), filename)
            except Exception as exc:
                self.warnings.setText(str(exc))
                # Let us not remove from recent files: user may fix them
                raise
Exemplo n.º 24
0
    def load_data(self):
        self.closeContext()

        fns = self.current_filenames()

        data_list = []
        fnok_list = []

        empty_domain = Orange.data.Domain(attributes=[])
        for fn in fns:
            reader = FileFormat.get_reader(fn)
            errors = []
            with catch_warnings(record=True) as warnings:
                try:
                    if self.sheet in reader.sheets:
                        reader.select_sheet(self.sheet)
                    if isinstance(reader, SpectralFileFormat):
                        xs, vals, additional = reader.read_spectra()
                        if additional is None:
                            additional = Orange.data.Table.from_domain(
                                empty_domain, n_rows=len(vals))
                        data_list.append((xs, vals, additional))
                    else:
                        data_list.append(reader.read())
                    fnok_list.append(fn)
                except Exception as ex:
                    errors.append("An error occurred:")
                    errors.append(str(ex))
                    #FIXME show error in the list of data
                self.warning(warnings[-1].message.args[0] if warnings else '')

        if data_list:
            data = concatenate_data(data_list, fnok_list, self.label)
            self.data = data
            self.openContext(data.domain)
        else:
            self.data = None
            self.domain_editor.set_domain(None)

        self.apply_domain_edit()  # sends data
Exemplo n.º 25
0
def _get_reader(rp):
    if rp.file_format:
        reader_class = class_from_qualified_name(rp.file_format)
        return reader_class(rp.abspath)
    else:
        return FileFormat.get_reader(rp.abspath)
Exemplo n.º 26
0
 def test_find_reader(self):
     reader = FileFormat.get_reader("some.same_extension")
     self.assertIsInstance(reader, SameExtensionPreferred)
Exemplo n.º 27
0
def _get_reader(rp):
    if rp.file_format:
        reader_class = class_from_qualified_name(rp.file_format)
        return reader_class(rp.abspath)
    else:
        return FileFormat.get_reader(rp.abspath)
Exemplo n.º 28
0
 def test_usual_extensions(self):
     self.assertIsInstance(FileFormat.get_reader("t.tab"), TabReader)
     self.assertIsInstance(FileFormat.get_reader("t.csv"), CSVReader)
     self.assertIsInstance(FileFormat.get_reader("t.pkl"), PickleReader)
     with self.assertRaises(OSError):
         FileFormat.get_reader("test.undefined_extension")
Exemplo n.º 29
0
 def is_multisheet_excel(fn):
     return len(FileFormat.get_reader(fn).sheets) > 0
Exemplo n.º 30
0
 def is_multisheet_excel(fn):
     return len(FileFormat.get_reader(fn).sheets) > 0
Exemplo n.º 31
0
 def test_tile_reader(self):
     # Can be removed once the get_reader interface is no logner required.
     path = os.path.join(get_sample_datasets_dir(), AGILENT_TILE)
     reader = FileFormat.get_reader(path)
     reader.read()
Exemplo n.º 32
0
 def test_usual_extensions(self):
     self.assertIsInstance(FileFormat.get_reader("t.tab"), TabReader)
     self.assertIsInstance(FileFormat.get_reader("t.csv"), CSVReader)
     self.assertIsInstance(FileFormat.get_reader("t.pkl"), PickleReader)
     with self.assertRaises(OSError):
         FileFormat.get_reader("test.undefined_extension")
Exemplo n.º 33
0
 def test_find_reader(self):
     reader = FileFormat.get_reader("some.same_extension")
     self.assertIsInstance(reader, SameExtensionPreferred)