def from_path(session_path, force=False, save=True): """ Extract a session from full ALF path (ex: '/scratch/witten/ibl_witten_01/2018-12-18/001') :param force: (False) overwrite existing files :param save: (True) boolean or list of ALF file names to extract :return: None """ logger_.info('Extracting ' + str(session_path)) extractor_type = extractors_exist(session_path) if is_extracted(session_path) and not force: logger_.info(f"Session {session_path} already extracted.") return if extractor_type == 'training': settings, data = raw.load_bpod(session_path) logger_.info('training session on ' + settings['PYBPOD_BOARD']) training_trials.extract_all(session_path, data=data, save=save) training_wheel.extract_all(session_path, bp_data=data, save=save) logger_.info('session extracted \n') # timing info in log if extractor_type == 'biased': settings, data = raw.load_bpod(session_path) logger_.info('biased session on ' + settings['PYBPOD_BOARD']) biased_trials.extract_all(session_path, data=data, save=save) biased_wheel.extract_all(session_path, bp_data=data, save=save) logger_.info('session extracted \n') # timing info in log if extractor_type == 'ephys': data = raw.load_data(session_path) ephys_trials.extract_all(session_path, data=data, save=save) ephys_fpga.extract_all(session_path, save=save)
def from_path(session_path, force=False, save=True): """ Extract a session from full ALF path (ex: '/scratch/witten/ibl_witten_01/2018-12-18/001') :param force: (False) overwrite existing files :param save: (True) boolean or list of ALF file names to extract :return: None """ extractor_type = get_session_extractor_type(session_path) logger_.info(f"Extracting {session_path} as {extractor_type}") if is_extracted(session_path) and not force: logger_.info(f"Session {session_path} already extracted.") return if extractor_type == 'training': settings, data = rawio.load_bpod(session_path) logger_.info('training session on ' + settings['PYBPOD_BOARD']) training_trials.extract_all(session_path, data=data, save=save) training_wheel.extract_all(session_path, bp_data=data, save=save) logger_.info('session extracted \n') # timing info in log if extractor_type == 'biased': settings, data = rawio.load_bpod(session_path) logger_.info('biased session on ' + settings['PYBPOD_BOARD']) biased_trials.extract_all(session_path, data=data, save=save) biased_wheel.extract_all(session_path, bp_data=data, save=save) logger_.info('session extracted \n') # timing info in log if extractor_type == 'ephys': data = rawio.load_data(session_path) logger_.info('extract BPOD for ephys session') ephys_trials.extract_all(session_path, data=data, save=save) logger_.info('extract FPGA information for ephys session') tmax = data[-1]['behavior_data']['States timestamps']['exit_state'][0][-1] + 60 ephys_fpga.extract_all(session_path, save=save, tmax=tmax) if extractor_type == 'sync_ephys': ephys_fpga.extract_sync(session_path, save=save)
def extract_all(session_path, save=True, bpod_trials=None, settings=None): """ Extracts a training session from its path. NB: Wheel must be extracted first in order to extract trials.firstMovement_times. :param session_path: the path to the session to be extracted :param save: if true a subset of the extracted data are saved as ALF :param bpod_trials: list of Bpod trial data :param settings: the Bpod session settings :return: trials: Bunch/dict of trials :return: wheel: Bunch/dict of wheel positions :return: out_Files: list of output files """ extractor_type = ibllib.io.extractors.base.get_session_extractor_type( session_path) _logger.info(f"Extracting {session_path} as {extractor_type}") bpod_trials = bpod_trials or rawio.load_data(session_path) settings = settings or rawio.load_settings(session_path) if extractor_type == 'training': _logger.info('training session on ' + settings['PYBPOD_BOARD']) wheel, files_wheel = training_wheel.extract_all( session_path, bpod_trials=bpod_trials, settings=settings, save=save) trials, files_trials = training_trials.extract_all( session_path, bpod_trials=bpod_trials, settings=settings, save=save) elif extractor_type == 'biased' or extractor_type == 'ephys': _logger.info('biased session on ' + settings['PYBPOD_BOARD']) wheel, files_wheel = training_wheel.extract_all( session_path, bpod_trials=bpod_trials, settings=settings, save=save) trials, files_trials = biased_trials.extract_all( session_path, bpod_trials=bpod_trials, settings=settings, save=save) elif extractor_type == 'habituation': from ibllib.misc import version _logger.info('habituation session on ' + settings['PYBPOD_BOARD']) if version.le(settings['IBLRIG_VERSION_TAG'], '5.0.0'): _logger.warning("No extraction of legacy habituation sessions") return None, None, None trials, files_trials = habituation_trials.extract_all( session_path, bpod_trials=bpod_trials, settings=settings, save=save) wheel = None files_wheel = [] else: raise ValueError(f"No extractor for task {extractor_type}") _logger.info('session extracted \n') # timing info in log return trials, wheel, (files_trials + files_wheel) if save else None
def extract_training(session_path, save=True): """ Extracts a training session from its path. NB: Wheel must be extracted first in order to extract trials.firstMovement_times. :param session_path: :param save: :return: trials: Bunch/dict of trials :return: wheel: Bunch/dict of wheel positions :return: out_Files: list of output files """ extractor_type = rawio.get_session_extractor_type(session_path) _logger.info(f"Extracting {session_path} as {extractor_type}") settings, bpod_trials = rawio.load_bpod(session_path) if extractor_type == 'training': _logger.info('training session on ' + settings['PYBPOD_BOARD']) wheel, files_wheel = training_wheel.extract_all( session_path, bpod_trials=bpod_trials, settings=settings, save=save) trials, files_trials = training_trials.extract_all( session_path, bpod_trials=bpod_trials, settings=settings, save=save) elif extractor_type == 'biased': _logger.info('biased session on ' + settings['PYBPOD_BOARD']) wheel, files_wheel = training_wheel.extract_all( session_path, bpod_trials=bpod_trials, settings=settings, save=save) trials, files_trials = biased_trials.extract_all( session_path, bpod_trials=bpod_trials, settings=settings, save=save) else: raise ValueError(f"No extractor for task {extractor_type}") _logger.info('session extracted \n') # timing info in log return trials, wheel, files_trials + files_wheel