OSCR

Ocular Speech Tracking Persists in Blindness, but Its Dynamics and Oculo-Cerebral Connectivity Depend on Visual Status.

Code ↔ Paper

8 matches between paragraphs of the paper and lines of its authors' code, computed by the harvester (lexical-v1). Click a colored paragraph or line to see its counterpart.

The 8 matches
  1. [1] § Materials and Methods › MEG data preprocessing › Source projection of MEG data ↔ eog_pipeline/utils/eogmachine.py, lines 222–354 · score 0.92 · volume source space, template MRI, sphere model, eye source, BEM, LCMV
  2. [2] § Materials and Methods › MEG data preprocessing ↔ eog_pipeline/b00_do_all_eye.py, lines 103–147 · score 0.81 · MNE raw filter, Blackman filter, frontal channel, downsampled, preprocessing, source reconstruction
  3. [3] § Materials and Methods › Speech tracking › Coherence ↔ eog_pipeline/utils/eogmachine.py, lines 596–601 · score 0.70 · 0–0.5 s, constant detrending, baseline, linear, MNE, epochs
  4. [4] § Materials and Methods › MEG data preprocessing › Source projection of MEG data ↔ eog_pipeline/utils/utils_eog.py, lines 22–72 · score 0.66 · source space, fsaverage, BEM, ico, matrix, parcellation
  5. [5] § Materials and Methods › Speech tracking › Multivariate temporal response function ↔ eog_pipeline/b00_do_all_eye.py, lines 235–293 · score 0.61 · selective stopping, fold, l1, partition, boosting, concatenated
  6. [6] § Materials and Methods › Experimental design ↔ eog_pipeline/get_syllables.py, lines 10–18 · score 0.58 · syllable nuclei, syllable rate, Praat
  7. [7] § Materials and Methods › Speech tracking › Multivariate temporal response function ↔ eog_pipeline/b01_reviewer_sensorplot.py, lines 8–86 · score 0.56 · selective stopping, l1, partition, boosting, concatenated, error
  8. [8] § Materials and Methods › MEG data preprocessing › Speech envelope extraction ↔ eog_pipeline/b00_do_all_eye.py, lines 103–147 · score 0.51 · Chimera toolbox, pipelines, downsampled, filtered, Hilbert, MEG

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 · 298 lines · 13 KB · no license · 3 matches

  1. #%%
  2. #srun --job-name=runIT --output=test_run.log --ntasks=2 --cpus-per-task=8 --mem-per-cpu=28G --time=00:30:00 pixi run python r04_doeysource.sh & disown
  3. import numpy as np
  4. import pandas as pd
  5. import argparse
  6. import glob
  7. from utils.utils_eog import *
  8. from mne_connectivity import seed_target_indices, spectral_connectivity_epochs
  9. from utils.utils_eog import *
  10. import os
  11. import joblib
  12. from utils.eogmachine import EogMachine
  13. from almkanal import (
  14. AlmKanal,
  15. Maxwell
  16. )
  17. #%%
  18. def main(downsample_f: float = 150,
  19. l_pass: float = 16,
  20. h_pass: float = 0.1,
  21. fmin_coh: float = 0.16,
  22. fmax_coh: float = 8):
  23. #%%
  24. parser = argparse.ArgumentParser(description="subject")
  25. parser.add_argument('subject_id', type=str, help="subject id that is processed")
  26. # parser.add_argument('--is-test', action='store_true', default=False, help="Sanity check?")
  27. args = parser.parse_args()
  28. subject_id = args.subject_id
  29. #%%
  30. downsample_f = 150
  31. l_pass = 16
  32. h_pass = 0.1
  33. fmin_coh = 0.16
  34. fmax_coh = 8
  35. study_name = 'ma_blindaudio'
  36. bids_root = f"/home/kbenz/data/BIDS/{study_name}"
  37. study_path = f'/home/kbenz/data/{study_name}/'
  38. output_path = f'{study_path}source_coh_4envs/'
  39. subjects_dir = '/home/kbenz/pcks/'
  40. er_path = '/home/kbenz/data/raw/STORYTIME/Measurement/empty20151210.fif'
  41. parc='HCPMMP1' # the parcellation to use, e.g., 'aparc' 'aparc.a2009s'
  42. do_preproc = True
  43. #%%
  44. print(f'👀 EOG machine started..🚀🚀🚀🚀')
  45. em = EogMachine(name=subject_id, output_path =output_path)
  46. em.report = []
  47. raw_brain_dir = f'{output_path}raw_source'
  48. #%%
  49. if do_preproc or os.path.exists(f'{raw_brain_dir}/{subject_id}_raw_{parc}.fif') == False:
  50. # load data, that is maxfiltered, and ica rejected heart + train
  51. fiff_f_names_all = glob.glob(f"{bids_root}/{subject_id}/ses-01/meg/**.fif")
  52. n_blocks = len(fiff_f_names_all)
  53. # until fabi implemented it:
  54. #get average head pos
  55. block_pos_l = []
  56. for block in np.arange(0, n_blocks):
  57. raw = mne.io.read_raw_fif(fiff_f_names_all[block], verbose = False) #Raw(subject_id, block_nr=block, preload=False)
  58. block_pos_l.append(raw.info["dev_head_t"]['trans'][:3, 3])
  59. # get most average headposition
  60. blocks_pos = np.array(block_pos_l)
  61. all_distances = np.sqrt(blocks_pos[:,0]**2 + blocks_pos[:,1]**2 + blocks_pos[:,2]**2)
  62. mean_distance = np.median(all_distances)
  63. mean_d_idx = (np.abs(all_distances - mean_distance)).argmin()
  64. destination = block_pos_l[mean_d_idx]
  65. em.report.append(f'Mean head position over all blocks was acquired.')
  66. pick_dict = {
  67. 'meg': True,
  68. 'stim': True,
  69. 'eog': False,
  70. 'ecg': False,
  71. 'eeg': False}
  72. ak = AlmKanal(
  73. pick_params=pick_dict,
  74. steps=[
  75. Maxwell(mw_destination = destination), #everyone stays in their head
  76. ],
  77. )
  78. em.report.append(f'Data was maxfiltered to the mean position.')
  79. raw_all, first_samples = [], []
  80. for block in np.arange(0, n_blocks):
  81. print(f'loading raw for block {block}')
  82. raw = mne.io.read_raw(fiff_f_names_all[block], preload=True, verbose =False)
  83. print(f'running maxfilter..')
  84. raw_tmp, akinfos = ak.run(raw)
  85. # get envelope based on bids
  86. events_metadata = pd.read_csv(fiff_f_names_all[block][:-7] + 'events.tsv', sep="\t")
  87. raw_ws = annotate_append(events_metadata, raw_tmp, bids_root, subject_id)
  88. import matplotlib.pyplot as plt
  89. # plt.plot(raw_ws.get_data()[-1, :])
  90. # plt.show()
  91. # append and concatenate files
  92. raw_all.append(raw_ws)
  93. print(raw_all)
  94. raw = mne.concatenate_raws(raw_all, on_mismatch='raise')
  95. em.report.append(f'When we used the Hilbert envelopes, which are less smooth, the previous results could not be replicated. Therefore, envelopes were extracted with the Chimera toolbox. They were appended to the raw data early to ensure the same preprocessing for stimulus- and neural data.')
  96. h_pass_ica = 0.5
  97. ica2, high_comps, raw_noc = run_ica(raw, h_pass_ica, l_pass, downsample_f, output_path, subject_id)
  98. em.report.append(f'ICA was run on the data with a lowpass filter of 1 Hz')
  99. em.report.append(f'Data was downsampled to {downsample_f} Hz.')
  100. em.report.append(f'ECG channel was automatically rejected using find_bads_ecg in MNE with a threshold of 0.5')
  101. em.report.append(f'The identified channels were applied to the copied raw data, which were filtered between {h_pass_ica} and {l_pass} Hz using a Blackman filter and the default MNE.raw.filter settings.')
  102. em.add_meg_data_noth(raw_noc)
  103. em.add_ica2(ica2)
  104. em.ica_eog_nr = high_comps
  105. em.report.append(f'We tried to find consistent ICA eye components using a semiautomatic approach, including correlation of frontal channels, cross-correlation, etc. However, as the participants were blindfolded and blind, we were not successful in consistently identifying them across groups. To ensure consistency over groups, no ICA-eye components were rejected. See topographies in the supplementals. In subsequent analysis, we also suggest that the ICA-eye component is highly related to the auditory cortices, as they are also symmetrical. Since we also ran source reconstruction for the eyes, this is supposed to disentangle the sources.')
  106. # get conditions of experiment
  107. data_list = [data for data in em.data_noth.crop_by_annotations() if len(data)>2]
  108. em.condis = np.unique([str(data.annotations).split(' ')[-2] for data in data_list])
  109. del data_list
  110. #set your channel however you want, here manually because automatic did not work for the blind(folded) blinks
  111. # not sure if it works, bc now we are redoing the maxfiltering..
  112. info_frame = pd.read_csv('/home/kbenz/code/kb_blindaudio/eog_pipeline/participants.tsv', sep ='\t')
  113. em.ica_eog_nr = int(info_frame.loc[info_frame['participant_id'] == subject_id, 'ica'])
  114. # get faked eog channel from ica
  115. em.get_fake_eog_and_filter()
  116. # # properties are only for emtyroom preproc, in line with the other ones
  117. # filters = em.get_source_eyes(subjects_dir, subject_id, em.do_epochs(em.data_noth), l_freq=0.1, h_freq=16, sfreq=150, ep_len = 6, er_path = er_path)
  118. # # # get timeseries of the source fake eog channel
  119. # # # and also of areas of interest
  120. # # # here I use the superiortemporal and pericalcarine areas, but you can choose any other
  121. # subject_name = f'{subject_id}_from_template'
  122. # # Get labels for FreeSurfer 'aparc' cortical parcellation with 34 labels/hemi
  123. # labels_parc = mne.read_labels_from_annot(subject_name, parc=parc, subjects_dir=f'{subjects_dir}/freesurfer/')
  124. # # use now all regions
  125. # my_labels = np.unique([labelsX.name[:-3] for labelsX in labels_parc])
  126. # areas = tuple(my_labels)
  127. # time_src = em.get_timeseries_src(em.data_noth.copy(), filters, subjects_dir, areas= areas, picks_from_old = ['speech_envelope', 'spe_env_chi_ma', 'speenv_fake_chi', 'spe_env_fake_hil'], parc=parc)
  128. # if not os.path.exists(raw_brain_dir):
  129. # # Create a new directory because it does not exist
  130. # os.makedirs(raw_brain_dir)
  131. # em.data_noth.save(f'{raw_brain_dir}/{subject_id}_raw_sensors.fif', overwrite=True)
  132. # time_src.save(f'{raw_brain_dir}/{subject_id}_raw_{parc}.fif', overwrite=True)
  133. # elif os.path.exists(f'{raw_brain_dir}/{subject_id}_raw_{parc}.fif'):
  134. # time_src = mne.io.read_raw_fif(f'{raw_brain_dir}/{subject_id}_raw_{parc}.fif')
  135. # em.add_meg_data_noth(mne.io.read_raw_fif(f'{raw_brain_dir}/{subject_id}_raw_sensors.fif'))
  136. # else:
  137. # raise Exception(f"🚨participant {subject_id} was not preprocessed before, do this first 🚨")
  138. # print(em.report)
  139. # #%%
  140. # em.condis = ['nat', 'voc1', 'voc8']
  141. # #%% get sensor coherence
  142. # from copy import deepcopy
  143. # data_coh_raw = deepcopy(em.data_noth).pick(picks =['mag','misc'])
  144. # data_dict_sensors = em.get_raw_bycond(data_coh_raw)
  145. # del(data_coh_raw)
  146. # # coherence_sensors = em.get_coherence(data_dict = data_dict_sensors, fmin_coh = fmin_coh, fmax_coh = fmax_coh, starters_a =('spe'), starters_b = ('MEG'), folder_name = 'coh_mags') #lfreq, hfreq
  147. # # joblib.dump(coherence_sensors, f'{output_path}coh_mags/{subject_id}_coh_meg.pckl')
  148. # # #%%
  149. # data_dict_orig = em.get_raw_bycond(time_src)
  150. # #%% get imaginary part of coherence for eye brain connectivity
  151. # coh_type = 'imcoh'
  152. # coh_brain_dir = f'{output_path}{coh_type}_{parc}'
  153. # output_file = f'{coh_brain_dir}/{subject_id}_{coh_type}_meg.pckl'
  154. # if not os.path.exists(output_file):
  155. # # Create directory if it doesn't exist
  156. # if not os.path.exists(coh_brain_dir):
  157. # os.makedirs(coh_brain_dir)
  158. # # Only compute and save if file doesn't exist
  159. # coherence_brain = em.get_coherence(
  160. # data_dict=data_dict_orig,
  161. # fmin_coh=fmin_coh,
  162. # fmax_coh=fmax_coh,
  163. # starters_a=('eye_1'),
  164. # starters_b=('rh', 'lh'),
  165. # folder_name='coh_meg',
  166. # coh_type=coh_type
  167. # )
  168. # joblib.dump(coherence_brain, output_file)
  169. # # print('coherence in HCPMMP1 is saved here')
  170. # # # print('coherence is saved')
  171. # # coherence_eyes = em.get_coherence(data_dict = data_dict_orig, fmin_coh = fmin_coh, fmax_coh = fmax_coh, starters_a =('spe'), starters_b = ('ICA', 'eye'), folder_name = 'coh_meg') #lfreq, hfreq
  172. # # coh_eye_dir = f'{output_path}eog_pca_coh'
  173. # # if not os.path.exists(coh_eye_dir):
  174. # # # Create a new directory because it does not exist
  175. # # os.makedirs(coh_eye_dir)
  176. # # joblib.dump(coherence_eyes, f'{coh_eye_dir}/{subject_id}_coh_meg.pckl')
  177. # #%% get sensor boosting for concatenated blocks
  178. # boosting_kwargs= {'tstart':-0.4,
  179. # 'tstop' : 0.8,
  180. # 'error' :'l1',
  181. # 'basis': 0.050,
  182. # 'partitions':4,
  183. # 'test':1,
  184. # 'selective_stopping':True}
  185. # # sns_data_lbl = em.data_noth.copy().pick(picks = ['mag']).ch_names
  186. # # env_name = 'speenv_fake_chi' # 'spe_env_fake_hil' # 'spe_env_chi_ma' # 'spe_env_fake_hil'
  187. # # nat_trf_long = dict.fromkeys(em.condis)
  188. # # for cond in em.condis:
  189. # # one_long = mne.concatenate_raws(data_dict_sensors[cond])
  190. # # nat_trf_long[cond] = EogMachine.get_trf(one_long, boosting_kwargs, sns_data_lbl, env_name)
  191. # # del one_long
  192. # # trf_all_dir = f'{output_path}trfs_mag{env_name}'
  193. # # if not os.path.exists(trf_all_dir):
  194. # # # Create a new directory because it does not exist
  195. # # os.makedirs(trf_all_dir)
  196. # # joblib.dump(nat_trf_long, f'{trf_all_dir}/{subject_id}_trfs_long.pckl')
  197. # #%%
  198. # #%% Test for boosting with many partitions
  199. # # for sensors
  200. # partitions = 50
  201. # boosting_kwargs= {'tstart':-0.4,
  202. # 'tstop' : 0.8,
  203. # 'error' :'l1',
  204. # 'basis': 0.050,
  205. # 'partitions': partitions,
  206. # 'test':1,
  207. # 'selective_stopping':True}
  208. # sns_data_lbl = em.data_noth.copy().pick(picks = ['mag']).ch_names
  209. # env_name = 'spe_env_chi_ma' # 'spe_env_fake_hil' # 'spe_env_chi_ma' # 'spe_env_fake_hil'
  210. # nat_trf_long = dict.fromkeys(em.condis)
  211. # data_coh_raw = deepcopy(em.data_noth).pick(picks =['mag','misc'])
  212. # data_dict_sensors = em.get_raw_bycond(data_coh_raw)
  213. # trf_all_dir = f'{output_path}trfs_mag_{partitions}parts'
  214. # output_file = f'{trf_all_dir}/{subject_id}_trfs_long.pckl'
  215. # if not os.path.exists(output_file):
  216. # print('STARTING CRAZY K-FOLD NOW')
  217. # for cond in em.condis:
  218. # one_long = mne.concatenate_raws(data_dict_sensors[cond])
  219. # nat_trf_long[cond] = EogMachine.get_trf(one_long, boosting_kwargs, sns_data_lbl, env_name)
  220. # del one_long
  221. # if not os.path.exists(trf_all_dir):
  222. # os.makedirs(trf_all_dir)
  223. # joblib.dump(nat_trf_long, output_file)
  224. # # %%for source and eye data
  225. # subject_name = f'{subject_id}_from_template'
  226. # # Get labels for FreeSurfer 'aparc' cortical parcellation with 34 labels/hemi
  227. # labels_parc = mne.read_labels_from_annot(subject_name, parc=parc, subjects_dir=f'{subjects_dir}/freesurfer/')
  228. # src_data_lbl = time_src.copy().pick(picks = 'eog').ch_names # [label.name for label in labels_parc] +
  229. # trf_long_src = dict.fromkeys(em.condis)
  230. # data_dict_orig2 = em.get_raw_bycond(time_src)
  231. # trf_src_dir = f'{output_path}trfs_eye{env_name}{partitions}parts'
  232. # output_file = f'{trf_src_dir}/{subject_id}_trfs_long.pckl'
  233. # if not os.path.exists(output_file):
  234. # print('second CRAZY K-FOLD started')
  235. # for cond in em.condis:
  236. # one_long = mne.concatenate_raws(data_dict_orig2[cond].copy())
  237. # trf_long_src[cond] = EogMachine.get_trf(one_long, boosting_kwargs, src_data_lbl, env_name)
  238. # del one_long
  239. # if not os.path.exists(trf_src_dir):
  240. # os.makedirs(trf_src_dir)
  241. # joblib.dump(trf_long_src, output_file)
  242. print('finished, hope all good!')
  243. #%%
  244. if __name__ == "__main__":
  245. main()

