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
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
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
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
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}
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))
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