Source code for ibllib.tests.integration.tasks.test_choice_world_passive
import logging
import unittest.mock
import pandas as pd
import numpy as np
from one.api import ONE
from ibllib.pipes.behavior_tasks import PassiveRegisterRaw, PassiveTaskNidq
from ibllib.tests import base
_logger = logging.getLogger('ibllib')
[docs]
class TestPassiveRegisterRaw(base.IntegrationTest):
required_files = ['tasks/choice_world_ephys/steinmetzlab/Subjects/NR_0020/2022-05-12/001']
[docs]
def setUp(self) -> None:
self.session_path = self.data_path.joinpath(self.required_files[0])
self.one = ONE(**base.TEST_DB, mode='local')
[docs]
def test_register(self):
task = PassiveRegisterRaw(self.session_path, one=self.one, collection='raw_passive_data')
status = task.run()
self.assertEqual(0, status)
task.assert_expected_outputs()
[docs]
class TestPassiveTrials(base.IntegrationTest):
required_files = ['ephys/passive_extraction/SWC_054/2020-10-10/001']
_writable_scope = 'test'
[docs]
def setUp(self) -> None:
super().setUp()
self.session_path = self.data_path.joinpath(self.required_files[0])
self.alf_path = self.session_path.joinpath('alf')
self.one = ONE(**base.TEST_DB, mode='local')
[docs]
def test_passive_extract(self):
task = PassiveTaskNidq(self.session_path, collection='raw_passive_data', sync_collection='raw_ephys_data',
sync_namespace='spikeglx', one=self.one)
status = task.run()
self.assertEqual(0, status)
task.assert_expected_outputs()
self.assertEqual(4, len(task.outputs))
passive_intervals = pd.read_csv(next(o for o in task.outputs
if '_ibl_passivePeriods.intervalsTable.csv' in o.name))
self.assertFalse(np.all(np.isnan(passive_intervals.taskReplay.values)))
[docs]
@unittest.mock.patch('ibllib.io.raw_data_loaders.load_settings')
def test_passive_extract_no_task_replay(self, mock_load_settings):
mock_load_settings.return_value = {'SKIP_EVENT_REPLAY': True,
'IBLRIG_VERSION': '6.4.2',
'PREGENERATED_SESSION_NUM': 3
}
task = PassiveTaskNidq(self.session_path, collection='raw_passive_data', sync_collection='raw_ephys_data',
sync_namespace='spikeglx', one=self.one)
status = task.run()
self.assertEqual(-1, status)
self.assertEqual(2, len(task.outputs))
passive_intervals = pd.read_csv(next(o for o in task.outputs
if '_ibl_passivePeriods.intervalsTable.csv' in o.name))
self.assertTrue(np.all(np.isnan(passive_intervals.taskReplay.values)))