b00_do_all_eye.py at commit 546ae01, no license · at the source

Overview

  1. Centre for Cognitive Neuroscience, Department of Psychology, Paris-Lodron-University of Salzburg, Salzburg 5020, Austria
  2. Basque Center on Cognition, Brain and Language, Donostia - San Sebastián 20009, Spain
  3. IMT School for Advanced Studies Lucca, Lucca 55100, Italy
  4. Center for Mind/Brain Sciences, University of Trento, Rovereto 38068, Italy
  5. Institute of Neuroscience (IoNS), UCLouvain, Louvain-la-Neuve B-1348, Belgium
  6. Neuroscience Institute, Christian Doppler University Hospital, Paracelsus Medical University Salzburg, Salzburg 5020, Austria
Journal: eNeuro, volume 13, issue 7, pages ENEURO.0041-26.2026
Dates: received 4 February 2026; accepted 26 May 2026; published online 7 July 2026; in print July 2026
Type: Research article · Language: English
License: CC BY
Identifiers: DOI 10.1523/eneuro.0041-26.2026 · PMID 42379881 · PMCID PMC13349464 · OpenAlex W4415405851
Open access: gold, a free copy (OpenAlex)
Status: code verified
Categories: MEG (modality), human (organism), other condition (population), cognitive (subfield)
Methods: Spectral & time-frequency, Connectivity, Statistics, Smoothing, state filtering, decompositions, Preprocessing, Physiology & signal measures, fMRI & imaging
Keywords: blind, eye movements, speech tracking, vocoding
MeSH: Blindness*, Eye Movements*, Speech Perception*, Adult, Aged, Female, Humans, Magnetoencephalography, Male, Middle Aged, Neural Pathways, Speech Intelligibility (* major topic)
Topic: Tactile and Sensory Interactions (Cognitive Neuroscience, Neuroscience), according to OpenAlex
Funding: European Research Council (337573)
Citations: not cited yet (Europe PMC); 57 references in the paper

