From 8d10b81965e6c97c7c1cacc47eaba06b3a7402a4 Mon Sep 17 00:00:00 2001 From: Martin Schrimpf Date: Tue, 10 Feb 2026 11:33:31 +0100 Subject: [PATCH 1/4] add OASM model from Hadidi et al. 2025 --- brainscore_language/models/oasm/__init__.py | 4 + brainscore_language/models/oasm/model.py | 152 ++++++++++++++++++++ 2 files changed, 156 insertions(+) create mode 100644 brainscore_language/models/oasm/__init__.py create mode 100644 brainscore_language/models/oasm/model.py diff --git a/brainscore_language/models/oasm/__init__.py b/brainscore_language/models/oasm/__init__.py new file mode 100644 index 00000000..d4eac319 --- /dev/null +++ b/brainscore_language/models/oasm/__init__.py @@ -0,0 +1,4 @@ +from brainscore_language import model_registry +from .model import OASMSubject + +model_registry['oasm'] = lambda: OASMSubject(identifier='oasm') diff --git a/brainscore_language/models/oasm/model.py b/brainscore_language/models/oasm/model.py new file mode 100644 index 00000000..52cd3d03 --- /dev/null +++ b/brainscore_language/models/oasm/model.py @@ -0,0 +1,152 @@ +""" +OASM: Ordinal position, Average word length, Sentence length, Mean features. + +A simple confound baseline model following Hadidi et al. (2025) "Illusions of Alignment Between +Large Language Models and Brains Emerge From Fragile Methods and Overlooked Confounds". + +The paper argues that simple confounding variables — particularly positional signals (ordinal sentence +position within a passage) and word rate (number of words per sentence) — perform competitively with +trained LLMs in predicting brain activity. + +This model implements these confound features as an ArtificialSubject for evaluation on Brain-Score: + - O: Ordinal position of the sentence within the passage + - A: Average word length (mean characters per word) + - S: Sentence length (number of words, i.e. word rate) + - M: Mean character count and other summary statistics +""" + +import copy +import numpy as np +from typing import Union, List, Dict + +from brainscore_core.supported_data_standards.brainio.assemblies import NeuroidAssembly, merge_data_arrays +from brainscore_language.artificial_subject import ArtificialSubject + + +class OASMSubject(ArtificialSubject): + """ + Confound baseline model that uses only simple sentence-level statistics as "neural" representations. + + For each sentence, the feature vector consists of: + - Ordinal position (0-indexed position of sentence in the passage) + - Normalized ordinal position (position / total sentences in passage) + - Number of words (word rate) + - Log number of words + - Average word length in characters + - Total character count + - Log character count + - Number of unique words + - Max word length + - Min word length + + These features capture the confounding variables identified by Hadidi et al. (2025): + positional signals and word rate. + """ + + def __init__(self, identifier: str = 'oasm'): + self._identifier = identifier + self.neural_recordings: list = [] + + def identifier(self) -> str: + return self._identifier + + def start_behavioral_task(self, task: ArtificialSubject.Task): + raise NotImplementedError("OASM confound model does not support behavioral tasks") + + def start_neural_recording(self, recording_target: ArtificialSubject.RecordingTarget, + recording_type: ArtificialSubject.RecordingType): + self.neural_recordings.append((recording_target, recording_type)) + + def digest_text(self, text: Union[str, List[str]]) -> Dict[str, NeuroidAssembly]: + assert len(self.neural_recordings) > 0, "Must call start_neural_recording before digest_text" + + if isinstance(text, str): + text = [text] + if isinstance(text, np.ndarray): + text = list(text) + + num_sentences = len(text) + output = {'behavior': [], 'neural': []} + + for part_number, sentence in enumerate(text): + features = self._compute_features(sentence, ordinal_position=part_number, + total_sentences=num_sentences) + stimuli_coords = { + 'stimulus': ('presentation', [sentence]), + 'part_number': ('presentation', [part_number]), + } + neural_assembly = self._package_representations(features, stimuli_coords=stimuli_coords) + output['neural'].append(neural_assembly) + + output['neural'] = merge_data_arrays(output['neural']).sortby('part_number') if output['neural'] else None + return output + + def _compute_features(self, sentence: str, ordinal_position: int, total_sentences: int) -> np.ndarray: + """ + Compute simple confound features for a single sentence. + + Features: + 0: Ordinal position (0-indexed) + 1: Normalized ordinal position (position / total) + 2: Number of words (word rate) + 3: Log(1 + number of words) + 4: Average word length in characters + 5: Total character count (excluding spaces) + 6: Log(1 + total character count) + 7: Number of unique words + 8: Max word length + 9: Min word length + """ + words = sentence.split() + num_words = len(words) if words else 1 + word_lengths = [len(w) for w in words] if words else [0] + + features = np.array([ + ordinal_position, # O: ordinal position + ordinal_position / max(total_sentences - 1, 1), # O: normalized position + num_words, # S: sentence length (word rate) + np.log1p(num_words), # S: log word count + np.mean(word_lengths), # A: average word length + sum(word_lengths), # M: total char count (no spaces) + np.log1p(sum(word_lengths)), # M: log char count + len(set(w.lower() for w in words)) if words else 0, # M: unique word count + max(word_lengths), # M: max word length + min(word_lengths), # M: min word length + ], dtype=np.float64) + + return features + + def _package_representations(self, representation_values: np.ndarray, stimuli_coords: dict) -> NeuroidAssembly: + """Package feature vector as a NeuroidAssembly matching the Brain-Score interface.""" + layer_name = 'oasm_features' + num_units = len(representation_values) + feature_names = [ + 'ordinal_position', 'normalized_position', + 'word_count', 'log_word_count', + 'avg_word_length', + 'total_char_count', 'log_char_count', + 'unique_word_count', 'max_word_length', 'min_word_length', + ] + + neuroid_coords = { + 'layer': ('neuroid', [layer_name] * num_units), + 'neuron_number_in_layer': ('neuroid', np.arange(num_units)), + 'feature_name': ('neuroid', feature_names), + } + neuroid_coords['neuroid_id'] = 'neuroid', [f'{layer_name}--{i}' for i in range(num_units)] + + layer_representations = NeuroidAssembly( + [representation_values], + coords={**stimuli_coords, **neuroid_coords}, + dims=['presentation', 'neuroid']) + + # Repeat layer representations for every recording + representations = [] + for recording_target, recording_type in self.neural_recordings: + current_representations = copy.deepcopy(layer_representations) + current_representations['recording_target'] = 'neuroid', [recording_target] * num_units + current_representations['recording_type'] = 'neuroid', [recording_type] * num_units + current_representations = type(current_representations)(current_representations) # reindex + representations.append(current_representations) + representations = merge_data_arrays(representations) + return representations From 450e69e60aa86dfe0a2380036464aa77e1c3109d Mon Sep 17 00:00:00 2001 From: Kartik Pradeepan Date: Thu, 12 Feb 2026 15:18:20 -0500 Subject: [PATCH 2/4] Reimplementation of Hadidi et al. (2025) with a validation notebook reproducing Figure 1 on Pereira2018 with both OASM sigma sweep and GPT2-XL, including per-subject evaluation. Replaced with N x N identity matrix with per-block Guassian smoothing (sigma searched over 48 values as per paper). Add tests Co-written by Claude Code (Opus 4.6 High effort) and requiring multiple iterations especially during notebook validation. --- brainscore_language/models/oasm/__init__.py | 51 +- brainscore_language/models/oasm/model.py | 152 +- brainscore_language/models/oasm/test.py | 333 +++ .../oasm/validation/figure1_reproduction.png | Bin 0 -> 157530 bytes .../oasm/validation/oasm_reproduction.ipynb | 2013 +++++++++++++++++ .../oasm_shuffled_vs_contiguous.png | Bin 0 -> 98743 bytes .../oasm/validation/source_data/README.md | 24 + .../figure1/blank_pearson_r_contig.csv | 21 + .../figure1/blank_pearson_r_shuffled.csv | 21 + .../figure1/fedorenko_pearson_r_contig.csv | 21 + .../figure1/fedorenko_pearson_r_shuffled.csv | 21 + .../figure1/pereira_pearson_r_contig.csv | 41 + .../figure1/pereira_pearson_r_shuffled.csv | 41 + 13 files changed, 2649 insertions(+), 90 deletions(-) create mode 100644 brainscore_language/models/oasm/test.py create mode 100644 brainscore_language/models/oasm/validation/figure1_reproduction.png create mode 100644 brainscore_language/models/oasm/validation/oasm_reproduction.ipynb create mode 100644 brainscore_language/models/oasm/validation/oasm_shuffled_vs_contiguous.png create mode 100644 brainscore_language/models/oasm/validation/source_data/README.md create mode 100644 brainscore_language/models/oasm/validation/source_data/figure1/blank_pearson_r_contig.csv create mode 100644 brainscore_language/models/oasm/validation/source_data/figure1/blank_pearson_r_shuffled.csv create mode 100644 brainscore_language/models/oasm/validation/source_data/figure1/fedorenko_pearson_r_contig.csv create mode 100644 brainscore_language/models/oasm/validation/source_data/figure1/fedorenko_pearson_r_shuffled.csv create mode 100644 brainscore_language/models/oasm/validation/source_data/figure1/pereira_pearson_r_contig.csv create mode 100644 brainscore_language/models/oasm/validation/source_data/figure1/pereira_pearson_r_shuffled.csv diff --git a/brainscore_language/models/oasm/__init__.py b/brainscore_language/models/oasm/__init__.py index d4eac319..9cf4d443 100644 --- a/brainscore_language/models/oasm/__init__.py +++ b/brainscore_language/models/oasm/__init__.py @@ -1,4 +1,53 @@ from brainscore_language import model_registry from .model import OASMSubject -model_registry['oasm'] = lambda: OASMSubject(identifier='oasm') +# 49 OASM variants: sigma=0 (pure identity) + sigma=0.1..4.8 (paper's search grid). +model_registry['oasm-sigma0'] = lambda: OASMSubject(identifier='oasm-sigma0', sigma=0.0) +model_registry['oasm-sigma0.1'] = lambda: OASMSubject(identifier='oasm-sigma0.1', sigma=0.1) +model_registry['oasm-sigma0.2'] = lambda: OASMSubject(identifier='oasm-sigma0.2', sigma=0.2) +model_registry['oasm-sigma0.3'] = lambda: OASMSubject(identifier='oasm-sigma0.3', sigma=0.3) +model_registry['oasm-sigma0.4'] = lambda: OASMSubject(identifier='oasm-sigma0.4', sigma=0.4) +model_registry['oasm-sigma0.5'] = lambda: OASMSubject(identifier='oasm-sigma0.5', sigma=0.5) +model_registry['oasm-sigma0.6'] = lambda: OASMSubject(identifier='oasm-sigma0.6', sigma=0.6) +model_registry['oasm-sigma0.7'] = lambda: OASMSubject(identifier='oasm-sigma0.7', sigma=0.7) +model_registry['oasm-sigma0.8'] = lambda: OASMSubject(identifier='oasm-sigma0.8', sigma=0.8) +model_registry['oasm-sigma0.9'] = lambda: OASMSubject(identifier='oasm-sigma0.9', sigma=0.9) +model_registry['oasm-sigma1.0'] = lambda: OASMSubject(identifier='oasm-sigma1.0', sigma=1.0) +model_registry['oasm-sigma1.1'] = lambda: OASMSubject(identifier='oasm-sigma1.1', sigma=1.1) +model_registry['oasm-sigma1.2'] = lambda: OASMSubject(identifier='oasm-sigma1.2', sigma=1.2) +model_registry['oasm-sigma1.3'] = lambda: OASMSubject(identifier='oasm-sigma1.3', sigma=1.3) +model_registry['oasm-sigma1.4'] = lambda: OASMSubject(identifier='oasm-sigma1.4', sigma=1.4) +model_registry['oasm-sigma1.5'] = lambda: OASMSubject(identifier='oasm-sigma1.5', sigma=1.5) +model_registry['oasm-sigma1.6'] = lambda: OASMSubject(identifier='oasm-sigma1.6', sigma=1.6) +model_registry['oasm-sigma1.7'] = lambda: OASMSubject(identifier='oasm-sigma1.7', sigma=1.7) +model_registry['oasm-sigma1.8'] = lambda: OASMSubject(identifier='oasm-sigma1.8', sigma=1.8) +model_registry['oasm-sigma1.9'] = lambda: OASMSubject(identifier='oasm-sigma1.9', sigma=1.9) +model_registry['oasm-sigma2.0'] = lambda: OASMSubject(identifier='oasm-sigma2.0', sigma=2.0) +model_registry['oasm-sigma2.1'] = lambda: OASMSubject(identifier='oasm-sigma2.1', sigma=2.1) +model_registry['oasm-sigma2.2'] = lambda: OASMSubject(identifier='oasm-sigma2.2', sigma=2.2) +model_registry['oasm-sigma2.3'] = lambda: OASMSubject(identifier='oasm-sigma2.3', sigma=2.3) +model_registry['oasm-sigma2.4'] = lambda: OASMSubject(identifier='oasm-sigma2.4', sigma=2.4) +model_registry['oasm-sigma2.5'] = lambda: OASMSubject(identifier='oasm-sigma2.5', sigma=2.5) +model_registry['oasm-sigma2.6'] = lambda: OASMSubject(identifier='oasm-sigma2.6', sigma=2.6) +model_registry['oasm-sigma2.7'] = lambda: OASMSubject(identifier='oasm-sigma2.7', sigma=2.7) +model_registry['oasm-sigma2.8'] = lambda: OASMSubject(identifier='oasm-sigma2.8', sigma=2.8) +model_registry['oasm-sigma2.9'] = lambda: OASMSubject(identifier='oasm-sigma2.9', sigma=2.9) +model_registry['oasm-sigma3.0'] = lambda: OASMSubject(identifier='oasm-sigma3.0', sigma=3.0) +model_registry['oasm-sigma3.1'] = lambda: OASMSubject(identifier='oasm-sigma3.1', sigma=3.1) +model_registry['oasm-sigma3.2'] = lambda: OASMSubject(identifier='oasm-sigma3.2', sigma=3.2) +model_registry['oasm-sigma3.3'] = lambda: OASMSubject(identifier='oasm-sigma3.3', sigma=3.3) +model_registry['oasm-sigma3.4'] = lambda: OASMSubject(identifier='oasm-sigma3.4', sigma=3.4) +model_registry['oasm-sigma3.5'] = lambda: OASMSubject(identifier='oasm-sigma3.5', sigma=3.5) +model_registry['oasm-sigma3.6'] = lambda: OASMSubject(identifier='oasm-sigma3.6', sigma=3.6) +model_registry['oasm-sigma3.7'] = lambda: OASMSubject(identifier='oasm-sigma3.7', sigma=3.7) +model_registry['oasm-sigma3.8'] = lambda: OASMSubject(identifier='oasm-sigma3.8', sigma=3.8) +model_registry['oasm-sigma3.9'] = lambda: OASMSubject(identifier='oasm-sigma3.9', sigma=3.9) +model_registry['oasm-sigma4.0'] = lambda: OASMSubject(identifier='oasm-sigma4.0', sigma=4.0) +model_registry['oasm-sigma4.1'] = lambda: OASMSubject(identifier='oasm-sigma4.1', sigma=4.1) +model_registry['oasm-sigma4.2'] = lambda: OASMSubject(identifier='oasm-sigma4.2', sigma=4.2) +model_registry['oasm-sigma4.3'] = lambda: OASMSubject(identifier='oasm-sigma4.3', sigma=4.3) +model_registry['oasm-sigma4.4'] = lambda: OASMSubject(identifier='oasm-sigma4.4', sigma=4.4) +model_registry['oasm-sigma4.5'] = lambda: OASMSubject(identifier='oasm-sigma4.5', sigma=4.5) +model_registry['oasm-sigma4.6'] = lambda: OASMSubject(identifier='oasm-sigma4.6', sigma=4.6) +model_registry['oasm-sigma4.7'] = lambda: OASMSubject(identifier='oasm-sigma4.7', sigma=4.7) +model_registry['oasm-sigma4.8'] = lambda: OASMSubject(identifier='oasm-sigma4.8', sigma=4.8) diff --git a/brainscore_language/models/oasm/model.py b/brainscore_language/models/oasm/model.py index 52cd3d03..470a4024 100644 --- a/brainscore_language/models/oasm/model.py +++ b/brainscore_language/models/oasm/model.py @@ -1,22 +1,22 @@ """ -OASM: Ordinal position, Average word length, Sentence length, Mean features. +OASM: Orthogonal Autocorrelated Sequences Model. -A simple confound baseline model following Hadidi et al. (2025) "Illusions of Alignment Between +A confound baseline model following Hadidi et al. (2025) "Illusions of Alignment Between Large Language Models and Brains Emerge From Fragile Methods and Overlooked Confounds". -The paper argues that simple confounding variables — particularly positional signals (ordinal sentence -position within a passage) and word rate (number of words per sentence) — perform competitively with -trained LLMs in predicting brain activity. +The model constructs an N x N identity matrix (N = total stimuli) and applies Gaussian +smoothing within each block (passage/sentence/story) along axis=1. This captures temporal +autocorrelation -- the fact that brain responses to nearby stimuli are more similar -- +without encoding any linguistic content whatsoever. -This model implements these confound features as an ArtificialSubject for evaluation on Brain-Score: - - O: Ordinal position of the sentence within the passage - - A: Average word length (mean characters per word) - - S: Sentence length (number of words, i.e. word rate) - - M: Mean character count and other summary statistics +Reference: + Hadidi et al. (2025). bioRxiv. https://doi.org/10.1101/2025.03.09.642245 + Code: https://github.com/ebrahimfeghhi/beyond-brainscore """ import copy import numpy as np +from scipy.ndimage import gaussian_filter1d from typing import Union, List, Dict from brainscore_core.supported_data_standards.brainio.assemblies import NeuroidAssembly, merge_data_arrays @@ -25,128 +25,102 @@ class OASMSubject(ArtificialSubject): """ - Confound baseline model that uses only simple sentence-level statistics as "neural" representations. - - For each sentence, the feature vector consists of: - - Ordinal position (0-indexed position of sentence in the passage) - - Normalized ordinal position (position / total sentences in passage) - - Number of words (word rate) - - Log number of words - - Average word length in characters - - Total character count - - Log character count - - Number of unique words - - Max word length - - Min word length - - These features capture the confounding variables identified by Hadidi et al. (2025): - positional signals and word rate. + Orthogonal Autocorrelated Sequences Model (OASM) for brain-score evaluation. + + For each block of K stimuli (passage, sentence, or story), constructs a K x K identity + matrix and applies ``scipy.ndimage.gaussian_filter1d`` along axis=1 with the given sigma. + Each block is placed at a unique offset in a fixed-size feature space, maintaining + between-block orthogonality while introducing within-block temporal autocorrelation. + + This is mathematically equivalent to the paper's full N x N construction, adapted for + brain-score's per-block ``digest_text`` calling convention. + + :param identifier: Unique model identifier (e.g., 'oasm-sigma1.0'). + :param sigma: Gaussian smoothing width. Must be >= 0. sigma=0 gives pure identity. + :param max_features: Fixed dimensionality of the feature space. Must be >= total + number of stimuli across all blocks in a benchmark run. Default 2000. """ - def __init__(self, identifier: str = 'oasm'): + def __init__(self, identifier: str, sigma: float, max_features: int = 2000): self._identifier = identifier - self.neural_recordings: list = [] + self._sigma = sigma + self._max_features = max_features + self._neural_recordings: list = [] + self._offset: int = 0 def identifier(self) -> str: return self._identifier def start_behavioral_task(self, task: ArtificialSubject.Task): - raise NotImplementedError("OASM confound model does not support behavioral tasks") + raise NotImplementedError("OASM encodes no linguistic content and cannot perform behavioral tasks") def start_neural_recording(self, recording_target: ArtificialSubject.RecordingTarget, recording_type: ArtificialSubject.RecordingType): - self.neural_recordings.append((recording_target, recording_type)) + self._neural_recordings.append((recording_target, recording_type)) + self._offset = 0 def digest_text(self, text: Union[str, List[str]]) -> Dict[str, NeuroidAssembly]: - assert len(self.neural_recordings) > 0, "Must call start_neural_recording before digest_text" + assert len(self._neural_recordings) > 0, "Must call start_neural_recording before digest_text" if isinstance(text, str): text = [text] if isinstance(text, np.ndarray): text = list(text) - num_sentences = len(text) - output = {'behavior': [], 'neural': []} + block_size = len(text) - for part_number, sentence in enumerate(text): - features = self._compute_features(sentence, ordinal_position=part_number, - total_sentences=num_sentences) + if self._offset + block_size > self._max_features: + raise ValueError( + f"Cumulative stimulus count ({self._offset + block_size}) exceeds " + f"max_features ({self._max_features}). Increase max_features." + ) + + # Build block: K x K identity, smoothed along axis=1 + block_features = np.eye(block_size, dtype=np.float64) + if self._sigma > 0 and block_size > 1: + block_features = gaussian_filter1d(block_features, sigma=self._sigma, axis=1) + + # Embed into D-dimensional space at the current offset + features = np.zeros((block_size, self._max_features), dtype=np.float64) + features[:, self._offset:self._offset + block_size] = block_features + self._offset += block_size + + # Package each stimulus as a NeuroidAssembly + output = {'behavior': [], 'neural': []} + for part_number, stimulus in enumerate(text): stimuli_coords = { - 'stimulus': ('presentation', [sentence]), + 'stimulus': ('presentation', [stimulus]), 'part_number': ('presentation', [part_number]), } - neural_assembly = self._package_representations(features, stimuli_coords=stimuli_coords) + neural_assembly = self._package_representations(features[part_number], stimuli_coords=stimuli_coords) output['neural'].append(neural_assembly) - output['neural'] = merge_data_arrays(output['neural']).sortby('part_number') if output['neural'] else None + output['neural'] = merge_data_arrays(output['neural']).sortby('part_number') return output - def _compute_features(self, sentence: str, ordinal_position: int, total_sentences: int) -> np.ndarray: - """ - Compute simple confound features for a single sentence. - - Features: - 0: Ordinal position (0-indexed) - 1: Normalized ordinal position (position / total) - 2: Number of words (word rate) - 3: Log(1 + number of words) - 4: Average word length in characters - 5: Total character count (excluding spaces) - 6: Log(1 + total character count) - 7: Number of unique words - 8: Max word length - 9: Min word length - """ - words = sentence.split() - num_words = len(words) if words else 1 - word_lengths = [len(w) for w in words] if words else [0] - - features = np.array([ - ordinal_position, # O: ordinal position - ordinal_position / max(total_sentences - 1, 1), # O: normalized position - num_words, # S: sentence length (word rate) - np.log1p(num_words), # S: log word count - np.mean(word_lengths), # A: average word length - sum(word_lengths), # M: total char count (no spaces) - np.log1p(sum(word_lengths)), # M: log char count - len(set(w.lower() for w in words)) if words else 0, # M: unique word count - max(word_lengths), # M: max word length - min(word_lengths), # M: min word length - ], dtype=np.float64) - - return features - - def _package_representations(self, representation_values: np.ndarray, stimuli_coords: dict) -> NeuroidAssembly: - """Package feature vector as a NeuroidAssembly matching the Brain-Score interface.""" - layer_name = 'oasm_features' + def _package_representations(self, representation_values: np.ndarray, + stimuli_coords: dict) -> NeuroidAssembly: + """Package a feature vector as a NeuroidAssembly matching the brain-score interface.""" + layer_name = f'oasm_sigma{self._sigma}' num_units = len(representation_values) - feature_names = [ - 'ordinal_position', 'normalized_position', - 'word_count', 'log_word_count', - 'avg_word_length', - 'total_char_count', 'log_char_count', - 'unique_word_count', 'max_word_length', 'min_word_length', - ] neuroid_coords = { 'layer': ('neuroid', [layer_name] * num_units), 'neuron_number_in_layer': ('neuroid', np.arange(num_units)), - 'feature_name': ('neuroid', feature_names), + 'neuroid_id': ('neuroid', [f'{layer_name}--{i}' for i in range(num_units)]), } - neuroid_coords['neuroid_id'] = 'neuroid', [f'{layer_name}--{i}' for i in range(num_units)] layer_representations = NeuroidAssembly( [representation_values], coords={**stimuli_coords, **neuroid_coords}, dims=['presentation', 'neuroid']) - # Repeat layer representations for every recording representations = [] - for recording_target, recording_type in self.neural_recordings: + for recording_target, recording_type in self._neural_recordings: current_representations = copy.deepcopy(layer_representations) current_representations['recording_target'] = 'neuroid', [recording_target] * num_units current_representations['recording_type'] = 'neuroid', [recording_type] * num_units - current_representations = type(current_representations)(current_representations) # reindex + current_representations = type(current_representations)(current_representations) representations.append(current_representations) representations = merge_data_arrays(representations) return representations diff --git a/brainscore_language/models/oasm/test.py b/brainscore_language/models/oasm/test.py new file mode 100644 index 00000000..c77bae52 --- /dev/null +++ b/brainscore_language/models/oasm/test.py @@ -0,0 +1,333 @@ +""" +Tests for the OASM (Orthogonal Autocorrelated Sequences Model) implementation. + +Tests cover: +- Feature construction correctness +- Between-block orthogonality +- Stateful offset mechanism +- NeuroidAssembly structure (brain-score interface compliance) +- Input handling edge cases +- Equivalence to the paper's full-matrix construction +- Model registration +- Paper's key finding: shuffled CV inflates scores, contiguous CV eliminates them +""" + +import numpy as np +import pytest +import xarray as xr +from scipy.ndimage import gaussian_filter1d +from scipy.stats import pearsonr +from sklearn.linear_model import RidgeCV +from sklearn.model_selection import ShuffleSplit + +from brainscore_language import load_model +from brainscore_language.artificial_subject import ArtificialSubject +from brainscore_language.models.oasm.model import OASMSubject + + +def _make_model(sigma: float = 1.0, max_features: int = 20) -> OASMSubject: + """Helper to create an OASMSubject with neural recording started.""" + model = OASMSubject(identifier='test', sigma=sigma, max_features=max_features) + model.start_neural_recording( + recording_target=ArtificialSubject.RecordingTarget.language_system, + recording_type=ArtificialSubject.RecordingType.fMRI, + ) + return model + + +class TestFeatureConstruction: + """Test the core identity + Gaussian smoothing feature construction.""" + + def test_sigma_zero_gives_identity(self): + """With sigma=0, each stimulus should get a one-hot vector at its offset position.""" + model = _make_model(sigma=0.0, max_features=10) + result = model.digest_text(['a', 'b', 'c'])['neural'] + + for i in range(3): + assert result.values[i, i] == 1.0 + non_peak = np.delete(result.values[i], i) + np.testing.assert_array_equal(non_peak, 0.0) + + def test_smoothing_matches_scipy_exactly(self): + """Feature values must exactly match scipy.ndimage.gaussian_filter1d on identity.""" + sigma = 2.0 + block_size = 5 + model = _make_model(sigma=sigma, max_features=10) + result = model.digest_text([f'w{i}' for i in range(block_size)])['neural'] + + expected = gaussian_filter1d(np.eye(block_size), sigma=sigma, axis=1) + np.testing.assert_allclose(result.values[:, :block_size], expected, atol=1e-10) + + +class TestBetweenBlockOrthogonality: + """Test that features from different digest_text calls occupy non-overlapping dimensions.""" + + def test_two_blocks_orthogonal(self): + """Dot product between any stimulus from block 1 and any from block 2 should be 0.""" + model = _make_model(sigma=1.0, max_features=20) + r1 = model.digest_text(['a', 'b', 'c'])['neural'] + r2 = model.digest_text(['d', 'e'])['neural'] + + for i in range(3): + for j in range(2): + dot = np.dot(r1.values[i], r2.values[j]) + assert dot == pytest.approx(0.0, abs=1e-10), ( + f"Block1[{i}] . Block2[{j}] = {dot}, expected 0" + ) + + +class TestStatefulOffset: + """Test the cumulative offset mechanism that places blocks in unique dimensions.""" + + def test_offset_advances_by_block_size(self): + """With sigma=0, the one-hot peak position reveals the offset.""" + model = _make_model(sigma=0.0, max_features=20) + + r1 = model.digest_text(['a', 'b', 'c'])['neural'] + assert r1.values[0, 0] == 1.0 + assert r1.values[1, 1] == 1.0 + assert r1.values[2, 2] == 1.0 + + r2 = model.digest_text(['d', 'e'])['neural'] + assert r2.values[0, 3] == 1.0 + assert r2.values[1, 4] == 1.0 + + def test_start_neural_recording_resets_offset(self): + """A new recording session should reset the offset to 0.""" + model = OASMSubject(identifier='test', sigma=0.0, max_features=20) + model.start_neural_recording( + recording_target=ArtificialSubject.RecordingTarget.language_system, + recording_type=ArtificialSubject.RecordingType.fMRI, + ) + + model.digest_text(['a', 'b', 'c']) + assert model._offset == 3 + + model.start_neural_recording( + recording_target=ArtificialSubject.RecordingTarget.language_system, + recording_type=ArtificialSubject.RecordingType.fMRI, + ) + assert model._offset == 0 + + result = model.digest_text(['x', 'y'])['neural'] + assert result.values[0, 0] == 1.0 + + def test_exceeds_max_features_raises(self): + """Should raise ValueError when cumulative stimuli exceed max_features.""" + model = _make_model(sigma=0.0, max_features=5) + model.digest_text(['a', 'b', 'c']) + + with pytest.raises(ValueError, match="max_features"): + model.digest_text(['d', 'e', 'f']) + + +class TestNeuroidAssemblyStructure: + """Test brain-score interface compliance: coordinates, dimensions, types.""" + + def test_required_neuroid_coordinates(self): + model = _make_model(sigma=1.0, max_features=10) + result = model.digest_text(['hello', 'world'])['neural'] + + for coord in ['layer', 'neuron_number_in_layer', 'neuroid_id', + 'recording_target', 'recording_type']: + result[coord] # should not raise + + def test_required_presentation_coordinates(self): + model = _make_model(sigma=1.0, max_features=10) + result = model.digest_text(['hello', 'world'])['neural'] + + np.testing.assert_array_equal(result['stimulus'].values, ['hello', 'world']) + np.testing.assert_array_equal(result['part_number'].values, [0, 1]) + + def test_output_shape(self): + max_features = 15 + model = _make_model(sigma=0.5, max_features=max_features) + result = model.digest_text(['a', 'b', 'c'])['neural'] + + assert result.dims == ('presentation', 'neuroid') + assert result.shape == (3, max_features) + + def test_consistent_neuroid_dims_across_blocks(self): + """All blocks must have the same neuroid dimension for xr.concat (as benchmarks do).""" + model = _make_model(sigma=1.0, max_features=20) + + r1 = model.digest_text(['a', 'b', 'c'])['neural'] + r2 = model.digest_text(['d', 'e'])['neural'] + r3 = model.digest_text(['f'])['neural'] + + combined = xr.concat([r1, r2, r3], dim='presentation') + assert combined.shape == (6, 20) + + +class TestInputHandling: + """Test edge cases in input normalization.""" + + def test_numpy_array_input(self): + """Benchmarks pass numpy arrays, not Python lists.""" + model = _make_model(sigma=0.5, max_features=10) + text = np.array(['hello world', 'foo bar']) + result = model.digest_text(text)['neural'] + assert result.shape == (2, 10) + + def test_single_string_input(self): + model = _make_model(sigma=0.5, max_features=10) + result = model.digest_text('hello world')['neural'] + assert result.shape == (1, 10) + + def test_no_neural_recording_raises(self): + model = OASMSubject(identifier='test', sigma=0.5, max_features=10) + with pytest.raises(AssertionError, match="start_neural_recording"): + model.digest_text(['hello']) + + def test_behavioral_task_raises(self): + model = OASMSubject(identifier='test', sigma=0.5, max_features=10) + with pytest.raises(NotImplementedError): + model.start_behavioral_task(ArtificialSubject.Task.next_word) + + +class TestEquivalenceToPaper: + """Verify mathematical equivalence to the paper's full-matrix OASM construction.""" + + def test_incremental_matches_full_matrix(self): + """ + The stateful per-block approach must produce the same result as building + the full N x N matrix and smoothing within blocks. + + Validates equivalence to the paper's construction: + OASM_acts = np.eye(N) + for block in blocks: + OASM_acts[block, block] = gaussian_filter1d(submatrix, sigma, axis=1) + """ + sigma = 1.5 + blocks = [['a', 'b', 'c'], ['d', 'e'], ['f', 'g', 'h', 'i']] + total_n = sum(len(b) for b in blocks) + + full_matrix = np.eye(total_n) + offset = 0 + for block in blocks: + k = len(block) + if k > 1: + submatrix = full_matrix[offset:offset + k, offset:offset + k] + full_matrix[offset:offset + k, offset:offset + k] = gaussian_filter1d( + submatrix, sigma=sigma, axis=1 + ) + offset += k + + model = _make_model(sigma=sigma, max_features=total_n) + incremental_rows = [] + for block in blocks: + result = model.digest_text(block)['neural'] + incremental_rows.append(result.values) + + incremental_matrix = np.vstack(incremental_rows) + + np.testing.assert_allclose( + incremental_matrix, full_matrix, atol=1e-10, + err_msg="Incremental OASM must match paper's full-matrix construction" + ) + + def test_no_linguistic_content(self): + """ + OASM features should be identical regardless of actual text content, + given the same block structure. + """ + sigma = 1.0 + max_features = 10 + + model1 = _make_model(sigma=sigma, max_features=max_features) + r1 = model1.digest_text(['The cat sat on the mat', 'Dogs are great', 'Hello world'])['neural'] + + model2 = _make_model(sigma=sigma, max_features=max_features) + r2 = model2.digest_text(['xyz abc 123', 'qqq', 'asdfghjkl'])['neural'] + + np.testing.assert_array_equal( + r1.values, r2.values, + err_msg="OASM encodes zero linguistic content: features must depend only on block structure" + ) + + +class TestRegistration: + """Test model registry integration.""" + + def test_boundary_sigmas_load(self): + """All registrations are explicit literals, so load_model's static scan finds them.""" + for key in ['oasm-sigma0', 'oasm-sigma0.1', 'oasm-sigma4.8']: + model = load_model(key) + ident = model.identifier if isinstance(model.identifier, str) else model.identifier() + assert ident == key + + def test_49_variants_registered(self): + """48 sigma values (0.1-4.8) + sigma=0 = 49 total.""" + from brainscore_language import model_registry + oasm_keys = [k for k in model_registry if k.startswith('oasm-sigma')] + assert len(oasm_keys) == 49 + + +class TestPaperReproduction: + """ + Reproduce the paper's key finding on synthetic data: OASM scores high under + shuffled CV (temporal autocorrelation leakage) but drops to ~zero under + contiguous CV (entire blocks held out). + + Uses synthetic brain data with temporal autocorrelation -- no real data loading needed. + Reference: Hadidi et al. (2025), Figure 1. + """ + + def test_shuffled_high_contiguous_zero(self): + n_blocks = 6 + block_size = 4 + n_stimuli = n_blocks * block_size + n_voxels = 50 + sigma = 1.0 + + # Build OASM features: per-block identity + Gaussian smoothing + model = _make_model(sigma=sigma, max_features=n_stimuli) + all_features = [] + for b in range(n_blocks): + texts = [f'block{b}_stim{i}' for i in range(block_size)] + result = model.digest_text(texts)['neural'] + all_features.append(result.values) + X = np.vstack(all_features) + + # Synthetic brain data: random voxel responses with temporal autocorrelation + # (adjacent stimuli within a block have correlated responses) + rng = np.random.default_rng(42) + Y = np.zeros((n_stimuli, n_voxels)) + for b in range(n_blocks): + raw = rng.standard_normal((block_size, n_voxels)) + Y[b * block_size:(b + 1) * block_size] = gaussian_filter1d(raw, sigma=1.5, axis=0) + + # Shuffled CV: random train/test split (allows within-block leakage) + ss = ShuffleSplit(n_splits=10, train_size=0.9, random_state=1) + shuffled_rs = [] + for train_idx, test_idx in ss.split(X): + reg = RidgeCV(alphas=np.logspace(-3, 3, 7)) + reg.fit(X[train_idx], Y[train_idx]) + Y_pred = reg.predict(X[test_idx]) + rs = [pearsonr(Y[test_idx, j], Y_pred[:, j])[0] for j in range(n_voxels)] + shuffled_rs.append(np.nanmedian(rs)) + shuffled_score = np.mean(shuffled_rs) + + # Contiguous CV: hold out entire blocks (no within-block leakage) + contiguous_rs = [] + for held_out in range(n_blocks): + test_idx = list(range(held_out * block_size, (held_out + 1) * block_size)) + train_idx = [i for i in range(n_stimuli) if i not in test_idx] + reg = RidgeCV(alphas=np.logspace(-3, 3, 7)) + reg.fit(X[train_idx], Y[train_idx]) + Y_pred = reg.predict(X[test_idx]) + rs = [] + for j in range(n_voxels): + if np.std(Y[test_idx, j]) < 1e-10 or np.std(Y_pred[:, j]) < 1e-10: + rs.append(0.0) + else: + rs.append(pearsonr(Y[test_idx, j], Y_pred[:, j])[0]) + contiguous_rs.append(np.nanmedian(rs)) + contiguous_score = np.mean(contiguous_rs) + + assert shuffled_score > 0.1, ( + f"Shuffled CV should exploit temporal autocorrelation leakage: got r={shuffled_score:.4f}" + ) + assert abs(contiguous_score) < 0.02, ( + f"Contiguous CV should eliminate leakage: got r={contiguous_score:.4f}" + ) diff --git a/brainscore_language/models/oasm/validation/figure1_reproduction.png b/brainscore_language/models/oasm/validation/figure1_reproduction.png new file mode 100644 index 0000000000000000000000000000000000000000..be6a823ca4350ebaf74a6c4362946cad42105dc7 GIT binary patch literal 157530 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៓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

$vs)u9yJ^U@Qpi=A-XXHr{s{U-#6d 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 literal 0 HcmV?d00001 diff --git a/brainscore_language/models/oasm/validation/oasm_reproduction.ipynb b/brainscore_language/models/oasm/validation/oasm_reproduction.ipynb new file mode 100644 index 00000000..5dbcbd26 --- /dev/null +++ b/brainscore_language/models/oasm/validation/oasm_reproduction.ipynb @@ -0,0 +1,2013 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "cell-0", + "metadata": {}, + "source": [ + "# Reproducing OASM Results: Hadidi et al. (2025)\n", + "\n", + "**Paper:** \"Illusions of Alignment Between Large Language Models and Brains Emerge From Fragile Methods and Overlooked Confounds\" \n", + "**Reference:** [bioRxiv 2025.03.09.642245v1](https://www.biorxiv.org/content/10.1101/2025.03.09.642245v1) \n", + "**Code:** [github.com/ebrahimfeghhi/beyond-brainscore](https://github.com/ebrahimfeghhi/beyond-brainscore)\n", + "\n", + "---\n", + "\n", + "OASM (Orthogonal Autocorrelated Sequences Model) encodes **zero linguistic content** -- each stimulus\n", + "gets its own orthogonal dimension, with only temporal smoothing (Gaussian filter) within passage blocks.\n", + "\n", + "The paper's key claim: under **shuffled** cross-validation splits (brain-score's default), OASM achieves\n", + "near-ceiling neural predictivity. Under **contiguous** (passage-level) splits, it drops to near zero.\n", + "This exposes temporal autocorrelation leakage in shuffled CV.\n", + "\n", + "We reproduce this by sweeping OASM sigma values on **Pereira2018.384sentences** under both split types." + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "id": "cell-1", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "brainscore_language loaded from: /Users/kartik/Brain-Score 2026/language\n" + ] + } + ], + "source": [ + "import sys\n", + "import os\n", + "import numpy as np\n", + "import xarray as xr\n", + "import matplotlib.pyplot as plt\n", + "from scipy.stats import pearsonr\n", + "from sklearn.linear_model import RidgeCV\n", + "from sklearn.model_selection import GroupKFold, ShuffleSplit\n", + "from tqdm.auto import tqdm\n", + "\n", + "# Ensure brainscore_language is importable from notebook directory\n", + "_notebook_dir = os.path.dirname(os.path.abspath(\"__file__\"))\n", + "_lang_root = os.path.abspath(os.path.join(_notebook_dir, '..', '..', '..', '..'))\n", + "if _lang_root not in sys.path:\n", + " sys.path.insert(0, _lang_root)\n", + "\n", + "from brainscore_language import load_dataset\n", + "from brainscore_language.artificial_subject import ArtificialSubject\n", + "from brainscore_language.models.oasm.model import OASMSubject\n", + "\n", + "print(f\"brainscore_language loaded from: {_lang_root}\")" + ] + }, + { + "cell_type": "markdown", + "id": "cell-2", + "metadata": {}, + "source": [ + "## Configuration\n", + "\n", + "Set `QUICK_MODE = True` for a fast run (~15 min) with 10 sigma values. \n", + "Set `QUICK_MODE = False` for the full 48-value sweep (~1.5 hr) matching the paper." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "cell-3", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Mode: FULL\n", + "Sigma values (49): [0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 1.9, 2.0, 2.1, 2.2, 2.3, 2.4, 2.5, 2.6, 2.7, 2.8, 2.9, 3.0, 3.1, 3.2, 3.3, 3.4, 3.5, 3.6, 3.7, 3.8, 3.9, 4.0, 4.1, 4.2, 4.3, 4.4, 4.5, 4.6, 4.7, 4.8]\n" + ] + } + ], + "source": [ + "QUICK_MODE = False\n", + "EXPERIMENT = '384sentences'\n", + "MAX_FEATURES = 2000\n", + "\n", + "if QUICK_MODE:\n", + " SIGMA_VALUES = [0.0, 0.5, 1.0, 1.5, 2.0, 2.5, 3.0, 3.5, 4.0, 4.5]\n", + "else:\n", + " # Full sweep: 48 values from 0.1 to 4.8 (matching paper) + sigma=0 baseline\n", + " SIGMA_VALUES = [0.0] + [round(s * 0.1, 1) for s in range(1, 49)]\n", + "\n", + "# Pereira2018.384sentences ceiling (raw Pearson r, from brain-score)\n", + "CEILING_RAW = 0.36343748\n", + "\n", + "print(f\"Mode: {'QUICK' if QUICK_MODE else 'FULL'}\")\n", + "print(f\"Sigma values ({len(SIGMA_VALUES)}): {SIGMA_VALUES}\")" + ] + }, + { + "cell_type": "markdown", + "id": "cell-4", + "metadata": {}, + "source": [ + "## Load Pereira2018 data" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "id": "cell-5", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Experiment: 384sentences\n", + "Stimuli: 384\n", + "Neuroids: 12155\n", + "Passages: 96\n", + "Stimuli per passage: 4.0\n" + ] + } + ], + "source": [ + "# Load Pireira2018 384 experiment and drop voxels with NaN values (not all subjects completed both experiments)\n", + "data = load_dataset('Pereira2018.language')\n", + "data = data.sel(experiment=EXPERIMENT)\n", + "data = data.dropna('neuroid')\n", + "\n", + "passages = sorted(set(data['passage_label'].values))\n", + "n_stimuli = len(data['stimulus_id'])\n", + "n_neuroids = len(data['neuroid'])\n", + "n_passages = len(passages)\n", + "\n", + "print(f\"Experiment: {EXPERIMENT}\")\n", + "print(f\"Stimuli: {n_stimuli}\")\n", + "print(f\"Neuroids: {n_neuroids}\")\n", + "print(f\"Passages: {n_passages}\")\n", + "print(f\"Stimuli per passage: {n_stimuli / n_passages:.1f}\")" + ] + }, + { + "cell_type": "markdown", + "id": "cell-6", + "metadata": {}, + "source": [ + "## Evaluation functions\n", + "\n", + "Both evaluation modes use **ridge regression** (`RidgeCV`, alphas 10^-3 to 10^3), matching the paper.\n", + "The only difference is the **split strategy**:\n", + "\n", + "1. **Shuffled** (brain-score default): `ShuffleSplit` on individual stimuli. Sentences from the same passage can end up in both train and test, allowing temporal autocorrelation leakage.\n", + "2. **Contiguous** (paper's recommendation): `GroupKFold` on `story` (24 stories). Entire stories are held out together, preventing temporal autocorrelation leakage.\n", + "\n", + "By keeping the regression method constant (ridge), we isolate the effect of the split strategy." + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "id": "cell-7", + "metadata": {}, + "outputs": [], + "source": [ + "import warnings\n", + "\n", + "RIDGE_ALPHAS = np.logspace(-3, 3, 7)\n", + "\n", + "\n", + "def get_model_predictions(model, data: xr.DataArray) -> xr.DataArray:\n", + " \"\"\"Get model predictions for all passages, matching benchmark calling convention.\"\"\"\n", + " stimuli = data['stimulus']\n", + " passages = data['passage_label'].values\n", + " predictions = []\n", + " for passage in sorted(set(passages)):\n", + " passage_indexer = [stimulus_passage == passage for stimulus_passage in passages]\n", + " passage_stimuli = stimuli[passage_indexer]\n", + " passage_predictions = model.digest_text(passage_stimuli.values)['neural']\n", + " passage_predictions['stimulus_id'] = 'presentation', passage_stimuli['stimulus_id'].values\n", + " passage_predictions['passage_index'] = 'presentation', data['passage_index'].values[passage_indexer]\n", + " passage_predictions['story'] = 'presentation', data['story'].values[passage_indexer]\n", + " predictions.append(passage_predictions)\n", + " return xr.concat(predictions, dim='presentation')\n", + "\n", + "\n", + "def _ridge_cv_score(X, Y, split_iterator):\n", + " \"\"\"Shared ridge regression + Pearson r evaluation across CV splits.\"\"\"\n", + " split_medians = []\n", + " for train_idx, test_idx in split_iterator:\n", + " reg = RidgeCV(alphas=RIDGE_ALPHAS)\n", + " reg.fit(X[train_idx], Y[train_idx])\n", + " Y_pred = reg.predict(X[test_idx])\n", + "\n", + " rs = []\n", + " for j in range(Y.shape[1]):\n", + " y_true = Y[test_idx, j]\n", + " y_pred = Y_pred[:, j]\n", + " if np.std(y_true) < 1e-10 or np.std(y_pred) < 1e-10:\n", + " rs.append(0.0)\n", + " continue\n", + " r, _ = pearsonr(y_true, y_pred)\n", + " rs.append(r if not np.isnan(r) else 0.0)\n", + " split_medians.append(np.nanmedian(rs))\n", + " return float(np.mean(split_medians)) if split_medians else 0.0\n", + "\n", + "\n", + "def _align_by_stimulus_id(predictions, data):\n", + " \"\"\"Sort predictions and data by stimulus_id for alignment.\"\"\"\n", + " src_order = np.argsort(predictions['stimulus_id'].values)\n", + " tgt_order = np.argsort(data['stimulus_id'].values)\n", + " X = predictions.values[src_order]\n", + " Y = data.values[tgt_order]\n", + " return X, Y, tgt_order\n", + "\n", + "\n", + "def evaluate_shuffled(predictions: xr.DataArray, data: xr.DataArray,\n", + " n_splits: int = 10, train_size: float = 0.9) -> float:\n", + " \"\"\"Shuffled CV with ridge regression (matching the paper).\n", + "\n", + " Uses ShuffleSplit on individual stimuli (brain-score default split strategy)\n", + " with RidgeCV regression (matching the paper's methodology).\n", + " Returns median-over-neuroids, mean-over-splits Pearson r.\n", + " \"\"\"\n", + " X, Y, _ = _align_by_stimulus_id(predictions, data)\n", + " ss = ShuffleSplit(n_splits=n_splits, train_size=train_size, random_state=1)\n", + " return _ridge_cv_score(X, Y, ss.split(X))\n", + "\n", + "\n", + "def evaluate_contiguous(predictions: xr.DataArray, data: xr.DataArray,\n", + " n_splits: int = 10) -> float:\n", + " \"\"\"Story-level GroupKFold CV with ridge regression (matching the paper).\n", + "\n", + " Groups by `story` (24 unique stories in Pereira2018). Entire stories are\n", + " held out together, preventing temporal autocorrelation leakage.\n", + " Returns median-over-neuroids, mean-over-splits Pearson r.\n", + " \"\"\"\n", + " X, Y, tgt_order = _align_by_stimulus_id(predictions, data)\n", + "\n", + " story_labels = data['story'].values[tgt_order]\n", + " unique_stories = np.unique(story_labels)\n", + " story_to_int = {s: i for i, s in enumerate(unique_stories)}\n", + " groups = np.array([story_to_int[s] for s in story_labels])\n", + "\n", + " actual_splits = min(n_splits, len(unique_stories))\n", + " gkf = GroupKFold(n_splits=actual_splits)\n", + " return _ridge_cv_score(X, Y, gkf.split(X, groups=groups))\n", + "\n", + "\n", + "def evaluate_per_subject(predictions: xr.DataArray, data: xr.DataArray):\n", + " \"\"\"Evaluate under both split types for each fMRI subject independently.\n", + "\n", + " Returns dict with 'subjects', 'shuffled', 'contiguous' arrays.\n", + " \"\"\"\n", + " subjects = sorted(set(data['subject'].values))\n", + " shuffled_scores = []\n", + " contiguous_scores = []\n", + " for subj in tqdm(subjects, desc='per-subject evaluation'):\n", + " subj_mask = data['subject'].values == subj\n", + " subj_data = data.isel(neuroid=subj_mask)\n", + " shuffled_scores.append(evaluate_shuffled(predictions, subj_data))\n", + " contiguous_scores.append(evaluate_contiguous(predictions, subj_data))\n", + " return {\n", + " 'subjects': subjects,\n", + " 'shuffled': np.array(shuffled_scores),\n", + " 'contiguous': np.array(contiguous_scores),\n", + " }" + ] + }, + { + "cell_type": "markdown", + "id": "cell-8", + "metadata": {}, + "source": [ + "## Run sigma sweep\n", + "\n", + "For each sigma value, compute OASM features once, then evaluate under both split types." + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "id": "cell-9", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "sigma sweep: 0%| | 0/49 [00:00" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Best shuffled: sigma=0.9, r=0.4922, normalized=1.354\n", + "Best contiguous: sigma=0.0, r=0.0000, normalized=0.000\n" + ] + } + ], + "source": [ + "sigmas = sorted(results_shuffled.keys())\n", + "shuffled_r = [results_shuffled[s] for s in sigmas]\n", + "contiguous_r = [results_contiguous[s] for s in sigmas]\n", + "\n", + "# Ceiling-normalized scores\n", + "shuffled_norm = [r / CEILING_RAW for r in shuffled_r]\n", + "contiguous_norm = [r / CEILING_RAW for r in contiguous_r]\n", + "\n", + "fig, axes = plt.subplots(1, 2, figsize=(14, 5), sharey=False)\n", + "\n", + "# --- Left panel: raw Pearson r ---\n", + "ax = axes[0]\n", + "ax.plot(sigmas, shuffled_r, 'o-', color='#E74C3C', linewidth=2,\n", + " markersize=5, label='Shuffled (standard brain-score)', zorder=3)\n", + "ax.plot(sigmas, contiguous_r, 's-', color='#3498DB', linewidth=2,\n", + " markersize=5, label='Contiguous (passage-level)', zorder=3)\n", + "ax.axhline(y=CEILING_RAW, color='gray', linestyle=':', alpha=0.7,\n", + " label=f'Ceiling (r={CEILING_RAW:.3f})')\n", + "ax.axhline(y=0, color='black', linestyle='-', alpha=0.2)\n", + "ax.set_xlabel('OASM sigma', fontsize=12)\n", + "ax.set_ylabel('Median Pearson r', fontsize=12)\n", + "ax.set_title(f'Raw neural predictivity', fontsize=13)\n", + "ax.legend(fontsize=9, loc='upper right')\n", + "ax.grid(True, alpha=0.2)\n", + "ax.set_xlim(-0.2, max(sigmas) + 0.2)\n", + "\n", + "# --- Right panel: ceiling-normalized ---\n", + "ax = axes[1]\n", + "ax.plot(sigmas, shuffled_norm, 'o-', color='#E74C3C', linewidth=2,\n", + " markersize=5, label='Shuffled', zorder=3)\n", + "ax.plot(sigmas, contiguous_norm, 's-', color='#3498DB', linewidth=2,\n", + " markersize=5, label='Contiguous', zorder=3)\n", + "ax.axhline(y=1.0, color='gray', linestyle=':', alpha=0.7, label='Ceiling')\n", + "ax.axhline(y=0, color='black', linestyle='-', alpha=0.2)\n", + "ax.set_xlabel('OASM sigma', fontsize=12)\n", + "ax.set_ylabel('Ceiling-normalized score', fontsize=12)\n", + "ax.set_title(f'Ceiling-normalized neural predictivity', fontsize=13)\n", + "ax.legend(fontsize=9, loc='upper right')\n", + "ax.grid(True, alpha=0.2)\n", + "ax.set_xlim(-0.2, max(sigmas) + 0.2)\n", + "\n", + "fig.suptitle(f'OASM on Pereira2018.{EXPERIMENT}: Zero linguistic content, high shuffled scores',\n", + " fontsize=14, fontweight='bold', y=1.02)\n", + "plt.tight_layout()\n", + "plt.savefig('oasm_shuffled_vs_contiguous.png', dpi=150, bbox_inches='tight')\n", + "plt.show()\n", + "\n", + "# Summary\n", + "best_shuf_idx = np.argmax(shuffled_r)\n", + "best_cont_idx = np.argmax(contiguous_r)\n", + "print(f\"Best shuffled: sigma={sigmas[best_shuf_idx]:.1f}, \"\n", + " f\"r={shuffled_r[best_shuf_idx]:.4f}, \"\n", + " f\"normalized={shuffled_norm[best_shuf_idx]:.3f}\")\n", + "print(f\"Best contiguous: sigma={sigmas[best_cont_idx]:.1f}, \"\n", + " f\"r={contiguous_r[best_cont_idx]:.4f}, \"\n", + " f\"normalized={contiguous_norm[best_cont_idx]:.3f}\")" + ] + }, + { + "cell_type": "markdown", + "id": "cell-12", + "metadata": {}, + "source": [ + "## Results summary table" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "id": "cell-13", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " Sigma Shuffled r Contiguous r Shuf/Ceiling\n", + "----------------------------------------------------\n", + " 0.0 0.0000 0.0000 0.000\n", + " 0.1 0.0000 0.0000 0.000\n", + " 0.2 0.4805 0.0000 1.322\n", + " 0.3 0.4803 0.0000 1.322\n", + " 0.4 0.4786 0.0000 1.317\n", + " 0.5 0.4710 0.0000 1.296\n", + " 0.6 0.4654 0.0000 1.281\n", + " 0.7 0.4584 0.0000 1.261\n", + " 0.8 0.4837 0.0000 1.331\n", + " 0.9 0.4922 0.0000 1.354\n", + " 1.0 0.4919 0.0000 1.353\n", + " 1.1 0.4910 0.0000 1.351\n", + " 1.2 0.4894 0.0000 1.347\n", + " 1.3 0.4869 0.0000 1.340\n", + " 1.4 0.4841 0.0000 1.332\n", + " 1.5 0.4808 0.0000 1.323\n", + " 1.6 0.4769 0.0000 1.312\n", + " 1.7 0.4772 0.0000 1.313\n", + " 1.8 0.4833 0.0000 1.330\n", + " 1.9 0.4836 0.0000 1.331\n", + " 2.0 0.4821 0.0000 1.326\n", + " 2.1 0.4792 0.0000 1.318\n", + " 2.2 0.4755 0.0000 1.308\n", + " 2.3 0.4667 0.0000 1.284\n", + " 2.4 0.4588 0.0000 1.263\n", + " 2.5 0.4486 0.0000 1.234\n", + " 2.6 0.4474 0.0000 1.231\n", + " 2.7 0.4465 0.0000 1.228\n", + " 2.8 0.4458 0.0000 1.227\n", + " 2.9 0.4453 0.0000 1.225\n", + " 3.0 0.4449 0.0000 1.224\n", + " 3.1 0.4447 0.0000 1.223\n", + " 3.2 0.4445 0.0000 1.223\n", + " 3.3 0.4443 0.0000 1.223\n", + " 3.4 0.4442 0.0000 1.222\n", + " 3.5 0.4442 0.0000 1.222\n", + " 3.6 0.4441 0.0000 1.222\n", + " 3.7 0.4441 0.0000 1.222\n", + " 3.8 0.4441 0.0000 1.222\n", + " 3.9 0.4441 0.0000 1.222\n", + " 4.0 0.4441 0.0000 1.222\n", + " 4.1 0.4441 0.0000 1.222\n", + " 4.2 0.4441 0.0000 1.222\n", + " 4.3 0.4441 0.0000 1.222\n", + " 4.4 0.4441 0.0000 1.222\n", + " 4.5 0.4441 0.0000 1.222\n", + " 4.6 0.4441 0.0000 1.222\n", + " 4.7 0.4441 0.0000 1.222\n", + " 4.8 0.4441 0.0000 1.222\n" + ] + } + ], + "source": [ + "print(f\"{'Sigma':>6} {'Shuffled r':>12} {'Contiguous r':>14} {'Shuf/Ceiling':>14}\")\n", + "print('-' * 52)\n", + "for s in sigmas:\n", + " sr = results_shuffled[s]\n", + " cr = results_contiguous[s]\n", + " sn = sr / CEILING_RAW\n", + " print(f\"{s:>6.1f} {sr:>12.4f} {cr:>14.4f} {sn:>14.3f}\")" + ] + }, + { + "cell_type": "markdown", + "id": "cell-14", + "metadata": {}, + "source": [ + "## Per-subject evaluation\n", + "\n", + "The paper reports per-subject scores (each dot = one fMRI participant). We do the same:\n", + "evaluate the best OASM sigma separately on each of the 10 Pereira2018 subjects' neuroids." + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Per-subject evaluation for best sigma=0.9\n", + "Subjects in data: ['018', '199', '288', '289', '296', '343', '366', '407', '426']\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/opt/anaconda3/envs/language-2026/lib/python3.11/site-packages/xarray/core/concat.py:500: FutureWarning: unique with argument that is not not a Series, Index, ExtensionArray, or np.ndarray is deprecated and will raise in a future version.\n", + " common_dims = tuple(pd.unique([d for v in vars for d in v.dims]))\n", + "per-subject evaluation: 100%|██████████| 9/9 [00:37<00:00, 4.15s/it]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Subject Shuffled Contiguous\n", + "------------------------------------\n", + "018 0.4269 0.0000\n", + "199 0.4723 0.0000\n", + "288 0.5111 0.0000\n", + "289 0.4278 0.0000\n", + "296 0.5026 0.0000\n", + "343 0.5298 0.0000\n", + "366 0.5313 0.0000\n", + "407 0.4991 0.0000\n", + "426 0.4365 0.0000\n", + "------------------------------------\n", + "Mean 0.4819 0.0000\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\n" + ] + } + ], + "source": [ + "best_sigma = max(results_shuffled, key=results_shuffled.get)\n", + "print(f\"Per-subject evaluation for best sigma={best_sigma:.1f}\")\n", + "print(f\"Subjects in data: {sorted(set(data['subject'].values))}\")\n", + "\n", + "model = OASMSubject(identifier=f'oasm-sigma{best_sigma}', sigma=best_sigma, max_features=MAX_FEATURES)\n", + "model.start_neural_recording(\n", + " recording_target=ArtificialSubject.RecordingTarget.language_system,\n", + " recording_type=ArtificialSubject.RecordingType.fMRI\n", + ")\n", + "oasm_predictions = get_model_predictions(model, data)\n", + "oasm_per_subject = evaluate_per_subject(oasm_predictions, data)\n", + "\n", + "print(f\"\\n{'Subject':<12} {'Shuffled':>10} {'Contiguous':>12}\")\n", + "print(\"-\" * 36)\n", + "for subj, s, c in zip(oasm_per_subject['subjects'],\n", + " oasm_per_subject['shuffled'],\n", + " oasm_per_subject['contiguous']):\n", + " print(f\"{subj:<12} {s:>10.4f} {c:>12.4f}\")\n", + "print(\"-\" * 36)\n", + "print(f\"{'Mean':<12} {oasm_per_subject['shuffled'].mean():>10.4f} \"\n", + " f\"{oasm_per_subject['contiguous'].mean():>12.4f}\")" + ] + }, + { + "cell_type": "markdown", + "id": "cell-15", + "metadata": {}, + "source": [ + "## Interpretation\n", + "\n", + "### What the results show\n", + "\n", + "OASM achieves high neural predictivity under shuffled CV despite encoding zero linguistic\n", + "content. Under contiguous CV (story-level GroupKFold), scores drop to exactly 0.0 for all\n", + "sigma values. Both evaluations use the same ridge regression -- only the split strategy differs.\n", + "\n", + "This confirms Hadidi et al.'s central finding: **shuffled cross-validation inflates scores**\n", + "by allowing temporal autocorrelation to leak between train and test sets. When adjacent\n", + "sentences from the same passage appear in both train and test, the Gaussian-smoothed identity\n", + "features are predictive -- not because of language understanding, but because of shared\n", + "temporal structure.\n", + "\n", + "### Why contiguous gives exactly zero\n", + "\n", + "OASM assigns each passage block to orthogonal dimensions in feature space. When entire stories\n", + "(groups of passages) are held out, the held-out stimuli occupy feature dimensions that are\n", + "all-zero in the training data. Ridge regression cannot learn any useful mapping from all-zero\n", + "columns, so predictions become constant and Pearson r = 0 for every neuroid.\n", + "\n", + "### Why this matters for brain-score\n", + "\n", + "Brain-score's standard evaluation uses shuffled `ShuffleSplit` on individual stimuli.\n", + "This means any model whose representations have temporal autocorrelation\n", + "(including all autoregressive LLMs) gets an inflated score. The OASM result\n", + "quantifies exactly how much of the score is attributable to this confound\n", + "rather than genuine linguistic alignment." + ] + }, + { + "cell_type": "markdown", + "id": "cell-16", + "metadata": {}, + "source": [ + "---\n", + "\n", + "## GPT2-XL Comparison\n", + "\n", + "To validate that our evaluation pipeline is sound, we run GPT2-XL (1.5B params, layer 43)\n", + "through the same shuffled and contiguous evaluations. Unlike OASM, GPT2-XL encodes genuine\n", + "linguistic content and should retain non-zero predictivity under contiguous splits." + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "id": "cell-17", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Loading GPT2-XL (1.5B params)...\n", + "Using device: mps\n", + "Getting GPT2-XL predictions (96 passages)...\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/opt/anaconda3/envs/language-2026/lib/python3.11/site-packages/xarray/core/concat.py:500: FutureWarning: unique with argument that is not not a Series, Index, ExtensionArray, or np.ndarray is deprecated and will raise in a future version.\n", + " common_dims = tuple(pd.unique([d for v in vars for d in v.dims]))\n", + "/opt/anaconda3/envs/language-2026/lib/python3.11/site-packages/xarray/core/concat.py:500: FutureWarning: unique with argument that is not not a Series, Index, ExtensionArray, or np.ndarray is deprecated and will raise in a future version.\n", + " common_dims = tuple(pd.unique([d for v in vars for d in v.dims]))\n", + "/opt/anaconda3/envs/language-2026/lib/python3.11/site-packages/xarray/core/concat.py:500: FutureWarning: unique with argument that is not not a Series, Index, ExtensionArray, or np.ndarray is deprecated and will raise in a future version.\n", + " common_dims = tuple(pd.unique([d for v in vars for d in v.dims]))\n", + "/opt/anaconda3/envs/language-2026/lib/python3.11/site-packages/xarray/core/concat.py:500: FutureWarning: unique with argument that is not not a Series, Index, ExtensionArray, or np.ndarray is deprecated and will raise in a future version.\n", + " common_dims = tuple(pd.unique([d for v in vars for d in v.dims]))\n", + "/opt/anaconda3/envs/language-2026/lib/python3.11/site-packages/xarray/core/concat.py:500: FutureWarning: unique with argument that is not not a Series, Index, ExtensionArray, or np.ndarray is deprecated and will raise in a future version.\n", + " common_dims = tuple(pd.unique([d for v in vars for d in v.dims]))\n", + "/opt/anaconda3/envs/language-2026/lib/python3.11/site-packages/xarray/core/concat.py:500: FutureWarning: unique with argument that is not not a Series, Index, ExtensionArray, or np.ndarray is deprecated and will raise in a future version.\n", + " common_dims = tuple(pd.unique([d for v in vars for d in v.dims]))\n", + "/opt/anaconda3/envs/language-2026/lib/python3.11/site-packages/xarray/core/concat.py:500: FutureWarning: unique with argument that is not not a Series, Index, ExtensionArray, or np.ndarray is deprecated and will raise in a future version.\n", + " common_dims = tuple(pd.unique([d for v in vars for d in v.dims]))\n", + "/opt/anaconda3/envs/language-2026/lib/python3.11/site-packages/xarray/core/concat.py:500: FutureWarning: unique with argument that is not not a Series, Index, ExtensionArray, or np.ndarray is deprecated and will raise in a future version.\n", + " common_dims = tuple(pd.unique([d for v in vars for d in v.dims]))\n", + "/opt/anaconda3/envs/language-2026/lib/python3.11/site-packages/xarray/core/concat.py:500: FutureWarning: unique with argument that is not not a Series, Index, ExtensionArray, or np.ndarray is deprecated and will raise in a future version.\n", + " common_dims = tuple(pd.unique([d for v in vars for d in v.dims]))\n", + "/opt/anaconda3/envs/language-2026/lib/python3.11/site-packages/xarray/core/concat.py:500: FutureWarning: unique with argument that is not not a Series, Index, ExtensionArray, or np.ndarray is deprecated and will raise in a future version.\n", + " common_dims = tuple(pd.unique([d for v in vars for d in v.dims]))\n", + "/opt/anaconda3/envs/language-2026/lib/python3.11/site-packages/xarray/core/concat.py:500: FutureWarning: unique with argument that is not not a Series, Index, ExtensionArray, or np.ndarray is deprecated and will raise in a future version.\n", + " common_dims = tuple(pd.unique([d for v in vars for d in v.dims]))\n", + "/opt/anaconda3/envs/language-2026/lib/python3.11/site-packages/xarray/core/concat.py:500: FutureWarning: unique with argument that is not not a Series, Index, ExtensionArray, or np.ndarray is deprecated and will raise in a future version.\n", + " common_dims = tuple(pd.unique([d for v in vars for d in v.dims]))\n", + "/opt/anaconda3/envs/language-2026/lib/python3.11/site-packages/xarray/core/concat.py:500: FutureWarning: unique with argument that is not not a Series, Index, ExtensionArray, or np.ndarray is deprecated and will raise in a future version.\n", + " common_dims = tuple(pd.unique([d for v in vars for d in v.dims]))\n", + "/opt/anaconda3/envs/language-2026/lib/python3.11/site-packages/xarray/core/concat.py:500: FutureWarning: unique with argument that is not not a Series, Index, ExtensionArray, or np.ndarray is deprecated and will raise in a future version.\n", + " common_dims = tuple(pd.unique([d for v in vars for d in v.dims]))\n", + "/opt/anaconda3/envs/language-2026/lib/python3.11/site-packages/xarray/core/concat.py:500: FutureWarning: unique with argument that is not not a Series, Index, ExtensionArray, or np.ndarray is deprecated and will raise in a future version.\n", + " common_dims = tuple(pd.unique([d for v in vars for d in v.dims]))\n", + "/opt/anaconda3/envs/language-2026/lib/python3.11/site-packages/xarray/core/concat.py:500: FutureWarning: unique with argument that is not not a Series, Index, ExtensionArray, or np.ndarray is deprecated and will raise in a future version.\n", + " common_dims = tuple(pd.unique([d for v in vars for d in v.dims]))\n", + "/opt/anaconda3/envs/language-2026/lib/python3.11/site-packages/xarray/core/concat.py:500: FutureWarning: unique with argument that is not not a Series, Index, ExtensionArray, or np.ndarray is deprecated and will raise in a future version.\n", + " common_dims = tuple(pd.unique([d for v in vars for d in v.dims]))\n", + "/opt/anaconda3/envs/language-2026/lib/python3.11/site-packages/xarray/core/concat.py:500: FutureWarning: unique with argument that is not not a Series, Index, ExtensionArray, or np.ndarray is deprecated and will raise in a future version.\n", + " common_dims = tuple(pd.unique([d for v in vars for d in v.dims]))\n", + "/opt/anaconda3/envs/language-2026/lib/python3.11/site-packages/xarray/core/concat.py:500: FutureWarning: unique with argument that is not not a Series, Index, ExtensionArray, or np.ndarray is deprecated and will raise in a future version.\n", + " common_dims = tuple(pd.unique([d for v in vars for d in v.dims]))\n", + "/opt/anaconda3/envs/language-2026/lib/python3.11/site-packages/xarray/core/concat.py:500: FutureWarning: unique with argument that is not not a Series, Index, ExtensionArray, or np.ndarray is deprecated and will raise in a future version.\n", + " common_dims = tuple(pd.unique([d for v in vars for d in v.dims]))\n", + "/opt/anaconda3/envs/language-2026/lib/python3.11/site-packages/xarray/core/concat.py:500: FutureWarning: unique with argument that is not not a Series, Index, ExtensionArray, or np.ndarray is deprecated and will raise in a future version.\n", + " common_dims = tuple(pd.unique([d for v in vars for d in v.dims]))\n", + "/opt/anaconda3/envs/language-2026/lib/python3.11/site-packages/xarray/core/concat.py:500: FutureWarning: unique with argument that is not not a Series, Index, ExtensionArray, or np.ndarray is deprecated and will raise in a future version.\n", + " common_dims = tuple(pd.unique([d for v in vars for d in v.dims]))\n", + "/opt/anaconda3/envs/language-2026/lib/python3.11/site-packages/xarray/core/concat.py:500: FutureWarning: unique with argument that is not not a Series, Index, ExtensionArray, or np.ndarray is deprecated and will raise in a future version.\n", + " common_dims = tuple(pd.unique([d for v in vars for d in v.dims]))\n", + "/opt/anaconda3/envs/language-2026/lib/python3.11/site-packages/xarray/core/concat.py:500: FutureWarning: unique with argument that is not not a Series, Index, ExtensionArray, or np.ndarray is deprecated and will raise in a future version.\n", + " common_dims = tuple(pd.unique([d for v in vars for d in v.dims]))\n", + "/opt/anaconda3/envs/language-2026/lib/python3.11/site-packages/xarray/core/concat.py:500: FutureWarning: unique with argument that is not not a Series, Index, ExtensionArray, or np.ndarray is deprecated and will raise in a future version.\n", + " common_dims = tuple(pd.unique([d for v in vars for d in v.dims]))\n", + "/opt/anaconda3/envs/language-2026/lib/python3.11/site-packages/xarray/core/concat.py:500: FutureWarning: unique with argument that is not not a Series, Index, ExtensionArray, or np.ndarray is deprecated and will raise in a future version.\n", + " common_dims = tuple(pd.unique([d for v in vars for d in v.dims]))\n", + "/opt/anaconda3/envs/language-2026/lib/python3.11/site-packages/xarray/core/concat.py:500: FutureWarning: unique with argument that is not not a Series, Index, ExtensionArray, or np.ndarray is deprecated and will raise in a future version.\n", + " common_dims = tuple(pd.unique([d for v in vars for d in v.dims]))\n", + "/opt/anaconda3/envs/language-2026/lib/python3.11/site-packages/xarray/core/concat.py:500: FutureWarning: unique with argument that is not not a Series, Index, ExtensionArray, or np.ndarray is deprecated and will raise in a future version.\n", + " common_dims = tuple(pd.unique([d for v in vars for d in v.dims]))\n", + "/opt/anaconda3/envs/language-2026/lib/python3.11/site-packages/xarray/core/concat.py:500: FutureWarning: unique with argument that is not not a Series, Index, ExtensionArray, or np.ndarray is deprecated and will raise in a future version.\n", + " common_dims = tuple(pd.unique([d for v in vars for d in v.dims]))\n", + "/opt/anaconda3/envs/language-2026/lib/python3.11/site-packages/xarray/core/concat.py:500: FutureWarning: unique with argument that is not not a Series, Index, ExtensionArray, or np.ndarray is deprecated and will raise in a future version.\n", + " common_dims = tuple(pd.unique([d for v in vars for d in v.dims]))\n", + "/opt/anaconda3/envs/language-2026/lib/python3.11/site-packages/xarray/core/concat.py:500: FutureWarning: unique with argument that is not not a Series, Index, ExtensionArray, or np.ndarray is deprecated and will raise in a future version.\n", + " common_dims = tuple(pd.unique([d for v in vars for d in v.dims]))\n", + "/opt/anaconda3/envs/language-2026/lib/python3.11/site-packages/xarray/core/concat.py:500: FutureWarning: unique with argument that is not not a Series, Index, ExtensionArray, or np.ndarray is deprecated and will raise in a future version.\n", + " common_dims = tuple(pd.unique([d for v in vars for d in v.dims]))\n", + "/opt/anaconda3/envs/language-2026/lib/python3.11/site-packages/xarray/core/concat.py:500: FutureWarning: unique with argument that is not not a Series, Index, ExtensionArray, or np.ndarray is deprecated and will raise in a future version.\n", + " common_dims = tuple(pd.unique([d for v in vars for d in v.dims]))\n", + "/opt/anaconda3/envs/language-2026/lib/python3.11/site-packages/xarray/core/concat.py:500: FutureWarning: unique with argument that is not not a Series, Index, ExtensionArray, or np.ndarray is deprecated and will raise in a future version.\n", + " common_dims = tuple(pd.unique([d for v in vars for d in v.dims]))\n", + "/opt/anaconda3/envs/language-2026/lib/python3.11/site-packages/xarray/core/concat.py:500: FutureWarning: unique with argument that is not not a Series, Index, ExtensionArray, or np.ndarray is deprecated and will raise in a future version.\n", + " common_dims = tuple(pd.unique([d for v in vars for d in v.dims]))\n", + "/opt/anaconda3/envs/language-2026/lib/python3.11/site-packages/xarray/core/concat.py:500: FutureWarning: unique with argument that is not not a Series, Index, ExtensionArray, or np.ndarray is deprecated and will raise in a future version.\n", + " common_dims = tuple(pd.unique([d for v in vars for d in v.dims]))\n", + "/opt/anaconda3/envs/language-2026/lib/python3.11/site-packages/xarray/core/concat.py:500: FutureWarning: unique with argument that is not not a Series, Index, ExtensionArray, or np.ndarray is deprecated and will raise in a future version.\n", + " common_dims = tuple(pd.unique([d for v in vars for d in v.dims]))\n", + "/opt/anaconda3/envs/language-2026/lib/python3.11/site-packages/xarray/core/concat.py:500: FutureWarning: unique with argument that is not not a Series, Index, ExtensionArray, or np.ndarray is deprecated and will raise in a future version.\n", + " common_dims = tuple(pd.unique([d for v in vars for d in v.dims]))\n", + "/opt/anaconda3/envs/language-2026/lib/python3.11/site-packages/xarray/core/concat.py:500: FutureWarning: unique with argument that is not not a Series, Index, ExtensionArray, or np.ndarray is deprecated and will raise in a future version.\n", + " common_dims = tuple(pd.unique([d for v in vars for d in v.dims]))\n", + "/opt/anaconda3/envs/language-2026/lib/python3.11/site-packages/xarray/core/concat.py:500: FutureWarning: unique with argument that is not not a Series, Index, ExtensionArray, or np.ndarray is deprecated and will raise in a future version.\n", + " common_dims = tuple(pd.unique([d for v in vars for d in v.dims]))\n", + "/opt/anaconda3/envs/language-2026/lib/python3.11/site-packages/xarray/core/concat.py:500: FutureWarning: unique with argument that is not not a Series, Index, ExtensionArray, or np.ndarray is deprecated and will raise in a future version.\n", + " common_dims = tuple(pd.unique([d for v in vars for d in v.dims]))\n", + "/opt/anaconda3/envs/language-2026/lib/python3.11/site-packages/xarray/core/concat.py:500: FutureWarning: unique with argument that is not not a Series, Index, ExtensionArray, or np.ndarray is deprecated and will raise in a future version.\n", + " common_dims = tuple(pd.unique([d for v in vars for d in v.dims]))\n", + "/opt/anaconda3/envs/language-2026/lib/python3.11/site-packages/xarray/core/concat.py:500: FutureWarning: unique with argument that is not not a Series, Index, ExtensionArray, or np.ndarray is deprecated and will raise in a future version.\n", + " common_dims = tuple(pd.unique([d for v in vars for d in v.dims]))\n", + "/opt/anaconda3/envs/language-2026/lib/python3.11/site-packages/xarray/core/concat.py:500: FutureWarning: unique with argument that is not not a Series, Index, ExtensionArray, or np.ndarray is deprecated and will raise in a future version.\n", + " common_dims = tuple(pd.unique([d for v in vars for d in v.dims]))\n", + "/opt/anaconda3/envs/language-2026/lib/python3.11/site-packages/xarray/core/concat.py:500: FutureWarning: unique with argument that is not not a Series, Index, ExtensionArray, or np.ndarray is deprecated and will raise in a future version.\n", + " common_dims = tuple(pd.unique([d for v in vars for d in v.dims]))\n", + "/opt/anaconda3/envs/language-2026/lib/python3.11/site-packages/xarray/core/concat.py:500: FutureWarning: unique with argument that is not not a Series, Index, ExtensionArray, or np.ndarray is deprecated and will raise in a future version.\n", + " common_dims = tuple(pd.unique([d for v in vars for d in v.dims]))\n", + "/opt/anaconda3/envs/language-2026/lib/python3.11/site-packages/xarray/core/concat.py:500: FutureWarning: unique with argument that is not not a Series, Index, ExtensionArray, or np.ndarray is deprecated and will raise in a future version.\n", + " common_dims = tuple(pd.unique([d for v in vars for d in v.dims]))\n", + "/opt/anaconda3/envs/language-2026/lib/python3.11/site-packages/xarray/core/concat.py:500: FutureWarning: unique with argument that is not not a Series, Index, ExtensionArray, or np.ndarray is deprecated and will raise in a future version.\n", + " common_dims = tuple(pd.unique([d for v in vars for d in v.dims]))\n", + "/opt/anaconda3/envs/language-2026/lib/python3.11/site-packages/xarray/core/concat.py:500: FutureWarning: unique with argument that is not not a Series, Index, ExtensionArray, or np.ndarray is deprecated and will raise in a future version.\n", + " common_dims = tuple(pd.unique([d for v in vars for d in v.dims]))\n", + "/opt/anaconda3/envs/language-2026/lib/python3.11/site-packages/xarray/core/concat.py:500: FutureWarning: unique with argument that is not not a Series, Index, ExtensionArray, or np.ndarray is deprecated and will raise in a future version.\n", + " common_dims = tuple(pd.unique([d for v in vars for d in v.dims]))\n", + "/opt/anaconda3/envs/language-2026/lib/python3.11/site-packages/xarray/core/concat.py:500: FutureWarning: unique with argument that is not not a Series, Index, ExtensionArray, or np.ndarray is deprecated and will raise in a future version.\n", + " common_dims = tuple(pd.unique([d for v in vars for d in v.dims]))\n", + "/opt/anaconda3/envs/language-2026/lib/python3.11/site-packages/xarray/core/concat.py:500: FutureWarning: unique with argument that is not not a Series, Index, ExtensionArray, or np.ndarray is deprecated and will raise in a future version.\n", + " common_dims = tuple(pd.unique([d for v in vars for d in v.dims]))\n", + "/opt/anaconda3/envs/language-2026/lib/python3.11/site-packages/xarray/core/concat.py:500: FutureWarning: unique with argument that is not not a Series, Index, ExtensionArray, or np.ndarray is deprecated and will raise in a future version.\n", + " common_dims = tuple(pd.unique([d for v in vars for d in v.dims]))\n", + "/opt/anaconda3/envs/language-2026/lib/python3.11/site-packages/xarray/core/concat.py:500: FutureWarning: unique with argument that is not not a Series, Index, ExtensionArray, or np.ndarray is deprecated and will raise in a future version.\n", + " common_dims = tuple(pd.unique([d for v in vars for d in v.dims]))\n", + "/opt/anaconda3/envs/language-2026/lib/python3.11/site-packages/xarray/core/concat.py:500: FutureWarning: unique with argument that is not not a Series, Index, ExtensionArray, or np.ndarray is deprecated and will raise in a future version.\n", + " common_dims = tuple(pd.unique([d for v in vars for d in v.dims]))\n", + "/opt/anaconda3/envs/language-2026/lib/python3.11/site-packages/xarray/core/concat.py:500: FutureWarning: unique with argument that is not not a Series, Index, ExtensionArray, or np.ndarray is deprecated and will raise in a future version.\n", + " common_dims = tuple(pd.unique([d for v in vars for d in v.dims]))\n", + "/opt/anaconda3/envs/language-2026/lib/python3.11/site-packages/xarray/core/concat.py:500: FutureWarning: unique with argument that is not not a Series, Index, ExtensionArray, or np.ndarray is deprecated and will raise in a future version.\n", + " common_dims = tuple(pd.unique([d for v in vars for d in v.dims]))\n", + "/opt/anaconda3/envs/language-2026/lib/python3.11/site-packages/xarray/core/concat.py:500: FutureWarning: unique with argument that is not not a Series, Index, ExtensionArray, or np.ndarray is deprecated and will raise in a future version.\n", + " common_dims = tuple(pd.unique([d for v in vars for d in v.dims]))\n", + "/opt/anaconda3/envs/language-2026/lib/python3.11/site-packages/xarray/core/concat.py:500: FutureWarning: unique with argument that is not not a Series, Index, ExtensionArray, or np.ndarray is deprecated and will raise in a future version.\n", + " common_dims = tuple(pd.unique([d for v in vars for d in v.dims]))\n", + "/opt/anaconda3/envs/language-2026/lib/python3.11/site-packages/xarray/core/concat.py:500: FutureWarning: unique with argument that is not not a Series, Index, ExtensionArray, or np.ndarray is deprecated and will raise in a future version.\n", + " common_dims = tuple(pd.unique([d for v in vars for d in v.dims]))\n", + "/opt/anaconda3/envs/language-2026/lib/python3.11/site-packages/xarray/core/concat.py:500: FutureWarning: unique with argument that is not not a Series, Index, ExtensionArray, or np.ndarray is deprecated and will raise in a future version.\n", + " common_dims = tuple(pd.unique([d for v in vars for d in v.dims]))\n", + "/opt/anaconda3/envs/language-2026/lib/python3.11/site-packages/xarray/core/concat.py:500: FutureWarning: unique with argument that is not not a Series, Index, ExtensionArray, or np.ndarray is deprecated and will raise in a future version.\n", + " common_dims = tuple(pd.unique([d for v in vars for d in v.dims]))\n", + "/opt/anaconda3/envs/language-2026/lib/python3.11/site-packages/xarray/core/concat.py:500: FutureWarning: unique with argument that is not not a Series, Index, ExtensionArray, or np.ndarray is deprecated and will raise in a future version.\n", + " common_dims = tuple(pd.unique([d for v in vars for d in v.dims]))\n", + "/opt/anaconda3/envs/language-2026/lib/python3.11/site-packages/xarray/core/concat.py:500: FutureWarning: unique with argument that is not not a Series, Index, ExtensionArray, or np.ndarray is deprecated and will raise in a future version.\n", + " common_dims = tuple(pd.unique([d for v in vars for d in v.dims]))\n", + "/opt/anaconda3/envs/language-2026/lib/python3.11/site-packages/xarray/core/concat.py:500: FutureWarning: unique with argument that is not not a Series, Index, ExtensionArray, or np.ndarray is deprecated and will raise in a future version.\n", + " common_dims = tuple(pd.unique([d for v in vars for d in v.dims]))\n", + "/opt/anaconda3/envs/language-2026/lib/python3.11/site-packages/xarray/core/concat.py:500: FutureWarning: unique with argument that is not not a Series, Index, ExtensionArray, or np.ndarray is deprecated and will raise in a future version.\n", + " common_dims = tuple(pd.unique([d for v in vars for d in v.dims]))\n", + "/opt/anaconda3/envs/language-2026/lib/python3.11/site-packages/xarray/core/concat.py:500: FutureWarning: unique with argument that is not not a Series, Index, ExtensionArray, or np.ndarray is deprecated and will raise in a future version.\n", + " common_dims = tuple(pd.unique([d for v in vars for d in v.dims]))\n", + "/opt/anaconda3/envs/language-2026/lib/python3.11/site-packages/xarray/core/concat.py:500: FutureWarning: unique with argument that is not not a Series, Index, ExtensionArray, or np.ndarray is deprecated and will raise in a future version.\n", + " common_dims = tuple(pd.unique([d for v in vars for d in v.dims]))\n", + "/opt/anaconda3/envs/language-2026/lib/python3.11/site-packages/xarray/core/concat.py:500: FutureWarning: unique with argument that is not not a Series, Index, ExtensionArray, or np.ndarray is deprecated and will raise in a future version.\n", + " common_dims = tuple(pd.unique([d for v in vars for d in v.dims]))\n", + "/opt/anaconda3/envs/language-2026/lib/python3.11/site-packages/xarray/core/concat.py:500: FutureWarning: unique with argument that is not not a Series, Index, ExtensionArray, or np.ndarray is deprecated and will raise in a future version.\n", + " common_dims = tuple(pd.unique([d for v in vars for d in v.dims]))\n", + "/opt/anaconda3/envs/language-2026/lib/python3.11/site-packages/xarray/core/concat.py:500: FutureWarning: unique with argument that is not not a Series, Index, ExtensionArray, or np.ndarray is deprecated and will raise in a future version.\n", + " common_dims = tuple(pd.unique([d for v in vars for d in v.dims]))\n", + "/opt/anaconda3/envs/language-2026/lib/python3.11/site-packages/xarray/core/concat.py:500: FutureWarning: unique with argument that is not not a Series, Index, ExtensionArray, or np.ndarray is deprecated and will raise in a future version.\n", + " common_dims = tuple(pd.unique([d for v in vars for d in v.dims]))\n", + "/opt/anaconda3/envs/language-2026/lib/python3.11/site-packages/xarray/core/concat.py:500: FutureWarning: unique with argument that is not not a Series, Index, ExtensionArray, or np.ndarray is deprecated and will raise in a future version.\n", + " common_dims = tuple(pd.unique([d for v in vars for d in v.dims]))\n", + "/opt/anaconda3/envs/language-2026/lib/python3.11/site-packages/xarray/core/concat.py:500: FutureWarning: unique with argument that is not not a Series, Index, ExtensionArray, or np.ndarray is deprecated and will raise in a future version.\n", + " common_dims = tuple(pd.unique([d for v in vars for d in v.dims]))\n", + "/opt/anaconda3/envs/language-2026/lib/python3.11/site-packages/xarray/core/concat.py:500: FutureWarning: unique with argument that is not not a Series, Index, ExtensionArray, or np.ndarray is deprecated and will raise in a future version.\n", + " common_dims = tuple(pd.unique([d for v in vars for d in v.dims]))\n", + "/opt/anaconda3/envs/language-2026/lib/python3.11/site-packages/xarray/core/concat.py:500: FutureWarning: unique with argument that is not not a Series, Index, ExtensionArray, or np.ndarray is deprecated and will raise in a future version.\n", + " common_dims = tuple(pd.unique([d for v in vars for d in v.dims]))\n", + "/opt/anaconda3/envs/language-2026/lib/python3.11/site-packages/xarray/core/concat.py:500: FutureWarning: unique with argument that is not not a Series, Index, ExtensionArray, or np.ndarray is deprecated and will raise in a future version.\n", + " common_dims = tuple(pd.unique([d for v in vars for d in v.dims]))\n", + "/opt/anaconda3/envs/language-2026/lib/python3.11/site-packages/xarray/core/concat.py:500: FutureWarning: unique with argument that is not not a Series, Index, ExtensionArray, or np.ndarray is deprecated and will raise in a future version.\n", + " common_dims = tuple(pd.unique([d for v in vars for d in v.dims]))\n", + "/opt/anaconda3/envs/language-2026/lib/python3.11/site-packages/xarray/core/concat.py:500: FutureWarning: unique with argument that is not not a Series, Index, ExtensionArray, or np.ndarray is deprecated and will raise in a future version.\n", + " common_dims = tuple(pd.unique([d for v in vars for d in v.dims]))\n", + "/opt/anaconda3/envs/language-2026/lib/python3.11/site-packages/xarray/core/concat.py:500: FutureWarning: unique with argument that is not not a Series, Index, ExtensionArray, or np.ndarray is deprecated and will raise in a future version.\n", + " common_dims = tuple(pd.unique([d for v in vars for d in v.dims]))\n", + "/opt/anaconda3/envs/language-2026/lib/python3.11/site-packages/xarray/core/concat.py:500: FutureWarning: unique with argument that is not not a Series, Index, ExtensionArray, or np.ndarray is deprecated and will raise in a future version.\n", + " common_dims = tuple(pd.unique([d for v in vars for d in v.dims]))\n", + "/opt/anaconda3/envs/language-2026/lib/python3.11/site-packages/xarray/core/concat.py:500: FutureWarning: unique with argument that is not not a Series, Index, ExtensionArray, or np.ndarray is deprecated and will raise in a future version.\n", + " common_dims = tuple(pd.unique([d for v in vars for d in v.dims]))\n", + "/opt/anaconda3/envs/language-2026/lib/python3.11/site-packages/xarray/core/concat.py:500: FutureWarning: unique with argument that is not not a Series, Index, ExtensionArray, or np.ndarray is deprecated and will raise in a future version.\n", + " common_dims = tuple(pd.unique([d for v in vars for d in v.dims]))\n", + "/opt/anaconda3/envs/language-2026/lib/python3.11/site-packages/xarray/core/concat.py:500: FutureWarning: unique with argument that is not not a Series, Index, ExtensionArray, or np.ndarray is deprecated and will raise in a future version.\n", + " common_dims = tuple(pd.unique([d for v in vars for d in v.dims]))\n", + "/opt/anaconda3/envs/language-2026/lib/python3.11/site-packages/xarray/core/concat.py:500: FutureWarning: unique with argument that is not not a Series, Index, ExtensionArray, or np.ndarray is deprecated and will raise in a future version.\n", + " common_dims = tuple(pd.unique([d for v in vars for d in v.dims]))\n", + "/opt/anaconda3/envs/language-2026/lib/python3.11/site-packages/xarray/core/concat.py:500: FutureWarning: unique with argument that is not not a Series, Index, ExtensionArray, or np.ndarray is deprecated and will raise in a future version.\n", + " common_dims = tuple(pd.unique([d for v in vars for d in v.dims]))\n", + "/opt/anaconda3/envs/language-2026/lib/python3.11/site-packages/xarray/core/concat.py:500: FutureWarning: unique with argument that is not not a Series, Index, ExtensionArray, or np.ndarray is deprecated and will raise in a future version.\n", + " common_dims = tuple(pd.unique([d for v in vars for d in v.dims]))\n", + "/opt/anaconda3/envs/language-2026/lib/python3.11/site-packages/xarray/core/concat.py:500: FutureWarning: unique with argument that is not not a Series, Index, ExtensionArray, or np.ndarray is deprecated and will raise in a future version.\n", + " common_dims = tuple(pd.unique([d for v in vars for d in v.dims]))\n", + "/opt/anaconda3/envs/language-2026/lib/python3.11/site-packages/xarray/core/concat.py:500: FutureWarning: unique with argument that is not not a Series, Index, ExtensionArray, or np.ndarray is deprecated and will raise in a future version.\n", + " common_dims = tuple(pd.unique([d for v in vars for d in v.dims]))\n", + "/opt/anaconda3/envs/language-2026/lib/python3.11/site-packages/xarray/core/concat.py:500: FutureWarning: unique with argument that is not not a Series, Index, ExtensionArray, or np.ndarray is deprecated and will raise in a future version.\n", + " common_dims = tuple(pd.unique([d for v in vars for d in v.dims]))\n", + "/opt/anaconda3/envs/language-2026/lib/python3.11/site-packages/xarray/core/concat.py:500: FutureWarning: unique with argument that is not not a Series, Index, ExtensionArray, or np.ndarray is deprecated and will raise in a future version.\n", + " common_dims = tuple(pd.unique([d for v in vars for d in v.dims]))\n", + "/opt/anaconda3/envs/language-2026/lib/python3.11/site-packages/xarray/core/concat.py:500: FutureWarning: unique with argument that is not not a Series, Index, ExtensionArray, or np.ndarray is deprecated and will raise in a future version.\n", + " common_dims = tuple(pd.unique([d for v in vars for d in v.dims]))\n", + "/opt/anaconda3/envs/language-2026/lib/python3.11/site-packages/xarray/core/concat.py:500: FutureWarning: unique with argument that is not not a Series, Index, ExtensionArray, or np.ndarray is deprecated and will raise in a future version.\n", + " common_dims = tuple(pd.unique([d for v in vars for d in v.dims]))\n", + "/opt/anaconda3/envs/language-2026/lib/python3.11/site-packages/xarray/core/concat.py:500: FutureWarning: unique with argument that is not not a Series, Index, ExtensionArray, or np.ndarray is deprecated and will raise in a future version.\n", + " common_dims = tuple(pd.unique([d for v in vars for d in v.dims]))\n", + "/opt/anaconda3/envs/language-2026/lib/python3.11/site-packages/xarray/core/concat.py:500: FutureWarning: unique with argument that is not not a Series, Index, ExtensionArray, or np.ndarray is deprecated and will raise in a future version.\n", + " common_dims = tuple(pd.unique([d for v in vars for d in v.dims]))\n", + "/opt/anaconda3/envs/language-2026/lib/python3.11/site-packages/xarray/core/concat.py:500: FutureWarning: unique with argument that is not not a Series, Index, ExtensionArray, or np.ndarray is deprecated and will raise in a future version.\n", + " common_dims = tuple(pd.unique([d for v in vars for d in v.dims]))\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "GPT2-XL predictions shape: (384, 1600)\n", + "\n", + "Per-subject evaluation for GPT2-XL...\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "per-subject evaluation: 100%|██████████| 9/9 [00:54<00:00, 6.03s/it]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Subject Shuffled Contiguous\n", + "------------------------------------\n", + "018 0.3107 0.0508\n", + "199 0.3480 -0.0179\n", + "288 0.3699 0.0018\n", + "289 0.4044 0.1223\n", + "296 0.3902 0.0549\n", + "343 0.4327 0.1304\n", + "366 0.3408 0.0352\n", + "407 0.4087 0.0186\n", + "426 0.4176 0.1775\n", + "------------------------------------\n", + "Mean 0.3804 0.0637\n", + "\n", + "Model Shuffled (mean) Contiguous (mean)\n", + "------------------------------------------------\n", + "GPT2-XL 0.3804 0.0637\n", + "OASM 0.4819 0.0000\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\n" + ] + } + ], + "source": [ + "from brainscore_language.model_helpers.huggingface import HuggingfaceSubject\n", + "\n", + "print(\"Loading GPT2-XL (1.5B params)...\")\n", + "gpt2xl = HuggingfaceSubject(\n", + " model_id='gpt2-xl',\n", + " region_layer_mapping={\n", + " ArtificialSubject.RecordingTarget.language_system: 'transformer.h.43'\n", + " }\n", + ")\n", + "gpt2xl.start_neural_recording(\n", + " recording_target=ArtificialSubject.RecordingTarget.language_system,\n", + " recording_type=ArtificialSubject.RecordingType.fMRI\n", + ")\n", + "\n", + "print(\"Getting GPT2-XL predictions (96 passages)...\")\n", + "gpt2xl_predictions = get_model_predictions(gpt2xl, data)\n", + "print(f\"GPT2-XL predictions shape: {gpt2xl_predictions.shape}\")\n", + "\n", + "print(\"\\nPer-subject evaluation for GPT2-XL...\")\n", + "gpt2xl_per_subject = evaluate_per_subject(gpt2xl_predictions, data)\n", + "\n", + "print(f\"\\n{'Subject':<12} {'Shuffled':>10} {'Contiguous':>12}\")\n", + "print(\"-\" * 36)\n", + "for subj, s, c in zip(gpt2xl_per_subject['subjects'],\n", + " gpt2xl_per_subject['shuffled'],\n", + " gpt2xl_per_subject['contiguous']):\n", + " print(f\"{subj:<12} {s:>10.4f} {c:>12.4f}\")\n", + "print(\"-\" * 36)\n", + "print(f\"{'Mean':<12} {gpt2xl_per_subject['shuffled'].mean():>10.4f} \"\n", + " f\"{gpt2xl_per_subject['contiguous'].mean():>12.4f}\")\n", + "\n", + "print(f\"\\n{'Model':<12} {'Shuffled (mean)':>16} {'Contiguous (mean)':>18}\")\n", + "print(\"-\" * 48)\n", + "print(f\"{'GPT2-XL':<12} {gpt2xl_per_subject['shuffled'].mean():>16.4f} \"\n", + " f\"{gpt2xl_per_subject['contiguous'].mean():>18.4f}\")\n", + "print(f\"{'OASM':<12} {oasm_per_subject['shuffled'].mean():>16.4f} \"\n", + " f\"{oasm_per_subject['contiguous'].mean():>18.4f}\")" + ] + }, + { + "cell_type": "markdown", + "id": "cell-18", + "metadata": {}, + "source": [ + "---\n", + "\n", + "## Figure 1 Reproduction: OASM vs GPT2-XL (Hadidi et al., 2025)\n", + "\n", + "Figure 1 is the paper's central result. It compares OASM (zero linguistic content)\n", + "against GPT2-XL variants across all three neural benchmarks, under both shuffled\n", + "and contiguous cross-validation splits, using **ridge regression (L2)**.\n", + "\n", + "Source data: downloaded from the paper's GitHub repo\n", + "([source_data/figure1/](https://github.com/ebrahimfeghhi/beyond-brainscore/tree/main/source_data/figure1))." + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "id": "cell-19", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "OASM per-subject (Pereira):\n", + " Shuffled: mean=0.4819 range=[0.4269, 0.5313]\n", + " Contiguous: mean=0.0000 range=[0.0000, 0.0000]\n", + "\n", + "GPT2-XL per-subject (Pereira):\n", + " Shuffled: mean=0.3804 range=[0.3107, 0.4327]\n", + " Contiguous: mean=0.0637 range=[-0.0179, 0.1775]\n", + "\n", + "Paper's OASM on Pereira shuffled: mean=0.4511 (range [0.3859, 0.5333])\n", + "\n", + "Loaded 6 source CSVs\n" + ] + } + ], + "source": [ + "import pandas as pd\n", + "from pathlib import Path\n", + "\n", + "SOURCE_DIR = Path(\"source_data/figure1\")\n", + "\n", + "DATASETS = [\"pereira\", \"fedorenko\", \"blank\"]\n", + "DATASET_LABELS = {\"pereira\": \"Pereira2018\", \"fedorenko\": \"Fedorenko2016\", \"blank\": \"Blank2014\"}\n", + "CONDITIONS = [\"shuffled\", \"contig\"]\n", + "MODELS = [\"GPT2-XL\", \"GPT2-XL-mp\", \"GPT2-XL-sp\", \"OASM\"]\n", + "MODEL_COLORS = {\n", + " \"GPT2-XL\": \"#7f7f7f\",\n", + " \"GPT2-XL-mp\": \"#1f77b4\",\n", + " \"GPT2-XL-sp\": \"#2ca02c\",\n", + " \"OASM\": \"#d62728\",\n", + "}\n", + "\n", + "# Load Pearson r CSVs (L2-regularized, the paper's main analysis)\n", + "fig1_data = {}\n", + "for dataset in DATASETS:\n", + " for condition in CONDITIONS:\n", + " fname = SOURCE_DIR / f\"{dataset}_pearson_r_{condition}.csv\"\n", + " fig1_data[(dataset, condition)] = pd.read_csv(fname)\n", + "\n", + "# Our per-subject results (arrays of scores, one per fMRI participant)\n", + "OUR_OASM_PER_SUBJ = {}\n", + "OUR_GPT2XL_PER_SUBJ = {}\n", + "\n", + "if 'oasm_per_subject' in dir():\n", + " OUR_OASM_PER_SUBJ[(\"pereira\", \"shuffled\")] = oasm_per_subject['shuffled']\n", + " OUR_OASM_PER_SUBJ[(\"pereira\", \"contig\")] = oasm_per_subject['contiguous']\n", + " print(f\"OASM per-subject (Pereira):\")\n", + " print(f\" Shuffled: mean={oasm_per_subject['shuffled'].mean():.4f} \"\n", + " f\"range=[{oasm_per_subject['shuffled'].min():.4f}, {oasm_per_subject['shuffled'].max():.4f}]\")\n", + " print(f\" Contiguous: mean={oasm_per_subject['contiguous'].mean():.4f} \"\n", + " f\"range=[{oasm_per_subject['contiguous'].min():.4f}, {oasm_per_subject['contiguous'].max():.4f}]\")\n", + "\n", + "if 'gpt2xl_per_subject' in dir():\n", + " OUR_GPT2XL_PER_SUBJ[(\"pereira\", \"shuffled\")] = gpt2xl_per_subject['shuffled']\n", + " OUR_GPT2XL_PER_SUBJ[(\"pereira\", \"contig\")] = gpt2xl_per_subject['contiguous']\n", + " print(f\"\\nGPT2-XL per-subject (Pereira):\")\n", + " print(f\" Shuffled: mean={gpt2xl_per_subject['shuffled'].mean():.4f} \"\n", + " f\"range=[{gpt2xl_per_subject['shuffled'].min():.4f}, {gpt2xl_per_subject['shuffled'].max():.4f}]\")\n", + " print(f\" Contiguous: mean={gpt2xl_per_subject['contiguous'].mean():.4f} \"\n", + " f\"range=[{gpt2xl_per_subject['contiguous'].min():.4f}, {gpt2xl_per_subject['contiguous'].max():.4f}]\")\n", + "\n", + "# Paper's OASM for comparison\n", + "paper_pereira_shuf = fig1_data[(\"pereira\", \"shuffled\")]\n", + "paper_oasm = paper_pereira_shuf[paper_pereira_shuf[\"Model\"] == \"OASM\"][\"perf\"]\n", + "print(f\"\\nPaper's OASM on Pereira shuffled: mean={paper_oasm.mean():.4f} \"\n", + " f\"(range [{paper_oasm.min():.4f}, {paper_oasm.max():.4f}])\")\n", + "\n", + "print(f\"\\nLoaded {len(fig1_data)} source CSVs\")" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "id": "cell-20", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAABW0AAANFCAYAAAAAuN7SAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjgsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvwVt1zgAAAAlwSFlzAAAPYQAAD2EBqD+naQABAABJREFUeJzs3Qd8E+UbB/Cne5ddKHuVIihbURFBRRBUBBEQVJaCOJkqQ0EBAUWWgKIIiBNQ3AoqCDLExUZW2TLKhlK62/w/v5f/Gy9pkiZt2ibt7+sn0lwud++N3OWePPe8PiaTySRERERERERERERE5BF8C7sBRERERERERERERPQfBm2JiIiIiIiIiIiIPAiDtkREREREREREREQehEFbIiIiIiIiIiIiIg/CoC0RERERERERERGRB2HQloiIiIiIiIiIiMiDMGhLRERERERERERE5EEYtCUiIiIiIiIiIiLyIAzaEhEREREREREREXkQBm2JiIjyYM2aNeLj46Me1atX57p00Z49eyQgIECtvzFjxnjc+uvTp495+7788svm4fhbD8c4zmjdurX5Pe+//36O8/BGhw8fNi8LHpSzli1bqnVVu3ZtSUtL4yojIiIiIoVBWyIiIgME04xBJ1sPBN+Kq2+++Ub69esnDRo0EH9/f5cDl9aee+45ycjIkLCwMBk0aJDd4B+C446CoLmdf3Hx1VdfqYAwHrbWpbdBcPPdd9+Vnj17Sr169aRMmTISGBgo0dHR0rlzZ/n1118d7sN33nmnlC5dWoKDgyUmJkaGDRsm586dy/M8rPdbW4/vvvvO4j2jR49W/x44cEDmzJkj7oTP1kcffST33HOPVKxYUYKCgqREiRLq8ztkyBA1T0fwXmPb8f7z5887/BGmb9++UqNGDTUuPtdVqlSRm2++WZ544gnZsGGDxfjGHyzwiIqKktTUVJvHCev16OlOnz4tEydOVMcpLBf2HexzdevWlXvvvVfefvttOXnypMV7bO0vvr6+UrJkSbnxxhtlxowZ5sC+M+cqW+ettWvXytChQ6V58+ZSqVIltZ0iIyPlhhtukOnTpzv1w0FWVpa0atXKPG38jWFGW7ZsUcts/UOVM8d2IiIi+j8TERERmS1cuNCE06OjR6tWrczjX7x40bRu3Tr1+Ouvv4r8mrzvvvtsrpPevXu7PK1NmzaZ3//YY49ZvHbo0CGL6a9evTrb+7Ed8jJ/Z2C6eh5jx441Dz9y5Ih5u+/bt8+paRnbi/1Mw/v1tDDdglwOd7Pebvnl5MmTOX5O33333WzvGzNmjN3xq1evbjp69Gie5mG9/LYe3377bbZ21apVS70WFRVlSk1Ndcs6OnHihKl58+YO2xIYGGiaO3eu3Wnccccd2d4ze/Zsm+P+/vvvptDQUIfzGz16tN39Uj8WLVpkMc6VK1dMpUqVyjaeJ/voo49MEREROe4LL7zwgsX7chofj5tvvtmUkpLi1LnK1nmrXbt2OY6Xnp6e4zIePHjQYhnfeOMN82toX/369c2vderUyaVjOxEREV3lr4O3RERElN26deuyDUOmmvHvW265xSNXXWJiooSHh7t1msia69q1qzRr1kxWrFghq1evzvW03nrrLfPfPXr0EG9StWpV9XAHZHriQa679dZb5cEHH1Trb9++fSqT+MyZM+o1ZBM+9NBDEhoaav4sjxs3Tv2N7MUJEybINddcI6+99pr8/vvvKgPwsccekx9//DHX8zBq3769jBo1Ktvw+vXrZxuG/R/tQXbmF198oeaXF8iWRHbt5s2b1XNkvCJbFccqZBTPnj1brQ+MN3DgQClbtqx06dLFYhr//vuvzc83MiafeuqpbMNfeOEFSUpKMq8zjIMMU2Tm/vXXX2q5nDFr1izp1auX+fmHH34oFy5cEG+xZMkSeeSRRxBVVs+RzYos46ZNm6pSMMePH1cZxzmtD+w72IeuXLkiH3/8sVoP8Ntvv8ncuXPVPmN9fkKpDev32zpvoU29e/eWFi1aqH3gzTffNG9rZJB/8sknFtvAFmRTT5s2Tfr376+ev/jii2p+yEpH9vg///yjhpcrV07eeecdp9cfERERGfw/eEtEREQ2Mm1zgiwhPW61atWyZYgNGzbMFB0dbQoODjY1a9bM9M0336hMR1sZovaGO8rStM6g/PDDD02NGjUyBQUFqaxY7d9//zUNGjTIFBsbq9oSFhZmatKkiWnatGmmtLS0XG1747xdzXTNyMgwRUZGqveiLXjurkzbs2fPmh5//HHTDTfcYKpQoYJaF1hmZDMio/fAgQPZpnX69GlTv379TGXKlFHZgpj2b7/9ZjdD1dG2QgZaly5d1PIhE+2ee+4x7d692+lt6KzFixeb7rzzTtXmgIAAtawPPvigadu2bTb3T0fZd/ZguzzzzDOmW265xVSxYkVTSEiIys6sWrWqqWfPnqYtW7YUSqZtQkKC6ddff802fNmyZRbz/+OPP8yv3X///TYzu5Fd6+PjY35t586duZ6Hcfld+Uxs3LjR/D7j5zanY4w977zzjkUbv/76a4vX8ZnH51+/ju1pnV05YcIE8+udO3c2lShRwvz8n3/+yTZP7Bv6deM+aIR1amTc9/XxAA+sD01nbBpfd2bfwmdBjztx4sRsx+bw8HDz63v37lXDMd+OHTuqz5K/v7/6/OK4gX0H2bM5uXz5sqlcuXLm6TZo0MB0/vx5m+MmJydnW4/G5TMeIzIzM1UmuL19JKf3G/3000/ZsrmTkpJUlrd+7xNPPGFyFo5v+n3Yp1auXGny9fU1D/vyyy8txmemLRERkfNY05aIiCgfoL7ffffdJ1OnTlV1C1NSUuTvv/9Ww77++ut8WefIjkKG19atWy3qQiKL8LrrrpOZM2fK3r17VVuQvYUsPGQKtmvXzmYdyfyENiYkJKi/kbXr5+fntmkjCxKZXX/++afEx8erZcMyo37ne++9p+Z38OBB8/hYF6j3uGDBApWFiGxBZJvddtttKkPQFSdOnFD1O5ctW6aW7/Lly6qGKYYdOXLEbfsWsjuRjfnzzz+rNqenp6tlXbx4sapN+e2337plXpguMh/Xr1+vli05OVll5h09elTtb6iL+ccff0hBi4iIUNmc1mJjYy2eGzPNjVmjxux4ZI8bs6Z/+eWXXM/DunZuqVKlVM1QdFKIWtDI1LWlcePGqv6nrjlqXR/UVdgPNNSv7dixo8XryPgcOXKk+Tm2J44TRosWLTL//eijj8oDDzxgfm7sSM9WJueIESNk5cqVKtvfCOvUHtQZRgYoIBMYVq1aZc7YRK1cV6DNGvZV622j24bs1Dp16qh6vDgO4DV8llAPGJ9fHDeQFaszXR35/vvvzVnYgGMu9gFbUE8ZWanOQGY46s5qeemwDutZ72taSEiIxWfAlTs05s2bpzK1AeeUDh06mPdfZOt26tQp120lIiIq7hi0JSIicsBWhy7oDCYnuJ0VQQs9Ddya/MMPP6jbrxGwzA9xcXHqdlfcnovgAYJ6CFh2795dLl68qMbBLdB47fPPP1fBHB3MevXVV6Ug7dixw/y3M6UBEEC13g72OptCkAS3wWM9oIQDOrpBEPPhhx9Wr+NWawTTtTfeeEN27dql/kYwY/LkySrQitvL9XBn4bZgBHx0EAslIBAEatiwobr93h0QkNZBKARL0HkVgre4PRnrBdscwXssJ4KBuIXaeJs0gl8YhgcCso6gs7mXXnpJ7c/Lly9X6xL7MTqx0sEjXXLAE2CbG/crlD8ArAvjLfYVKlSweJ/xeU6dc9mbhzXMD587rCME7BcuXChNmjRRt7dbQ2BXB83wPpQmyIvt27eb/8aPFLZcf/31Fs+3bdtm/hu37+N4ovcx/LCDHwqMHZRlZmZavP/uu+82/419BcFBfAYQmHz66afNpRoc7WuPP/64+vuzzz6TU6dOqdv2oVq1aqrzLlfccccdKlgOO3futFgnxiCuDu7iM69/vEIJGBw7sK/j84Zl14FJRzZt2mT+GyUzjEF//LiCHz+sH7qMgj34EQkd4hnbj8+1O+HHBON5yTrI7wg+O+hUzTqgjB9D9PYjIiKi3GFNWyIionywdOlS898INrz++uvqbwTP0Ks2sm7dDVlqCBQjg0tDIAJZdLq24KBBg1RgD1lbqEX4zDPPqNeQgVqQwTdjNlqZMmXcOu3y5cur4BgCCQiinD17VmXNGRmzChHA1lCHE7U5oW3btqpuI2pQOgPZZV9++aX5OdYnalkCgumVK1dWmap5NX/+fIsArA6+I7CGgDz2r0uXLql9EEEwZJWitqiG4KCzdZgRSLvrrrtUr/LIqEUgzTrLzzpDs7Agu3TixInmTFJkAGJf19nURtaZhsbn1tmhzs4D8HejRo3UjyMIVqKWLIK0+GEAwTe0Az/c2PoxoHTp0ua/UdsWgUpA9mdOgT1r2P6acdtbf07svceYZYsffbAftGrVSu3Dx44dU3cP/PTTTxY/BkyZMkUFepEpbPxM7N69Wz3wAwbGGTZsmN12DxgwQNX2xT6GbF0cvwCfI1ez8bEt8PkYO3aseo4fHvBZQY1dBGQBx0EEaK0zhfEZQTAegUdMB+1yhvGHAfx4hAxZDT+O6XkZ4ZhgPGZraLut7GJsN33cdgcc3xCk1cdILKvx+IBtis+9Edpr/DEAd5BUrFhRZeNr+JHMuE6JiIjIdQzaEhERudgRWc2aNXNcZzpLTQfsjHBBnB9BW9yWan3xbwwOIVBq63ZvQBAGmWDuDqA6w5mAFDK2rLPLELiwlbWMMgfGW6NzCq7s37/f/PdNN91k/htBOZQaMAZiHcH6NQa+jNNCQK5u3boqoJpXxm2KIBgetiC7MK+QwYvAnHVWpZEndBKFoDKCgdiXkLWK4CqCjBqCp0bW5UCMz+3dGp7TPACBVuttjGA6Alro8AsQwEQ2b61atSzGczUw6wiCZfg86wCwLdaBOB1gQxDR+KOTzrBFABKdX+n9DSUSjEFbBCmR/Y5sbARbka2L7Fod5MfyoSRDt27dVDDUFgQk8ToyeXUJBhzTEOg2Zuc7q0+fPvLKK6+o4PGnn36qsuiRxYuyH4C7EXQncgg8jhkzRmXKIxMfD5QNwOf29ttvVz942Wu3VrJkSYvPBeZrDNzmBQLnyP5Hu6wzxXMLxwhsQwTioWfPnhYdRALuwjAG8fV+brxzAOvYGLAF3JGC9Y/SE0RERJQ7DNoSERE54GxGojXr7DtX32OdGWrMTLUnOjpa8gIZhgUVtEXWr4bMt5ygJq/1trCXxYXAjIYs0SeffFIFlBAo17f157VmqDdwlDHqLATodMAWAeznn39eBdYQ5EEAz93BRldh3qjLrEuWYJ9AkB3lNIyw/fHQAWZdwsL4o4VmK5jqzDwcsf7hBgFT6/kYPwf2smOdhYxSXcPXeMu+kfUPRzpjG8tm/PEB9ZhtQW1ulH8wBip1ZjAegMxi/Ijy7LPPqucIliKQ6yj4iR9jELTVEEjM7XEJGbNt2rRRWcEoOYEsYFulEfQ6R9tw1wF+rEP9b7wHQXg8kJGPEgXG2rLWmjZtav4bmdXIstbHLdQExr6EoLYz+86oUaNUQBVBX/yQULt2bXOA2R3QDtSb1dt68ODBMm3aNKfPVxoy8I3HXNydcOjQIRX8R01bBO/dWbOciIioOGFNWyIionxgrNNqffs46hjaYuywRmc+6axdBBByYuti21hvEwEMBE0QOLB+IMCnb8cuCAjCas4smyt0OQgddER5CgRO7AUxjcEz47ZC4NyVjsgQiDYGdIzTQkAOHR25g3Gbot6mre2JzFHUwdSM2X6uBKyN6xK1bXHbP9al9Y8KhUHXa9bBVOzfCBDZC4gZhxsz6BFgMtaQRVZlbueBAKmtTqKsP/PWP7Cgozy9rhEUzimjMydos7FWrS4zoGH7GQNtWK4bb7xR/W2dVWkP1o2xwzPUjbbeL5DhjHq2yFh1dv/DjwN4aHktBWAMzGKZ9bbHMcg4H3xusF2wnyPIizrE+NzqjHk8t1WP2Lqur7H2LX4kyu2PJziH4LOGoDkC6u4M2CLrGBngCNji2ID9G5nkts4hyHi2Pr7oLFsEZnv37m3+YQeZy8i21j+oIaA7adIkt7WbiIiouGGmLRERUT7ALb4IYsBXX32lOqjCBTiy2OyVRjDeRoqMMGT3IZiC0gCObk93BJ0BIQCEoBSCQrhQRy1bZJUhuxC3aSNAgQABOkrKCTLRdHDJGNDD31hOwO3EeDiCup+4sEfQANPE8rkrGwvlK3ALOqA+JoI2CKbZ62wNGXC6h3p06oVbj+vXr6+CFcbgeU4Q/OjcubM56IVbrVErFbWGkcHmjnq2gOXRnTrhdn1kYaNTKQQLsZ2xf6HzMwScdUdMxkxFdK6EfRFBIATqHQUIsS51UB1BHZSMwD6DTs9chVul9bpBndGXX37Z/BoyM3XHctgPMa4jWJfIotb1U5HtiQA9MmmNAVJ8pnTWKrI9v/jiC/U3ti2C9ag7q2vUArIyse1zOw907Ia60igpgOxa3NqPIC9q2mqoBYpsRCNkcupb9lu2bGkRZDdmZlrflm4PaqHOnTvXXD4EWdHIkkYAEIHI2bNnWxyH0D5sW9Q31R0oAgJu1pm0aI/ujA3rUZd9QN1ZBG3xGcB8sN8j2xS1ZPW+j8+4MVBqDz4vKM2BH7JwrMgLZJNi/0e5CF3LFqxLqKBsAuaLMgnY77FNccs/gvrG4LojERERKgCqOz3EOkb7UStb/1CFz19hwrbHZ0FnyKPsAzKEjfs0js3GH9bsQf1vfXxAwBvHT5SCwTzQGaKu7Y1gtr3O0/DjknG7aGhXXu8eISIi8nomIiIiMlu4cCGuZM2PnKxevdo8brVq1czDMzMzTW3atLGYFh4+Pj6mBg0amJ/37t3b/J6MjAxT3bp1s72nRIkSpipVqpifo40a3q+Hjx071mYbf/vtN1PJkiWzTdf4MLbDEeP87D3stcPaY489Zn7PypUrLV47dOiQxTSxnq21atXKZvvnzp1rs12tW7e2ua0uX75sc737+fmZatWqZXO58LeteR87dsxUvnz5bNMKCwszVapUKdfb0Aj7Vo8ePXLcDliH2o8//mhznPHjxzuc1/Lly3Ncl8bPifV2M3K0nMZtaVw39ljPx97DelqjR4+2O27VqlVNhw8fztM8cvp8REVFmXbu3JlteYzt+vjjj506xuQE+2KzZs0cticgIMA0e/Zs83smTpxofi02NtbmdNF+4zR2796thhv3b3uPUaNGWUzLuL66d+/ucHmM68F638rJoEGDLN4bGBhoOnv2rMU4n376qcO2V65c2ZSQkODU/ObPn28KDQ3NcX34+/ubUlJSzO9ztO86w5n3Gz9r9h4YJyerVq1S5zP9nu+//97i9QceeMD8Wv369c3L6eznasuWLS4vPxERUVHD8ghERET5AJlyqPmIbFlkbqLjoiZNmqhMP+Pt18YOkpCFhvcguw9ZkMjaQtYXbrN3pvMze3B7LzrxQVuQRYhp43ZlZPshExcZlMiGKmjIzNOMdSbz6vHHH5e3335bZfsi0xFZxMh+Q+arLagXiSxPZHciSwzrBusM2V+u1jRGdiFuoUa2IbYfpo11jGxN1KR0176F9YXOorCvoCwDOinCbdm4jRqZj8jmM2bQtm3bVmURIrvUlYxmTH/ZsmUqWxDrBZnfWI/G0gvuYMwkt+5Mz52QeY1sd3wGkUGKTGisE9zGjqzIvJYIGTFihPosYb+pXLmymj4+48haxGvo+Eln8hrpMgPYlsj8dge9LyK7GbVRUYsY2bTYJ6+99lqVbYn2IAtUM5ZGQCkMW9B+410BusMw7I/Insa6xTrF/o/9EvPF/LEf2ct2z2/WWbU6+9aoefPmMnz4cPXZxzEb2w7HbXxu8ZnauHGjWiZn9OvXT5W1QakFlJ1AxjA+d9gXcDzC8QFZ2cjkxzy8TUJCgsrm1tm66CgOHWEaoXSLzpTFnQy424SIiIhc44PIrYvvISIiIifgFGtdIxDDcCu77hwIwUTcBlpcdezYUZWRQDADNSMLqiM08hy4pR7B8suXL6uAIEo/IGBWXCDAjtvHAYF13VkeERERERVvzLQlIiLKJ+hAZ/z48SrbDRlVyORDNqcO2CJzsWvXrsV6/b/++usqGw+9zOvOnqh4QWdFCNgig3j+/PnFKmALuqMmZKcas16JiIiIqHhjR2RERET55OzZs6pjFlu35eM25Xnz5knFihWL9fpHCQPdARMVT6tWrVL/4nZ93KJe3Kxbt66wm0BEREREHojlEYiIiPIJelhH5iDq+SGAi5qGqDPaqlUrFaBCXUkiIiIiIiIiawzaEhEREREREREREXkQ1rQlIiIiIiIiIiIi8iAM2hIRERERERERERF5EAZtiajQ9OnTR3x8fNTj5ZdfNg/H33o4xvE2hw8fNrcfD29Z71Twqlevbt4Wa9as8fp9i5zj6ce4li1bqrbVrFlTMjIyCny+tWvXlrS0tAKbb1GXm/2tqJwnvPWY+d5770nDhg0lIiLCpXOEuxnXHdZlYcBy6zbgnEnerXXr1ubt+f777xd2c4iIPB6DtkTkVuvXr7f4ko8HOmGigjNjxgx1kY1HYV1kEZF3WrZsmTqOwwsvvCD+/v42L7ZzCv5t2bJFRo0apQKxVatWlZCQEAkLC1OBqFdeeUUSExOzvWf06NHq3wMHDsicOXPcHrA0PoKCglQA6JFHHpGtW7e6ZV6UNzhf6XMXzmOeBvuJbl9+Bpu++OIL6d+/v2zfvt3m56SoQVBWr9evvvqqsJtDRETkUf77Jk5E5Aa2LmQwbMqUKVy/BQQXu0eOHDEHWawzUxAYeeyxx9TfCKZQ4fn8888lJSVF/X3ddddxUxQT/fr1kzZt2qi/y5cvL54EAVVAhl+vXr1yPZ133nlHPawhEIXH0qVL5bfffpMSJUqYX7vrrrukVq1aKmg7efJkeeqppyQwMFDyAzJ5cZzEY/Hixao9nTt3zpd5eaPCOE8gaKv3v2rVqsngwYPF04K2un2tWrXKtyz5L7/80vx3x44dZciQIerHk6J6jkDQVq/X3r17S6dOnQq7SURERB6DmbZE5DZJSUny2WefZRv+0UcfSWZmJte0h4iJiZFbbrlFPRi0LRw6e6pZs2bmbWEMXhUlnpIpduXKFfEU+Nzp7Y7Po6dAhu2OHTvU3wicIDs2L0qXLi2DBg1S2XPfffeddO3a1fzarl27ZObMmdne06NHD/Xv6dOnVcahO1WoUEHWrVsna9euVbef4zmgBMTjjz+eL6UgkpOTJSsrS7wNzxOF5/jx4+a/8TnEj6/5cY5IT09nGZIiyFuPOZ7KU77DEFHxxaAtEbk1OyQhIUH9feONN0rdunXV3/Hx8fLjjz/m+5r+6aef5L777lMX4sjOKleunMpSwUW6hi+ylStXNt8iu3HjRotpYFz9WpUqVdT4CDg/++yz6jbfSpUqSWhoqLq1FplADz30kNO31jqqrYdsZD0cF2jauXPnZODAgdK8eXOJjo6W4OBgFUhBzUfcPnnw4MFstwHrLFu47bbbstUldFSr8PLlyzJ+/Hhp0qSJyrTDcqKuJeYVFxfnsM7c0aNH1a3GZcqUUW3E+vr7778t3nPx4kUZPny42jcwDqZfsWJFlbX03HPPqcB/Xuqh2au/9/vvv6t9A+swICBAIiMj1Trs0qWLfPzxx9nmsWTJEmnbtq2ULVtW7Ut4H4JJyBB0lrGdCxcuVBnQ11xzjZreiy++mGNNW/wA0qhRI7XNsS8i801n5dqC/fTVV1+VGjVqqPdce+21smDBArv7VkEvK+zevVtl72GfQhuxHVq0aKHaaDKZsk0XwTW8jn0FGalPPPGEXLhwwe52Nq5PHA/Gjh2r5oUstXnz5pnH+/PPP9UyYr2ijaVKlVKZr9988022NuzZs0d9zvW4uMUf87nnnnvkzTffzPYDFfZ7TA/zxGcB2XH4zGEfdKbGKDJAEcy86aabVJAG88S8e/bsKZs2bXJ4TDl//rzKTsU2xGcLn2NXjr3IONXuvvtuyQu0F+3DvoDPHqaH6Tdo0MA8jnGd2JqvsT3ugHWC4Be20aOPPioTJ040v3bmzBnZuXOn+TmORa+//rrccMMNaj/FexHIHDp0qBrX0bFw3759cv/996v9AOcLfV50xNljlKPPs7N1aP/44w+54447JDw8XLXxwQcflH///dfpabmybrSvv/5afWb0+RnHG3y2Fy1apF7HesP5SsN5zNV6qq4eM/UxBusY5yF9LMD+gaC+MfCFNvTt29f8/Ndff7V5Pnf2GGCL3rarV6+2yMq3nkdejhEnT55UbYmKilLbDT+eOCs1NVXGjBmjthXWcf369WX+/Pk2x8WxtEOHDmo+2J+xvXGewd0l1m3TWbaA/SGn+rVYBmwLTNPedw17bH1vwXrDdsJn9dZbb5UNGzZYvAeZ/9gOOJ7iPKTPA/Xq1VNZ0PiBycj6M4rjyr333qu2Fb5X4Rhnq2xYQR1zXP1Om9vzzKFDh+SBBx5Qy43lwTrA+TQ3XNnnHdVAtnfutd5mf/31l9x5552q3ZiPu76/EhHliomIyE3atGmDqIt6zJ492zR+/Hjz865du2Ybv3fv3ubXx44dax6Ov/VwjOOMF154wfwe64evr6/p7bffNo87evRo82tPP/20xXQef/xx82svvfSSGpacnGx32ngEBgaafv/9d/M0Dh06ZPF6TsNh4cKF5uGtWrUyD9+9e7fDeZcqVcp04MCBbOvN1kOvY3vr/eTJk6aYmBi77w8NDTX9/PPP5vFXr15tfi0yMtIUFRWV7T1ly5Y1JSQkmN9z6623Omwj2pATrB89PtabkXFaWN96HQYFBdmdZ7t27czvz8zMNPXs2dPuuJjON998k2MbrdtpvV4HDRqkxqlWrZp5GNanNn/+fJvzb9y4sd19qG/fvjbf06RJE5v7VkEv65dffmkKDg62O7+HHnrIlJWVZZ7mypUrTQEBAQ6Xx7idrdendTumT5+uxpkzZ446Jthrx8iRI83TO3v2rKl06dJ2x42NjTWPu2DBAof79qRJk3I8xiUmJppuvPFGu9Pw9/c3LVq0yO4xxdbnF8enw4cPO7Udr732Wpvr1dZ2dvbYbO2BBx5weF5ISUlRbdbHN+yneWFc19g/jL744guLdfXHH3+o4WfOnLFYF9aPSpUqmQ4ePGjzWFiiRAlTuXLlLMa/cOGCwza6coyyd65w9pxar149m/OqXLmy6dSpUzlOy9V1g890nz597I5/3333Zfvs2nrY2h+NcnPMnDJlisnHx8fuPDt06GBKT09X4zpqm56uK8cAW4zb1t483H2M2LJli8M2OVqX+jFx4kSL9zzzzDMOl2PAgAE222b90J9X4+erZMmSal/N6buGPdbTqlixYrZp4fizZs0a83uWL1/usJ3Vq1e3+IwbtyPaGhERke09OE7s2rXL/J6CPObk9TutM+eZ48ePmypUqJBtPBzTsb7sfYezxdV93rhurI/59s69xm2GdR0SEmKxft31/ZWIKDeYaUtEboEsnV9++UX9jeyS7t27q1/sjVkXyJDLD8uXL5fXXntN/Y1fv5Gp8PPPP8vUqVPVL+HIlnnmmWdUJoIxc0VnGepbYnGroM4CMWbVYHleeuklle2EeeFX/B9++EFlWOgMgHHjxuXLsiFrAtNGO1esWKHm/e2338rDDz+sXsc6xXLq5UKmsL7lF5AJiGF44HVHnnzySXM2LbJJkKWJ25qRmQbIIsA2tXWbObI6kHnyySefqExLfRvn2bNn1TD9N7KaAJkLyKJbtWqVykxCh0fIDM2P3r1xWzYyhAC3Z2M9Yvuh3iaWB9k6Gobp9mI4OkPCvoRsUbQN00E2sav7MtYrsr6RjY51igwOe5DtrPctwPpHlhrahswVW7B9sd417LtYxhEjRqgOoWwpyGVFlhCmpbPekD2O7fDhhx+q7B7A50svAz6zGAefSUBmC7LoMP6pU6ecbgfWA7Y/6pU2bdpUZTfhWIDp+/r6qkw8ZORiXeCzBpMmTTIfy5DxhqwiQBYgpoWMInw2kDGMLCVjB17GbB7s21gH06ZNU7VanSk1gOOMzsZDFiQyizBPXeMRx6oBAwZky4rUsK2QUYx1pduG49PcuXNznDfWic66Q2ZcfvTSjjsHsF407CfWcMzWZVuwPPaWNS8Qi8L+oc8ber7IDgdkkemsW2Rufvrpp+rYj4xMffs6am/acunSJbXfIsMY+xa2IabtrmNUXmEbt2vXTs1z1qxZaj+DY8eOmTuCc8TVdYP90XhHBDLvcJ7FdwIca3BHDGCYMXNdl7LQD2T1ufOYuW3bNnn++efNGf44Pn3//feqlrKuo4xtMH36dPU32oCO9TQsu7F97jgGIDMV08K0NczTOI+8HiOQWYrvFDiOvfvuuy7tW7izZ/bs2eo7iDEjHtm3+g4fbFfsVxq2C9YjzvH6/I754hiFbYrlMmYwt2/f3ry8xqxcDdmOOD45+q7hLEwL78f5Ad+x6tSpYz5mYh3qfQPnKOwXaA8+0/gehu2KbaozUY13chjhc4W7CzA+2qtrmOM4gWxXrSCPOXn9TuvMeQbHEtxlB1jHb731lto30BGlqx3k5nWfdxXWNUr7YBmxPrEuCuv7KxGRkqtQLxGRlVdffdX8a/Pdd99tHn7zzTebh7/11lv5kmnbpUsX8/iPPPKIad26deYHMmX0ayNGjDC/57bbbjMP/+GHH9QwZBXqYXfccYfFPDZs2KAyxKpUqWLOAjM+kI2XH5m28N1336l1iqwFZBTYyjw0spe96Wi9nz9/3iL7cNmyZRYZIMasg6VLl2bLZsDjzz//NL9n4MCB5uFDhw41Z3f4+fmpYdddd51p06ZNapirXM20fffdd83Dhg0bZjpy5IhFRqdR06ZNzeM+99xzFvuSMcto7ty5LrUT07XF1rb6/PPPzcOQEXf69Gnz+PgM2dqHkDGuhzVs2NBuZqNx3yrIZZ01a5b5dWQTGedlzHxHNg38/fffFsu5efNmi8+Dre1svT7vv//+bO3A9tev484AYzv69etnfu3BBx9U4//000/mYchKjouLM2VkZNhcB8as5U8//VR9buyxdYzDPlmmTBnz8KlTp5rHT01NtcgIe/31120eU/RnEyZPnuxwXVjDfqbHL1++vM1x8pJpe/HiRVOLFi3M77/rrrvsZtHecMMNNo8ruZHTHQjWx0JkqOnjFB6ffPKJeR/BZ9SY/b1nzx6bx0JbGep//fWXxf6Gx759+1w+RuU10xb7EfYn7Y033rDIPNTbxNa0crNumjVrZh7WuXNnh9vKUYacI7k5Zg4ZMsQ8DOcjo+HDh1tkJjuz7l09BuTmHOeOY8Sbb77pUluM78VdClpSUpJFdue0adPUcGxjPezee++1ey7CdzNnv/O5+l3DEetp7dy50/yao/POBx98YLr99ttVRq/xM2DrGGvcT/DdybgfGPdVZHnjbo78OuY4kpfvtDmdZ3AMQXaqHj5z5kzz+OfOnbP4PplTpm1u9vm8Ztpiu2zbts3ife76/kpElBvMtCUit9B16cCYYWv827r+qLsYa7IhEw91uvQD2QOasV4h6hlqul6gMUvD+DqyD1HnDFkW+CUfGQXW8iuLGBl9qAOIDCBkLdjqKMcd80bWmbF+n86uBWTixMbGmp/bqkmGOm3XX3+9+Tnqw2k6UxE18HSmCDo7QuYjsnNRgxU1FfOr7rGucwzISkbWDOaLOmyoT2bMzjDuS1OmTLHYl4wZq8Z9yRmoNees/fv3m/+uVauWORMNUAPSFmO94ZtvvtniNeO2NCrIZTXOC9Mzzgt1eK3nZVwe1Ntr3LhxjstjTWco2WvHypUrLdqBz5p1OzAcdRv18QH1BdEeZNUgM904PdR99vPzU3+jXi62G7J1UB/vjTfeyLHeHbKRkYlqazmR+Yc6h5q9uoCoU+roM+gsW/WF8wLZZlgeXSvy9ttvV1mJyHYuiPk7gqxeZAbquq24I8PYcSZqJup9BNnWOvvb3mcDGW44ZltDhqlxfzPu+64co/IK9dF1Jqn1fobMQ2SU2ZObdWP8jLhyHHRFbo6Zxs+Q9THF+BzL7Oz+mNdjQE7ccYywdVx0lnF+yBrGOVzTx2xn12tua5s6813DWbi7Qh/fActjzIbWy4RM4l69eqk7MPD5sNWxrr3vYbhLxJjNbFwH2K9QLze/jjn25PU7bU7nGeynyP7VUIdWw+dB93dRUPu8q1BL3Fh7vTC/vxIRAYO2RJRnv/32m7n0gP7CqQv645YvY+c/6IjIE3qAxcWjvq0Ot3DjlmvdCRG+yHfu3NkioKW/UOMLIr7o4tY93L6mOXNRZ33rlDEAa6/zFtySp+FWPLQR89a3bIIn9BKML+LWt9/ZWje4LRK3k+FLLgJf+NKNW+VwayKWD7e0urIenVmH6Ahl8+bN6hY33KqPIA1u00dgEgESXBg501FQXnoTdnRrrzsY14m7b9EryGXV83LHMrijHbhQQ6ARARfcDoyAEI4FKLPw9ttvqwA5bjcGBGbQGc6gQYNUoAgX6rjwRYdF6KTE+ANWQXwO7X0G7cHFtw6iuvNHKFzg4qJdBxu6deumfkxD8NseY/AFn193Md5yj864cEs3Hk8//bTbPhu4/dnV/deVY5S945+jY2BhKI49rnvCMaCwz0We8l3DXRAwRXkLDdsQJQVwDEF5jYL+HuaOY05ev9Pm5TxTEPJ6jLT3GXHH91ciotxg0JaI3Jpl685xnaXrEMLIkSPVF0frB76g4ou2hmwKBJcBNVpR71VnwaBeLII1mg7K6NpayFTBr/22sl4d0TUzjdlnGupz2WKcN75oo/ddzNvRBbExe83ZCwlkEBrfZ+w9GVkOe/fuNT93JUvCVttw0YOLAwRzsO6xXJrxosGZ9Whch6izZwu2P76EY9uhPhmCNAgK6ewPPMcPD9b7Euoh2tqXUHsSX95d4coFFQKDGrJwjJlvup22tp+GYJSRroVorSCX1TgvBDptzQsPvV8blwefS+wrOS2Pq+1AJpy9dugAI/7GjzvDhg1Tn1Fk9CF4prPVkE2ks/kxLmoRoq7g+vXr1cUhxtc1Q3FB5yjTDll5xqwl42cQgQP0Zu2Oz6CjzyZ6Q9fzQ/3KvEJNYAQc9ecU6xG1AB3VW0SwUh/3sO51z93ugPni+IkHghW6dq4R6lrqbEnAsc/evmqrxqS9zzou7q2noe8+ceUYZTz+ofaiMUsW+11O8OOpMXPPuJ9hfTuqcZqbdaP3KUBdT2vGQE9uzl25PWYaP0PGdWD9HMust2lO7cvrMSAn7jhG5OUHMeP88DnFDw3G7ERX1qtxvNxu97xCQN2YSIDlSU5OtlgmfP8x1vFH3VYE6HAMMWaA2oPsT+N4xnWAbYF9N7+OOfa46zuto/00MjLS/FzXowUc11zJiM3NPm88RuJYoOuFY/lQLzwn9tanO76/EhHlxn8/jxER5QK+uONXZg23chovoABfbtAJgS5fgFtCjV9Q8wqlDL744gv1N75A4Us/bv3CFyx8Od2+fbu6WMK8kQljfB+y5cBYRsFYGgFq1qxpDloiwxWdYODCEJ2ouAJfYpERoTtSQnAYXwBxka47OLCGeeuLigkTJqi2bdq0yeKWcmv4gqs7X0GQHOsB2RC43cv4RdoIX3Jxi66+qEaGNAJSyKhAppe+kMEXaHSWklu4CML7cWtZxYoVVTDduOy6oypHdGchenvgdkkE0pANaQs6y0CmDJYP6xNZbSdOnLDooEbPF+tXX4giwISLbtyKidsHcRshsqiQ7YwLhfzoqAnQSRCWCZ3r4GIDF1RoC/Ybex0FIXtRd/6C/ePxxx9XnXQgwKk/G9YKclnRMSE61MFFJ4IouFUcP5ogSITAEz5f+AyizWPHjlXlEBC41benYlzcvo7thE4/cqtPnz4qoIJjBC6wsJ5xWymCeQgs4lZuLDPainER4MItz8i8R4kQZGriohOZttb7DjpxwXGhbdu2KtCIZcP61UEaHQS3l2GKC0Xcgquz6LEecKzBPjt//nxzgA5tRaZPfsDxUQesseyYtz3Yz9DRnTVc/GOd4liCdupbbxEkx/Y1XnTjx7FmzZpZvB/ZpTqoiICvMaCDIKfutKhVq1aqAx13K1mypLoTA8cNwPEKWZI4diEwigAqjlkIPLjrdlxXjlHG4x8CwdhPsQ6xjzhzxwD2Ixwv0JEe3v/KK6+YX8Pn0l7JityuG8wHxxLAsQj7BI4H2LexD+FzpztxMgZnsPwffPCBWh/Wt+K745iJzxqOBfhc4jsC9iusF+z/xg7RsH41Y/vwHiwPthXWCzLv8noMyElhHyN0R2z4sQM/9J0+fVo9x/c5XfoC60t/j8APqfhO2KZNG7VfGDtqs7decc5COSisOxxvdTA4v6DjP6xHXQZBw/lHl+XBbfA6cIt1gB/PUSrB2PmnPfjuhPMH9kd8RpBYoKFMjF72gjzmuOs7rT04hmCZdZIG1iuyUtFpGY5zxsB4fuzzeA3feRGkxecN2xiBdqzfvPwY6cr3V3xf0cdWBNrzqzwcERUTuaqES0T0f+gwQRfvj4yMtOjgREMnC8aOFJYvX+7Wjsjg+eefz9aRgvXDVqdc6LTJOI6tTpTQXlvTa926tcsdjhk7bDM+0DmTrQ5O0AlUTvO27mhh5MiRNt+DTi0crfeTJ0+aYmJi7K6/0NBQ1TGTlpvOHtBJjKNtZOwAzZ6DBw/a7DjDuA6NHVShQxhH86xcubIpISHB3IFGjx49ctyXjJ1f5abDtJw6jZs3b57N+cbGxtrdt4wdaRkfjRo1srlvFfSyfvHFF6bg4GCH8zLujytXrrQ4bthaHuv25dQJH8yePdui0z1bD70MGzdudDheRESE6fDhw2rcxx9/3OG4HTt2zPHzkZiYqDpjszcNdES4aNGiPHduaM/69evN73n44Ycdbmd7j0GDBmU7zth72Opsytgx3ccff5znZTKua2c7t0JHVtbHE0dtz20HWporxyi48847s42DY2KdOnVsfpaM66BWrVo2O7SsVKmSKT4+3vwee+cJV9cNjjPoINTeuPfdd595XHTyh2W1HgdtzklujplTpkxRnQ7Zaxs6y0pLSzOPjw47cR60Hk93XOrKMSC3x1N3HiOcYXxv3bp1bc5z/PjxFu8xdoxp69G/f3+L8Xft2mXzmPzoo4/m+ruGPcZpobMt4zlDP3DeWbVqlfk96MQ2p+9hxuOR8ThVvXp1U6lSpbK9F9+XjZ2gFeQxx53fae0dk48dO6Y6tLSeR1hYmDrW2Nu/bXF1nwfsY9bj4bNev359m/uLM+cWV76/5uY6hojIHpZHIKI8MZY7QHaVsYMTDVko6ExBy49fnF977TWVsYpf93GbKX6JR/Yobs3Er/So2XXjjTdme591Vq31c8Av9MgQwW2PyPhBlgkyB1y9bRxQAw2ZgsggwbpC9iuyiZCFYQsyJpENjNu+kJWG7A9kBxkzQqwhWwLvQwaQK7fNoU3IiEJ2AJYV2UBoI7IssV6QAYd6i3kxadIk6dixo5ombhlFhg6yd7GOkWnpTEc16PgBdYjRRrQP7UZNSnu3zaPjHWT74FZjvd6RlYGsiYEDB8rGjRtVlpbOEEGHU0uXLlVtQtuQsYFbhrGtMD7a6c5btm1BdhpuI8c80V7s06iTiP3YHuyPyMZGJ0Z4D0oBYJjxdkpkDGkFvaz4bGIfGjBggFr32J/RHvyNYwduO0XnXsbOTtBhCsopYHuhfVgvxmwt62VyBrLIcbsmstzxWca6QgY6MmmRkYPPo94P0TZk6iGrE5k1aAeOLXgfMuVRigLrW2eSon3XXXedyp7Cvo22IVsLtUqNdyTYg/FR/xJZRdhvsV9im2DeyCLCvorjWX5BHU60H/AZcyUjyl2w3wO2NzI/CwPmjUxjZO/jvIGsP2x3bAc8xz5hvR/mhSvHKMA+iqxQ7Lc4TuOzgowvY4c/9iATGp8rZDHjvVg2TAsZ0LgTxBbjecTVdYPjDNqLYxey1HBewj6Nuzjw2Ub2tYbPDLI0caeMq9mouTlmYp2jhAc+71jvaBeWB58DZJIiUxTLpuE7BbJrkdlsq8SHO44BnnyMwLrEd5XKlSubzzFYT9YZmrjrA9sR5xWcT/T2RsYtzjfW350wHewj6BTMuL7zG9Yd7vzAsRztwzkJnw90UoksWG38+PHqgQxOjIN9DB3Y2ipVYA3nB2wTfO/B5xXbD+sF5TOMnaAV5DHHnd9p7UFWLdYtzvtYz/i+h++POE65mj2dm30eGb24SwafQ2wzrENkcOflnOKO769ERLnhg8htrt5JREREHgOnc1tBetwqrEskDB482KITO29cHgRScOEEuNBGWQdHt3STa7Cv6Jq9KGvzxBNPFNgqxIUvOnzTF9243ZwKh/G4UdD7AVF+QUkVnUSAgCpKhLhbQZRxISKi4oNXOUREREUA6hwjkxsZKahJu23bNvVcB14QAH3kkUfEW+zbt8+cEYT6e6i5h8xgZB5qyJBiwNa9kC2EbDNdI9xdndM4m8kEqIuOjGgqeMiuRkY8jiOasTMxIiIiIio47IiMiIioCEAnXwiyGXsz1hCwnTx5sjRp0kS8BTJtf/zxR/WwBbdJohwEuZ+9UiNFdb70n/bt21sEbPE5Q7YgERERERU8Bm2JiIiKANQL3LVrl2zdulXOnj0rWVlZqq4j6jOiVizqR3oT1L5ETTrUxUMP8+i9G3X+UC8Svc+jznJB1j8kKk5Qi75t27aqhjoRERERFQ7WtCUiIiIiIiIiIiLyIKxpS0RERERERERERORBGLQlIiIiIiIiIiIi8iAM2hIRERERERERERF5EAZtiYiIiIiIiIiIiDwIg7ZEREREREREREREHsS/sBtARERERERERETeJysrS1JTUwu7GUQeKTAwUPz8/HL9fgZtiYiIiIiIiIjIJQjWxsXFqcAtEdlWunRpqVSpkvj4+IirGLQlIiIiIiIiIiKnmUwmOXbsmMoirFGjhvj6svomkRF+zLhy5YrEx8er55UrVxZXMWhLREREREREREROy8jIUAGpqlWrSlhYGNcckQ36s4HAbXR0tMulEvhTCBERERERERERuRS01TU7iSjnwG1aWpq4ikFbIiIiIiIiIiJyWW7qdBIVJ755KB3CoC0RERERERERERHZ9PLLL0unTp3srp2BAwfKCy+84PFr7/3335dGjRqJt2DQloiIiIiIiIiIipzWrVtLUFCQhIeHS+nSpdXzTZs2FXazipy5c+fKa6+9VuyCqvmNQVsiIiIiIiIiIiowmZmZDp+7E4KJiYmJcuLECWncuLHcd999UtDS09MLre4weS8GbYmIiIiIiIiIqECYTCbZv3+/vPfeezJx4kT174EDB9Tw/BQcHCyPPvqoHD9+XM6dOyfTpk2TmJgYiYiIkFq1asns2bPN4x4+fFjV6503b55Ur15dypQpI08++aRFZ1KbN2+W2267TWXw1q5dW41rLCdwzz33yBNPPKFeHzFihNNZpqNGjVLzq1q1qrz11lsW4yxevFgaNGggJUuWlOuvv15+++0382vIIn7++eelbdu2qvOr5cuXZ5sHlhnTxTJjubDu7ZU/wDzWrFljEQTG+ouMjFTr7csvvzS/1qdPHxk8eLD5ObbnvffeK+XKlZNq1arJhAkTJCsry/z6zz//LM2bN1fziI6OlkmTJsmWLVtUmYUdO3aozOjw8HA5evSoRZtOnz6tOr87cuSIeVhqaqqUKlVKNm7cqJ4//PDDUrFiRdXOpk2byurVq+2uc2zjrVu3mp/PmDFDrUfj/B566CHVRkwTy4j5wfnz56Vz585q3lgOzMvYLndg0JaIiIiIiIiIiPIdMmr37dungo8IniIDFf9++umnEhcXl68Zt0lJSSpIiSAigqL495dffpGEhAQ1/LnnnpMNGzZYvAeBSQT1EEhEgBTBRYiPj5c777xTBWXPnDkjX331lYwdO1ZWrVplfu+KFStUYBKBv/Hjx8v69etVcM+RnTt3qkDiyZMnZcmSJSrYu3btWvXaDz/8IMOHD1fBXQQMR44cqQKjCEBreA0BUmQWt2nTxmLaWO8vvvii/PTTT3L58mX5448/5IYbbnB6/WF5MD7mjeBvjx49VHDW1nq+44471APbdt26dWp7L1y4UL2O4CyynRFgxrrbs2ePCn4jCxplFq677jrV/sTERBVgNoqKilJB6Y8++sg87Ntvv1XB4Ztuukk9x3x3796t1suDDz4oDzzwgFpeV+FHhI4dO0qFChXUcmIf2LZtm1q/8MYbb6hAtv4RYP78+SoY7k4M2hIRERERERERUb7z8/NTQTxbMByvuxuCmwiW1qxZUwUIv/nmGzW8S5cuUqVKFRUkRdCwXbt2FpmlOgMV70WWJabz4YcfquH499Zbb5Vu3bqpNl977bXSt29f+eSTT8zvxTBkoPr7+0toaKjccsstcvHiRYdtRYYs5olsUgQhkeX5wQcfqNfmzJmjAstNmjQRX19fuf/++6Vu3boqmKv17NlTBVaxTCEhIRbTRjsRiPznn38kOTlZypcvr7J2nVWnTh15/PHH1fIgWIx1hmC7te+//15lnyIrFcuBwOugQYPM6+bdd99VwVSs/4CAAClRooTceOONTrejV69e5u0A+PuRRx4xP8d2wDQxbawvZPhu375dXPX333+rHxKmTJmith8C/ciC1suB6SNYi3GwbpEljaxqd2LQloiIiIiIiIiICgQyT10ZnlfIjkWwFNmxyBbVgcqPP/5YBUARaENgFsHPs2fPWrwX2bjGv5FVqcsnYHy8Tz/efPNNlSGrWWeJOgPBYQQD7c0TQUPjPJEFrF+3nmf9+vXNZQawrCgBsWjRIlUGAgFbZKwaSwPkxLgurNtmhHYiY9jYzmHDhqn1DyghgPIKudWxY0c1rT///FNtL2xTHbRFgHb06NFq+iiPgHlfunQp23Z1BpYD+43eP/BA1u6pU6fU6wgIt2zZUgXukY2LwDSC4e7EoC0RERERERERERUI3OLuyvD8gFqpvXv3ltdff10FixGc69ChQ7a6usYapXhPpUqV1N/I0EU9U7xPP3ALvjHrFdmwrkJnacZOy6znOXXqVIt5XrlyxaJernGeyKjVZQaQsQsIMKLGKwKPDRs2NAc7EdhFWQMN00XZCHvrwrptRmgn6rsa24lpoT062IuaxrY4s86Cg4Ola9euKsMWZRdQggL1eQFZsHgg2xfBWswbWbf26iUjs9m43MagO5YD+6RxOTBNrE+9ztDJ3d69e1U9XZTGsK5BnFcM2hIRERERERERUb5DzVqUFbAFWYv5WdPWCIE3BPIQlEOgEMFW1Hq1Nm7cOBWsQzAVGbs6+IlgJ+rhLlu2TAVZ8UDW6l9//ZWndiFYivq36PAMNWeRIavn+dRTT6lb9Tdt2qTajmDjypUr5dixY05NG8FFdACGbFCULUDQEaUOABnHCDyifERKSorK6EWJBeuauOhsDXVcERTF8nfv3j3bfNABG4LCCGBiWtimmLcuPdG/f39VVgH1gjEtBEJ///139RoygBE4zSljtVevXuY6ufhbQ3AYy1a2bFm1DrH9HNWzxXIj+It2YPsZyy6gozcEblEHGNPAOkfgWnfw9t1336l1guxeZPUiQ1qvT3dh0JaIiIiIiIiIiPIdan/i1nV0YlW5cmUVYMO/eI7h+VHT1pZ69eqp2+hvv/12VasUnX7htntr6DALtUpRnxYZnQhmAjJMf/zxR3nnnXckOjpaBRsRVLXOTrWu2YtAqSOYDwKImCZuxX/11VdV7VhAHdnJkyeroCdqxtaoUUNmzpypgobOQBDzpZdeUm3FMiPoio7LAOsB9WpvvvlmqV27tuoMzLpTrbvuuksFV1EuAKUA0BmYrTIHWEYEk5F5igxYzAu1dnV5BARKEezGsmFa11xzjfz666/mdqC+LdZvyZIlVTavLagPjPbt2rVLZd1qyJ5GWQhk86KGMer6Yv+yZ9asWSpYjXm98MIL6v0a9kUEZlECAm1Exu7dd99tzhLGv1gnaAf2J9QgRsd07uRjspcjTEREREREREREZAWZkOiACUE76w6vnIHsS2OA1vp5YUM9UwRFL1y4oAJ6BQEB1BkzZrhUZ9ZTIPMYgWaUmyD3fVaYaUtERERERERERAXGOkDrSQFbcg1KQyDjFR2dkXsxaEtEREREREREREQuSU1NVSUOUEMWJRDIvVgegYiIiIiIiIiICqw8AlFxkczyCERERERERERERERFA8sjEBEREREREREREXkQBm2JiIiIiIiIiIiIPAiDtkREREREREREREQehEFbIiIiIiIiIiIiIg/CoC0RERERERERERGRB2HQloiIiIiIiIiIiMiDMGhLRERERERERERFTuvWrSUoKEjCw8OldOnS6vmmTZsKu1lETmHQloiIiIiIiIiIiqTXXntNEhMT5cSJE9K4cWO57777CrwN6enpBT5P8n4M2hIRERERERERUa6lpKTI0aNHC/SBeboiODhYHn30UTl+/LicO3dOpk2bJjExMRIRESG1atWS2bNnm8c9fPiw+Pj4yLx586R69epSpkwZefLJJyUtLc08zubNm+W2225TGby1a9dW42ovv/yy3HPPPfLEE0+o10eMGJFj+95//31p1KiRjBkzRsqWLSsVKlSQJUuWyIYNG+Taa6+VEiVKqPZnZWU51YYtW7bILbfcol4rV66c9OjRQy23hqzjkSNHSrt27dQ6aNKkiezYscOldUr5yz+fp09EREREREREREXY6dOnZeHChQU6z759+0rVqlWdHj8pKUnee+89qVatmgrC4t9ffvlFKleuLGvWrJEOHTqoTNwWLVqY3/Pll1/K1q1b1Xvx+qRJk2Ts2LESHx8vd955p7z99tvSpUsX2b17t7Rt21Zq1qwpd9xxh3rvihUr1PxmzZqlgr3r169XgdyLFy/abePOnTulX79+avqLFi2SAQMGqKDqr7/+Kqmpqap9X331ldx///05tsHX11cmT54szZs3l/Pnz0vXrl1V8NgY2P3www/l+++/l/r166ug9DPPPKPWBXkGZtoSEREREREREVGRhGzSkiVLqmDmnj175JtvvlHDEeisUqWKyqhFtiqCo9YBS2TM4r0VK1ZU00GQE/DvrbfeKt26dRM/Pz+VCYsg8ieffGJ+L4b16dNH/P39JTQ0VGW9OgrYAjJin332WfUeZMYmJCSo7FoEmdGGVq1aqexaZ9rQsGFDNc+AgAApX768DB06NNvyPfzww2o8zK93796s9+thmGlLRERERERERERFErJjBw8enG34xx9/LFOnTlWlEFByANm0NWrUsBgH2bjGv1FaAfCeH374QQV0tczMTGnZsqX5uStZwBqCqxoCvbaGoT6vM23Yv3+/DBs2TP766y/1HiwjArhGKMGghYWFmadNnoFBWyIiIiIiIiIiyrWoqCiV5VnQ88wt1MRFZilKGKC2KzJNO3XqJCaTyWK8I0eOmIOmeE+lSpXU38jQ7dy5syxevNjuPFCeID/l1IaBAwdKnTp1VJkFBHZRVgGZv+Q9GLQlIiIiIiIiIqJcQydfucksLSzIKEWAFoFfBFeRsfrTTz+pGrJG48aNk48++khl4SJj96GHHlLDH3nkEdWR2bJly6Rjx45q2D///CPp6ely/fXXF8gy5NQGlFZAB2ORkZHy77//ypQpUwqkXeQ+rGlLRERERERERETFRr169WT06NFy++23q3qxS5YsMQc+je677z5p1KiRqheLDr1GjRqlhiPj9scff5R33nlHoqOjVTbuU089pQKl9qxbt07Cw8Pdtgw5tQEB3e+++04FbbEcqOFL3sXHZJ37TUREREREREREZEdycrLExcVJTEyMhISEFLn1hHqxqG974cIFi5qxRAX5WWGmLREREREREREREZEHYdCWiIiIiIiIiIiIyIOwIzIiIiIiIiIiIqL/q169uuqojKgwMdOWiIiIiIiIiIiIyIMwaEtERERERERERETkQRi0JSIiIiIiIiIiIvIgDNoSEREREREREVGBGj9+vPj6+qp/iSg7Bm2JiIiIiIiIiKjAIFA7ZswYueNGk/qXgVui7Bi0JSIiIiIiIiKiAg3Yjn9W5OcFov5l4NYzvP/++9KoUSO7r0+cOFF69Oghnm7NmjVSsmRJ8XYM2hIRERERERERUYEGbF984uow/JufgduVK1dKy5YtJTw8XEqUKCHt27eXzZs3u30+xcGoUaPk008/zfN0ikpQNb8xaEtERERERERERAUesNXyK3D7zTffSKdOnaRXr15y8uRJOXz4sNx6663q8ffff+dqmunp6eJJPK095D4M2hIRERERERERUaEEbPMrcGsymWTQoEEyYsQI6d+/v0REREipUqVk5MiR0r17dxk+fLgaD4FcHx8fuXjxovm9gwcPlj59+li8vnDhQqldu7ZUrlxZTfuFF16QChUqSGRkpNSpU0e+++47l7JMZ82aJdHR0WoaY8eOVdM0ZgffcMMNarz69eur4LOGdj366KPSrVs3Ne+5c+dmm8fHH38sMTExapkrVapkXp+2yh/gOYZbZ9SWKVNGqlatKm+99ZZ5+Msvv6yC4Nrp06floYceUstRsWJFtd5SU1PNr2/atEluv/12KV26tJQrV06eeeYZOXfunMp2vnTpksp+xmPdunXZAtFly5aVtWvXWgyvV6+eOdP3+eefl2rVqqllxPDPPvvM7jqvXr26fPXVV+bn+BvDtMTERHn66afV8kZFRakgP9oHWJ5+/fqp9iBT+9prr5W//vpLCgKDtkREREREREREVGgB2/wI3O7bt08FXHv27JntNQxbv369JCcnOz09BE6RnXvo0CH5+eef5ZNPPlFlFhISElSQFYFbOHr0qAq24l97Ll++rN574MABFcRdsGCBfPDBB+q17du3S9euXWXy5Mly/vx5eeedd+SRRx6RvXv3mt+PwCUCtwg041+jK1euqMDu/Pnz1Xz++ecfueuuu5xezp07d6ogNTKTlyxZooLe1sFTQJC5Y8eOKuiM5dixY4ds27ZNJkyYoF4/fvy4Ctg+8MADcuLECTly5IgKNCMYvHz5chUARbAUD5SvMAoICJAHH3xQPvzwQ/MwrHtMUweNGzZsqIKn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iIic5ufnJ9WrV5fDhw+rDpWIyLawsDBVtzY3GekM2hIRERERERERkUtQj7NevXoqm5CIsvP391eP3Jb3YdCWiIiIiIiIiIhylXFrXaeTiNyD1aKJiIiIiIiIiIiIPAiDtkREREREREREREQehEFbIiIiIiIiIiIiIg/CoC0RERERERERERGRB2HQloiIiIiIiIiIiMiD+Bd2A4iIiIiIiIiIiIhyK+3ESUnZukVS9uyV4LqxEtyosQRWjPbqFcqgLREREREREREREXltwPbUxFcl42S8en5lwwYJuvZaKffMMxJQtox4K5ZHICIiIiIiIiIiIq+UsnWLOWDrGxoqJXs8KAHlysm5t9+ShB9+UEFdb8RMWyIiIiIiIiIiIvJKKXv2mv+OvK+jnP/gQ0k/elR8w8Mlees28Y+OlvKjRnlduQRm2hIREREREREREZFXCq4bq/71Lx8lGfGnVMAWfIOD1b8ZJ09Kyrat4m0YtCUiIiIiIiIiIiKvFNyoscqm9S9TVlIPHVLDfAICVKkEW9m43oLlEYiIiIiIiIiIiMgrBVa8Wv4gdd9eSTt8WFK2bVMBWwRurbNxvQmDtkREREREREREROTVgdvAitGq07GkvzepkggasnCDGzUSb8OgLRERERERERERERWZrNuUbVtVSQRk2CJgGxjtXZ2QAYO2REREREREREREVKSybiPbtxdvxo7IiIiIiIiIiIiIiDwIg7ZEREREREREREREHoRBWyIiIiIiIiIiIiIPwqAtERGRk+Li4mz+TURERERERORODNoSERE5Yeobr0urW69X/xr/JiIiIiIiInI3f7dPkYiIqIhBcHbRexPlnZcyZeCY0RIW5ivvvhwqo2ZOVq8PG/58YTeRiIiIiIiIihCPC9pmZWXJr7/+KuvWrZMjR45IUlKSlCtXTho3bixt2rSRKlWqFHYTiYioGAZsF7+aKt+vTZeSJTNl3niRa2uYZOnUSOk2jIFbIiIiIiIiKqLlEZKTk2XChAkqKNuhQwdZvny5XLx4Ufz8/GT//v0yduxYqVGjhnrt999/L+zmEhFRcQnYLpgsS6aICth+uDxTls0Uuf5akZTMdKlULkk+m+GvxmGpBCIiIiIiIipymbZ16tSRm266SebNmyd33nmnBAQEZBsHmbeffPKJPPjggzJ69Gjp379/obSViIiKT8AWQdlvViSogO3S6SKxNa6+XipS5EJCslSK8pfPZgRL18HMuCUiIiIiIqIiFrT96aef5JprrnE4TrVq1WTkyJEyfPhwOXr0aIG1jYiIim/A9rtfUuTD79MsArbg7ydSqoSPXEhIlEpRwsAtERERERERFb3yCDkFbI2QhVurVq18bQ8RERVPcXFxMnXqRJk0RMTXV2TqgkSZOAQBWx+rMX3E399HIsNEEhMTpVZVH/UevBfTICIiIiIiIvL6oK01ZNKiM7Iff/xRNm/eLKmpqYXdJCIiKgZiYmJk2LBRMnI6OscUGdYvXEZNF9l7BHFan/8evj6SmSGScEUkPDxcDhw1qffgvZgGERERERERkdeXR4DDhw/L22+/LYsXL5Zjx46JyWQyvxYYGCgtW7aUAQMGSJcuXcQX6U9ERET5YNjw59W/qFOLerXQbXCifDbjv4zbjAyR8wkmCQ0Nl+OnUdM2Q3r3G2F+LxEREREREVFueUzk89lnn5WGDRvKoUOHZMKECbJr1y65dOmSpKWlSXx8vPzwww9yyy23yJgxY6RBgwby119/FXaTiYjICzlbugDBVwRhEYy95/Zg6d05XLoOFtl7yMSALRERERERERWPTNuwsDA5ePCglClTJttrUVFRcvvtt6vH2LFjZcWKFfLvv//K9ddfXyhtJSIi7+1gDDVnUcLAmYxYWxm39z+bKPPGZUmDayKYYUtERERERERFO2g7adIkp8e966678rUtRERUNAO2ixZMlnnjfGXk9MlqmKuB20lD/OViYpD0Ge0j00f6y8jpLIlARERERERERThoa4SM2i+++EJKlixpMTwhIUE6deokv/zyS6G1jYiIvDdg+9kMf4mt6S+1q2WoIKyrgdv+Y5Cl+4rhb+cydomIiIiIiIi8Pmi7Zs0aVcvWWkpKiqxbt65Q2kRERN4fsNV9WCJwi07FXA3cdryvs8TExKjnxr+JiIiIiIiIimzQdvv27ea/0REZOiDTMjMzVS3bSpUqFVLriIjImwO23/2SIlMXJMqwfuEy7LHwXAVujUFaBmyJiIiIiIioWARtGzVqJD4+PuqBEgnWQkJCZNasWYXSNiIi8u6A7aIv0YGYyMjpier1jm2CcxW4JSIiIiIiIipWQdtDhw6JyWSSmjVryp9//inlypUzvxYYGChRUVHi5+dXqG0kIiLPFxcXJ1OnTlSdjumALYKzsTV8pHY1k9ze57JMnHtZRg2MUFm3k4ZkqBq1LHlAREREREREnsCjgrbVqlVT/2ZlZbl92nPmzJEpU6aokgsNGzZUGbs33HCDzXHff/996du3r8WwoKAgVVOXiIg8H0oXoJOwAWPGSsnwVPnizasBW/hujUlKRoqMelzkldmX5fT5TFm+PkiNz5IHRERERERE5Ak8Jmj7zTffOD1ux44dXZr2kiVLZOjQoTJ37lxp3ry5zJgxQ9q1ayd79+5V2bu2REZGqtc1lGwgIiLvEhbiI/PGmaRWlas9kE1dmCWLvhIVxK1VRaRGJZEew5KkUdNWLI1ARERERESUR5mXL0vqvn1etx6D6tQRv4gI8SQeE7Tt1KmTU+MheIpOyVwxbdo06d+/vzl7FsHb77//XhYsWCAjRoywO58KFSq4NB8iIvKserbfzg2XSlH+cj4hURZ9aZIPv5H/l0kQMZlEml0r8slUkb6j16j3sKYtERERERGRbUl//SVZSUkOV0/q/v1yesobXrcKo54bLkG1azscxzc0VEKvv774BW3zoyQCpKWlyaZNm2TkyJHmYb6+vtKmTRvZuHGj3fclJiaqcg1oV5MmTWTixIlSv379fGkjERHlTz1bdDQmEi5vfpAqn36XZhGwzTKJ+Pv7SNN6IgsmJMvAV15V72fgloiIiIiIKDsEbBPXrRefoCC7qyc9Pt4rV13yrt2Scf6C3ddNqakS3vKWAm2TxwRt88vZs2dVZm758uUthuP5nj17bL4nNjZWZeE2aNBALl26JG+88YbcfPPN8s8//0jlypWzjZ+amqoeWkJCgvoXnarhQUREBad27doydNhIGTn9NalVNUO+W50ii79Pl6UzRGKq/xewvXrnho8kXDFJo3oR8vmbQdJtyGQxiUmGDXveqzdZXs89PK8REZEn4XmNiMiDjsdBQRJUt67dcRwFdD1ZYLVqElijht3XU/bscVucz9lpeGTQdty4cQ5fHzNmTL7O/6abblIPDQHba665Rt555x0ZP358tvEnTZokr7zySrbhCPgyaEtEVPD69x8o6RcuSscBb0rClSR5b4JI3Zq+6piclWUSH9+rAdsLCSYJCQmT0NAwqVND5NXB6TJgzES57bY2UqtWLa/ddPrHw9zieY2IiDwJz2tERJ4hKTNTkoOCJMPBOKYKFSTkySfF26RWqCBpjl4PCpKszEzJvHSpwM5rHhm0/fLLLy2ep6eny6FDh8Tf319dRLsStC1btqz4+fnJqVOnLIbjubM1awMCAqRx48ayf/9+m6+j9AI6OjOu/CpVqkiJEiVUh2ZERFSw0k+elIcvXZbEkjVl4eVd8sIbWVK7SpbE1vIVHz8fycgQFbANDQ2XsLBw9Z69BzNk9AwfGTZ8lCqL483y2nkmz2tERORJeF4jIvIMiK/5pqZKsKORQkJEHGSseiv/1FQJ8/OT8BIlCuy85pFB2y1btmQbhkBonz59pHPnzi5NKzAwUJo2bSqrVq0yd3aGOrV4/vTTTzs1DZRX2LFjh3To0MHm60FIDbeR/o2NkNcvGERE5LqUrVsl42S8PFY7Vj1f+O8u6TIoS5a9mSW1q/qaA7bh4f8FbLsNyZDe/UYUiZq2eT338LxGRESehOc1IiLPoOJcbjgu+4SGiG9wiGSlJIspKVm8gY8b43zOTsNXvAQyVlGC4KWXXnL5vciCnTdvnixatEh2794tTzzxhFy5ckX69u2rXu/Vq5dFR2Uoz/DTTz/JwYMHZfPmzfLwww/LkSNH5LHHHnPrMhERUf5I2bPX/DcCt32r1JML532l89Mif+7Iyhaw7TrYuYBt2omTkvDDD3J62nT1L54TERERERGRE/z9xb9CBck4dVoSV65U/+I5hlN2XrVWUCMWD1d1795dzpw5o8oqxMfHS6NGjWTFihXmzsmOHj0qvr7/xa8vXLgg/fv3V+OWKlVKZer+9ttvUq9ePbcuDxER5Y/gurFyZcMG83OdcTvn4B7pMzpAvp0bLLHhrgdsT018VWXwAqbvHx0t5UeNksCK0dyUREREREREDviXLStnZ82S9OPHrw5Yu1YCKlWSss88IxnxV6+zyMODtm+++abFc3Qcc/LkSfnwww+lffv2uZomSiHYK4ewZs0ai+fTp09XDyIi8k7BjRqrgGrGyf8yYQe2bC0935orKzZukK6DJ8ukIRkycrrkGLBFsDZ17x5JO3JEUvfsFd/QUPEJCFCvYfop27YyaEtERERERJRDSYTUuLj/Arb/h+dp+/eLX1Q5rymVUKyDttYBU2TBlitXTnr37m1RxoCIiMgWZL4iAxYBVZRKQOZtcKNGUiU6Wuq3aKHG6T9mogwbNirHgC2ya/1LlZbMpCTJOHtWBWwDoqPNgVtMPzKXPygSEREREREVB6hhmxYXZ/O11Lh9El61qmQyaOv5QdtDhw4VdhOIiMjTpR+9+rAjsKRIYKsIuVSrvERVjhCRAyIZ/iL+5VSgtuN9nSUmJkbElCaS/KftWezeKH6BO8U3sJQE16khmccS1XCfID/JvFJJ/Y2AsFnqLpHM89knFFD16oOIiIiIiKgYQqdjgbj+Wrs222tBMXXU6+QFQVsiIqIcXVwgcu6VHEergv/p2G7FT0Qie6g/VcAWMs+JHG1p871hlUTCBvz3vNT1V/9N2ntaTn1QSZVgQAav2ZkRIonfZp9QmbEi5V7mRiUiIiIiomIJpQ+CYmJUDVtjiQQ8D4ypbe47hLwgaPv333/L0qVLVSdhaWlpFq998cUXhdYuIiIilEso89ijKmAbGM1OyIiIiIiIiHKCcnPodAw1bFESARm2KmB75ixXng2+4oEWL14sN998s+zevVu+/PJLSU9Pl3/++Ud++eUXKVGiRGE3j4iIvNT339nIgs0F/0oVVR1bHbBF7duEH36Q1AMH3TJ9IiIiIiKiIicjQzLi41WnY+F3tFH/qgzbjIzCbplH8shM24kTJ6rOyJ566imJiIiQmTNnSo0aNeTxxx+XaGY0ERERlOwnEtYm27pY/OnHsvz7j2X8ID+pWtHPPPzoiUx5/c0fZM+J1y07H/MrI1J1nd11mn72rPolOO3oUQmsWlX9EhxQrla2zsrwZSOgXEXxDS0rfmXKSOlHHpGAsmWvjsR6tkREREREROZSCex0zEuDtgcOHJC7775b/R0YGChXrlwRHx8fGTJkiNx+++3yyis51zAkIqIizkbnXlPfeF0WLVgin80IlqqVLE9xVSuJvDsuQ7oOnqyemwO3PoEiobfkOJswO6+nbN1irr+Ufiby6sAjIiFNgiSgvf3pEhEREREREXlVeYRSpUrJ5cuX1d+VKlWSnTt3qr8vXrwoSUlJhdw6IiLyRFcDtpPlsxn+ElvT9m+SGI7XMR7Gd4eUPXtdGk5ERERERETklUHbW2+9VX7++Wf1d9euXWXQoEHSv39/6dGjh9xxxx2F3TwiIvIwcXFxMnXqRJk05Gpg1hG8jvEwPt6XV8F1Y10aTkRERERERM7xCQ0Rv9Kl1b/FjUeWR5g9e7akpKSov0ePHi0BAQHy22+/SZcuXeTFF18s7OYREZGHiYmJkWHDRsnI6ZOldrUMh4HbvQczZOR0UePjfXkV3Kix+EdHS8bJk+ZheB7cqFGep01ERERERFQs+fuLf9mykhoXJ2lxcRIYEyNBMTGScfZssem4zGOCtkOHDpXx48dLWFiYKodw8803q+G+vr4yYsSIwm4eERF5OF2jFjVrP5thO+MWAduugzOkd78Rlp2R5UFgxWgpP2qUpGzbqkoiIMMWAdtAdpxJRERERESUK/5ly8rZWbMk/fjxqwPWrpWASpWk7DPPSEb81T5FijqPKY8wa9YsSUxMVH/fdtttcv78+cJuEhEReRkEYhGQRWAWAdr8DtgaA7eR7dtL1JDB6l8GbImIiIiIiHIHpRBS4+L+C9j+H56n7d9fbEoleEymbfXq1eXNN9+Utm3bislkko0bN6oOyezVvCUiInI24zY/A7ZERERERETkPr7BIaokgi2pcfskvGpVyUxKLvKr3GOCtlOmTJGBAwfKpEmTxMfHRzp37mxzPLyWmZlZ4O2j7C5evCjHjh2T+Ph4qVChglSuXFlKlizJVUVEHhW4nTTkag1bBmyJiIiIiIg8X1ZKsqphi5II1oJi6qjXiwOPCdp26tRJPVAiITIyUvbu3StRUVGF3SxyELBdvny5JCQkqOcHDhyQEiVKyF133cXALRF5VOC2/5iJqtMxZtgSERERERF5PlNSsup0DDVsjSUS8DwwprZknCweNW09JmirhYeHy+rVq6VGjRri7+9xzfNq7syMxXR0wFa7dOmSHD9+nEFbIvIYCNR2vK+zxOBXWiIiIiIiIvIKGWfPqk7HUMMWJRGQYasCtmfOSnHhkVHRVq1aqczNhQsXqn9nzpypsm6R2Vm1alWpX79+YTdRintmLAK/9oZz+xCRJ2HAloiIiIiIyMtkZEhGfLz4RZVTNWxREqG4ZNh6dND2119/lfbt20uLFi1k7dq18uqrr6qg7bZt22T+/Pny+eefF3YTvY67M2ORqYvAr63hRET5KfPyZUndt88rV3JQnTriFxFR2M0gIiIiIiLymlIJmcWg0zGvCdqOGDFCJkyYIEOHDpUIw8Xt7bffLrNnzy7Utnkrd2fGorQCMnUR+MU2QlkLdBKH4UREuZX011+SlZTkcJzU/fvl9JQ3vHIlRz03XIJq17b7um9oqIRef32BtomIiIiIiIg8j0cGbXfs2CGffPJJtuHItj17tvjUrnAnd2fGIjsX2dA6W/f8+fMqYGsymdzQWiIqrhCwTVy3XnyCguyOk27nRyhvkLxrt2Scv2DzNVNqqoS3vKXA20RERERERESexyODtggInjx5UnVGZrRlyxapVKlSobXLmxkzYzU8z0tmLAK0GzZsMJddQAmG3bt357pOLhERIGAbfM01dleGT3Bwoa6ow2lpUj0wMFfvDaxeXYKszm1ayu7deWwZERERERERFRUeGbR98MEH5YUXXpDPPvtM3XKflZWlgoPDhw+XXr16FXbzvBKCqAimIisWJRGQYasDuZ5SJ5eIyBkBFSpImaeecuvK8gkKFN/AIMlKSxVTaprd8d7+ZaXM/fVHGdiqnTxxe5tctZ2IiIiIiIjcxyc0RHyDQ1RnZaiBW1R4ZNB24sSJ8tRTT0mVKlUkMzNT6tWrp/7t2bOnvPjii4XdPK+FQCoeualh66hO7qlTp6R8+fIWw901DyIia74hIXazVV3m7y/+ZctKalycpMXFSWBMjAQ1iZEMlOLJyLAYddaXn8vnO1fJuxP8ZdT0VeJXupQ80/kBbiAiIiIiIqLC4G/jei7G9vWcN/LIoG1gYKDMmzdPXnrpJdm5c6ckJiZK48aNJSYmprCbRgbI1n3nnbdk9S/L5bbb20ubNu3Mw4mIvAFO8GdnzZL048evDli7VgIqVZKyzzwjGYbauQjYLln7uSyd5iexNfykdpVM6Tb0c/UaA7dERERERESeez3nrTwyaKtVrVpVPcgzffXlMtmx5Sd552VfGTXjRzWsS5dueaqTS0SU3w6cOC61KlZSt9DgF1nzCf7/8Dxt/37xiyqnbq2xDtgC/l06TRi4JSIiIiIiKgQ+Tl7PeTOPCdoOHTrU6XGnTZuWr22hnE1943VZ+ulM+XJ2iNSu5iN1aqTLg8NWScOGjaREiQe5ConIIyEAO+frpfLUfd1k8KMD1C00tqTG7ZPwqlVlxscfyqdrlsrnMwLMAVuNgVsiIiIiIqLC4RsckuP1XCaDtu6xZcsWi+ebN2+WjIwMiY2NVc/37dsnfn5+0rRpUzfNkfISsF20YLJ8NsNfYmtejftfV9dfvpiVIV0Hz5CQ4GAZNvx5rmAi8ig6Y/bdcb4yavrn4hMQIE+0ul3dQmMtKKaOzPxgoXyw8hNZMClNKkeHiAgelhi4JSIiIiIiKnhZKcmqhq296zm87u08JtN29erVFpm0ERERsmjRIilVqpQaduHCBenbt6+0bNmyEFtJtgK2Gp5/NkOk6+DJ6jkDt0TkKWzXpP1UfIODpWelSha31KAG0tGgQJn26fvy5ovp0qy+jyQkpqjXwoJtB24nDsmUAWOWSofmN6nSC0RERERERJR/TEnJqtOxABvXc4ExtSXjJGva5oupU6fKTz/9ZA7YAv6eMGGCtG3bVoYNG5Y/M6ZcB2w1Bm6JyNM4rkm7UOTuvjKwfXt1Cw1+kcUJ/sO5b0lwkI9MfFekaX2T1KrqIxcu2Q7c7j2UKaOmiyq5wIAtERERERFRwcg4e1Z1OoYatsbruYwzZ4vEJvCYTFujhIQEOXPmTLbhGHb58uVCaVNxFxcXJ1OnTpR543ztBmw1vP7q4HTp/+J4KVM2Spo1a6Y6JytZsmSBtZeIyF7A1nysMgRus1JSZFCvvuoWmulvzVbvWTk/RL5f6yfdhqTI0um2A7cI2HYbmindb31Anun8AFc6ERF5jbQTJyVl6xZJ2bNXguvGSnCjxhJYMbqwm0VEROS8jAzJiI9XnY6hhi2u54pChq1HB207d+6sSiEg4/aGG25Qw/744w957rnn5P777y/s5hVLMTExMmzYKBk5fbLUrpZhEbiNO5whMdX/e757f7o893q6tGzVVlJTU2XDhg1SokQJueuuuxi4JSKPCNhmD9x+Kqb0dDXM+J7YGleDs7YCt8dOBjJgS0REXhuwPTXxVfOF7ZUNG8Q/OlrKjxrFwC0REXllqYRML+90zBZf8UBz586V9u3bS8+ePaVatWrqgb8R9HvrrbcKu3nFFmrU9u43QroOzpC9BzPUsKnvJUqrnmfVv4DhDwxKk+sat5U2bdqZ33vp0iU5bqgxQkSUnw6cOC5zvl4qE4dcDcw6crUmrcj0zz+WD1YuzRbkHdo7RHp1DJZuQ3zkwFGTlCohsiMuWe57OpkZtkRE5JWQYWudiZRx8qSkbNtaaG0iIiIiL8i0DQ0NVcHZKVOmyIEDB9SwWrVqSVhYWGE3rdjTnYuhs7H2t1yR5b8my7xxIiOnJ8rp85myfH2QtGzdTRo3aZZtXcXHx0v9+vWL/TokovyH2rKoMTtq+ueq0zFHgVuUOBgxNUsys0wy9QVfm+MicKszbicOMclzU0ROn89SHY8RERF5G5REsDc8sn37Am8PEREReUnQVkOQtkGDBoXdDLIRuF376xpZ8v0K+X6uSP0YH6leySR3D0yWhk1aydPPDFIlEaxVqFCB65KICoyuMdttKMod2M641TVpe7Tupp47CvLqwO1jLyaLn2+gDO/Wkx2PERGRV0INW5REsDWciIiIPINHlkegwutszBlT33hdDh34Xb6YEyrlyoikpJrUv3iO4V99uUzVsDXCc3RGRkRU0IFbdBKGwCwCtEbWnYg5Gle7+9ZAiQwLlSfu7cmOx4iIyGuh0zHUsDXC8+BGjQqtTURERGSJQVsyB2Jb3Xq9+tcRvL5owWT5bIa/NLk2UkJDw+XiZZS0CFfPMXzppzNlf9xeueWWW6R27drqX9Qotg7kEhEVBFvBWOuAraNxNf2eXm26MWBLREReLbDi1U7Hyjz2qITdcov6t/zoURJoFcglIiKiwuPR5RGoYOhA7LxxvjJy+mSL2rW2xkNgNrbm1V0nPDxcgoNDxN//6q3EGP7ZDNS8nSkhISE2p0NEVJilEiYOyZRR08VuJ2K2yirYC/ISERF5c+AWD9awJSIi8kwM2hZzCMQunPeqLJsVpAKutatlqE7GwBhwRemEqVMnqsCuDthqOmCr4fVJQzKk/5iJ0vG+zhITE1NAS0NE9B+f0BDxDQ6RrJRkMSUlm4OtA8YsVZ2UOQq+uhLkJSIiIiIiIio25RE+/PBDadGihVSsWFGOHDmihs2YMUO+/vrrwm5akQrYvvPWyzJ3bIJUikoxZMr6q4xaY6kEBF6HDRslI6eL7D2Y4XC6eB3jYXwGbImowPn7i3+FCpJx6rQkrlyp/sVzDEfQ9fuJ050KvupSCQPGZDFgS0RERERERAXKI4O2b7/9tgwdOlQ6dOggFy9elMzMq3UFS5YsqQK35L6A7fuvJkuz+j6SlJQoiYmJDgO3yLzt3W+EdB2cYTdwi+F4HeOxNAIRFQb/smXl7KxZcn7+fElcu1b9i+cYDrUqVnJ6Wq4EeYmIiIiIiIiKdNB21qxZMm/ePBk9erT4+f13632zZs1kx44dhdq2ohawveE6XwkO8pHSkXkP3DJgS2Tp5JWTsuLQCpm5eab6F88p/0sipMbFSfrx4xbD8Txt/371ur33+ZUubfN1V4K8REREREREREU2aHvo0CFp3LhxtuFBQUFy5cqVXE1zzpw5Ur16dQkODpbmzZvLn3/+6dT7Fi9eLD4+PtKpUyfxZshY3rlzp7z//vvy6oSXZOyTVwO2/v8vT4t/deD28uXLkp6eIdUrZcr4ZzPljTdeVTVtHQVuGbAlsoQA7eQ/J8vCfxbKbyd+U/++9udrDNzmM9SwTTMcr4xS4/ap150tpUBERERERERUWDwyaFujRg3ZunVrtuErVqyQa665xuXpLVmyRJVbGDt2rGzevFkaNmwo7dq1k9OnTzt83+HDh2X48OHSsmVL8faA7fLly2XDhg3y/fffSGBAlkycK7L/X5PFeIhRlIr0keSkKypwu2t/mjw/JUPatLlbypUrZzGuMXD7/eoUlkQgsrLt9DaJvxKfLZC7/cx2rqt8hE7HAu10fhgUU0e97kopBUccZecSERERERERFbmgLQKsTz31lAq2mkwmlRX76quvysiRI+X55593eXrTpk2T/v37S9++faVevXoyd+5cCQ0NlQULFth9D+roPvTQQ/LKK69IzZo1xZsdO3ZMEhISZOXKH2X75h9l+XvB8vB9QdJtsMjeQ1aBWz+RUiVE9hxIkQeeSZUGTdrJLS1byXGrW42Ngdv+Y7JYw5bIyt4Le22uk73nbQ8n9zAlJUtQTIwEVLIsaYDngTG11et5LaXA7FwiIiIiIiLKbx55/+djjz0mISEh8uKLL0pSUpL07NlTKlasKDNnzpQHH3zQpWmlpaXJpk2bVMBX8/X1lTZt2sjGjRvtvm/cuHESFRUljz76qKxbt068WXx8vJw6dUpW/7Jc3nnZV+pU91MPrIeug1Pk06kmqV/b5/9jm2T/UZP0Gy1y+nyWXHddI/M06tevbzNw2/G+zhJjJ7ONqLiKLRWryiJkG146tlDaU5xknD0rZZ95RgVeURIBGbYI2GacOetSKYXwqlUl0xDktc7ONQd7165VQWHMMyPeMruaiIiIiIiIqEgEbTMyMuSTTz5R5QuQ6YqgLTrHQgA1N86ePauyZsuXL28xHM/37Nlj8z3r16+X+fPn2yzRYEtqaqp6aMhqBWQJ41EQUlJS7JZ78Pf3l1KlSsmtt7aVUdN/lhpVM1TQdnCfUFm/KUM6DEiXL2ebpHE9X5V5+8CzIhcT/OXOOzuo9yHwjWkcOXLE5vQDAwPtvpYTbFfUGSYqahqWayjRYdEWNWzxvEHZBgV2XPBG6rj5/39zLT1d0k+eFL9y5SSsShUxpaRI+onsncBlJaOUQm0VdLVZSiE5OVs7fENDVUDXXnYu5pmVlJSrZuvldsf+kddpeMJ5jYiISON5jYioCF2veSlTIVyveVzQFsHBgQMHyu7du9VzlDHAo6Cglusjjzwi8+bNk7JO1DSESZMmqTIK1i5dupTnjXnixAlJT093KjidU0Zwg4aN5UpSknQfvF6WTDPJinUpcvhYurS5WeT+Z0SmPJ8lL88SOXPRTxo3ba3GP3funHrv6tWrJT+gXnBO6zkgIEBlWhN5k1CfUBnaaKjsPL9TlURAhu21pa+V0MxQdWwg25IyMyU5KEiudnGYRwieOgqgJiVJREwd8a1UySIIi6xZ39q1JeFk9kBvYEiwZMTtl0wbk0uO2yf+VapIWi6DtqlBQZKVmSmZbtg/dJA1t/LzvEZEROQqnteIiIrg9ZqXSS2E6zWPC9rCDTfcIFu2bJFq1arleVoICPr5+anyAEZ4XgE9hFs5cOCA6oDs3nvvNQ/LysoyB5T37t0rtWrVsngPSi+gDq9x5VepUkVKlCghkZGReWo/2nno0CE1b3ds8JtuaqH+vav/ailXMlM+f1MktoaPjJhqkkdHo8ijj9x0823m8fLb+fPnVXa1PXitdu3aal0SeZtIiZQqJatI+5rtC7spXgPHa9/UVCmw/PszZ6T8/0sppMTtk2CUUqiNUgpnJNzG6L7JKZIRU1uSbGTnhsTUEb+UFAnMZVP8U1MlzM9Pwt1wvPPx0SVvcic/z2tERESu4nmNiKiYXq95kMK4XvPIoO2TTz4pw4YNUx1oNW3aVMLCwixeb9CggdPTwq37mMaqVaukU6dO5iAsnj/99NPZxq9bt67s2LHDYhhq6yIDFzV1cdFqLSgoSD1sbYS8fsHA+5FpGh0dneNyuiI8xEfeHS9Sq8rV9k0Y5CNN6plk1HQ/KUgIqjvKtD158qRb1iMReQf1eXfDxZnTMjNVHVq/qHISUbWqZKUkm+vS2mqDKRkdndVR2bjW2bmqbu7J+Fy3XS+3O5Y9r9PIz/MaERGRq3heIyIqptdrHqQwrtc8MmirOxt79tlnLRYIt2TiX9SodQWyhXr37i3NmjVTWbwzZsyQK1euSN++fdXrvXr1kkqVKqnbQVFf9dprr7V4f8mSJdW/1sM9CbKfWrVqleN4ny1dLP8e/F2+fjtcqlRIk4sJyRIRLnI5UeSuW0Olfp1A6T7kd6lVs6Z07fZggbSbiKiwmZKSbXY6Zs0nNERMmZlSbshgSd2z12FHZ0RERERERES55ZFBW5QDcKfu3bvLmTNnZMyYMRIfHy+NGjWSFStWmDsnO3r0qPj6+oo3QzZuTrVhFy1aIL/+sliWzgyQ2BrY9AEqCH7pcpKEhFytHVy3lsjSmT7SfchiCQ0Lld69+xXYMhAReSx/f/EvW1ZS4+IkLW6DBMbESHD9+hJQo4ZkXUlUGbZERERERERERTpo645attZQCsFWOQRYs2aNw/e+//774u2OHDkiH33wnrwzzvf/AdurEKjFLbCoS6Lh9YlDMuXxMe9J69Z35Mv2oLw7cTFZNh+5ILtOJki96EhpUq2UVCwZwlVLlA8QsD07a9Z/JRHWrlUlEco+84zK0iUiIiIiIiIq8kFb3SEYyhjs3r1bPa9Xr54MGjQoWydg5BwEXh/u9ZiMmr5AalXNsAjcGgO2sPdQhoyaLmp8Bmw9N2D78jf/yMlLKer5urizUrFksIy9t77NwC0DvES5h5IIyLA11rAFPEcHZqiHy8AtERERERERFfmg7Y8//igdO3ZUZQxatGihhm3YsEHq168v3377rdx5552F3USvpEsddB+yQJZMv5pRaw0B2+5DMqX9vf1YGsGDIcNWB2y1ExdTZPPRC9mCtq4GeKlwnLxyUrad3iZ7L+yV2FKx0jCqoUSHOe6AkAqGb3CIpMXF2XwNNW3Dq1Z1qh4uERERERERkVcHbUeMGCFDhgyRyZMnZxv+wgsvMGjrQICclACfk3Zff6JPI6levp289u738sozGVK1op+YBJm2vhYB2z69H5EQn80ubbdMU7ikSp1sw4PkgPj5XLIYlm6KlnRhQCq3UBLBlt0nEuSeBhVzHeClwgvYTv5zssRfuVoX9bcTv0n04Wh54YYXGLj1AFkpyaqGLUoiWEMnZHidiIiIiIiIqMgHbVESYenSpdmG9+vXT5VMIPtK+X4p5f3mOlxFT9979aFlmCJk135f6THcZM6w9ZMzUsu/j0urOjGrmRzKXJBteAW/GRLp+6vFsFOZA+V01pPclLmEGrbImLV2TcXIPAV4qXAgw1YHbI2B3O1ntjNo6wFQ+iAoJkbVsDWWSMDzwJja7ISMiIiIiIiIikfQtly5crJ161aJQWaTAYZFRUUVWruKqr+2J0v3IRlSq04LlkTwElc7HQtWGbManjepWirbuLWjwuXb7SckJS1LggN9JSzQXwL8fG0GeKlwoCSCzeHn90q76u0KvD2UXcbZs6rTMdSwRUkEZNiqgO2Z7D+eEBERERERERXJoG3//v1lwIABcvDgQbn55pvNNW1fe+01GTp0aGE3r8iZtzRD2twcJH/s2CGLFi1g4NYLoKwBatKixAEyZhGARcDWVj1bP18fCQvwl7OXkyQxVeSSX7o0q17KZoCXCqf+LKaBkgjZhpeO5SbxFBkZkhEfrzodQw1blETIOGmZHU1ERERERERUpIO2L730kkRERMjUqVNl5MiRaljFihXl5Zdflmeffbawm+fRLmR1lkTTjU6Nu3z59/LHhu+lVydfad085P81ba+WN0BN2wMZ77tc09aW+MzBciarb7aatpQ3CNDi4ajEAerZfvrHUelzS3U5dSlF9p9JlNrlwqVF7bKsZ+tB9WdV0PdwtJq2hmk1KNcgt82kfCyVwE7HiDwHfpzEuQ6lgFA66OqdKKzXTkRERETezyODtj4+PqojMjwuX76shiGISzlD517OBESRUbv82x9lyfQgia1xdTfAv0umizlwi9q27pAqtURMbpkUuQgXsVfSMuXj349K+cggKRseJDuOX5K0jCxpVr0016eH1J/F+xD0xTRQEgEZtgjY5iV7l4ioOARsX/7mH3Nnm6j1jlJBuBOFgVsiIiIi8na+4oEOHTokcXFx5mCtDthi2OHDhwu5dd7vasB2gSyZ7mcO2GpXA7d+6vVPP/lIAgICCq2dlHfIOtJOJaTKPycS1L+sZ5s/9WfzWm7hROIJaR7dXBpHNWbAlogoB8iw1QFbDbXeUTqIPAfOcSsOrZCZm2eqf413lRARERGRl2Xa9unTR/r165etI7I//vhD3nvvPVmzZk2hta0oB2y1ujUDZPE0k3Qb/JYkJSfJkCHDJTExUbKysszjIJgbGBgoaWlpkp6eXoBLQPnVYRk5p2aJmuqiMyUzRYL9giUkIEQCfANyXX/WutzCisMrzJm3zLQlKjwXL16UY8eOSXx8vFSoUEEqV64sJUuW5CbxsLtJbEGtd0elg8i7SwoRERERFRceGbTdsmWLtGjRItvwG2+8UZ5++ulCaVNRcOTIEfnog/fknXG+dgO2KE2BQGyNSlky/tlMGTj2PYmOriwPPvigJCQkiK+vr4SHh8vp06fVIyoqSj2sg7rkGfX5nO2wjJy/+PTz8ZMQ/xA5m3xWEiVRAtICpElUk1zXn82PcgtElPeA7fLly9V5Dw4cOCAlSpSQu+66i4FbDzlP7jmZIKXDAuVicpqEBfpLgN9/N4/xbhLPwXMcERERUREL2iJwqGvZGl26dEkyMzMLpU1FQbVq1eThXo/JqOkLpFbVjOyBWx9RgVc89h3OlFHTRW65tY0EBQXJmTNnVLA2JCREVq9erS5odcmKUqVKSevWrc0Xt+RZ9fmc6bCMnL/4/GzfZ/JQvYfkTNIZOXjxoNQsWVOVNMhtgNVRuYV21dtx0xAVAmTYWp/T8B3k+PHjDNp60HnyoRurSliAvxqG8xwCt7ybxLPwHEdERERUxGra3nrrrTJp0iSLAC3+xrBbbrmlUNvm7dC5WPt7+0n3IZmy91CGxWs+4mMO2D44NEvqNbhDWre+Q7126tQpFbBFdq0O2GoXLlxQQV3Wv8071ufz/IvPpIwkWbp3qfxz7h8JDQhV/647ti7X04wtZbusQm7LLRBR3qEkgivDqXDOk19tPi59bqkuj95SQ26oUVoeb1WTnZB5GJ7jiIiIiIpYpu1rr72mArexsbHSsmVLNWzdunUq6+WXX34p7OYVicAtdB+C2rZXOx8Dk5gk7khWtoAtlC9fXv2LoK0tCOoi45b1bfOG9fk8/+IT9fjgdNJp9YB7at6T62k2jGqo6vsZO2ZB1m5uyy0QUd6hhi1KItgaTp5znrySlikf/35UykcGyR11o3hHiQfiOY6IiIioiAVt69WrJ9u3b5fZs2fLtm3bVIZnr169VD3b0qVLF3bzigQdkDUGbvcezJAew0zStPk90rz5zeZxEYwtV66cJCcnq/q1KIlgDUFdBmzzDjVsURLBWn7V53Nn/dziID8uPnWnY6hhi5IIyLDF9HS5BcwLZRmQ5YugsWoDa90S5St0OoYatiiJoOE5hpPnnSdPJaRKREhAobWJcn+OIyIiIiIvC9pCxYoVZeLEiYXdjCJp0aIFqkMy1Le9WiphgUwccrWGbYeOj8rTTw9S5Q6QPYtgLAK2uqMxBG0RxEVJBOugLmva5t010ZESEewvcacSJTjQV3WuUq1MqOo8zBvq5xZ1+XXxiffjYV3Dlr1uExWOkiVLqk7HUMMWJRGQYasDuVS4rv64GCwnLl49dwHr2Ho2e+c4IiIiIirgoC1qz27YsEEaNGiQ6846VqxYoTq90vVr58yZI/PmzVMZuPgbQULKfcB2+bcL5J1xvqpDMgRt8Xh8zNUgbq9efVXwFetflzswBmMRvEWnY7aCupT3IOqbq+KkY6OKcupSiuw/kyj1KkRK22sr5EsQ1VH9XAZtPePik71uExUefIfBo379+twMHgTnJ/y4iHPV7hMJ6k4U/LDJ8xYRERERFTVu74jMz89P2rZta5GJ6arnnnvOHCjcsWOHDB06VDp06CCHDh1Sf1PeArZLpvtJh1ZB6l88h/cWfGqudQsI1iYlJWUreYBsWx3UrVu3rvoXzzGc8h5EPXj2iqrPt+P4JZVluwkXpYb6fQVVP5c8v9dtInI/dLS5c+dOWblypfrXuuNN8gwI0N7ToKI8d1dd9S8DtkRERERUFOVLeYRrr71WDh48KDVq1MjV+xGcRVYtLFu2TO69915VKmHz5s0qeEt5C9jqjsfwL+rZojwCGIO2OUEw11YN2yNHjki1atW4ifIYREV9Pjx0EBUXpd5eP9dbXE67LHEXstdtLgyBvoGSlJ6UfbhfoGw+tdliWEypGIkIjCjA1hEVLQjQLl++3PyjMToiQzkElEnI7Z1DREREREREHhW0nTBhggwfPlzGjx8vTZs2lbCwMIvXIyMdB4UCAwNVlicg2wWdkAE6IWPdVPcEbLW8BG61gIAAtc3eeectWbTwHVVmITfTKe4KOoha3OoC/h3/tyRlZA+AWtt/cb9M3zRdPNmcrXME/xkNaTpEapes7fB9of6h0qxCs3xuHZF3OnbsWLbvGOiIDHVtGbQlIiIiIqIiEbTV2bAdO3YUHx8f83CTyaSeo+6tI6hlizIILVq0kD///FOWLFmihu/bt489N7sxYJvXwK2vr68qj3D69Gl5Z+5b8tu6ZfLuOD8ZOT33AeDirKCDqMWtLiACthuOb5AgvyCH4526ckq80d5ze+Viiv1buVMzU6VFpRYF2iYib4IOx+wNZ11bItehM03UZkepn9hSsdIwqmGeO+4kIiIiKk7yJWi7evXqPL1/9uzZ8uSTT8rnn38ub7/9tlSqVEkNx22LuE2RnINSBR998J7qdMxewFbD6xOHZKoOyVq3vsOpEgcI2GJbf/XVMtm1fZUsnuYrdWv6Sa1qftJtMAO31hJS0mVv/GWH67RTo0qy79RlOXz2ilQvGyZ1ykfI8YvJ6pFfykcGqwfYm1dshQiJDA4Qb4eAbd3SdXMcxxtVjawqNUrYL0mz5/yeAm0PkbepUKGCKolgazgRuR6wnfznZIm/cvXHkN9O/CbRh6PlhRteYOCWiIiIqDCDtq1atcrT+6tWrSrfffddtuHTp3v2LcueBoFXlCoYNX2B1Kqa4TBwu/dQhoyaLmp8ZwK2KImADFtjwLZOdT/VIVlMNX9ZMsNPuhejwO0fB89JUprjDHIEYyct987A2cj2dVUA2Z7QQD9pXrOMFAUVwirIwAYDxRvbTUS5V7lyZVXDFiURNDzHcCJyDTJsdcDWGMjdfmY7g7ZEREREhRm0dae7775b3nvvPYmO5u1UuaEDpih9gBIItgK3CNh2H5Ip7e/t53SAVdWwnfuWRcBWQ+C2bo2APNfK9SYI2K7Zd1qC/P9bD9biL/1X9sDb/HMiQc5dSbP5WmpGprSuEyVFRYh/iMOMVSIqmlC3FnfzoIYtSiIgw1YHconINSiJYHP4+b3Srno7rk4iIiKiohC0Xbt2rSQn59+t4cU9cJubgC2g0zHUsLUO2OpatyYxuaWTM2+CgG19B52GBQf4ireqXjZUapULtxvQJSIqKoFbPFjDlihvUMMWJRGyDS8dy1VLREREVFSCtpR/gdvcBmxRK3fRwndUp2OoYYvMWmPAVgVtTaZc18otqiqWCJFn76gt3tp2IiIiImeoTscOR6uSCBo6IWtQrgFXIBEREVFRCdoiyIf6qeTewC0Cqahh62rAVm8T1L4diVq51fxUDVsEbq0DtrmplVuUhQT62c1WJSIiIioqEKBFp2OoYYuSCMiwRcAWw4mIiIioiARtd+7cWdhNKFJ0gBaZrwik5rZkgX5ft8ELVKdjqGGLkgjWAdvcZPISERERkXdDgBYP1rAlIiIi8qCg7alTp2T48OGyatUqOX36tEUgDzIzM3OcxsWLF+XPP/9U7zfefg+9evVye5uLEwRQ3VGqwJy5O9h9tXIp/4UG+klIgJ8kp2eqDtTIMztDwyM5I1k9iIiIiIiIiKh4yZegbZ8+feTo0aPy0ksvSXR0tPj4+Lj0/m+//VYeeughSUxMlMjISIv3428GbfPOXaUK3Fkrl/KXv5+PRIUHyd5TibI3/rLEVoiQ2PLhcjoxVTIyLX9YocLh7+svZUPKStzFONl/Yb/ULlVbYkrGyNnks5KRlcHNQkRERERERFRM5EvQdv369bJu3Tpp1KhRrt4/bNgw6devn0ycOFFCQ0Pd3j7yzFq5lL8QsJ328z45duFq5uaavaelcukQGdqmjpy4lMLV7wEQsJ29dbacSDyhnq87vk4qhVeSpxo9JfFX4gu7eURERERERETkzUHbKlWqZCuJ4Irjx4/Ls88+y4BtMayVS/lXEgEZtjpgqx07nyz7TiVKVGQQSyUUMpRDQIatDthqxxOPy/6L+6VcSDmWSiAiIiIiIiIqJnzzY6IzZsyQESNGyOHDh3P1/nbt2snff//t9nZR/nrsscfl40+/Uv+SZ0ENW5REsAXD8ToVftAWJRFsibsQJ8H+wQXeJiIiIiIiIiIqQpm23bt3l6SkJKlVq5bKlg0ICLB4/fz58w7ff/fdd8tzzz0nu3btkuuuuy7b+zt27JgfzSYXHDlyxFwX19fXV8LDw1WncSkpKXL58mWJiopSNYmtO5GjwoFOx1DDFiURrGE4XqfC7VQMr6GGLUoiWIspFSMpGSxhQURERERERFRc+OdXpm1e9O/fX/07bty4bK+hI7LMTAaYCtOiRQvkow/+K4OAgO3q1avl4sWL6vW4uDgpVaqUtG7dWhISEgq1rXRVUlqm6nQMNWxREkHD8zoVIuTERfvBRCqYTsUQtMXrqGGLkggantcuWZs1bYmIiIiIiIiKkXwJ2vbu3TtP72d2pmcHbJd/u0DeGecro6YvED8/P3ngge7mgK124cIFOXPmjAropqenF1p76T+nE1NVp2OoYYuSCMiwRcD29GVmcHpKp2II6OJ11LBFSQRk2CJgi+FEREREREREVHzkS9AWkA371Vdfye7du9Xz+vXrq7IGCPKRdwdsl0z3k9ga/lKraoY8OGSenDt7Tq69rmG28U+dOqUybhm09QwZmSY5cSlFdTpWrUyoKonADFvP6lQMGbgI6OL1KhFVVEkEewFeIiIiIiIiIiq68iVou3//funQoYMcP35cYmNj1bBJkyZJlSpV5Pvvv1e1bq29+eabMmDAAAkODlZ/O/Lss8/mR7PJhYAt4N/FM0S6DVomZ8+dldat77B4T/ny5RmwzWehgX6qEzEEYFECwRkYz9lxKX86FUNANqf6to5eJyIiIiIiIqKiLV+CtgiqIjD7+++/S+nSpdWwc+fOycMPP6xeQ+DW2vTp0+Whhx5SQVv8bQ9q2jJoW7BsBWy12Or+8tlMH+ny9C/quQ7cIsO2XLlyrGmbT/z9fCQqPEj2GkodoGYtSiAgo5YKFzsVIyIiIiIiIiKPC9r++uuvFgFbKFOmjEyePFlatGhh8z2HDh2y+Td5bsBWq1PdT5bNDpZug36VsmXKysAnnlIB28TExAJvb3GBgO20n/fJsQtXszHX7D2tOhVDzVqUQKDCxU7FiIiIiIiIiMjjgrZBQUFy+fLlbMMRxAsMDMyPWVI+OHLkiHz0wXuq0zF7AVtj4Hbi0Ax5fMzn8kDX7mofoPwriYAMWx2w1Y6dT1adjKFmLcsfFL7cdCqGsgp4sDwCERERERERUfHmmx8Tveeee1R92j/++ENMJpN6IPN24MCBqjMyZxw7dkzeeustGTFihAwdOtTikRtz5syR6tWrq/ILzZs3lz///NPuuF988YU0a9ZMSpYsKWFhYdKoUSP58MMPpbipVq2aPNzrMRk1XWTvoQyH4+J1jIfxK1WqVGBtLI5QwxYlEWzBcLxuDPCWCQtU/1LBMnYqdnvV29W/eI7h1vx9/aVCWAU5nXxaVh1dpf7FcwwnIiIiIiIiouInXyIC6Eisd+/ectNNN0lAQIAalpGRoQK2M2fOzPH9q1atUuPWrFlT9uzZI9dee60cPnxYBX+bNGnicnuWLFmigr1z585VAdsZM2ZIu3btZO/evRIVFZVtfJR1GD16tNStW1dlBn/33XfSt29fNS7eV5z07t1P/dt9CEokXO18zFbAtvuQTGl/bz/z+JR/0OkYatiiJII1DMfrrHnrOZzJmi0bUlZmb50tJxJPqOfrjq+TSuGVVKYuAr1EREREREREVLzkS9AWGapff/217N+/X3bv3q2GXXPNNVK7dm2n3j9y5EgZPny4vPLKKxIRESHLli1TAVN0VHbXXXe53J5p06ZJ//79VeAVELxFZ2gLFixQmbzWWrdubfF80KBBsmjRIlm/fn2xC9rmFLhlwLbgofQBOh1DDVuURNDwvE6FCDlxMVkqlghmzVsvgXIIcRfjzAFb7XjicVVaARm6OQV9iYiIiIiIiKhoyZfyCBqCtPfee6906NBB1bO9cOGCU+9DoLdXr17qb39/f0lOTpbw8HAZN26cvPbaay61IS0tTTZt2iRt2rQxD/P19VXPN27cmOP7kd2LzF9k5d56661SXCFwi0xaZNTqUgkM2Bae04mpqtOxga1qyW2xUerfoXfGyunLKTZr3vr6+kj8pRTZfzqRpRI8TMmgkpKWkabKIVhDLdxg/+BCaRcRERERERERFbFM28GDB8t1110njz76qGRmZkqrVq3kt99+k9DQUFVqwDqT1RrqyCLYCtHR0XLgwAGpX7++en72rP1OfGzB+GhD+fLlLYbjOUov2HPp0iVVmzU1NVX8/PxUfd0777zT5rgYBw8tISFB/avr+eaFnkZep+MOvXr1FTSj++D5MnFopoyaZpK77n30/8Pzp32etPyOqPbpRwHIyDCpjNqoiECpVjpKlUQ4cSFJvVYi2F/2xl/dB318UC/VV1LSMyUlI0v+OZEgD91YVQ6eSZSMTDe11au20f//9QCoV4uyCMimPZxwWJqVb6aef7bvM7mSfkWNg87LktOT3dPm/y+7pyy/PaqNensVM3q53bHseZ1Gfp7XiIiIXMXzGhGRZ+D1mqlAr9fyJWj7+eefy8MPP6z+/vbbb+XgwYMqQIrOvFArdsOGDQ7ff+ONN6pSBCipgCzdYcOGyY4dO1QHYXitIKAsw9atW1WGMDJtURMXNXZtBZwnTZqkSjnYCvzmdWOmpKSoaeggdmHr0eMhycrMlAEvLZCeD/VTz/OzbVh2rAOsS0+WlXpFgiVVJO1q4LSgJKWJWM8x+Uq6xEaFyZo9p8Tfz09OJaRIWmaWeq10WKDMXR0nDzevKifOXnRLG7DcWH5P30aZSZkSmB4okiIeoWypsjJnyxxVFiHAL8Dc+ViP2B7y/s73VU3b2hG15eSFk26ZH5Yd68DTt1NSZqYkBwWJ464Pi6bUoCB1fM10wzbSQdbcys/zGhERkat4XiMi8gy8Xsss0Ou1fAnaIru1QoWrt/r+8MMP0q1bN6lTp47069fPqY7IUIMWwVLARSP+RmdiMTEx6jVXlC1bVmXKnjp1ymI4nus22oISCroGb6NGjVTJBlzE2graogYvgrrGlV+lShUpUaKEREZGSl4EBweLj4+P6hDNU/Tt95jcfsedUq1atXyfF5Yd6wDr0pP5BqVKCqKBgaGF3RRJMonERodIlTLhcvjsFXPAtlqZUCkXESRfbjkuN9RElm6Eqo+bVymSIb5BYR6/jfwu+0laQhqizB5Rx3Z/wn45kXRCFanJMGVIVGiUql2bmpUqzzR9RqLDouVM0hm3tTctKU38Qv08fzv5+YlvaqonbKYC55+aKmF+fhLuhm2EY2de5Od5jYiIyFU8rxEReQZer/kV6PVavgRtUXpg165dqrTBihUr5O2331bDk5KS1AZ2BKUMjh07Jg0aNDCXSkDHYbmFYGfTpk1VtmynTp3UsKysLPX86aefdno6eI/xVlGjoKAg9bC1EfL6BUNPI6/Tcbfq1asXyHw8dfmtqfbph4fUvH3hrrry56HzsvXfi1IrKkzKhQfJJ38cVa/vjb8s1cqUl6T0qwHdPPGqbZT3L/3uEBoQKvtP7jc/R0GA9Kx0VTLh5JWTcl3Z6yT+Srx6zW3t/f+ye8LyO6La6M7l9iJ6ud2x7HmdRn6e14iIyPOknTgpKVu3SMqevRJcN1aCGzWWwIrR4il4XiMi8gy8XvMp0Ou1fAna9u3bV2XXImiLhuhOwP744w+pW7euw/ciqNu2bVuV2VqyZEm3tAfZQr1795ZmzZrJDTfcIDNmzJArV66odgI6PUP9WmTSAv7FuLVq1VKBWmQLo7SDDj4TeTrUq0WnZMisxaHg9wPn5OSl/+oCxFaIUHVwqXAgo7Z2qdqy7vg6i+FZpiypWaKmXEr17BIGREREVLQCtqcmvioZJ6/+YHxlwwbxj46W8qNGeVTgloiIqLjJl6Dtyy+/rDoiO3r0qHTt2tWcrYOA7IgRI3J8/7XXXqvq4NaoUcMt7enevbucOXNGxowZI/Hx8arcATKAdedkaCfKIWgI6D755JMq4zckJEQFmj/66CM1HSJvgdIHlUoGy7mkVIuAbeXSIVKnQoTqyIwKL2gbUzJG1a09nnjcPFzVsS1Z25xlS0RERJTfkGGrA7ZaxsmTkrJtK4O2RERERSlom56eLnfddZcqadClSxeL15Dt6owJEybI8OHDZfz48aq0AUokGOWmnh5KIdgrh7BmzZps88eDyNuhTMLQNnVk36lEVRIBGbYI2CILlwrX2eSz8lSjp2T/xf0SdyFOYkrFqIAthhMREREVFJREsDc8sn17bggiIqKiErQNCAiQ7du352kaHTp0UP927NjRos4DeqzGc9S9JSLnyiScuJQiUZFBqiMylERghq1nyMjKUBm15ULKSZWIKpKSkcIMWyIiIipwqGGLkgi2hhMREVERK4/w8MMPy/z582Xy5Mm5ev/q1avd3iai4l4qAQ/yzFIJeBAREREVBnQ6hhq2KImg4Xlwo0bcIEREREUtaJuRkSELFiyQlStX2ixvMG3aNIfvb9WqVX40i4iIiIiIiAzQ2Rg6HUMNW5REQIYtAraB0eyEjIiIqMgFbXfu3ClNmjRRf+/bt8/iNWO5A0cuXLigsnV3796tnterV0/69u0rpUuXzocWExERERERFd/ALR6sYUtERFTEg7Z5LW+wdu1auffee6VEiRLSrFkzNezNN9+UcePGybfffiu33nqrm1pKREREREREREREVAyCtnn11FNPSffu3eXtt98WPz8/NQydjz355JPqtR07dhR2E4mIiIiIiIiIiIi8K2j7999/y9KlS+Xo0aOSlpZm8doXX3zh8L379++Xzz//3BywBfw9dOhQ+eCDD/KryURERERERAUq8/JlSbUqKectgurUEb+IiMJuBhERUZGUL0HbxYsXS69evaRdu3by008/Sdu2bVVt21OnTknnzp1zfD/q4aKWbWxsrMVwDGvYsGF+NJmIiIiIiMitkv76S7KSkhyOk7p/v5ye8oZXrvmo54ZLUO3adl/3DQ2V0OuvL9A2ERERFRX5ErSdOHGiTJ8+XZUyiIiIkJkzZ0qNGjXk8ccfl2g7vZBu377d/Pezzz4rgwYNUhm3N954oxr2+++/y5w5c2Ty5Mn50WQiIiIickFCSrrsjb/sdesstkKERAYHFHYzqJhAwDZx3XrxCQqyO056fLx4q+Rdu+V/7N0HeFRV+sfxN70SEiCVLgkgKEUQVnEXFBTUVbFiBbGvuirYG9iQolIUlP+KKOq6souuWxRUEFxUVldAkRYC0tMhvbf/8x6cmJBJSJ25M/P9PM99knvmzs2ZuYST+c2Z95QfzbJ7W1VJiYT+9iyH9wkAAHfRJqHtnj175MILLzTf+/v7S0FBgXh5ecmUKVPknHPOkaeffrrOfQYNGmSOqaqqqm576KGH6hx37bXXmnq3AAAAaBvf/nxECksrGjxmV1qezFy50+UuwaPn95Xe0Q1/nDvY30eGn9TRYX2Ce9PANvDkk+u/PTBQXJV/jx4S0LOn3duKd+xweH8AAHAnbRLaRkRESF7esZkXnTt3lq1bt8qpp54q2dnZUljPx4P27t3bFl0BAABAE2lgu25XugT4/rq+wPFSc4pd8nndlpwrRwpqr7dQU0l5hYzqHeXQPsGz+cXESMe77hJX7TsAAHCh0PZ3v/udfP755yaovfLKK02pgy+++MK0jR492u59unfv3hZdAQAAQDNoYNs/Lqze2wP9vF3yee3RKVh6RYY2GOoCjuQdFFTvbFUAAOC52iS0XbhwoRQXH5t98fjjj4ufn5988803cvnll8sTTzxh9z5as9ZWv/ZEdLauzszt379/q/YbAAAAjRPXPkjuGV3/AkRW7jfgiryCg8Q7MEgqi4ukqrDI2d0BAACuGNp26NCh+ntvb2955JFHTnifG264QU466SS55ZZb5IILLpCQkJA6x2zfvl3effddefPNN2X27NmEtgAAAE4S5O/T4IxVAK3E11d8O3WSkqQkKU1KEv+EBAlISJDyzEyR8nKeZgAA3FSbhLa2xcg0XNWvCxYskKioKFm5cqV069bNbtiqgexrr71mZuLqYmO9e/eWuLg4CQwMlKysLNm5c6fk5+fLpZdeKp999pkpvQAAANyTfmInLS1NXE10dLT52wUAWosGtpmvvCJlhw8fa/jPf8Svc2fp9Mc/SnlqKk80AABuqk1C2y+//FLOP/98GTFihPznP/+RGTNmmND2xx9/lDfeeENWrFhR5z5aQuGee+4x2/fffy9fffWV7N+/X4qKimTgwIEyZcoUOfvss2vN4gUAAK5l3759Ulpa/yJQNunp6bJ69WpxNWPGjDF/89TH399fevTo4dA+uZNgfx8J8vORorIKs1ga4AklEXSGbXVg+wvdL929W3yiIimVAACAm2qT0FbLITz33HMydepUadeuXXX7OeecY+rdnsjQoUPNBgAA3IsGtrt37xZf34b/BMnNdc3FoFJTU03tfXvKy8slPt71asBaga+Pl0SFBkhiWr4kpuZJn5h20ic6VNLzS6S8osrZ3QPajNaw1ZII9pQk7ZLQbt2kgvq2AAC4pTYJbX/66Sd577336rTrzJNMrb0EAAA8lga2sbGxDR6jn8BxRR07dpROnTrZvS0lJcXh/XEXGtjO/XyXHMo6tvjSusR06dIhSKaO6S3JOccWv4V9eaV5kpRlP/SzsoSIBGnn/+vkD0+li45pDVstiXC8gITe5nYAAOCe2iS0DQ8PNy9MevbsWat98+bN0rlz57b4kQAAwI20b99eRo4c6dAgWTedDatbS/qN1i+JoDNsbYGtzaGjRbIrLV+iwgI8slTC96nfS2G5/VndNe3O3i3zNs4TVzNlyBSJD294Znqwb7AMjXHv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", + "text/plain": [ + "

" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Comparison: Paper vs Our Per-Subject Results (Pereira2018)\n", + "Model Condition Paper mean Paper range Ours mean Ours range\n", + "----------------------------------------------------------------------------\n", + "OASM shuffled 0.4511 [0.386, 0.533] 0.4819 [0.427, 0.531]\n", + "OASM contig 0.0000 [0.000, 0.000] 0.0000 [0.000, 0.000]\n", + "GPT2-XL shuffled 0.3981 [0.319, 0.457] 0.3804 [0.311, 0.433]\n", + "GPT2-XL contig 0.1402 [0.038, 0.274] 0.0637 [-0.018, 0.178]\n" + ] + } + ], + "source": [ + "from matplotlib.lines import Line2D\n", + "\n", + "fig, axes = plt.subplots(2, 3, figsize=(14, 8), sharey='row')\n", + "\n", + "condition_labels = {\"shuffled\": \"Shuffled splits (brain-score default)\",\n", + " \"contig\": \"Contiguous splits (story-level GroupKFold)\"}\n", + "bar_width = 0.6\n", + "has_our_results = bool(OUR_OASM_PER_SUBJ) or bool(OUR_GPT2XL_PER_SUBJ)\n", + "\n", + "# Map from model name -> our per-subject results dict\n", + "our_per_subj_map = {\n", + " \"OASM\": OUR_OASM_PER_SUBJ,\n", + " \"GPT2-XL\": OUR_GPT2XL_PER_SUBJ,\n", + "}\n", + "\n", + "for row, condition in enumerate(CONDITIONS):\n", + " for col, dataset in enumerate(DATASETS):\n", + " ax = axes[row, col]\n", + " df = fig1_data[(dataset, condition)]\n", + "\n", + " for i, model in enumerate(MODELS):\n", + " model_df = df[df[\"Model\"] == model]\n", + " values = model_df[\"perf\"].values\n", + " mean_val = values.mean()\n", + "\n", + " # Bar for the mean\n", + " ax.bar(i, mean_val, width=bar_width, color=MODEL_COLORS[model],\n", + " alpha=0.35, edgecolor=MODEL_COLORS[model], linewidth=1.2)\n", + " # Per-subject dots (paper)\n", + " rng = np.random.default_rng(42)\n", + " jitter = rng.uniform(-0.15, 0.15, len(values))\n", + " ax.scatter(i + jitter, values, color=MODEL_COLORS[model],\n", + " s=25, zorder=3, alpha=0.8, edgecolors='white', linewidth=0.5)\n", + " # Mean line (paper)\n", + " ax.plot([i - 0.2, i + 0.2], [mean_val, mean_val],\n", + " color=MODEL_COLORS[model], linewidth=2.5, zorder=4)\n", + "\n", + " # Overlay our per-subject results as gold dots + mean star\n", + " our_results = our_per_subj_map.get(model, {})\n", + " our_vals = our_results.get((dataset, condition))\n", + " if our_vals is not None:\n", + " our_mean = our_vals.mean()\n", + " rng2 = np.random.default_rng(123)\n", + " our_jitter = rng2.uniform(-0.12, 0.12, len(our_vals))\n", + " ax.scatter(i + our_jitter, our_vals, color='gold',\n", + " s=40, zorder=5, alpha=0.9, edgecolors='black',\n", + " linewidth=0.8, marker='D')\n", + " ax.plot([i - 0.2, i + 0.2], [our_mean, our_mean],\n", + " color='gold', linewidth=2.5, zorder=6, linestyle='--')\n", + "\n", + " ax.set_xticks(range(len(MODELS)))\n", + " short_labels = [\"GPT2\\nXL\", \"GPT2\\nXL-mp\", \"GPT2\\nXL-sp\", \"OASM\"]\n", + " ax.set_xticklabels(short_labels, fontsize=8)\n", + " ax.axhline(y=0, color='black', linewidth=0.5, alpha=0.3)\n", + " ax.grid(axis='y', alpha=0.2)\n", + "\n", + " if row == 0:\n", + " ax.set_title(DATASET_LABELS[dataset], fontsize=13, fontweight='bold')\n", + " if col == 0:\n", + " ax.set_ylabel(f\"Pearson r\\n({condition_labels[condition]})\", fontsize=10)\n", + "\n", + "# Build legend\n", + "legend_handles = [\n", + " Line2D([0], [0], marker='o', color='w', markerfacecolor='gray',\n", + " markersize=6, label='Paper: per-subject values'),\n", + " Line2D([0], [0], color='gray', linewidth=2.5, label='Paper: mean'),\n", + "]\n", + "if has_our_results:\n", + " legend_handles.extend([\n", + " Line2D([0], [0], marker='D', color='w', markerfacecolor='gold',\n", + " markeredgecolor='black', markersize=7,\n", + " label='Ours: per-subject values'),\n", + " Line2D([0], [0], color='gold', linewidth=2.5, linestyle='--',\n", + " label='Ours: mean'),\n", + " ])\n", + "fig.legend(handles=legend_handles, loc='upper right', fontsize=9,\n", + " framealpha=0.9, bbox_to_anchor=(0.99, 0.99))\n", + "\n", + "title = \"Figure 1 (Hadidi et al., 2025): OASM vs GPT2-XL\"\n", + "subtitle = \"All evaluations use ridge regression (L2). Per-subject dots for both paper and ours.\"\n", + "fig.suptitle(f\"{title}\\n{subtitle}\", fontsize=13, fontweight='bold', y=1.04)\n", + "plt.tight_layout()\n", + "plt.savefig('figure1_reproduction.png', dpi=150, bbox_inches='tight')\n", + "plt.show()\n", + "\n", + "# Print comparison table\n", + "print(\"\\nComparison: Paper vs Our Per-Subject Results (Pereira2018)\")\n", + "print(f\"{'Model':<10} {'Condition':<10} {'Paper mean':>11} {'Paper range':>16} \"\n", + " f\"{'Ours mean':>10} {'Ours range':>16}\")\n", + "print(\"-\" * 76)\n", + "for model_name, our_results in [(\"OASM\", OUR_OASM_PER_SUBJ), (\"GPT2-XL\", OUR_GPT2XL_PER_SUBJ)]:\n", + " for cond in CONDITIONS:\n", + " paper_vals = fig1_data[(\"pereira\", cond)]\n", + " paper_model_vals = paper_vals[paper_vals[\"Model\"] == model_name][\"perf\"].values\n", + " our_vals = our_results.get((\"pereira\", cond))\n", + " if our_vals is not None:\n", + " print(f\"{model_name:<10} {cond:<10} {paper_model_vals.mean():>11.4f} \"\n", + " f\"[{paper_model_vals.min():.3f}, {paper_model_vals.max():.3f}] \"\n", + " f\"{our_vals.mean():>10.4f} [{our_vals.min():.3f}, {our_vals.max():.3f}]\")\n", + " else:\n", + " print(f\"{model_name:<10} {cond:<10} {paper_model_vals.mean():>11.4f} \"\n", + " f\"[{paper_model_vals.min():.3f}, {paper_model_vals.max():.3f}] \"\n", + " f\"{'--':>10} {'--':>16}\")" + ] + }, + { + "cell_type": "markdown", + "id": "cell-21", + "metadata": {}, + "source": [ + "### Figure 1: Comparing our per-subject results to the paper\n", + "\n", + "**Gold diamonds** show our per-subject scores (one per fMRI participant, 10 total).\n", + "**Colored circles** show the paper's per-subject scores. Both use ridge regression (RidgeCV, L2).\n", + "\n", + "**OASM (Pereira2018):** Our per-subject distribution overlaps closely with the paper's\n", + "range for shuffled splits. Contiguous scores are exactly 0.0 for all subjects in both\n", + "the paper and our implementation, confirming OASM has zero genuine predictive power.\n", + "\n", + "**GPT2-XL (Pereira2018):** Our GPT2-XL scores are directionally consistent with the\n", + "paper but differ in magnitude, particularly under contiguous splits. This is may be expected\n", + "due to implementation differences that do not affect OASM (which is fully deterministic):\n", + "\n", + "- **Layer selection:** We use a fixed layer (`transformer.h.43`, the last layer).\n", + " The paper performs a layer sweep and selects the best layer, which may differ\n", + " between shuffled and contiguous evaluation and may not be the final layer.\n", + "- **Representation extraction:** Brain-score's `HuggingfaceSubject` uses the\n", + " last-token hidden state. The paper may aggregate across tokens differently\n", + " (e.g., mean-pooling), producing different features for regression.\n", + "- **Data preprocessing:** We load via brain-score's `load_dataset` and drop NaN\n", + " neuroids. The paper's pipeline may apply different voxel selection or z-scoring.\n", + "\n", + "These differences do not affect the central finding: **GPT2-XL retains non-zero\n", + "predictivity under contiguous splits (genuine linguistic signal) while OASM drops\n", + "to exactly zero (no linguistic content).** The qualitative conclusion holds regardless\n", + "of the exact GPT2-XL magnitude.\n", + "\n", + "**Fedorenko2016 and Blank2014:** Showing paper data only. Our evaluation covers Pereira2018;\n", + "extending to the other datasets requires running those benchmarks separately." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "language-2026", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.14" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/brainscore_language/models/oasm/validation/oasm_shuffled_vs_contiguous.png b/brainscore_language/models/oasm/validation/oasm_shuffled_vs_contiguous.png new file mode 100644 index 0000000000000000000000000000000000000000..7d13b38f63106830571980abca844c491ef3785d GIT binary patch literal 98743 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∨q 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 R`x){Y4fQ>08LAfN|39ei%xM4s literal 0 HcmV?d00001 diff --git a/brainscore_language/models/oasm/validation/source_data/README.md b/brainscore_language/models/oasm/validation/source_data/README.md new file mode 100644 index 00000000..11f07663 --- /dev/null +++ b/brainscore_language/models/oasm/validation/source_data/README.md @@ -0,0 +1,24 @@ +# Source Data + +Per-subject Pearson r values from Hadidi et al. (2025) "Illusions of Alignment Between Large Language Models and Brains Emerge From Fragile Methods and Overlooked Confounds." + +Downloaded from: https://github.com/ebrahimfeghhi/beyond-brainscore/tree/main/source_data/figure1 + +## Files + +All CSVs have columns: `subjects, Network, Model, perf` + +Models: GPT2-XL, GPT2-XL-mp (mean-pooled), GPT2-XL-sp (sum-pooled), OASM + +### figure1/ + +| File | Dataset | CV Split | Subjects | +|------|---------|----------|----------| +| `pereira_pearson_r_shuffled.csv` | Pereira2018 | Shuffled | 10 | +| `pereira_pearson_r_contig.csv` | Pereira2018 | Contiguous (passage-level) | 10 | +| `fedorenko_pearson_r_shuffled.csv` | Fedorenko2016 | Shuffled | 5 | +| `fedorenko_pearson_r_contig.csv` | Fedorenko2016 | Contiguous (passage-level) | 5 | +| `blank_pearson_r_shuffled.csv` | Blank2014 | Shuffled | 5 | +| `blank_pearson_r_contig.csv` | Blank2014 | Contiguous (passage-level) | 5 | + +These are the L2-regularized (ridge regression) results used in the paper's Figure 1. diff --git a/brainscore_language/models/oasm/validation/source_data/figure1/blank_pearson_r_contig.csv b/brainscore_language/models/oasm/validation/source_data/figure1/blank_pearson_r_contig.csv new file mode 100644 index 00000000..7bba5484 --- /dev/null +++ b/brainscore_language/models/oasm/validation/source_data/figure1/blank_pearson_r_contig.csv @@ -0,0 +1,21 @@ +subjects,Network,Model,perf +0,language,GPT2-XL,0.07220138891724226 +0,language,GPT2-XL-mp,0.09571631494500044 +0,language,GPT2-XL-sp,0.08747649739812169 +0,language,OASM,0.0 +1,language,GPT2-XL,0.011106857963739003 +1,language,GPT2-XL-mp,0.017414663323736774 +1,language,GPT2-XL-sp,0.014038576738976608 +1,language,OASM,0.002839950586707237 +2,language,GPT2-XL,0.017727995827974352 +2,language,GPT2-XL-mp,0.029838162900192478 +2,language,GPT2-XL-sp,0.039573392800788976 +2,language,OASM,0.0030390148848630596 +3,language,GPT2-XL,0.022947151997441646 +3,language,GPT2-XL-mp,0.05178651210303816 +3,language,GPT2-XL-sp,0.04797006822532257 +3,language,OASM,0.004422205707802125 +4,language,GPT2-XL,0.0 +4,language,GPT2-XL-mp,0.0 +4,language,GPT2-XL-sp,0.0 +4,language,OASM,0.006326722478589915 diff --git a/brainscore_language/models/oasm/validation/source_data/figure1/blank_pearson_r_shuffled.csv b/brainscore_language/models/oasm/validation/source_data/figure1/blank_pearson_r_shuffled.csv new file mode 100644 index 00000000..db6d95ea --- /dev/null +++ b/brainscore_language/models/oasm/validation/source_data/figure1/blank_pearson_r_shuffled.csv @@ -0,0 +1,21 @@ +subjects,Network,Model,perf +0,language,GPT2-XL,0.08057108715817103 +0,language,GPT2-XL-mp,0.19209100947665414 +0,language,GPT2-XL-sp,0.17823206144446083 +0,language,OASM,0.5633979979944896 +1,language,GPT2-XL,0.008929434902181697 +1,language,GPT2-XL-mp,0.10418312587074101 +1,language,GPT2-XL-sp,0.08372259791841508 +1,language,OASM,0.4645187989729032 +2,language,GPT2-XL,0.06354523220521707 +2,language,GPT2-XL-mp,0.14500306548652186 +2,language,GPT2-XL-sp,0.14045774085655402 +2,language,OASM,0.5592956673262197 +3,language,GPT2-XL,0.060927733997912036 +3,language,GPT2-XL-mp,0.10298613856093268 +3,language,GPT2-XL-sp,0.09343440634146795 +3,language,OASM,0.4394840984322636 +4,language,GPT2-XL,0.031226469155534026 +4,language,GPT2-XL-mp,0.10959202214338164 +4,language,GPT2-XL-sp,0.09633169637601853 +4,language,OASM,0.48818989622015496 diff --git a/brainscore_language/models/oasm/validation/source_data/figure1/fedorenko_pearson_r_contig.csv b/brainscore_language/models/oasm/validation/source_data/figure1/fedorenko_pearson_r_contig.csv new file mode 100644 index 00000000..daa0a5ee --- /dev/null +++ b/brainscore_language/models/oasm/validation/source_data/figure1/fedorenko_pearson_r_contig.csv @@ -0,0 +1,21 @@ +subjects,Network,Model,perf +1,language,GPT2-XL,0.2531962428615742 +1,language,GPT2-XL-mp,0.2536414001126081 +1,language,GPT2-XL-sp,0.2675449599446727 +1,language,OASM,0.0 +2,language,GPT2-XL,0.09756753772383757 +2,language,GPT2-XL-mp,0.09742801152429637 +2,language,GPT2-XL-sp,0.0941148994520113 +2,language,OASM,0.0 +3,language,GPT2-XL,0.31259829314535786 +3,language,GPT2-XL-mp,0.31470006703645154 +3,language,GPT2-XL-sp,0.3204371660500738 +3,language,OASM,0.0 +4,language,GPT2-XL,0.21327082459956523 +4,language,GPT2-XL-mp,0.21586958867858239 +4,language,GPT2-XL-sp,0.2125194478657789 +4,language,OASM,0.0 +5,language,GPT2-XL,0.14001115313558704 +5,language,GPT2-XL-mp,0.14856808301994873 +5,language,GPT2-XL-sp,0.15325231511599408 +5,language,OASM,0.0 diff --git a/brainscore_language/models/oasm/validation/source_data/figure1/fedorenko_pearson_r_shuffled.csv b/brainscore_language/models/oasm/validation/source_data/figure1/fedorenko_pearson_r_shuffled.csv new file mode 100644 index 00000000..dfcb58ca --- /dev/null +++ b/brainscore_language/models/oasm/validation/source_data/figure1/fedorenko_pearson_r_shuffled.csv @@ -0,0 +1,21 @@ +subjects,Network,Model,perf +1,language,GPT2-XL,0.34896263570752317 +1,language,GPT2-XL-mp,0.3632317345906369 +1,language,GPT2-XL-sp,0.34499940775120036 +1,language,OASM,0.4270511335054035 +2,language,GPT2-XL,0.13392662046961318 +2,language,GPT2-XL-mp,0.1545791239259306 +2,language,GPT2-XL-sp,0.12473568916503006 +2,language,OASM,0.16037223022820074 +3,language,GPT2-XL,0.3657384796724074 +3,language,GPT2-XL-mp,0.3719569180796879 +3,language,GPT2-XL-sp,0.3673204593887698 +3,language,OASM,0.29057329850431324 +4,language,GPT2-XL,0.24713742843845501 +4,language,GPT2-XL-mp,0.25259369495842443 +4,language,GPT2-XL-sp,0.23867056440342482 +4,language,OASM,0.23077332877596096 +5,language,GPT2-XL,0.19116972337286864 +5,language,GPT2-XL-mp,0.19920357179742398 +5,language,GPT2-XL-sp,0.18894171878085173 +5,language,OASM,0.2567917104195885 diff --git a/brainscore_language/models/oasm/validation/source_data/figure1/pereira_pearson_r_contig.csv b/brainscore_language/models/oasm/validation/source_data/figure1/pereira_pearson_r_contig.csv new file mode 100644 index 00000000..f089b8f8 --- /dev/null +++ b/brainscore_language/models/oasm/validation/source_data/figure1/pereira_pearson_r_contig.csv @@ -0,0 +1,41 @@ +subjects,Network,Model,perf +018,language,GPT2-XL,0.14578051637840278 +018,language,GPT2-XL-mp,0.13563427881713885 +018,language,GPT2-XL-sp,0.1514872984318209 +018,language,OASM,0.0 +199,language,GPT2-XL,0.05219479952194437 +199,language,GPT2-XL-mp,0.038389015728642686 +199,language,GPT2-XL-sp,0.03950010128904683 +199,language,OASM,0.0 +215,language,GPT2-XL,0.11520714392075457 +215,language,GPT2-XL-mp,0.1352198906372439 +215,language,GPT2-XL-sp,0.14285146790079145 +215,language,OASM,0.0 +288,language,GPT2-XL,0.03781054791432703 +288,language,GPT2-XL-mp,0.02893575085663852 +288,language,GPT2-XL-sp,0.027811467449337803 +288,language,OASM,0.0 +289,language,GPT2-XL,0.23009409177705825 +289,language,GPT2-XL-mp,0.22916380273265263 +289,language,GPT2-XL-sp,0.2526674462210045 +289,language,OASM,0.0 +296,language,GPT2-XL,0.1427073601039065 +296,language,GPT2-XL-mp,0.1374394617766227 +296,language,GPT2-XL-sp,0.151085071585596 +296,language,OASM,0.0 +343,language,GPT2-XL,0.2343104954603496 +343,language,GPT2-XL-mp,0.2544405835454391 +343,language,GPT2-XL-sp,0.2530558012365958 +343,language,OASM,0.0 +366,language,GPT2-XL,0.07411343575248923 +366,language,GPT2-XL-mp,0.10450934630019292 +366,language,GPT2-XL-sp,0.09344268647638543 +366,language,OASM,0.0 +407,language,GPT2-XL,0.09504107396554322 +407,language,GPT2-XL-mp,0.10178009075487737 +407,language,GPT2-XL-sp,0.09047300455378827 +407,language,OASM,0.0 +426,language,GPT2-XL,0.27442101859252027 +426,language,GPT2-XL-mp,0.23587685596507482 +426,language,GPT2-XL-sp,0.2673726751545331 +426,language,OASM,0.0 diff --git a/brainscore_language/models/oasm/validation/source_data/figure1/pereira_pearson_r_shuffled.csv b/brainscore_language/models/oasm/validation/source_data/figure1/pereira_pearson_r_shuffled.csv new file mode 100644 index 00000000..32bdb715 --- /dev/null +++ b/brainscore_language/models/oasm/validation/source_data/figure1/pereira_pearson_r_shuffled.csv @@ -0,0 +1,41 @@ +subjects,Network,Model,perf +018,language,GPT2-XL,0.3442951669360902 +018,language,GPT2-XL-mp,0.29589984154535154 +018,language,GPT2-XL-sp,0.30395150193756704 +018,language,OASM,0.3859145871759404 +199,language,GPT2-XL,0.3644974873394911 +199,language,GPT2-XL-mp,0.31021432304053437 +199,language,GPT2-XL-sp,0.3177334788718606 +199,language,OASM,0.4392121333580187 +215,language,GPT2-XL,0.31874498972536186 +215,language,GPT2-XL-mp,0.3263331768451008 +215,language,GPT2-XL-sp,0.3277647897361882 +215,language,OASM,0.39916894793816005 +288,language,GPT2-XL,0.36287603484560177 +288,language,GPT2-XL-mp,0.30116227129847284 +288,language,GPT2-XL-sp,0.29652416588843056 +288,language,OASM,0.4840496788741042 +289,language,GPT2-XL,0.40276716888182484 +289,language,GPT2-XL-mp,0.3541060117368643 +289,language,GPT2-XL-sp,0.3648883682459654 +289,language,OASM,0.4089635265850968 +296,language,GPT2-XL,0.4274455994127759 +296,language,GPT2-XL-mp,0.35562811365138747 +296,language,GPT2-XL-sp,0.35613891703014366 +296,language,OASM,0.4741234476007776 +343,language,GPT2-XL,0.45686935058589384 +343,language,GPT2-XL-mp,0.3752334716733578 +343,language,GPT2-XL-sp,0.36730177314000684 +343,language,OASM,0.5332797466860137 +366,language,GPT2-XL,0.44676485071482674 +366,language,GPT2-XL-mp,0.38266573904760465 +366,language,GPT2-XL-sp,0.38047200536874104 +366,language,OASM,0.48768168755220703 +407,language,GPT2-XL,0.4527823611553371 +407,language,GPT2-XL-mp,0.36421827510196736 +407,language,GPT2-XL-sp,0.3724357519638481 +407,language,OASM,0.49362086698250895 +426,language,GPT2-XL,0.4034578776932959 +426,language,GPT2-XL-mp,0.38425345135426536 +426,language,GPT2-XL-sp,0.40487508824102914 +426,language,OASM,0.4045312019944507 From 3a16e41d71d86ddb9e6f5dc2d4c76449c3255955 Mon Sep 17 00:00:00 2001 From: Kartik Pradeepan Date: Thu, 12 Feb 2026 15:57:02 -0500 Subject: [PATCH 3/4] pandas version (2.2.0/CI vs 2.3.3/local) mismatch --- brainscore_language/models/oasm/test.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/brainscore_language/models/oasm/test.py b/brainscore_language/models/oasm/test.py index c77bae52..91a6fb82 100644 --- a/brainscore_language/models/oasm/test.py +++ b/brainscore_language/models/oasm/test.py @@ -14,7 +14,6 @@ import numpy as np import pytest -import xarray as xr from scipy.ndimage import gaussian_filter1d from scipy.stats import pearsonr from sklearn.linear_model import RidgeCV @@ -148,15 +147,15 @@ def test_output_shape(self): assert result.shape == (3, max_features) def test_consistent_neuroid_dims_across_blocks(self): - """All blocks must have the same neuroid dimension for xr.concat (as benchmarks do).""" + """All blocks must have the same neuroid dimension for concatenation (as benchmarks do).""" model = _make_model(sigma=1.0, max_features=20) r1 = model.digest_text(['a', 'b', 'c'])['neural'] r2 = model.digest_text(['d', 'e'])['neural'] r3 = model.digest_text(['f'])['neural'] - combined = xr.concat([r1, r2, r3], dim='presentation') - assert combined.shape == (6, 20) + assert r1.sizes['neuroid'] == r2.sizes['neuroid'] == r3.sizes['neuroid'] == 20 + assert r1.sizes['presentation'] + r2.sizes['presentation'] + r3.sizes['presentation'] == 6 class TestInputHandling: From b6fba91cec71bc03dcfff481f8625d565ff2e3f0 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Thu, 12 Feb 2026 21:04:55 +0000 Subject: [PATCH 4/4] Auto-generate: metadata generation: models (oasm) --- brainscore_language/models/oasm/metadata.yml | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 brainscore_language/models/oasm/metadata.yml diff --git a/brainscore_language/models/oasm/metadata.yml b/brainscore_language/models/oasm/metadata.yml new file mode 100644 index 00000000..68208885 --- /dev/null +++ b/brainscore_language/models/oasm/metadata.yml @@ -0,0 +1,15 @@ +models: + oasm: + architecture: DCNN + model_family: oasm + total_parameter_count: 1234567 + trainable_parameter_count: 1234567 + total_layers: 55 + trainable_layers: 40 + model_size_mb: 1202 + training_dataset: null + task_specialization: null + brainscore_link: https://github.com/brain-score/language/tree/master/brainscore_language/models/oasm + huggingface_link: null + extra_notes: Temporary hardcoded metadata - will be replaced with actual generation + runnable: true