def test_get_iblrig_data_folder(self): df = ph.get_iblrig_data_folder(subjects=False) self.assertTrue(isinstance(df, str)) self.assertTrue("iblrig_data" in df) self.assertTrue("Subjects" not in df) dfs = ph.get_iblrig_data_folder(subjects=True) self.assertTrue(isinstance(dfs, str)) self.assertTrue("iblrig_data" in dfs) self.assertTrue("Subjects" in dfs)
def check_delete_empty_folders(path, rglob_pattern='*', dry=True): data_path = Path(ph.get_iblrig_data_folder()) all_dirs = {p for p in data_path.rglob(rglob_pattern) if p.is_dir()} empty_dirs = {p for p in all_dirs if not list(p.glob('*'))} for d in empty_dirs: if dry: print('Found empty folder:', d) elif not dry: print('Deleting empty folder: ', d) d.rmdir() else: if dry: print(f'Empty folders: {len(empty_dirs)}') elif not dry: print(f'Deleted folders: {len(empty_dirs)}')
def update_param_key_values(param_key): if param_key == "NAME": return get_pybpod_board_name() elif param_key == "IBLRIG_VERSION": return get_iblrig_version() elif param_key == "COM_BPOD": return get_pybpod_board_comport() elif param_key == "SCREEN_FREQ_TARGET": return 60 elif param_key == "DATA_FOLDER_LOCAL": return ph.get_iblrig_data_folder(subjects=False) elif param_key == "DATA_FOLDER_REMOTE": return ph.get_iblserver_data_folder(subjects=False) else: return None
return names def get_mice(session_list): names = {s.parts[-3] for s in session_list} return names def get_dates(session_list): names = {s.parts[-2] for s in session_list} return names # Load def load_session_settings(path_list): path_list = [Path(path) for path in path_list] settings = [] for s in path_list: settings.append(raw.load_settings(s)) return settings if __name__ == "__main__": data_path = Path(ph.get_iblrig_data_folder()) check_delete_empty_files(data_path, 'taskSettings') check_delete_empty_folders(data_path) sessions_with_settings = find_sessions(data_path, rglob_pattern='*taskSettings*') sessions_with_data = find_sessions(data_path, rglob_pattern='*taskData*') settings = load_session_settings(sessions_with_settings)
import iblrig.bonsai as bonsai import iblrig.frame2TTL import iblrig.params as params import iblrig.path_helper as ph import user_settings sys.stdout.flush() log = logging.getLogger('iblrig') log.setLevel(logging.INFO) PARAMS = params.load_params() subj = '_iblrig_test_mouse' datetime = parser.parse(user_settings.PYBPOD_SESSION).isoformat().replace( ':', '_') folder = Path(ph.get_iblrig_data_folder()) / subj / datetime folder.mkdir() bpod_data_file = folder / 'bpod_ts_data.jsonable' bpod_data_lengths_file = folder / 'bpod_ts_data_lengths.jsonable' bonsai_data_file = folder / 'bonsai_ts_data.jsonable' bonsai_data_lengths_file = folder / 'bonsai_ts_data_lengths.jsonable' def softcode_handler(data): if data: # Launch the workflow bonsai.start_frame2ttl_test(bonsai_data_file, bonsai_data_lengths_file) return # Set the thresholds for Frame2TTL
#!/usr/bin/env python # -*- coding:utf-8 -*- # @Author: Niccolò Bonacchi # @Date: Monday, December 2nd 2019, 4:52:40 pm from pathlib import Path import ibllib.io.raw_data_loaders as raw import ibllib.pipes.misc as misc import iblrig.path_helper as ph import logging log = logging.getLogger("iblrig") IBLRIG_DATA_PATH = Path(ph.get_iblrig_data_folder()) def main(): passive_sessions = IBLRIG_DATA_PATH.rglob("passive_data_for_ephys.flag") # For each passive session found look into passiveSettings to find ephysSession name # search for the ephys session session in the rglobbed ephys sessions # If you find it just rename and move the folder raw_behavior_data -> raw_passive_data, # If no find search specifically for that session from the metadata and try to copy the folder # If folder exists throw an error for ps in passive_sessions: sett = raw.load_settings(str(ps.parent)) esess = sett["CORRESPONDING_EPHYS_SESSION"] if not esess or esess is None: log.warning( "Corresponding ephys session NOT FOUND in settings - data not moved" )