Abstract

While eye movements have been shown to track the speech envelope, it is unknown whether this reflects a hard-wired mechanism or one shaped by (lifetime) audiovisual experience. Further, questions remain about whether ocular tracking is modulated by speech intelligibility and which brain regions drive these synchronized eye movements. Here, we investigate ocular speech tracking in 47 (20 male), blindfolded early blind, late blind, and sighted individuals using magnetoencephalography and source-reconstructed oculomotor signals while participants listened to narrative speech of varying intelligibility. We find that oculomotor activity tracks acoustic speech features; however, while neural speech tracking is modulated by intelligibility, ocular tracking patterns remain ambiguous. Interestingly, we find effects reflected in two frequency-specific components: a low-frequency (∼1 Hz) effect present across all groups, indicating that visual experience is not required, and a high-frequency (∼6 Hz) effect reduced in early and late blind individuals. Moreover, this finding is not driven by cerebro-ocular connectivity, as late blind individuals exhibit stronger connectivity between the eyes and the left temporal cortices without a corresponding increase in ocular tracking. In conclusion, ocular speech tracking seems to respond selectively to acoustic features of speech, and does not require visual experience to develop. It may thus represent a hard-wired oculomotor mechanism within the oculo-cerebral network involved in speech processing.

Reproduced under the paper's license (CC BY), from the paper cited above.

