示例#1
0
    def test_manager_fails_creating_FlElectrodes_due_to_None_ElectrodeGroup(
            self):
        electrode_groups_metadata = []
        probes_metadata = []

        fl_electrodes_manager = FlElectrodeManager(probes_metadata,
                                                   electrode_groups_metadata)
        fl_electrodes_manager.get_fl_electrodes(electrode_groups=None)
示例#2
0
    def test_manager_fails_creating_FlElectrodes_due_to_None_FlElectrodeGroup_attr(
            self):
        electrode_groups_metadata = []

        probes_metadata = []

        mock_eg_1 = Mock(spec=ElectrodeGroup)
        mock_eg_2 = Mock(spec=ElectrodeGroup)
        mock_eg_1.name = None
        mock_eg_2.name = 'ElectrodeGroup2'

        fl_electrodes_manager = FlElectrodeManager(probes_metadata,
                                                   electrode_groups_metadata)
        fl_electrodes_manager.get_fl_electrodes(
            electrode_groups=[mock_eg_1, mock_eg_2],
            electrodes_valid_map=[True, False, True, False],
            electrode_groups_valid_map={True, True})
示例#3
0
class ElectrodesOriginator:

    def __init__(self, probes, metadata):
        self.fl_electrode_manager = FlElectrodeManager(probes, metadata['electrode groups'])
        self.electrode_creator = ElectrodesCreator()

    def make(self, nwb_content, electrode_groups, electrodes_valid_map, electrode_groups_valid_map):
        logger.info('Electrodes: Building')
        fl_electrodes = self.fl_electrode_manager.get_fl_electrodes(
            electrode_groups=electrode_groups,
            electrodes_valid_map=electrodes_valid_map,
            electrode_groups_valid_map=electrode_groups_valid_map
        )
        logger.info('Electrodes: Creating&Injecting into NWB')
        [self.electrode_creator.create(nwb_content, fl_electrode) for fl_electrode in fl_electrodes]
示例#4
0
    def test_electrode_failed_creating_and_injecting_inside_nwb_due_to_None_NWB(
            self):
        electrode_groups_metadata = [{
            'id': 0,
            'location': 'mPFC',
            'device_type': 'tetrode_12.5',
            'description': 'Probe 1'
        }, {
            'id': 1,
            'location': 'mPFC',
            'device_type': '128c-4s8mm6cm-20um-40um-sl',
            'description': 'Probe 2'
        }]

        probes_metadata = [{
            'probe_type':
            'tetrode_12.5',
            'contact_size':
            20.0,
            'num_shanks':
            1,
            'shanks': [{
                'shank_id':
                0,
                'electrodes': [
                    {
                        'id': 0,
                        'rel_x': 0.0,
                        'rel_y': 0.0,
                        'rel_z': 0.0
                    },
                    {
                        'id': 1,
                        'rel_x': 0.0,
                        'rel_y': 0.0,
                        'rel_z': 0.0
                    },
                ]
            }]
        }, {
            'probe_type':
            '128c-4s8mm6cm-20um-40um-sl',
            'contact_size':
            20.0,
            'num_shanks':
            4,
            'shanks': [
                {
                    'shank_id':
                    0,
                    'electrodes': [{
                        'id': 0,
                        'rel_x': 0.0,
                        'rel_y': 0.0,
                        'rel_z': 0.0
                    }, {
                        'id': 1,
                        'rel_x': 40.0,
                        'rel_y': 0.0,
                        'rel_z': 0.0
                    }]
                },
                {
                    'shank_id':
                    1,
                    'electrodes': [{
                        'id': 32,
                        'rel_x': 0.0,
                        'rel_y': 300.0,
                        'rel_z': 0.0
                    }, {
                        'id': 33,
                        'rel_x': 40.0,
                        'rel_y': 300.0,
                        'rel_z': 0.0
                    }]
                },
            ]
        }]
        mock_electrode_groups_valid_map = {0, 1}
        mock_eg_1 = Mock(spec=ElectrodeGroup)
        mock_eg_2 = Mock(spec=ElectrodeGroup)
        mock_eg_1.name = '0'
        mock_eg_2.name = '1'

        electrode_creator = ElectrodesCreator()

        fl_electrodes_manager = FlElectrodeManager(probes_metadata,
                                                   electrode_groups_metadata)

        fl_electrodes = fl_electrodes_manager.get_fl_electrodes(
            electrode_groups=[mock_eg_1, mock_eg_2],
            electrodes_valid_map=[True, True, False, False, False, True],
            electrode_groups_valid_map=mock_electrode_groups_valid_map)

        [
            electrode_creator.create(None, fl_electrode)
            for fl_electrode in fl_electrodes
        ]
