Beispiel #1
0
def make_title(dataset):
    '''Make a descriptive title for the dataset.'''
    experiment = experiment_container.load_experiment(dataset.exp_id)
    title = '{} on {} - {}.{} ({})'
    title = title.format(experiment.name, experiment.sample_name,
                         experiment.exp_id, dataset.counter, dataset.run_id)
    return title
Beispiel #2
0
def test_last_data_set_from_experiment(dataset):
    experiment = load_experiment(dataset.exp_id)
    ds = experiment.last_data_set()

    assert dataset.run_id == ds.run_id
    assert dataset.name == ds.name
    assert dataset.exp_id == ds.exp_id
    assert dataset.exp_name == ds.exp_name
    assert dataset.sample_name == ds.sample_name
    assert dataset.path_to_db == ds.path_to_db

    assert experiment.path_to_db == ds.path_to_db
Beispiel #3
0
def get_export_path(run_id, exp_id):
    '''Get the full path to save the exported data at.'''
    extension = 'txt'
    db_path = Config()['core']['db_location']
    experiment = load_experiment(exp_id)
    db_folder = os.path.dirname(db_path)
    sample_folder_name = '{}_{}'.format(experiment.sample_name,
                                        experiment.name)
    sample_folder = os.path.join(db_folder, sample_folder_name)
    os.makedirs(sample_folder, exist_ok=True)
    filename = '{}.{}'.format(run_id, extension)
    plot_path = os.path.join(sample_folder, filename)
    return plot_path
Beispiel #4
0
def test_active_experiment(empty_temp_db):

    conn = conn_from_dbpath_or_conn(conn=None, path_to_db=empty_temp_db)
    with pytest.raises(ValueError):
        get_default_experiment_id(conn)

    exp_1 = load_or_create_experiment("test_exp", sample_name="no_sample")
    assert get_default_experiment_id(conn) == exp_1.exp_id

    exp_2 = new_experiment("test_exp_2", sample_name="no_sample")
    assert get_default_experiment_id(conn) == exp_2.exp_id

    exp_3 = load_experiment(1)
    assert get_default_experiment_id(conn) == exp_1.exp_id
    assert get_default_experiment_id(conn) == exp_3.exp_id

    exp_4 = new_experiment("test_exp_3", sample_name="no_sample")

    exp_5 = load_experiment_by_name("test_exp_2", sample="no_sample")
    assert get_default_experiment_id(conn) == exp_2.exp_id
    assert get_default_experiment_id(conn) == exp_5.exp_id

    exp_6 = load_last_experiment()
    assert get_default_experiment_id(conn) == exp_4.exp_id
    assert get_default_experiment_id(conn) == exp_6.exp_id

    last_exp = new_experiment("last_exp", sample_name="no_sample")
    load_experiment(3)

    reset_default_experiment_id(conn)
    assert get_default_experiment_id(conn) is last_exp.exp_id

    load_experiment(exp_1.exp_id)
    assert get_default_experiment_id(conn) == exp_1.exp_id

    reset_default_experiment_id()
    assert get_default_experiment_id(conn) is last_exp.exp_id
Beispiel #5
0
def test_load_experiment_from_bad_id(bad_id):
    with pytest.raises(ValueError, match="Experiment ID must be an integer"):
        _ = load_experiment(bad_id)
Beispiel #6
0
def test_load_experiment_from_non_existing_id(non_existing_id):
    with pytest.raises(ValueError, match="No such experiment in the database"):
        _ = load_experiment(non_existing_id)
Beispiel #7
0
    def __init__(
        self,
        experiment_id: Optional[int] = None,
        db_folder: Optional[str] = None,
        db_name: Optional[str] = None,
        start_over: bool = False,
        figure_fontsize: int = 8,
    ) -> None:
        """"""
        if db_folder is None:
            db_folder = nt.config["db_folder"]

        LABELS = list(dict(nt.config["core"]["labels"]).keys())

        if db_name is None:
            logger.warning("Labelling default main database.")
            db_name = nt.config["main_db"]
        nt.set_database(db_name)
        self.db_name = db_name

        self.db_folder = db_folder

        # print(qc.config['core']['db_location'])
        matplotlib.rc("font", size=figure_fontsize)
        super(LabellingTool, self).__init__()

        self.current_label = dict.fromkeys(LABELS, 0)
        self.experiment_id = experiment_id

        if self.experiment_id is None:
            logger.error("Please select an experiment. Labelling entire " +
                         " database is not supported yet.")
            raise NotImplementedError
            # all_experiments = experiments()
            # for e in all_experiments:
            # self.experiment = e
            # (self._iterator_list,
            #  self.labelled_ids,
            #  self.n_total) = self.get_data_ids(start_over)
        else:
            try:
                self.experiment = load_experiment(self.experiment_id)

                (
                    self._iterator_list,
                    self.labelled_ids,
                    self.n_total,
                ) = self.get_data_ids(start_over)

                self._id_iterator = iter(self._iterator_list)
                try:
                    self.current_id = self._id_iterator.__next__()
                except StopIteration:
                    logger.warning("All data of this experiment is already " +
                                   "labelled")
                    raise

            except ValueError:
                msg = "Unable to load experiment."
                # ee = experiments()
                # for e in ee:
                #     msg += e.name + '\n'
                qtw.QMessageBox.warning(self,
                                        "Error instantiating LabellingTool.",
                                        msg, qtw.QMessageBox.Ok)
            except IndexError as I:
                msg = "Did not find any unlabelled data in experiment "
                msg += self.experiment.name + "."
                qtw.QMessageBox.warning(self,
                                        "Error instantiating LabellingTool.",
                                        msg, qtw.QMessageBox.Ok)

        self._main_widget = qtw.QWidget(self)
        self.setCentralWidget(self._main_widget)

        self.initUI()
        self.show()