Repository

Its files are read in the Code ↔ Paper reader above, with 8 matches between paragraphs and lines of code.

KajaRosa/kb_blindaudio

License: none: the authors keep all their rights
State: the link answers, verified on 27 September 2026
Evidence: files inventoried
Commit: 546ae0131f9fdd866d6e6656c4db1313a82f7c60, 6 April 2026
Languages: Python (12), Shell (2)
Size: 26 files, 14 scripts
Software Heritage: not archived
Found in: “Code Availability”
Holds: environment (eog_pipeline/pixi.lock, eog_pipeline/pixi.toml)
Not found: README, license file, CITATION.cff, tests, continuous integration, documentation
Tools: NumPy (9 files), Matplotlib (8 files), MNE-Python (8 files), pandas (8 files), Pingouin (5 files), seaborn (5 files), SciPy (4 files), Plotly (3 files), MNE-Connectivity (2 files), scikit-learn (2 files), NiBabel (1 file), Pillow (1 file), statsmodels (1 file)
Availability: 1 check, the latest on 27 September 2026: the link answers
  • 27 September 2026: the link answers
14 files

Code Availability

GitLab: gitlab.com/KajaRosa/kb_blindaudio.

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:

  • 1 repository of the authors' code, each at its verified commit, with its license and how the link was found in the paper;
  • 14 scripts, each with its path and the digest of its content;
  • 8 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