示例#5
0
    def test_electrode_create_and_inject_inside_nwb_successfully(self):
        electrode_groups_metadata = [{
            'id': 0,
            'location': 'mPFC',
            'device_type': 'tetrode_12.5',
            'description': 'Probe 1'
        }, {
            'id': 1,
            'location': 'mPFC',
            'device_type': '128c-4s8mm6cm-20um-40um-sl',
            'description': 'Probe 2'
        }]

        probes_metadata = [{
            'probe_type':
            'tetrode_12.5',
            'contact_size':
            20.0,
            'num_shanks':
            1,
            'shanks': [{
                'shank_id':
                0,
                'electrodes': [{
                    'id': 0,
                    'rel_x': 0.0,
                    'rel_y': 0.0,
                    'rel_z': 0.0
                }, {
                    'id': 1,
                    'rel_x': 0.0,
                    'rel_y': 0.0,
                    'rel_z': 0.0
                }, {
                    'id': 2,
                    'rel_x': 0.0,
                    'rel_y': 0.0,
                    'rel_z': 0.0
                }, {
                    'id': 3,
                    'rel_x': 0.0,
                    'rel_y': 0.0,
                    'rel_z': 0.0
                }]
            }]
        }, {
            'probe_type':
            '128c-4s8mm6cm-20um-40um-sl',
            'contact_size':
            20.0,
            'num_shanks':
            4,
            'shanks': [{
                'shank_id':
                0,
                'electrodes': [{
                    'id': 0,
                    'rel_x': 0.0,
                    'rel_y': 0.0,
                    'rel_z': 0.0
                }, {
                    'id': 1,
                    'rel_x': 40.0,
                    'rel_y': 0.0,
                    'rel_z': 0.0
                }]
            }, {
                'shank_id':
                1,
                'electrodes': [{
                    'id': 32,
                    'rel_x': 0.0,
                    'rel_y': 300.0,
                    'rel_z': 0.0
                }, {
                    'id': 33,
                    'rel_x': 40.0,
                    'rel_y': 300.0,
                    'rel_z': 0.0
                }]
            }, {
                'shank_id':
                2,
                'electrodes': [
                    {
                        'id': 64,
                        'rel_x': 0.0,
                        'rel_y': 600.0,
                        'rel_z': 0.0
                    },
                    {
                        'id': 65,
                        'rel_x': 40.0,
                        'rel_y': 600.0,
                        'rel_z': 0.0
                    },
                ]
            }, {
                'shank_id':
                3,
                'electrodes': [{
                    'id': 96,
                    'rel_x': 0.0,
                    'rel_y': 900.0,
                    'rel_z': 0.0
                }, {
                    'id': 97,
                    'rel_x': 40.0,
                    'rel_y': 900.0,
                    'rel_z': 0.0
                }]
            }]
        }]

        mock_electrodes_valid_map = [
            False, False, False, False, True, True, False, False, True, True,
            True, True
        ]
        mock_electrode_groups_valid_map = {1}

        mock_eg_1 = Mock(spec=ElectrodeGroup)
        mock_eg_2 = Mock(spec=ElectrodeGroup)
        mock_eg_1.name = '0'
        mock_eg_2.name = '1'

        nwb_file = NWBFile(session_description='demonstrate external files',
                           identifier='NWBE1',
                           session_start_time=datetime(2017,
                                                       4,
                                                       3,
                                                       11,
                                                       tzinfo=tzlocal()),
                           file_create_date=datetime(2017,
                                                     4,
                                                     15,
                                                     12,
                                                     tzinfo=tzlocal()))

        electrode_creator = ElectrodesCreator()
        fl_electrodes_manager = FlElectrodeManager(probes_metadata,
                                                   electrode_groups_metadata)
        fl_electrodes = fl_electrodes_manager.get_fl_electrodes(
            electrode_groups=[mock_eg_2],
            electrodes_valid_map=mock_electrodes_valid_map,
            electrode_groups_valid_map=mock_electrode_groups_valid_map)
        [
            electrode_creator.create(nwb_file, fl_electrode)
            for fl_electrode in fl_electrodes
        ]

        self.assertEqual(6, len(fl_electrodes))
        self.assertIsInstance(nwb_file.electrodes, DynamicTable)

        # id
        self.assertEqual(nwb_file.electrodes[0, 0], 4)
        self.assertEqual(nwb_file.electrodes[1, 0], 5)

        # x
        self.assertEqual(nwb_file.electrodes[0, 1], 0.0)
        self.assertEqual(nwb_file.electrodes[1, 1], 0.0)

        # y
        self.assertEqual(nwb_file.electrodes[0, 2], 0.0)
        self.assertEqual(nwb_file.electrodes[1, 2], 0.0)

        # z
        self.assertEqual(nwb_file.electrodes[0, 3], 0.0)
        self.assertEqual(nwb_file.electrodes[1, 3], 0.0)

        # imp
        self.assertEqual(nwb_file.electrodes[0, 4], 0.0)
        self.assertEqual(nwb_file.electrodes[1, 4], 0.0)

        # location
        self.assertEqual(nwb_file.electrodes[0, 5], 'None')
        self.assertEqual(nwb_file.electrodes[1, 5], 'None')

        # filtering
        self.assertEqual(nwb_file.electrodes[0, 6], 'None')
        self.assertEqual(nwb_file.electrodes[1, 6], 'None')

        # group
        self.assertEqual(nwb_file.electrodes[0, 7], mock_eg_2)
        self.assertEqual(nwb_file.electrodes[1, 7], mock_eg_2)

        # electrode_group name
        self.assertEqual(nwb_file.electrodes[0, 8], '1')
        self.assertEqual(nwb_file.electrodes[1, 8], '1')
