Exemple #1
0
 def test_get_id(self):
     load_exp_id = Experiment.get_id(self.seed_tup[0],
                                     testing=True,
                                     postgresql=self.postgresql)
     load_fake_id = Experiment.get_id('Experiment Not Here',
                                      testing=True,
                                      postgresql=self.postgresql)
     self.assertTrue(len(load_exp_id) == 1)
     self.assertTrue(len(load_fake_id) == 0)
Exemple #2
0
 def from_db(cls, eartag, experiment_name, testing=False, postgresql=None):
     if testing:
         with TestingCursor(postgresql) as cursor:
             mouse = Mouse.from_db(eartag,
                                   testing=testing,
                                   postgresql=postgresql)
             experiment = Experiment.from_db(experiment_name,
                                             testing=testing,
                                             postgresql=postgresql)
             return cls.__from_db(cursor, mouse, experiment)
     else:
         with Cursor() as cursor:
             mouse = Mouse.from_db(eartag)
             experiment = Experiment.from_db(experiment_name)
             return cls.__from_db(cursor, mouse, experiment)
Exemple #3
0
 def test_add_new_experiment(self):
     test_exp = Experiment(self.seed_exp[0], self.seed_exp[1]).save_to_db(
         testing=True, postgresql=self.postgresql)
     self.assertEqual(util.prep_string_for_db(self.seed_exp[0]),
                      test_exp.experiment_name)
     self.assertEqual(self.seed_exp[1], test_exp.experiment_dir)
     self.assertFalse(test_exp.experiment_id is None)
 def setUp(self):
     self.postgresql = Postgresql()
     database.handlers.handlers.handler_seed_sessions_table(self.postgresql)
     [eartag, _, _, _, _, experiment_name, _, _] = test_mouse_table_seed.pop()
     self.mouse = Mouse.from_db(eartag, testing=True, postgresql=self.postgresql)
     self.experiment = Experiment.from_db(experiment_name, testing=True, postgresql=self.postgresql)
     possible_sessions = test_session_table_seed[eartag, utils.prep_string_for_db(experiment_name)]
     self.session_date, self.session_dir = possible_sessions.pop()
 def setUp(self):
     self.postgresql = Postgresql()
     database.handlers.handlers.handler_seed_mouse(self.postgresql)
     database.handlers.handlers.handler_seed_experiments(self.postgresql)
     self.mouse = Mouse.from_db(9990, testing=True, postgresql=self.postgresql)
     self.experiment = Experiment.from_db('test-experiment-one', testing=True, postgresql=self.postgresql)
     self.session_date = 20200503
     self.session_dir = '/exp/one/dir/9990/20200503_S2'
Exemple #6
0
 def test_from_db(self):
     load_exp = Experiment.from_db(self.seed_tup[0],
                                   testing=True,
                                   postgresql=self.postgresql)
     self.assertEqual(util.prep_string_for_db(self.seed_tup[0]),
                      load_exp.experiment_name)
     self.assertEqual(self.seed_tup[1], load_exp.experiment_dir)
     self.assertFalse(load_exp.experiment_name is None)
Exemple #7
0
 def test_delete_experiment(self):
     experiment_to_delete = Experiment.from_db(self.seed_tup[0],
                                               testing=True,
                                               postgresql=self.postgresql)
     experiment_to_delete.delete_from_db(testing=True,
                                         postgresql=self.postgresql)
     with TestingCursor(self.postgresql) as cursor:
         all_experiments = list_all_experiments(cursor)
         self.assertFalse(
             util.prep_string_for_db(self.seed_tup[0]) in all_experiments)
Exemple #8
0
 def test_update_existing_experiment(self):
     new_name = "New Experiment Name"
     load_exp = Experiment.from_db(self.seed_tup[0],
                                   testing=True,
                                   postgresql=self.postgresql)
     update_exp = load_exp
     update_exp.experiment_name = new_name
     saved_exp = update_exp.save_to_db(testing=True,
                                       postgresql=self.postgresql)
     self.assertEqual(util.prep_string_for_db(new_name),
                      saved_exp.experiment_name)
     self.assertTrue(load_exp.experiment_id == saved_exp.experiment_id)
     self.assertTrue(load_exp.experiment_dir == saved_exp.experiment_dir)
Exemple #9
0
 def test_from_db(self):
     test_details = ParticipantDetails.from_db(self.mouse_seed[0],
                                               self.mouse_seed[5],
                                               testing=True,
                                               postgresql=self.postgresql)
     self.assertTrue(
         Mouse.from_db(self.mouse_seed[0],
                       testing=True,
                       postgresql=self.postgresql) == test_details.mouse)
     self.assertTrue(
         Experiment.from_db(
             self.mouse_seed[5], testing=True, postgresql=self.postgresql)
         == test_details.experiment)
     self.assertFalse(test_details.detail_id is None)
Exemple #10
0
 def test_add_new_participant_details(self):
     test_mouse = Mouse.from_db(self.mouse_seed[0],
                                testing=True,
                                postgresql=self.postgresql)
     test_exp = Experiment.from_db(self.mouse_seed[5],
                                   testing=True,
                                   postgresql=self.postgresql)
     test_details = ParticipantDetails(
         test_mouse, test_exp, self.mouse_seed[6],
         self.mouse_seed[7]).save_to_db(testing=True,
                                        postgresql=self.postgresql)
     self.assertTrue(test_mouse == test_details.mouse)
     self.assertTrue(test_exp == test_details.experiment)
     self.assertFalse(test_details.detail_id is None)
