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
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
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
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
def test_load_experiment_from_bad_id(bad_id): with pytest.raises(ValueError, match="Experiment ID must be an integer"): _ = load_experiment(bad_id)
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)
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()