From 41b889c71c379045c1828f45fd90eee11eec4048 Mon Sep 17 00:00:00 2001 From: Ben Lonnqvist Date: Fri, 28 Jun 2024 16:28:26 +0200 Subject: [PATCH 1/2] add a test to check for stimulus id order --- .../model_helpers/brain_transformation/behavior.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/brainscore_vision/model_helpers/brain_transformation/behavior.py b/brainscore_vision/model_helpers/brain_transformation/behavior.py index 28aeb9e6a..5b7406bf6 100644 --- a/brainscore_vision/model_helpers/brain_transformation/behavior.py +++ b/brainscore_vision/model_helpers/brain_transformation/behavior.py @@ -192,7 +192,7 @@ def start_task(self, task: BrainModel.Task, fitting_stimuli, number_of_trials=1, number_of_trials=number_of_trials, require_variance=require_variance) fitting_features = fitting_features.transpose('presentation', 'neuroid') - assert all(fitting_features['stimulus_id'].values == fitting_stimuli['stimulus_id'].values), \ + assert all(self.order_preserving_unique(fitting_features['stimulus_id'].values) == fitting_stimuli['stimulus_id'].values), \ "stimulus_id ordering is incorrect" self.classifier.fit(fitting_features, fitting_features['image_label']) @@ -241,6 +241,11 @@ def labels_to_indices(self, labels): index2label = OrderedDict((index, label) for label, index in label2index.items()) return indices, index2label + @staticmethod + def order_preserving_unique(array): + _, indices = np.unique(array, return_index=True) + return array[np.sort(indices)] + class OddOneOut(BrainModel): def __init__(self, identifier: str, activations_model, layer: Union[str, List[str]]): From 57c3b8c31fee69dfd990a087df7a729ddaca3f83 Mon Sep 17 00:00:00 2001 From: Ben Lonnqvist Date: Fri, 28 Jun 2024 16:32:52 +0200 Subject: [PATCH 2/2] add comment to the added method --- .../model_helpers/brain_transformation/behavior.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/brainscore_vision/model_helpers/brain_transformation/behavior.py b/brainscore_vision/model_helpers/brain_transformation/behavior.py index 5b7406bf6..97cc62dcd 100644 --- a/brainscore_vision/model_helpers/brain_transformation/behavior.py +++ b/brainscore_vision/model_helpers/brain_transformation/behavior.py @@ -243,6 +243,11 @@ def labels_to_indices(self, labels): @staticmethod def order_preserving_unique(array): + """ + This function sorts an array and removes duplicates while preserving the order of the elements. + This function is used in favor of np.unique to ensure that the order of the stimulus_ids is preserved, as + np.unique performs sorting on the array. + """ _, indices = np.unique(array, return_index=True) return array[np.sort(indices)]