예제 #1
0
    def get_fl_probes(self, shanks_dict: dict, probes_valid_map: set):
        fl_probes = []
        for probe_type in probes_valid_map:
            probe_metadata = filter_probe_by_type(self.probes_metadata,
                                                  probe_type)

            fl_probes.append(
                self._build_single_probe(probe_metadata=probe_metadata,
                                         shanks=shanks_dict[probe_type]))
        return fl_probes
예제 #2
0
 def create_probe_electrode(cls, probes_metadata: list,
                            electrode_groups_metadata: list):
     probe_electrode = []
     for electrode_group_metadata in electrode_groups_metadata:
         probe_metadata = filter_probe_by_type(
             probes_metadata, electrode_group_metadata['device_type'])
         for shank in probe_metadata['shanks']:
             [
                 probe_electrode.append(electrode['id'])
                 for electrode in shank['electrodes']
             ]
     return probe_electrode
예제 #3
0
 def create_probe_shank(cls, probes_metadata: list,
                        electrode_groups_metadata: list):
     probe_shank = []
     for electrode_group_metadata in electrode_groups_metadata:
         probe_metadata = filter_probe_by_type(
             probes_metadata, electrode_group_metadata['device_type'])
         [
             probe_shank.extend([shank['shank_id']] *
                                len(shank['electrodes']))
             for shank in probe_metadata['shanks']
         ]
     return probe_shank
예제 #4
0
    def get_fl_shanks_electrodes_dict(self) -> dict:
        fl_shanks_electrodes_dict = {}
        probes_types = []
        for electrode_group_metadata in self.electrode_groups_metadata:
            if electrode_group_metadata['device_type'] not in probes_types:
                fl_shanks_electrodes = []
                probes_types.append(electrode_group_metadata['device_type'])
                probe_metadata = filter_probe_by_type(self.probes_metadata, electrode_group_metadata['device_type'])

                fl_shanks_electrodes.extend(self.__build_fl_shanks_electrodes(probe_metadata))
                fl_shanks_electrodes_dict[electrode_group_metadata['device_type']] = fl_shanks_electrodes
        return fl_shanks_electrodes_dict
예제 #5
0
    def create_rel(cls, probes_metadata: list,
                   electrode_groups_metadata: list) -> dict:

        rel_x, rel_y, rel_z = [], [], []
        for electrode_group_metadata in electrode_groups_metadata:
            probe_metadata = filter_probe_by_type(
                probes_metadata, electrode_group_metadata['device_type'])

            for shank in probe_metadata['shanks']:
                for electrode in shank['electrodes']:
                    rel_x.append(float(electrode['rel_x']))
                    rel_y.append(float(electrode['rel_y']))
                    rel_z.append(float(electrode['rel_z']))
        return {'rel_x': rel_x, 'rel_y': rel_y, 'rel_z': rel_z}
예제 #6
0
 def validate_ntrode_metadata_with_probe_metadata(metadata,
                                                  probes_metadata):
     for electrode_group in metadata['electrode groups']:
         probe_metadata = filter_probe_by_type(
             probes_metadata, electrode_group['device_type'])
         electrodes_in_probe = count_electrodes_in_probe(probe_metadata)
         electrodes_in_group = count_electrodes_in_ntrode(
             metadata['ntrode electrode group channel map'],
             electrode_group['id'])
         if electrodes_in_probe != electrodes_in_group:
             raise InvalidMetadataException(
                 'Ntrode definition in metadata is not compatible with probe schema.'
                 + 'Probe_type: ' + str(electrode_group['device_type']) +
                 ' electrodes in this probe_type: ' +
                 str(electrodes_in_probe) +
                 '. Ntrode_metadata for electrode_group of id: ' +
                 str(electrode_group['id']) +
                 ' electrodes in this electrode_group: ' +
                 str(electrodes_in_group))
예제 #7
0
    def get_fl_electrodes(self, electrode_groups: list,
                          electrodes_valid_map: list,
                          electrode_groups_valid_map: set):
        self.__validate_parameters(electrode_groups)
        tmp_electrodes_valid_map = copy.deepcopy(electrodes_valid_map)

        fl_electrodes = []
        fl_electrode_id = -1
        for electrode_group_metadata in self.electrode_groups_metadata:
            probe_metadata = filter_probe_by_type(
                self.probes_metadata, electrode_group_metadata['device_type'])

            for shank in probe_metadata['shanks']:
                for _ in shank['electrodes']:
                    fl_electrode_id += 1
                    fl_electrodes.append(
                        self.fl_electrodes_builder.build(
                            fl_electrode_id,
                            self.__get_electrode_group(
                                electrode_group_metadata, electrode_groups)))
        return fl_electrodes