def handler_seed_sessions_table(postgresql):
    handler_seed_mouse(postgresql)
    handler_seed_experiments(postgresql)
    with TestingCursor(postgresql) as cursor:
        for [mouse_eartag, experiment_name] in session_seed.keys():
            all_sessions = session_seed[mouse_eartag, experiment_name]
            mouse = Mouse.from_db(mouse_eartag,
                                  testing=True,
                                  postgresql=postgresql)
            experiment = Experiment.from_db(experiment_name,
                                            testing=True,
                                            postgresql=postgresql)
            for [session_date, session_dir] in all_sessions:
                database.seed_tables.seed_tables.seed_sessions_table(
                    cursor, mouse.mouse_id, experiment.experiment_id,
                    utils.convert_date_int_yyyymmdd(session_date), session_dir)
Exemple #12
0
    def list_participants(cls, experiment_name, testing=False, postgresql=None):

        def main(a_cursor, experiment_id):
            a_cursor.execute("SELECT eartag FROM all_participants_all_trials "
                             "WHERE experiment_id = %s;", (experiment_id,))
            no_dups = sorted(set(utils.list_from_cursor(cursor.fetchall())), key=int)
            return no_dups

        experiment = Experiment.from_db(experiment_name, testing, postgresql)

        if testing:
            with TestingCursor(postgresql) as cursor:
                return main(cursor, experiment.experiment_id)
        else:
            with Cursor() as cursor:
                return main(cursor, experiment.experiment_id)
def handler_seed_participant_details(postgresql):
    handler_seed_mouse(postgresql)
    handler_seed_experiments(postgresql)

    with TestingCursor(postgresql) as cursor:
        all_mice = list_all_mice(cursor)
        for eartag in all_mice:
            mouse = Mouse.from_db(eartag, testing=True, postgresql=postgresql)
            for m in mouse_seed:
                if m[0] == mouse.eartag:
                    experiment = Experiment.from_db(m[5],
                                                    testing=True,
                                                    postgresql=postgresql)
                    database.seed_tables.seed_tables.seed_participant_details(
                        cursor,
                        mouse.mouse_id,
                        experiment.experiment_id,
                        start_date=m[6],
                        end_date=m[7])
Exemple #14
0
    def list_participants(cls,
                          experiment_name,
                          testing=False,
                          postgresql=None):
        def list_participants_main(a_cursor, exp_id):
            a_cursor.execute(
                "SELECT mouse_id FROM all_participants_all_experiments WHERE experiment_id = %s;",
                (exp_id, ))
            return utils.list_from_cursor(cursor.fetchall())

        experiment_id = Experiment.get_id(experiment_name, testing, postgresql)
        if len(experiment_id) == 1:
            experiment_id = experiment_id[0]
        else:
            warnings.warn(
                "Multiple experiments in the database with the same name.")

        if testing:
            with TestingCursor(postgresql) as cursor:
                return list_participants_main(cursor, experiment_id)
        else:
            with Cursor() as cursor:
                return list_participants_main(cursor, experiment_id)
Exemple #15
0
project_base_dir = Path(__file__).parent.parent.parent
backup_csv_path = os.path.join(project_base_dir, 'data', 'database_backup_csv')

tables_to_populate = ['mouse', 'experiments', 'participant_details']

# MOUSE TABLE
all_mouses = read_table_csv_to_list(backup_csv_path, 'mouse')
for [mouse_id, eartag, birthdate, genotype, sex] in all_mouses:
    eartag = int(eartag)
    birthdate = ''.join(birthdate.split('-'))
    Mouse(eartag, int(birthdate), genotype, sex).save_to_db()

# EXPERIMENTS TABLE
all_experiments = read_table_csv_to_list(backup_csv_path, 'experiments')
for [experiment_id, experiment_dir, experiment_name] in all_experiments:
    Experiment(experiment_name, experiment_dir).save_to_db()

# PARTICIPANT DETAILS TABLE
all_participant_details = read_table_csv_to_list(backup_csv_path,
                                                 'participant_details')
for participant_detail in all_participant_details:
    detail_id = participant_detail[0]
    mouse_id = participant_detail[1]
    experiment_id = participant_detail[2]
    start_date = participant_detail[3]
    start_date = int(''.join(start_date.split('-')))
    end_date = participant_detail[4]
    end_date = int(''.join(end_date.split('-')))
    participant_dir = participant_detail[-1]
    exp_spec_details = ''.join(participant_detail[5:-1])
    paw_preference = None
Exemple #16
0
from models.experiments import Experiment
from models.folders import Folder
from models.blind_folders import BlindFolder
from models.reviewers import Reviewer
from models.trials import Trial
from models.blind_trials import BlindTrial
import shutil
import os

Database.initialize(**dbDetails, **dbUser_Krista)

experiment_name = 'skilled-reaching'
reviewer_name = 'Krista K'
num_folders_to_mask = 25

sr_exp = Experiment.from_db(experiment_name)
all_folders = Folder.list_all_folders(sr_exp.experiment_id)
all_blind_folders = BlindFolder.list_all_blind_folders(sr_exp.experiment_id)

all_not_blind_folders = list()
for folder in all_folders:
    for blind_folder in all_blind_folders:
        if folder.folder_id == blind_folder.folder_id:
            break
    if folder.folder_id == blind_folder.folder_id:
        continue
    all_not_blind_folders.append(folder)

folders_to_mask = list()
for ii in range(num_folders_to_mask):
    folders_to_mask.append(all_not_blind_folders.pop())
Exemple #17
0
 def test_duplicate_experiment(self):
     test_exp = Experiment(self.seed_exp[0], self.seed_exp[1]).save_to_db(
         testing=True, postgresql=self.postgresql)
     dup_exp = test_exp.save_to_db(testing=True, postgresql=self.postgresql)
     self.assertFalse(dup_exp.experiment_id is None)