示例#6
0
 def __init__(self, probes, metadata):
     self.fl_electrode_manager = FlElectrodeManager(
         probes, metadata['electrode_groups'])
     self.electrode_creator = ElectrodesCreator()
示例#7
0
    def test_manager_fails_creating_FlElectrodes_due_to_None_param(self):
        probes_metadata = []

        FlElectrodeManager(probes_metadata, None)
示例#8
0
    def test_manager_builds_FlElectrodes_successfully(self):
        electrode_groups_metadata = [{
            'id': 0,
            'location': 'mPFC',
            'device_type': 'tetrode_12.5',
            'description': 'Probe 1'
        }, {
            'id': 1,
            'location': 'mPFC',
            'device_type': '128c-4s8mm6cm-20um-40um-sl',
            'description': 'Probe 2'
        }]

        probes_metadata = [{
            'probe_type':
            'tetrode_12.5',
            'contact_size':
            20.0,
            'num_shanks':
            1,
            'shanks': [{
                'shank_id':
                0,
                'electrodes': [{
                    'id': 0,
                    'rel_x': 0.0,
                    'rel_y': 0.0,
                    'rel_z': 0.0
                }, {
                    'id': 1,
                    'rel_x': 0.0,
                    'rel_y': 0.0,
                    'rel_z': 0.0
                }, {
                    'id': 2,
                    'rel_x': 0.0,
                    'rel_y': 0.0,
                    'rel_z': 0.0
                }, {
                    'id': 3,
                    'rel_x': 0.0,
                    'rel_y': 0.0,
                    'rel_z': 0.0
                }]
            }]
        }, {
            'probe_type':
            '128c-4s8mm6cm-20um-40um-sl',
            'contact_size':
            20.0,
            'num_shanks':
            4,
            'shanks': [{
                'shank_id':
                0,
                'electrodes': [{
                    'id': 0,
                    'rel_x': 0.0,
                    'rel_y': 0.0,
                    'rel_z': 0.0
                }, {
                    'id': 1,
                    'rel_x': 40.0,
                    'rel_y': 0.0,
                    'rel_z': 0.0
                }]
            }, {
                'shank_id':
                1,
                'electrodes': [{
                    'id': 32,
                    'rel_x': 0.0,
                    'rel_y': 300.0,
                    'rel_z': 0.0
                }, {
                    'id': 33,
                    'rel_x': 40.0,
                    'rel_y': 300.0,
                    'rel_z': 0.0
                }]
            }, {
                'shank_id':
                2,
                'electrodes': [
                    {
                        'id': 64,
                        'rel_x': 0.0,
                        'rel_y': 600.0,
                        'rel_z': 0.0
                    },
                    {
                        'id': 65,
                        'rel_x': 40.0,
                        'rel_y': 600.0,
                        'rel_z': 0.0
                    },
                ]
            }, {
                'shank_id':
                3,
                'electrodes': [{
                    'id': 96,
                    'rel_x': 0.0,
                    'rel_y': 900.0,
                    'rel_z': 0.0
                }, {
                    'id': 97,
                    'rel_x': 40.0,
                    'rel_y': 900.0,
                    'rel_z': 0.0
                }]
            }]
        }]

        mock_eg_1 = Mock(spec=ElectrodeGroup)
        mock_eg_2 = Mock(spec=ElectrodeGroup)
        mock_eg_1.name = '0'
        mock_eg_2.name = '1'

        mock_electrodes_valid_map = [
            False, False, False, True, True, True, False, False, True, True,
            True, True
        ]
        mock_electrode_groups_valid_map = {0, 1}

        fl_electrodes_manager = FlElectrodeManager(probes_metadata,
                                                   electrode_groups_metadata)
        fl_electrodes = fl_electrodes_manager.get_fl_electrodes(
            electrode_groups=[mock_eg_1, mock_eg_2],
            electrodes_valid_map=mock_electrodes_valid_map,
            electrode_groups_valid_map=mock_electrode_groups_valid_map)

        self.assertEqual(7, len(fl_electrodes))

        self.assertIsInstance(fl_electrodes, list)
        self.assertIsInstance(fl_electrodes[0].electrode_group, ElectrodeGroup)

        self.assertEqual(fl_electrodes[0].electrode_group, mock_eg_1)
        self.assertEqual(fl_electrodes[0].electrode_id, 3)

        self.assertEqual(fl_electrodes[1].electrode_group, mock_eg_2)
        self.assertEqual(fl_electrodes[1].electrode_id, 4)

        self.assertEqual(fl_electrodes[2].electrode_group, mock_eg_2)
        self.assertEqual(fl_electrodes[2].electrode_id, 5)

        self.assertEqual(fl_electrodes[3].electrode_group, mock_eg_2)
        self.assertEqual(fl_electrodes[3].electrode_id, 8)

        self.assertEqual(fl_electrodes[4].electrode_group, mock_eg_2)
        self.assertEqual(fl_electrodes[4].electrode_id, 9)

        self.assertEqual(fl_electrodes[5].electrode_group, mock_eg_2)
        self.assertEqual(fl_electrodes[5].electrode_id, 10)

        self.assertEqual(fl_electrodes[6].electrode_group, mock_eg_2)
        self.assertEqual(fl_electrodes[6].electrode_id, 11)