The authors acknowledge the Austrian NeuroCloud (https://anc.plus.ac.at/), hosted by the University of Salzburg and funded by the Federal Ministry of Education, Science and Research (BMBWF), for providing a FAIR-compliant research data repository. Find the data on request on the ANC: bids-datasets.data-pages.anc.plus.ac.at/auditory/ma_blindaudio/.

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

  • Authors: added Kaja Rosa Benz (0000-0002-8503-1273); Larissa Reitinger (0000-0002-6650-9948); Anne Hauswald (0000-0002-3754-0807); removed Kaja Rosa Benz; Larissa Reitinger; Anne Hauswald

Version 1, 27 September 2026: the first record

Recorded: type, language, journal, volume, issue, pages, dates, 7 authors, 4 keywords, 12 MeSH terms, 1 funder, 53 references.

Cite

This paper

Rosa Benz, K., Reitinger, L., Schmidt, F., Bottari, D., Hauswald, A., Collignon, O., & Weisz, N. (2026). Ocular Speech Tracking Persists in Blindness, but Its Dynamics and Oculo-Cerebral Connectivity Depend on Visual Status. eNeuro, 13(7), ENEURO.0041-26.2026. https://doi.org/10.1523/eneuro.0041-26.2026

BibTeX

@article{rosabenz2026ocular,
author = {Rosa Benz, Kaja and Reitinger, Larissa and Schmidt, Fabian and Bottari, Davide and Hauswald, Anne and Collignon, Olivier and Weisz, Nathan},
title = {{Ocular Speech Tracking Persists in Blindness, but Its Dynamics and Oculo-Cerebral Connectivity Depend on Visual Status}},
journal = {eNeuro},
year = {2026},
month = jul,
volume = {13},
number = {7},
pages = {ENEURO.0041--26.2026},
publisher = {Society for Neuroscience},
issn = {2373-2822},
doi = {10.1523/eneuro.0041-26.2026},
url = {https://doi.org/10.1523/eneuro.0041-26.2026},
pmid = {42379881},
pmcid = {PMC13349464}
}

RIS

TY - JOUR
AU - Rosa Benz, Kaja
AU - Reitinger, Larissa
AU - Schmidt, Fabian
AU - Bottari, Davide
AU - Hauswald, Anne
AU - Collignon, Olivier
AU - Weisz, Nathan
TI - Ocular Speech Tracking Persists in Blindness, but Its Dynamics and Oculo-Cerebral Connectivity Depend on Visual Status
T2 - eNeuro
J2 - eNeuro
PY - 2026
DA - 2026/07/09
VL - 13
IS - 7
SP - ENEURO.0041
EP - 26.2026
SN - 2373-2822
PB - Society for Neuroscience
DO - 10.1523/eneuro.0041-26.2026
UR - https://doi.org/10.1523/eneuro.0041-26.2026
LA - en
ER -

CSL-JSON

{
"id": "10.1523/eneuro.0041-26.2026",
"type": "article-journal",
"title": "Ocular Speech Tracking Persists in Blindness, but Its Dynamics and Oculo-Cerebral Connectivity Depend on Visual Status",
"container-title": "eNeuro",
"author": [
{
"family": "Rosa Benz",
"given": "Kaja"
},
{
"family": "Reitinger",
"given": "Larissa"
},
{
"family": "Schmidt",
"given": "Fabian"
},
{
"family": "Bottari",
"given": "Davide"
},
{
"family": "Hauswald",
"given": "Anne"
},
{
"family": "Collignon",
"given": "Olivier"
},
{
"family": "Weisz",
"given": "Nathan"
}
],
"container-title-short": "eNeuro",
"volume": "13",
"issue": "7",
"page": "ENEURO.0041-26.2026",
"DOI": "10.1523/eneuro.0041-26.2026",
"PMID": "42379881",
"PMCID": "PMC13349464",
"ISSN": "2373-2822",
"publisher": "Society for Neuroscience",
"URL": "https://doi.org/10.1523/eneuro.0041-26.2026",
"language": "en",
"issued": {
"date-parts": [
[
2026,
7,
9
]
]
}
}

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.7554/elife.100605 [code]
Age-related changes in ‘cortical’ 1/f dynamics are linked to cardiac activity
Journal: n/a
In common: Pingouin, MNE-Python, statsmodels, 6 other tools, MEG, 4 references, author Nathan Weisz
[2] doi:10.1093/nc/niag029 [code]
A data-driven approach to identifying and evaluating connectivity-based neural correlates of conscious visual perception.
Journal: Neuroscience of consciousness
In common: MNE-Connectivity, Pingouin, MNE-Python, 8 other tools, MEG, cognitive, 1 reference
[3] doi:10.1038/s41597-026-07350-9 [code]
An open multi-center MEG-EEG dataset for studying conscious visual perception.
Journal: Scientific data
In common: MNE-Connectivity, Pingouin, MNE-Python, 8 other tools, MEG
[4] doi:10.1097/j.pain.0000000000004044 [code]
No effect of rhythmic visual stimulation on experimental pain perception.
Journal: Pain
In common: MNE-Connectivity, Pingouin, MNE-Python, 6 other tools, cognitive, 2 references
[5] doi:10.3389/fncom.2026.1786996 [code]
Schumann-anchored golden ratio organization of human neural oscillations.
Journal: Frontiers in computational neuroscience
In common: MNE-Connectivity, MNE-Python, Pillow, 8 other tools, 1 reference
[6] doi:10.1162/imag.a.1269 [code]
From early to contemporary normative modeling: Mapping individual differences in neurophysiological signals.
Journal: Imaging neuroscience (Cambridge, Mass.)
In common: Pingouin, MNE-Python, Plotly, 8 other tools, MEG, 1 reference
[7] doi:10.1162/imag.a.1245 [code]
Towards precision EEG connectomics: Evaluating the benefits of dense sampling.
Journal: Imaging neuroscience (Cambridge, Mass.)
In common: MNE-Connectivity, Pingouin, MNE-Python, 7 other tools, 1 reference
[8] doi:10.1038/s41467-026-74824-0 [code]
Learning regularities in noise engages both neural predictive activity and representational changes.
Journal: Nature communications
In common: Pingouin, MNE-Python, Plotly, 7 other tools, MEG, cognitive, 1 reference
[9] doi:10.1038/s41597-026-07377-y [code]
An open-access multi-site fMRI dataset for investigating conscious visual perception.
Journal: Scientific data
In common: MNE-Connectivity, Pingouin, MNE-Python, 8 other tools
[10] doi:10.1038/s41597-025-05174-7 [code]
A large-scale MEG and EEG dataset for object recognition in naturalistic scenes
Journal: n/a
In common: MNE-Python, Plotly, Pillow, 7 other tools, MEG, 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.

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.