def subsample(self, by, value): """ Returns a subsampled RDMs with repetitions if values are repeated Args: by(String): the descriptor by which the subset selection is made from descriptors value: the value by which the subset selection is made from descriptors Returns: RDMs object, with subsampled RDMs """ if by is None: by = 'index' if ( type(value) is list or type(value) is tuple or type(value) is np.ndarray): selection = [np.asarray(self.rdm_descriptors[by] == i).nonzero()[0] for i in value] selection = np.concatenate(selection) else: selection = np.where(self.rdm_descriptors[by] == value) dissimilarities = self.dissimilarities[selection, :] descriptors = self.descriptors pattern_descriptors = self.pattern_descriptors rdm_descriptors = extract_dict(self.rdm_descriptors, selection) dissimilarity_measure = self.dissimilarity_measure rdms = RDMs(dissimilarities=dissimilarities, descriptors=descriptors, rdm_descriptors=rdm_descriptors, pattern_descriptors=pattern_descriptors, dissimilarity_measure=dissimilarity_measure) return rdms
def subset(self, by, value): """ Returns a set of fewer RDMs matching descriptor values Args: by(String): the descriptor by which the subset selection is made from descriptors value: the value by which the subset selection is made from descriptors Returns: RDMs object, with fewer RDMs """ if by is None: by = 'index' selection = bool_index(self.rdm_descriptors[by], value) dissimilarities = self.dissimilarities[selection, :] descriptors = self.descriptors pattern_descriptors = self.pattern_descriptors rdm_descriptors = extract_dict(self.rdm_descriptors, selection) dissimilarity_measure = self.dissimilarity_measure rdms = RDMs(dissimilarities=dissimilarities, descriptors=descriptors, rdm_descriptors=rdm_descriptors, pattern_descriptors=pattern_descriptors, dissimilarity_measure=dissimilarity_measure) return rdms
def subset_pattern(self, by, value): """ Returns a smaller RDMs with patterns with certain descriptor values Args: by(String): the descriptor by which the subset selection is made from pattern_descriptors value: the value by which the subset selection is made from pattern_descriptors Returns: RDMs object, with fewer patterns """ if by is None: by = 'index' selection = bool_index(self.pattern_descriptors[by], value) dissimilarities = self.get_matrices()[:, selection][:, :, selection] descriptors = self.descriptors pattern_descriptors = extract_dict( self.pattern_descriptors, selection) rdm_descriptors = self.rdm_descriptors dissimilarity_measure = self.dissimilarity_measure rdms = RDMs(dissimilarities=dissimilarities, descriptors=descriptors, rdm_descriptors=rdm_descriptors, pattern_descriptors=pattern_descriptors, dissimilarity_measure=dissimilarity_measure) return rdms
def subsample_pattern(self, by, value): """ Returns a subsampled RDMs with repetitions if values are repeated This function now generates Nans where the off-diagonal 0s would appear. These values are trivial to predict for models and thus need to be marked and excluded from the evaluation. Args: by(String): the descriptor by which the subset selection is made from descriptors value: the value by which the subset selection is made from descriptors Returns: RDMs object, with subsampled patterns """ if by is None: by = 'index' if ( type(value) is list or type(value) is tuple or type(value) is np.ndarray): desc = self.pattern_descriptors[by] selection = [np.asarray(desc == i).nonzero()[0] for i in value] selection = np.concatenate(selection) else: selection = np.where(self.rdm_descriptors[by] == value) selection = np.sort(selection) dissimilarities = self.get_matrices() for i_rdm in range(self.n_rdm): np.fill_diagonal(dissimilarities[i_rdm], np.nan) selection = np.sort(selection) dissimilarities = dissimilarities[:, selection][:, :, selection] descriptors = self.descriptors pattern_descriptors = extract_dict( self.pattern_descriptors, selection) rdm_descriptors = self.rdm_descriptors dissimilarity_measure = self.dissimilarity_measure rdms = RDMs(dissimilarities=dissimilarities, descriptors=descriptors, rdm_descriptors=rdm_descriptors, pattern_descriptors=pattern_descriptors, dissimilarity_measure=dissimilarity_measure) return rdms
def subset_channel(self, by, value): """ Returns a subsetted Dataset defined by certain channel value Args: by(String): the descriptor by which the subset selection is made from channel dimension value: the value by which the subset selection is made from channel dimension Returns: Dataset, with subset defined by the selected channel_descriptor """ selection = bool_index(self.channel_descriptors[by], value) measurements = self.measurements[:, selection] descriptors = self.descriptors obs_descriptors = self.obs_descriptors channel_descriptors = extract_dict(self.channel_descriptors, selection) dataset = Dataset(measurements=measurements, descriptors=descriptors, obs_descriptors=obs_descriptors, channel_descriptors=channel_descriptors) return dataset
def split_obs(self, by): """ Returns a list Datasets splited by obs Args: by(String): the descriptor by which the splitting is made Returns: list of Datasets, splitted by the selected obs_descriptor """ unique_values = get_unique_unsorted(self.obs_descriptors[by]) dataset_list = [] for v in unique_values: selection = (self.obs_descriptors[by] == v) measurements = self.measurements[selection, :] descriptors = self.descriptors obs_descriptors = extract_dict(self.obs_descriptors, selection) channel_descriptors = self.channel_descriptors dataset = Dataset(measurements=measurements, descriptors=descriptors, obs_descriptors=obs_descriptors, channel_descriptors=channel_descriptors) dataset_list.append(dataset) return dataset_list