Source code for ibllib.pipes.photometry_tasks

"""Extraction tasks for fibrephotometry"""

import logging
from collections import OrderedDict

from ibllib.pipes import tasks, base_tasks
from ibllib.pipes.training_preprocessing import (
    TrainingRegisterRaw, TrainingAudio, TrainingTrials, TrainingDLC, TrainingStatus, TrainingVideoCompress)
from ibllib.io.extractors.fibrephotometry import FibrePhotometry

_logger = logging.getLogger('ibllib')


[docs]class TaskFibrePhotometryRegisterRaw(base_tasks.RegisterRawDataTask): priority = 100 job_size = 'small' @property def signature(self): signature = { 'input_files': [], 'output_files': [('_mcc_DAQdata.raw.tdms', self.collection, True), ('_neurophotometrics_fpData.raw.pqt', self.collection, True)] } return signature
[docs]class TaskFibrePhotometryPreprocess(base_tasks.DynamicTask): signature = { 'input_files': [('*fpData.raw*', 'raw_photometry_data', True), ], 'output_files': [('photometry.signal.pqt]', 'alf', True), ] } priority = 90 level = 1 def __init__(self, session_path, regions=None, **kwargs): super().__init__(session_path, **kwargs) self.regions = regions def _run(self, **kwargs): _, out_files = FibrePhotometry(self.session_path, collection=self.collection).extract( regions=self.regions, save=True) return out_files
# pipeline
[docs]class FibrePhotometryExtractionPipeline(tasks.Pipeline): """ This is a legacy pipeline not using the acquisition description file to acquire previous sessions at Princeton """ label = __name__ def __init__(self, session_path=None, **kwargs): # FIXME This should be agnostic to task protocol, for now let's assume it's only training super().__init__(session_path, **kwargs) tasks = OrderedDict() self.session_path = session_path # level 0 tasks['TrainingRegisterRaw'] = TrainingRegisterRaw(self.session_path) tasks['TrainingTrials'] = TrainingTrials(self.session_path) tasks['TrainingVideoCompress'] = TrainingVideoCompress(self.session_path) tasks['TrainingAudio'] = TrainingAudio(self.session_path) # level 1 tasks['BiasedFibrePhotometry'] = TaskFibrePhotometryPreprocess(self.session_path, parents=[tasks['TrainingTrials']]) tasks['TrainingStatus'] = TrainingStatus(self.session_path, parents=[tasks['TrainingTrials']]) tasks['TrainingDLC'] = TrainingDLC( self.session_path, parents=[tasks['TrainingVideoCompress']]) self.tasks = tasks