Dynamic acoustic-to-categorical representations of phonemes and prosody along ventral and dorsal speech streams.
The 18 matches
- [1] § Methods › Time-resolved RSA ↔ code/python/create_model_rdms.py, lines 21–100 · score 0.86 · original morph steps, squared Euclidean, model RDMs, 0–1, categorical RDM, dissimilarities
- [2] § Results › Phonemic and prosodic representations in ventral and dorsal stream regions ↔ code/python/create_model_rdms.py, lines 21–100 · score 0.84 · sigmoid functions fitted, representational dissimilarity matrices, squared Euclidean, morph step, 0–1, categorial RDMs
- [3] § Methods › Source reconstructions ↔ code/python/run_rsa_rois.py, lines 64–126 · score 0.76 · cortical surface, noise covariance, fsaverage, epochs, volume, vertices
- [4] § Methods › mTE analysis ↔ code/python/run_mte_rois.py, lines 384–468 · score 0.74 · standard deviation, normalised mTE, directed connection, mTEn, lag, prosody
- [5] § Methods › mTE analysis ↔ code/python/mte_func.py, lines 72–128 · score 0.71 · neutral weighting, source ROI, target ROI, events, kernel, mTE
- [6] § Methods › Time-resolved RSA ↔ code/python/rsa_func.py, lines 47–105 · score 0.69 · nested model comparison, unique variance explained, reduced model, model RDMs, RSA
- [7] § Results › Phonemic and prosodic representations in ventral and dorsal stream regions ↔ figs/Fig3.ipynb, lines 56–67 · score 0.68 · 464–500 ms, 26–62 ms, stimulus offset, 464 ms, 26 ms, voice
- [8] § Results › Phonemic and prosodic representations in ventral and dorsal stream regions ↔ figs/Fig5.ipynb, lines 56–67 · score 0.68 · 464–500 ms, 26–62 ms, stimulus offset, 464 ms, 26 ms, voice
- [9] § Methods › Time-resolved RSA ↔ code/python/rsa_func.py, lines 175–285 · score 0.63 · triangular entries, linear models, neural RDM, NNLS, squares, weights
- [10] § Methods › mTE analysis ↔ code/python/mte_func.py, lines 47–69 · score 0.63 · Gaussian kernel function, Gram matrix, mTE
- [11] § Methods › Analysis of task-modulation effect ↔ code/python/run_rsa_rois.py, lines 64–126 · score 0.57 · noise covariance, whitening matrix, resolved RSA, model RDMs, ROIs, prosody
- [12] § Methods › Analysis of task-modulation effect ↔ code/python/analysis_pipeline.py, lines 46–102 · score 0.57 · task agnostic, task modulation, model RDMs, resolved RSA, subset, ROI
- [13] § Methods › Time-resolved RSA ↔ code/python/cluster_stats.py, lines 26–163 · score 0.56 · square rooted, baseline correction, transformed, Fisher, inference, acoustic
- [14] § Results ↔ code/matlab/fit_linear_and_sigmoid.m, lines 42–121 · score 0.56 · sigmoid fits, Sigmoid functions, Behavioural responses, linear, squares
- [15] § Results › Phonemic and prosodic representations in ventral and dorsal stream regions ↔ figs/Fig3.ipynb, lines 150–238 · score 0.53 · stimulus offset, stimulus onset, searchlight, axis, intervals, hemispheric
- [16] § Methods › Time-resolved RSA ↔ code/python/rsa_func.py, lines 108–159 · score 0.52 · dependent variable, subtraction, neural RDM, NNLS, weight, fitting
- [17] § Results › Transfer of phonemic and prosodic representations along ventral and dorsal streams ↔ code/python/run_mte_rois.py, lines 384–468 · score 0.51 · standard deviation, mTEn, lagging, MEG, ROIs, prosody
- [18] § Results › Phonemic and prosodic representations in ventral and dorsal stream regions ↔ code/python/cluster_stats.py, lines 26–163 · score 0.50 · cluster forming threshold, baseline corrected, transformed, permutation, error, temporal
Paper
Loaded from Europe PMC by your browser, not stored by OSCR: doi.org · Europe PMC
The paper is loaded when this pane is shown.
The authors' code
Python · 309 lines · 12 KB · GPL-3.0 · 3 matches
- ## functions for RSA.
- #
- # written by S-C. Baek
- # update: 16.12.2024
- #
- """
- Collection of functions to implement representational similarity analysis (RSA).
- The code below is customized based on 'mne-rsa 0.8dev (https://users.aalto.fi/~vanvlm1/mne-rsa/#development).'
- """
- import numpy as np
- from scipy.spatial import distance
- from sklearn.linear_model import LinearRegression
- import contextlib
- import joblib
- from joblib import Parallel, delayed
- from tqdm import tqdm
- def _ensure_condensed(rdm, var_name):
- """
- This function is taken from mne-rsa 0.8dev.
- It converts a single RDM to a condensed form if needed.
- """
- if type(rdm) is list:
- return [_ensure_condensed(d, var_name) for d in rdm]
- if not isinstance(rdm, np.ndarray):
- raise TypeError('A single RDM should be a NumPy array. '
- 'Multiple RDMs should be a list of NumPy arrays.')
- if rdm.ndim == 2:
- if rdm.shape[0] != rdm.shape[1]:
- raise ValueError(f'Invalid dimensions for "{var_name}" '
- '({rdm.shape}). The RDM should either be a '
- 'square matrix, or a one dimensional array when '
- 'in condensed form.')
- rdm = distance.squareform(rdm)
- elif rdm.ndim != 1:
- raise ValueError(f'Invalid dimensions for "{var_name}" ({rdm.shape}). '
- 'The RDM should either be a square matrix, or a one '
- 'dimensional array when in condensed form.')
- return rdm
- def _nested_comp_uvar_nnls(neural_rdm, rdm_model, weighting=None):
- """
- Compute unique variance explained by each model using nested model comparison.
- Linear regression is performed based on non-negative least squares (NNLS).
- Full model is based on all model RDMs available.
- Reduced model is based on all model RDMs except for on being tested.
- More than one model RDMs are required.
- If a weight matrix is specified, whitening distance estimates is performed.
- """
- if len(rdm_model) == 1:
- raise ValueError('Need more than one model RDM to use '
- 'nested-comp-uvar-nnls as metric.')
- n_models = len(rdm_model)
- # number of distances
- n_dists = len(neural_rdm)
- # if a weight matrix is specified
- if weighting is not None:
- # to make sure a weight matrix is ndarray
- V = np.array(weighting)
- # compute whitening matrix
- L, K = np.linalg.eigh(V)
- inv_l = 1 / np.sqrt(np.abs(L))
- W = K @ np.diag(inv_l) @ K.T # V^-1/2 for whitening
- else:
- W = np.eye(n_dists)
- # ---------- full model ---------- #
- X = np.atleast_2d(np.array([np.ones(n_dists)] + rdm_model)).T # design metrix including intercept
- Y = np.atleast_2d(np.array(neural_rdm)).T # dependent variable
- # weighting X and Y with decorrelation matrix
- wX = np.array(W @ X)
- wY = np.array(W @ Y)
- # main functionality
- reg_nnls_full = LinearRegression(fit_intercept=False, positive=True).fit(wX, wY)
- rsq_full = reg_nnls_full.score(wX, wY) # r_squared of full model
- # init output array
- rsq_reduceds = np.empty( (n_models, ) )
- # loop over rdm_model
- for i in range(n_models):
- # Reduced model
- reduced_model = rdm_model[:i] + rdm_model[i + 1:]
- X_reduced = np.atleast_2d(np.array([np.ones(n_dists)]+reduced_model)).T # design metrix including intercept
- wX_reduced = np.array(W @ X_reduced) # weighting X_reduced with decorrelation matrix
- reg_nnls_reduced = LinearRegression(fit_intercept=False, positive=True).fit(wX_reduced, wY)
- rsq_reduceds[i] = reg_nnls_reduced.score(wX_reduced, wY) # r_squared of reduced model
- # specify the output
- rsq_reduceds[rsq_reduceds < 0] = 0
- out = rsq_full - rsq_reduceds # unique variance explained by each parameter
- return out
- def _linear_regression_rsq_nnls(neural_rdm, rdm_model, weighting=None):
- """
- Compute r-squared by linear regression based on NNLS (with an effect of intercept excluded).
- A linear regression model takes a single neural RDM as a dependent variable,
- and one or multiple model RDMs as independent variable.
- If a weight matrix is specified, whitening distance estimates is performed.
- """
- # number of distances
- n_dists = len(neural_rdm)
- # number of models
- n_models = len(rdm_model)
- # if a weight matrix is specified
- if weighting is not None:
- # to make sure a weight matrix is ndarray
- V = np.array(weighting)
- # compute whitening matrix
- L, K = np.linalg.eigh(V)
- inv_l = 1 / np.sqrt(np.abs(L))
- W = K @ np.diag(inv_l) @ K.T # V^-1/2 for whitening
- else:
- W = np.eye(n_dists)
- # ---------- full model ---------- #
- X = np.atleast_2d(np.array([np.ones(n_dists)] + rdm_model)).T # design metrix including intercept
- Y = np.atleast_2d(np.array(neural_rdm)).T # dependent variable
- # weighting X and Y with decorrelation matrix
- wX = np.array(W @ X)
- wY = np.array(W @ Y)
- # main functionality
- reg_nnls = LinearRegression(fit_intercept=False, positive=True).fit(wX, wY)
- rsq = reg_nnls.score(wX, wY) # r_squared of full model
- # ---------- null model ---------- #
- X0 = np.atleast_2d(np.array([np.ones(n_dists)])).T # intercept only model
- # weighting X0 with decorrelation matrix
- wX0 = np.array(W @ X0)
- # main functionality
- reg_nnls = LinearRegression(fit_intercept=False, positive=True).fit(wX0, wY)
- rsq0 = reg_nnls.score(wX0, wY) # r_squared of null model
- # subtract rsq0 from rsq if rsq0 is larger then 0
- if rsq0 > 0:
- rsq = rsq - rsq0
- return rsq * np.ones( (n_models,) ) # to meet the shape criteria
- def _rsa_single_rdm(neural_rdm, rdm_model, metric, weighting=None):
- """Compute RSA between a single neural RDM and model RDMs."""
- if metric == 'regression-rsq-nnls':
- rdm_model = [rdm for rdm in rdm_model]
- rsa_vals = _linear_regression_rsq_nnls(neural_rdm, rdm_model, weighting)
- elif metric == 'nested-comp-uvar-nnls': # added by S-C. Baek
- rdm_model = [rdm for rdm in rdm_model]
- rsa_vals = _nested_comp_uvar_nnls(neural_rdm, rdm_model, weighting)
- else:
- raise ValueError("Invalid RSA metric, must be one of: 'nested-comp-uvar-nnls' or 'regression-rsq-nnls' ")
- return rsa_vals
- def rsa_array(rdm_array, rdm_model, rsa_metric='regression-rsq-nnls', weights=None, n_jobs=1, verbose=True):
- """
- This function is adapted from rsa_arry in mne-rsa 0.8dev.
- It Performs RSA on an array of data.
- Input
- ----------
- rdm_array : ndarray, shape (n_vertices, n_times, n_features)
- An array of precomputed neural RDMs.
- rdm_model : ndarray, shape (n_cond, n_cond) | (n_cond * (n_cond - 1) // 2,) | list of ndarray
- The model RDM(s). Both square (`scipy.spatial.distance.squareform`) and condensed forms are possible.
- A condensed form corresponds to the upper triangualr entries of a square form.
- For using multiple model RDMs, they should be provided as list.
- rsa_metric : str
- The RSA metric to use to compare neural and model RDMs.
- Valid options are:
- * 'regression-rsq-nnls' for r-squared by all models using linear regression based on NNLS.
- * 'nested-comp-uvar-nnls' for unique variance explained by each model using nested linear modeling based on NNLS.
- Defaults to 'regression-rsq-nnls'.
- weights : ndarry, shape (n_cond, n_cond) | list of ndarray
- A weight matrix or list of weight matrices to whiten distance estimates.
- If specified, a precomputed weight matrix should be provided.
- It can be computed by either assuming the independence of noise between conditions,
- or by estimating the noise corvariance structure between conditions.
- If provided as list, the length should match the first dimension of a rdm_array.
- Defaults to None.
- see also:
- Diedrichsen, J. et al. Comparing representational geometries using whitened unbiased-distance-matrix similarity.
- Neuron Behav Data Anal Theory 5, 1–31 (2020).
- n_jobs : int
- The number of processes (=number of CPU cores) to use. Specify -1 to use all available cores.
- Defaults to 1.
- verbose : bool
- If specified, a progress bar appears at the prompt.
- Returns
- -------
- rsa_vals : ndarray, shape ([n_vertices,] [n_times,] [n_rdm_models])
- The RSA value for each data point in input array.
- When multiple models have been supplied, the last dimension will contain RSA results for each model
- (also true for regression-rsq-nnls).
- """
- # reshape rdm_array
- n_rois, n_times, n_dists = rdm_array.shape
- rdm_array = np.reshape(rdm_array, (-1, n_dists)) # to (n_rois * n_times) X n_dists
- # reshape covariance matrix if any
- n_loop = n_rois * n_times
- if isinstance(weights, list) and len(weights) > 1:
- assert len(weights) == n_rois
- weightings = [weights[i] for i in range(n_rois) for j in range(n_times)]
- else:
- weightings = [None for i in range(n_loop)]
- # rdm_model into a condensed form
- if type(rdm_model) == list:
- rdm_model = [_ensure_condensed(rdm, 'rdm_model') for rdm in rdm_model]
- else:
- rdm_model = [_ensure_condensed(rdm_model, 'rdm_model')]
- # define a function for running rsa at a single point
- def rsa_single_rdm(neural_rdm, weighting):
- """
- Compute RSA for at a single roi and time point.
- Input
- ----------
- neural_rdm : ndarray, shape (n_dists,)
- A subset of rdm_array. Specifically, neural rdm at a single roi and time point.
- weighting : ndarray, shape (n_cond, n_cond)
- A weight matrix correspond to neural_rdm (for each roi and time point).
- """
- return _rsa_single_rdm(neural_rdm, rdm_model, rsa_metric, weighting)
- if verbose:
- @contextlib.contextmanager
- def tqdm_joblib(tqdm_object):
- """
- Context manager to patch joblib to report into tqdm progress bar given as argument
- Taken from here:
- https://stackoverflow.com/questions/37804279/how-can-we-use-tqdm-in-a-parallel-execution-with-joblib.
- """
- class TqdmBatchCompletionCallback(joblib.parallel.BatchCompletionCallBack):
- def __call__(self, *args, **kwargs):
- tqdm_object.update(n=self.batch_size)
- return super().__call__(*args, **kwargs)
- old_batch_callback = joblib.parallel.BatchCompletionCallBack
- joblib.parallel.BatchCompletionCallBack = TqdmBatchCompletionCallback
- try:
- yield tqdm_object
- finally:
- joblib.parallel.BatchCompletionCallBack = old_batch_callback
- tqdm_object.close()
- with tqdm_joblib(tqdm(desc="ROIs", total=len(rdm_array))) as pbar:
- # Call RSA multiple times in parallel for each ROI patch
- data = Parallel(n_jobs)(delayed(rsa_single_rdm)(neural_rdm, weighting)
- for neural_rdm, weighting in zip(rdm_array, weightings) )
- else: # without progress bar
- data = Parallel(n_jobs)(delayed(rsa_single_rdm)(neural_rdm, weighting)
- for neural_rdm, weighting in zip(rdm_array, weightings))
- # Figure out the desired dimensions of the resulting array
- dims = (n_rois, n_times)
- if len(rdm_model) > 1:
- dims = dims + (len(rdm_model),)
- return np.array(data).reshape(dims)
- def rsa_stcs_rois(rdm_array, rdm_model, rsa_metric='regression-rsq-nnls', weights=None, n_jobs=1, verbose=True):
- """This function checks the data compatibility before performing RSA."""
- # if a single model RDM, wrap it in list
- one_model = type(rdm_model) is np.ndarray
- if one_model:
- rdm_model = [rdm_model]
- # Check for compatibility of the rdm_array and the model features
- for model in rdm_model:
- if model.ndim == 2:
- model = _ensure_condensed(model, 'rdm_model')
- if rdm_array.shape[-1] != model.shape[0]:
- raise ValueError(
- 'The number of distance in rdm_array (%d) should be equal to the '
- 'number of distance in `rdm_model` (%d). '
- % (rdm_array.shape[-1], model.shape[0]))
- # Perform the RSA
- data = rsa_array(rdm_array=rdm_array, rdm_model=rdm_model, rsa_metric=rsa_metric,
- weights=weights, n_jobs=n_jobs, verbose=verbose)
- return data
rsa_func.py at commit 70a0853, under GPL-3.0 · at the source
Overview
- Research Group Neurocognition of Music and Language, Max Planck Institute for Empirical Aesthetics, Frankfurt am Main, Germany
- Institute of German Linguistics, Philipps-University Marburg, Marburg, Germany
- Center for Mind, Brain and Behavior, Universities of Marburg and Gießen, Marburg, Germany
- Methods and Development Group Brain Networks, Max Planck Institute for Human Cognitive and Brain Sciences, Leipzig, Germany
- Department of Neuropsychology, Max Planck Institute for Human Cognitive and Brain Sciences, Leipzig, Germany
Abstract
Phonemes and prosodic contours are fundamental elements of speech used to convey complementary meanings. Perceiving these elements requires mapping variable acoustic cues onto discrete categories along ventral and dorsal speech streams. While traditional models make clear predictions, exactly where and when this acoustic-to-categorical mapping occurs remains unclear. Using magnetoencephalography and behavioural psychophysics, combined with time-resolved representational similarity and multivariate transfer entropy analyses, we show how phonemes and prosody propagate along the dual streams and how their categorical representations are gradually formed. Contrary to theoretical predictions, acoustic and categorical representations occur in parallel, rather than serially, across time and space for both elements. Moreover, prosody categories extend further along both streams than phoneme categories, with differently weighted contributions of posterior temporal areas. These results highlight a shared principle of parallel acoustic and categorical processing, yet partially distinct abstraction mechanisms for phonemes and prosody, key to access the multilayered meaning of speech.
Reproduced under the paper's license (CC BY), from the paper cited above.
Repositories
Its files are read in the Code ↔ Paper reader above, with 18 matches between paragraphs and lines of code.
SeungCheolBaek/representation_dynamics_phonemes_prosody
70a0853e985ba82593b4f01429a34cfb216dca74, 12 July 2026Availability: 1 check, the latest on 27 September 2026: the link answers
- 27 September 2026: the link answers
17 files
- code/
matlab/ , MATLAB, 121 lines, 1 matchfit_linear_and_sigmoid.m - code/
python/ , Python, 102 lines, 1 matchanalysis_pipeline.py - code/
python/ , Python, 456 lines, 2 matchescluster_stats.py - code/
python/ , Python, 100 lines, 2 matchescreate_model_rdms.py - code/
python/ , Python, 242 lines, 2 matchesmte_func.py - code/
python/ , Python, 309 lines, 3 matchesrsa_func.py - code/
python/ , Python, 468 lines, 2 matchesrun_mte_rois.py - code/
python/ , Python, 226 lines, 2 matchesrun_rsa_rois.py - code/
python/ , Python, 241 linesutils.py - figs/
Fig1.ipynb , Jupyter, 209 lines - figs/
Fig2.ipynb , Jupyter, 158 lines - figs/
Fig3.ipynb , Jupyter, 238 lines, 2 matches - figs/
Fig4.ipynb , Jupyter, 221 lines - figs/
Fig5.ipynb , Jupyter, 232 lines, 1 match - figs/
Fig6.ipynb , Jupyter, 509 lines - LICENSE, License, 674 lines
- README.md, Text, 134 lines
Zenodo 20509067
Availability: 1 check, the latest on 27 September 2026: the link answers (HTTP 200)
- 27 September 2026: the link answers (HTTP 200)
Code availability
The code to replicate the ROI-based RSA and mTE analysis, as well as the main figures, is publicly available in the following repository71: https://
Reproduced under the paper's license (CC BY), from the paper cited above.
Tracing map
Proposed by the machine: these links were found in the paper and verified at the source, without human review. The map will receive a Zenodo DOI once one of the paper's authors has validated it with their ORCID.
What the map holds:
- 2 repositories of the authors' code, each at its verified commit, with its license and how the link was found in the paper;
- 15 scripts, each with its path and the digest of its content;
- 18 matches between paragraphs of the paper and lines of the code (method lexical-v1);
- neither the text of the paper nor the code itself.
Its JSON (tracing-map.json) is deposited on Zenodo with its DOI once the map is validated.
Data
No dataset and no data link were found in the paper.
Data Availability Statement
The raw data are protected and are not available due to data privacy laws. The stimuli presented, and the behaviour responses of individual participants collected during the MEG experiment, as well as the processed neural data—including the neural RDMs and time-resolved RSA and mTE results based on the ROIs—are publicly available at the following repository71: https://
The code to replicate the ROI-based RSA and mTE analysis, as well as the main figures, is publicly available in the following repository71: https://
Reproduced under the paper's license (CC BY), from the paper cited above.
Versions
The history of this record: each version stored by the harvester or made by a correction of its authors or of the maintainers of its code, and what changed in its facts. The texts of the paper (its abstract, its availability statements) are not part of it; versions that changed only those are not listed.
Version 2, 28 September 2026
- Funding: added Max-Planck-Gesellschaft
Version 1, 27 September 2026: the first record
Recorded: type, language, journal, volume, issue, pages, dates, 5 authors, 2 keywords, 10 MeSH terms, 60 references.
Cite
This paper
Baek, S.-C., Kim, S.-G., Maess, B., Grigutsch, M., & Sammler, D. (2026). Dynamic acoustic-to-categorical representations of phonemes and prosody along ventral and dorsal speech streams. Nature communications, 17(1), 6082. https://
BibTeX
@article{baek2026dynamic
author = {Baek, Seung-Cheol and Kim, Seung-Goo and Maess, Burkhard and Grigutsch, Maren and Sammler, Daniela},
title = {{Dynamic acoustic-to-categorical representations of phonemes and prosody along ventral and dorsal speech streams}},
journal = {Nature communications},
year = {2026},
month = jul,
volume = {17},
number = {1},
pages = {6082},
publisher = {Nature Publishing Group},
issn = {2041-1723},
doi = {10.1038/
url = {https://
pmid = {42431896},
pmcid = {PMC13354773}
}
RIS
TY - JOUR
AU - Baek, Seung-Cheol
AU - Kim, Seung-Goo
AU - Maess, Burkhard
AU - Grigutsch, Maren
AU - Sammler, Daniela
TI - Dynamic acoustic-to-categorical representations of phonemes and prosody along ventral and dorsal speech streams
T2 - Nature communications
J2 - Nat Commun
PY - 2026
DA - 2026/
VL - 17
IS - 1
SP - 6082
SN - 2041-1723
PB - Nature Publishing Group
DO - 10.1038/
UR - https://
LA - en
ER -
CSL-JSON
{
"id": "10.1038/
"type": "article-journal",
"title": "Dynamic acoustic-to-categorical representations of phonemes and prosody along ventral and dorsal speech streams",
"container-title": "Nature communications",
"author": [
{
"family": "Baek",
"given": "Seung-Cheol"
},
{
"family": "Kim",
"given": "Seung-Goo"
},
{
"family": "Maess",
"given": "Burkhard"
},
{
"family": "Grigutsch",
"given": "Maren"
},
{
"family": "Sammler",
"given": "Daniela"
}
],
"container-title-short":
"volume": "17",
"issue": "1",
"page": "6082",
"DOI": "10.1038/
"PMID": "42431896",
"PMCID": "PMC13354773",
"ISSN": "2041-1723",
"publisher": "Nature Publishing Group",
"URL": "https://
"language": "en",
"issued": {
"date-parts": [
[
2026,
7,
10
]
]
}
}
The tracing map gets a citation of its own once an author has validated it and it has a DOI.
Similar papers
The papers with a page that share the most with this one: the tools found in their code, their categories, datasets, cited references and authors, the rarest counting most.
- [1] doi:10.1073/pnas.2422097122
- Hierarchical dynamic coding coordinates speech comprehension in the human brainJournal: n/aIn common: MEG, cognitive, 8 references
- [2] doi:10.1162/imag.a.1227 [code]
- Large language models reveal the neural tracking of linguistic context in attended and unattended multi-talker speech.Journal: Imaging neuroscience (Cambridge, Mass.)In common: MNE-Python, seaborn, scikit-learn, 4 other tools, cognitive, 4 references
- [3] doi:10.1523/eneuro.0041-26.2026 [code]
- Ocular Speech Tracking Persists in Blindness, but Its Dynamics and Oculo-Cerebral Connectivity Depend on Visual Status.Journal: eNeuroIn common: MNE-Python, seaborn, scikit-learn, 4 other tools, MEG, cognitive, 3 references
- [4] doi:10.1038/s41598-026-41532-0 [code]
- Prediction, syntax and semantic grounding in the brain and large language models.Journal: Scientific reportsIn common: MNE-Python, seaborn, scikit-learn, 4 other tools, MEG, cognitive, 2 references
- [5] doi:10.1038/s41467-026-75662-w [code]
- Distinct Roles of Deep and Superficial Cortical Layers in Tone Prediction, Comparison, and Adaptation in Human Auditory Cortices.Journal: Nature communicationsIn common: MNE-Python, seaborn, scikit-learn, 4 other tools, cognitive, 2 references
- [6] doi:10.1073/pnas.2536563123 [code]
- Temporally structured motor and auditory representations in covert syllable production.Journal: Proceedings of the National Academy of Sciences of the United States of AmericaIn common: MNE-Python, scikit-learn, pandas, 3 other tools, MEG, cognitive, 2 references
- [7] doi:10.1038/s41597-025-05174-7 [code]
- A large-scale MEG and EEG dataset for object recognition in naturalistic scenesJournal: n/aIn common: MNE-Python, seaborn, scikit-learn, 4 other tools, MEG, 2 references
- [8] doi:10.1162/nol.a.249 [code]
- How Low-Frequency Neural Activity Structures Language in Time.Journal: Neurobiology of language (Cambridge, Mass.)In common: cognitive, 3 references, author Burkhard Maess
- [9] doi:10.1523/eneuro.0069-26.2026 [code]
- Electrophysiological Indices of Hierarchical Speech Processing Differentially Reflect the Comprehension of Speech in Noise.Journal: eNeuroIn common: cognitive, 6 references
- [10] doi:10.1038/s41598-026-50946-9 [code]
- Fixation-related potentials reveal that confusing program code elicits a late frontal positivity.Journal: Scientific reportsIn common: MNE-Python, seaborn, scikit-learn, 4 other tools, 2 references
Contribute
The authors of this paper can claim it, correct its record and validate its tracing map, and the maintainers of its code (its owner, or a public member of its organization) correct what it says of their repository; anyone signed in can ask for its removal. Every request goes to OSCR's own machine, which answers it; your account page follows them.
Sign in with ORCID to claim this paper as one of its authors, correct its record or validate its tracing map: when the paper's metadata lists your ORCID iD, you are recognized at once. Maintainers of its code: sign in with GitHub, then claim the repository on your account page.
Claim this paper
Correct its record
Say what each link of this record is, remove the ones that are not the paper's, add the ones that are missing. The correction becomes a new version of the record, in its Versions section.
Validate its tracing map
You validate the map as this page shows it: 2 repositories of the authors' code, each at its verified commit and with its license, 15 scripts, and 18 matches between paragraphs and code (see the Code and Map sections). It then receives a DOI on Zenodo, with you (your ORCID iD) and OSCR as its creators; the code itself is not deposited.
The map's fingerprint: sha256:8a639d21fbedaa3c…
Add the badge to its README
The badge links the code to this page. Copy one of these into the README of the paper's code: only you decide where it goes, and nothing is changed for you.
Markdown
[, paste the snippet at the top, then “Commit changes…” and, to review it first, “Create a new branch and start a pull request”. You open the pull request; OSCR asks for no permission.
Request its removal
To ask OSCR to remove this record, the copies of its authors' scripts or its tracing map, use the removal request page: signed in, you say who you are, what to remove and why, then review and confirm the request. Published rules decide every request (how).
Discussion, reproductions, activity
Discussion: questions and error reports about this paper and its code, from signed-in readers and its authors. It opens with sign-in.
Reproductions: reports from readers who ran the authors' code: what they reproduced, with which environment, commit and data. It opens with sign-in.
Activity: what happens around this paper: new versions of its record, its map's validation, discussions and reproductions. It opens with sign-in.
