OSCR

A cortico-subthalamic circuit rapidly engages and releases inhibition of specific movements depending on the environmental context.

Code ↔ Paper

5 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 5 matches · 1 of them tie a paragraph to a whole file, not to given lines: a weak match, whose lines are not tinted
  1. [1] § Materials and methods › Connectivity analyses ↔ Step2BetaCorrelations.m, lines 25–117 · score 0.71 · beta power, post SSRT, pre SSRT, correlated, Hilbert, zero
  2. [2] § Materials and methods › Connectivity analyses ↔ Step2BetaCorrelations.m, lines 216–342 · score 0.69 · beta power, SSRT locked, lagged, ROI, locations, correlated
  3. [3] § Materials and methods › Motoric independent component selection ↔ helper_functions/get_motor_ic.m, the whole file · a weak match · score 0.56 · pre response period, backprojected, beta burst, components, motor, stimulus
  4. [4] § Materials and methods › Time–frequency analyses ↔ helper_functions/convert_to_bursts.m, lines 15–92 · score 0.53 · imregional, median, burst rate, convolved, wavelet, cycles
  5. [5] § Materials and methods › Time–frequency analyses ↔ Step1STNLFP.m, lines 24–101 · score 0.53 · Full spectrum, 125 Hz, ERSP, Hilbert, transforming, event

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

MATLAB · 547 lines · 26 KB · no license · 2 matches

  1. %% initialize (EEGLAB has to be on path)
  2. eeglab; clear; clc; close all;
  3. % files and folders;
  4. eeginfolder = '/data/backed_up/PERCEPT_SST/jan/MergedFiles'; % use CSD transformed EEG data
  5. eegfiles = dir(fullfile(eeginfolder,'*.set')); eegfiles = {eegfiles.name};
  6. % load essential info
  7. load('/data/backed_up/PERCEPT_SST/chanlocs.mat'); % chanlocs for this study workspace
  8. load('/data/backed_up/PERCEPT_SST/jan/FINAL/helper_functions/AGF_cmap.mat'); % colormap that has whites for zero
  9. load('/data/backed_up/PERCEPT_SST/SSssrt.mat'); % behavior for selective stopping
  10. load('/data/backed_up/PERCEPT_SST/GSssrt.mat'); % behavior for non-selective stopping
  11. % global settings
  12. epochlength = [-.5 1.5]; % in secs
  13. baseline = [-100 0]; % in ms
  14. srate = 500; % in hz
  15. frequencies = 13:30; % in hz
  16. % settings
  17. preSSRTwindow = 25; % in sample points before SSRT
  18. postSSRTwindow = 50; % in sample points after SSRT
  19. presteps = fliplr(0:25:100); % in samples before SSRT
  20. poststeps = 0:25:250; % in samples after SSRT
  21. %% Which scalp locations correlate with preSSRT beta / postSSRT beta
  22. % preassign: global stop
  23. LPREwind = nan(length(eegfiles),length(chanlocs),length(presteps)-1);
  24. RPREwind = nan(length(eegfiles),length(chanlocs),length(presteps)-1);
  25. LPOSTwind = nan(length(eegfiles),length(chanlocs),length(poststeps)-1);
  26. RPOSTwind = nan(length(eegfiles),length(chanlocs),length(poststeps)-1);
  27. % go through files
  28. for is = 1:length(eegfiles)
  29. % load
  30. EEG = pop_loadset(fullfile(eeginfolder,eegfiles{is}));
  31. % find STN channels indices
  32. leftstn = find(~cellfun(@isempty,strfind({chanlocs.labels},'LEFT')) & cellfun(@isempty,strfind({chanlocs.labels},'EMG')));
  33. rightstn = find(~cellfun(@isempty,strfind({chanlocs.labels},'RIGHT')) & cellfun(@isempty,strfind({chanlocs.labels},'EMG')));
  34. % Beta power conversion
  35. for ic = 1:EEG.nbchan
  36. EEG.data(ic,:) = abs(hilbert(eegfilt(double(EEG.data(ic,:)),srate,frequencies(1),frequencies(end),0,[],0,'fir1')'))'.^2;
  37. end
  38. % events
  39. events = EEG.event; % get all events
  40. % get events
  41. ssrt_signal = events(strcmpi({events.type},'STOP_Global_SSRT')); % find ssrt locked stop trials
  42. ssrt_signal = ssrt_signal(strcmpi({ssrt_signal.ACC},'SS')); % successful only
  43. stgEEG = pop_epoch(EEG,'STOP_Global_SSRT',epochlength); % epoch
  44. [~,keep,keep2] = intersect(([stgEEG.event.nr]),[ssrt_signal.nr]); % retain trials that weren't removed based on EEG
  45. stgEEG = pop_select(stgEEG,'trial',[stgEEG.event(keep).epoch]); % keep only those trials
  46. ssrt_signal = ssrt_signal(keep2); % keep only those trials
  47. % get events
  48. ignore_signal = events(strcmpi({events.type},'IGNORE_Global_SSRT')); % find ssrt matched ignore trials
  49. ignore_signal = ignore_signal(strcmpi({ignore_signal.ACC},'CORRECT')); % correct only
  50. ignEEG = pop_epoch(EEG,'IGNORE_Global_SSRT',epochlength); % epoch
  51. [~,keep,keep2] = intersect(([ignEEG.event.nr]),[ignore_signal.nr]); % retain trials that weren't removed based on EEG
  52. ignEEG = pop_select(ignEEG,'trial',[ignEEG.event(keep).epoch]); % keep only those trials
  53. ignore_signal = ignore_signal(keep2); % keep only those trials
  54. % get events
  55. select_signal = events(strcmpi({events.type},'STOP_Select_SSRT')); % find ssrt matched select stop trials
  56. select_signal = select_signal(strcmpi({select_signal.ACC},'SS')); % successful only
  57. stsEEG = pop_epoch(EEG,'STOP_Select_SSRT',epochlength); % epoch
  58. [~,keep,keep2] = intersect(([stsEEG.event.nr]),[select_signal.nr]); % retain trials that weren't removed based on EEG
  59. stsEEG = pop_select(stsEEG,'trial',[stsEEG.event(keep).epoch]); % keep only those trials
  60. select_signal = select_signal(keep2); % keep only those trials
  61. % merge
  62. allEEG = pop_mergeset(stsEEG,ignEEG); % merge select stop and ignore
  63. allEEG = pop_mergeset(allEEG,stgEEG); % merge global stop with that
  64. % get pre and post SSRT STN signal
  65. preSSRTleft = nan(allEEG.trials,1); % preassign
  66. postSSRTleft = nan(allEEG.trials,1);
  67. preSSRTright = preSSRTleft;
  68. postSSRTright = postSSRTleft;
  69. % go through trials of merged dataset
  70. for ie = 1:allEEG.trials
  71. % find zero sample in epoch
  72. evlat = find(allEEG.times==0);
  73. % mean STN data right before SSRT
  74. preSSRTleft(ie,1) = mean(allEEG.data(leftstn,evlat-preSSRTwindow:evlat,ie));
  75. preSSRTright(ie,1) = mean(allEEG.data(rightstn,evlat-preSSRTwindow:evlat,ie));
  76. % mean STN data right after SSRT
  77. postSSRTleft(ie,1) = mean(allEEG.data(leftstn,evlat:evlat+postSSRTwindow,ie));
  78. postSSRTright(ie,1) = mean(allEEG.data(rightstn,evlat:evlat+postSSRTwindow,ie));
  79. end
  80. % go through EEG channels and correlate with that STN signal
  81. for ic = 1:allEEG.nbchan-2
  82. % get channel data
  83. cdata = squeeze(allEEG.data(ic,:,:))';
  84. % go through timewindows before SSRT, get mean channel data in those windows, zscore, and correlate with STN
  85. for iw = 1:length(presteps)-1
  86. LPREwind(is,ic,iw) = regress(zscore(mean(cdata(:,evlat-presteps(iw):evlat-presteps(iw+1)),2)),zscore(preSSRTleft));
  87. RPREwind(is,ic,iw) = regress(zscore(mean(cdata(:,evlat-presteps(iw):evlat-presteps(iw+1)),2)),zscore(preSSRTright));
  88. end
  89. % go through timewindows after SSRT, get mean channel data in those windows, zscore, and correlate with STN
  90. for iw = 1:length(poststeps)-1
  91. LPOSTwind(is,ic,iw) = regress(zscore(mean(cdata(:,evlat+poststeps(iw):evlat+poststeps(iw+1)),2)),zscore(postSSRTleft));
  92. RPOSTwind(is,ic,iw) = regress(zscore(mean(cdata(:,evlat+poststeps(iw):evlat+poststeps(iw+1)),2)),zscore(postSSRTright));
  93. end
  94. end
  95. end
  96. % save
  97. save(fullfile('/data/backed_up/PERCEPT_SST/WindowedBetaCorrelations.mat'),'LPREwind','RPREwind','LPOSTwind','RPOSTwind');
  98. %% Plot whole-scalp windowed beta band correlation
  99. clc; close all;
  100. % load
  101. load(fullfile('/data/backed_up/PERCEPT_SST/WindowedBetaCorrelations.mat'));
  102. % alpha level correct for number of windows
  103. preSSRT_alpha = .05 / (size(RPREwind,3) + size(LPREwind,3));
  104. postSSRT_alpha = .05 / (size(LPOSTwind,3) + size(RPOSTwind,3));
  105. % fisher's z transform
  106. LPREwind = atanh(LPREwind);
  107. RPREwind = atanh(RPREwind);
  108. LPOSTwind = atanh(LPOSTwind);
  109. RPOSTwind = atanh(RPOSTwind);
  110. % stats
  111. [~,p] = ttest(LPREwind); pLpre = squeeze(p);
  112. [~,p] = ttest(RPREwind); pRpre = squeeze(p);
  113. [~,p] = ttest(LPOSTwind); pLpost = squeeze(p);
  114. [~,p] = ttest(RPOSTwind); pRpost = squeeze(p);
  115. % open figure: preSSRT
  116. h = figure('Position',[1 1 1400 860],'color','w'); CLIMS = [0 0];
  117. % go through time windows
  118. for ip = 1:size(pLpre,2)
  119. % make subplot: left STN
  120. subplot(2,size(pLpre,2),ip);
  121. data = squeeze(mean(LPREwind(:,:,ip),1)); % get window data
  122. data(pLpre(:,ip)>preSSRT_alpha) = 0; % mask with significance
  123. topoplot(data,chanlocs,'electrodes','off','style','map','shading','interp'); % make topooplot
  124. % topoplot(data,chanlocs,'electrodes','off'); % make topooplot
  125. %topoplot_jjf(data, chanlocs,'style','map','electrodes','on','nosedir','+X','emarker2',{find(pLpre(:,ip)<preSSRT_alpha),'o','k',7,1}); % 'electrodes','ptslabels', 'plotrad',.7
  126. clims = get(gca,'clim'); if max(abs(clims)) > max(abs(CLIMS)); CLIMS = clims; end % scale clims to max on the fly
  127. title(['L STN:' num2str(presteps(ip)*1000/srate) '-' num2str(presteps(ip+1)*1000/srate) 'ms']); % plot title
  128. % make subplot: right STN
  129. subplot(2,size(pRpre,2),size(pRpre,2)+ip);
  130. data = squeeze(mean(RPREwind(:,:,ip),1)); % get window data
  131. data(pRpre(:,ip)>preSSRT_alpha) = 0; % mask with significance
  132. topoplot(data,chanlocs,'electrodes','off','style','map','shading','interp'); % make topooplot
  133. % topoplot(data,chanlocs,'electrodes','off'); % make topooplot
  134. %topoplot_jjf(data, chanlocs,'style','map','electrodes','on','nosedir','+X','emarker2',{find(pRpre(:,ip)<preSSRT_alpha),'o','k',7,1}); % 'electrodes','ptslabels', 'plotrad',.7
  135. clims = get(gca,'clim'); if max(abs(clims)) > max(abs(CLIMS)); CLIMS = clims; end % scale clims to max on the fly
  136. title(['R STN:' num2str(presteps(ip)*1000/srate) '-' num2str(presteps(ip+1)*1000/srate) 'ms']); % plot title
  137. end
  138. % format
  139. for ip = 1:size(pRpre,2)
  140. colormap(AGF_cmap); % colormap
  141. set(gca,'clim',[-max(CLIMS) max(CLIMS)]); % color limits
  142. end
  143. % overlay a new axis to make overall figure title
  144. a = axes; t1 = title('Correlation STN and Cortex relative to SSRT');
  145. a.Visible = 'off'; t1.Visible = 'on'; set(gcf,'color','w')
  146. % open figure: postSSRT
  147. h = figure('Position',[1 1 1900 860],'color','w'); CLIMS = [0 0];
  148. % go through time windows
  149. for ip = 1:size(pLpost,2)
  150. % make subplot: left STN
  151. subplot(2,size(pLpost,2),ip);
  152. data = squeeze(mean(LPOSTwind(:,:,ip),1)); % get window data
  153. data(pLpost(:,ip)>postSSRT_alpha) = 0; % mask with significance
  154. topoplot(data,chanlocs,'electrodes','off','style','map'); % make topooplot
  155. % topoplot(data,chanlocs,'electrodes','off'); % make topooplot
  156. clims = get(gca,'clim'); if max(abs(clims)) > max(abs(CLIMS)); CLIMS = clims; end % scale clims to max on the fly
  157. title(['L STN:' num2str(poststeps(ip)*1000/srate) '-' num2str(poststeps(ip+1)*1000/srate) 'ms']);
  158. % make subplot: right STN
  159. subplot(2,size(pRpost,2),size(pRpost,2)+ip);
  160. data = squeeze(mean(RPOSTwind(:,:,ip),1)); % get window data
  161. data(pRpost(:,ip)>postSSRT_alpha) = 0; % mask with significance
  162. topoplot(data,chanlocs,'electrodes','off','style','map','shading','interp'); % make topooplot
  163. % topoplot(data,chanlocs,'electrodes','off'); % make topooplot
  164. clims = get(gca,'clim'); if max(abs(clims)) > max(abs(CLIMS)); CLIMS = clims; end % scale clims to max on the fly
  165. title(['R STN:' num2str(poststeps(ip)*1000/srate) '-' num2str(poststeps(ip+1)*1000/srate) 'ms']);
  166. end
  167. % format
  168. for ip = 1:size(pRpre,2)
  169. colormap(AGF_cmap);
  170. set(gca,'clim',[-max(CLIMS) max(CLIMS)]);
  171. end
  172. % overlay a new axis to make overall figure title
  173. a = axes; t1 = title('Correlation STN and Cortex relative to SSRT');
  174. a.Visible = 'off'; t1.Visible = 'on'; set(gcf,'color','w');
  175. % exportgraphics(figure(1), fullfile('/data/backed_up/PERCEPT_SST/CS_perceptSST/Figs/', ...
  176. % 'Fig5_topo1.eps'), 'ContentType', 'vector');
  177. % exportgraphics(figure(2), fullfile('/data/backed_up/PERCEPT_SST/CS_perceptSST/Figs/', ...
  178. % 'Fig5_topo2.eps'), 'ContentType', 'vector');
  179. %% ROI based time-lagged correlations
  180. CCroi = {'FC1','FC2','FCz','C1','C2','Cz','CP1','CP2','Cpz'};
  181. FCroi = {'F1','F2','Fz','Fp1','Fp2','Fpz','AF3','AF4'};
  182. PCroi = {'P1','P2','PO3','PO4','POz','O1','O2','Oz'};
  183. CLroi = {'FT7','FC5','FC3','TP7','CP5','CP3','T7','C5','C3'};
  184. CRroi = {'FT8','FC6','FC4','TP8','CP6','CP4','T8','C6','C4'};
  185. FLroi = {'AF7','F7','F3','F5'};
  186. FRroi = {'AF8','F8','F4','F6'};
  187. PLroi = {'P5','P7','PO7'};
  188. PRroi = {'P6','P8','PO8'};
  189. % preassign
  190. LCC = nan(length(eegfiles),diff(epochlength)*srate,diff(epochlength)*srate);
  191. LFC = LCC; LPC = LCC; LCL = LCC; LCR = LCC; LFL = LCC; LFR = LCC; LPL = LCC; LPR = LCC;
  192. RCC = nan(length(eegfiles),diff(epochlength)*srate,diff(epochlength)*srate);
  193. RFC = LCC; RPC = LCC; RCL = LCC; RCR = LCC; RFL = LCC; RFR = LCC; RPL = LCC; RPR = LCC;
  194. % go through files
  195. for is = 1:length(eegfiles)
  196. % load
  197. EEG = pop_loadset(fullfile(eeginfolder,eegfiles{is}));
  198. oEEG = EEG; % make a copy so you can replace channels with ROIs
  199. % find STN channels indices
  200. leftstn = find(~cellfun(@isempty,strfind({chanlocs.labels},'LEFT')) & cellfun(@isempty,strfind({chanlocs.labels},'EMG')));
  201. rightstn = find(~cellfun(@isempty,strfind({chanlocs.labels},'RIGHT')) & cellfun(@isempty,strfind({chanlocs.labels},'EMG')));
  202. % get labels
  203. leftstn = chanlocs(leftstn).labels;
  204. rightstn = chanlocs(rightstn).labels;
  205. % Make new datasets with ROI channels only. Then get average of activity and channel locations, and replace the original EEG data
  206. CC = pop_select(oEEG,'channel',CCroi); EEG.data(1,:) = mean(CC.data,1); chanlocs(1).labels = 'CC';
  207. FC = pop_select(oEEG,'channel',FCroi); EEG.data(2,:) = mean(FC.data,1); chanlocs(2).labels = 'FC';
  208. PC = pop_select(oEEG,'channel',PCroi); EEG.data(3,:) = mean(PC.data,1); chanlocs(3).labels = 'PC';
  209. CL = pop_select(oEEG,'channel',CLroi); EEG.data(4,:) = mean(CL.data,1); chanlocs(4).labels = 'CL';
  210. CR = pop_select(oEEG,'channel',CRroi); EEG.data(5,:) = mean(CR.data,1); chanlocs(5).labels = 'CR';
  211. FL = pop_select(oEEG,'channel',FLroi); EEG.data(6,:) = mean(FL.data,1); chanlocs(6).labels = 'FL';
  212. FR = pop_select(oEEG,'channel',FRroi); EEG.data(7,:) = mean(FR.data,1); chanlocs(7).labels = 'FR';
  213. PL = pop_select(oEEG,'channel',PLroi); EEG.data(8,:) = mean(PL.data,1); chanlocs(8).labels = 'PL';
  214. PR = pop_select(oEEG,'channel',PRroi); EEG.data(9,:) = mean(PR.data,1); chanlocs(9).labels = 'PR';
  215. % remove all but ROI data and LFP channels
  216. EEG = pop_select(EEG,'channel',{'CC','FC','PC','CL','CR','FL','FR','PL','PR',leftstn,rightstn});
  217. % check eeg integrity
  218. EEG = eeg_checkset(EEG);
  219. % delete superfluous
  220. clear oEEG
  221. % Beta power conversion
  222. for ic = 1:EEG.nbchan
  223. EEG.data(ic,:) = abs(hilbert(eegfilt(double(EEG.data(ic,:)),srate,frequencies(1),frequencies(end),0,[],0,'fir1')'))'.^2;
  224. end
  225. % find stn channel indices in new file
  226. leftstn = find(~cellfun(@isempty,strfind({chanlocs.labels},'LEFT')) & cellfun(@isempty,strfind({chanlocs.labels},'EMG')));
  227. rightstn = find(~cellfun(@isempty,strfind({chanlocs.labels},'RIGHT')) & cellfun(@isempty,strfind({chanlocs.labels},'EMG')));
  228. events = EEG.event;
  229. % get events
  230. ssrt_signal = events(strcmpi({events.type},'STOP_Global_SSRT')); % find ssrt locked stop trials
  231. ssrt_signal = ssrt_signal(strcmpi({ssrt_signal.ACC},'SS')); % successful only
  232. stgEEG = pop_epoch(EEG,'STOP_Global_SSRT',epochlength); % epoch
  233. [~,keep,keep2] = intersect(([stgEEG.event.nr]),[ssrt_signal.nr]); % retain trials that weren't removed based on EEG
  234. stgEEG = pop_select(stgEEG,'trial',[stgEEG.event(keep).epoch]); % keep only those trials
  235. ssrt_signal = ssrt_signal(keep2); % keep only those trials
  236. % get events
  237. ignore_signal = events(strcmpi({events.type},'IGNORE_Global_SSRT')); % find ssrt matched ignore trials
  238. ignore_signal = ignore_signal(strcmpi({ignore_signal.ACC},'CORRECT')); % correct only
  239. ignEEG = pop_epoch(EEG,'IGNORE_Global_SSRT',epochlength); % epoch
  240. [~,keep,keep2] = intersect(([ignEEG.event.nr]),[ignore_signal.nr]); % retain trials that weren't removed based on EEG
  241. ignEEG = pop_select(ignEEG,'trial',[ignEEG.event(keep).epoch]); % keep only those trials
  242. ignore_signal = ignore_signal(keep2); % keep only those trials
  243. % get events
  244. select_signal = events(strcmpi({events.type},'STOP_Select_SSRT')); % find ssrt matched select stop trials
  245. select_signal = select_signal(strcmpi({select_signal.ACC},'SS')); % successful only
  246. stsEEG = pop_epoch(EEG,'STOP_Select_SSRT',epochlength); % epoch
  247. [~,keep,keep2] = intersect(([stsEEG.event.nr]),[select_signal.nr]); % retain trials that weren't removed based on EEG
  248. stsEEG = pop_select(stsEEG,'trial',[stsEEG.event(keep).epoch]); % keep only those trials
  249. select_signal = select_signal(keep2); % keep only those trials
  250. % merge
  251. allEEG = pop_mergeset(stsEEG,ignEEG); % merge select stop and ignore
  252. allEEG = pop_mergeset(allEEG,stgEEG); % merge global stop with that
  253. % go through lag samples and correlate
  254. for it1 = 1:allEEG.pnts
  255. for it2 = 1:allEEG.pnts
  256. % get ROI EEG data and zscore
  257. dataCC = zscore(squeeze(allEEG.data(1,it1,:)));
  258. dataFC = zscore(squeeze(allEEG.data(2,it1,:)));
  259. dataPC = zscore(squeeze(allEEG.data(3,it1,:)));
  260. dataCL = zscore(squeeze(allEEG.data(4,it1,:)));
  261. dataCR = zscore(squeeze(allEEG.data(5,it1,:)));
  262. dataFL = zscore(squeeze(allEEG.data(6,it1,:)));
  263. dataFR = zscore(squeeze(allEEG.data(7,it1,:)));
  264. dataPL = zscore(squeeze(allEEG.data(8,it1,:)));
  265. dataPR = zscore(squeeze(allEEG.data(9,it1,:)));
  266. % get LFP data and zscore
  267. dataR = zscore(squeeze(allEEG.data(rightstn,it2,:)));
  268. dataL = zscore(squeeze(allEEG.data(leftstn,it2,:)));
  269. % store. EEG data along first dim, LFP data along second dim
  270. LCC(is,it1,it2) = corr(dataCC,dataL);
  271. LFC(is,it1,it2) = corr(dataFC,dataL);
  272. LPC(is,it1,it2) = corr(dataPC,dataL);
  273. LCL(is,it1,it2) = corr(dataCL,dataL);
  274. LCR(is,it1,it2) = corr(dataCR,dataL);
  275. LFL(is,it1,it2) = corr(dataFL,dataL);
  276. LFR(is,it1,it2) = corr(dataFR,dataL);
  277. LPL(is,it1,it2) = corr(dataPL,dataL);
  278. LPR(is,it1,it2) = corr(dataPR,dataL);
  279. RCC(is,it1,it2) = corr(dataCC,dataR);
  280. RFC(is,it1,it2) = corr(dataFC,dataR);
  281. RPC(is,it1,it2) = corr(dataPC,dataR);
  282. RCL(is,it1,it2) = corr(dataCL,dataR);
  283. RCR(is,it1,it2) = corr(dataCR,dataR);
  284. RFL(is,it1,it2) = corr(dataFL,dataR);
  285. RFR(is,it1,it2) = corr(dataFR,dataR);
  286. RPL(is,it1,it2) = corr(dataPL,dataR);
  287. RPR(is,it1,it2) = corr(dataPR,dataR);
  288. end
  289. end
  290. end
  291. save('/data/backed_up/PERCEPT_SST/ROIcorrelations.mat','L*','R*');
  292. %% Cluster-corrected statistics
  293. clear p;
  294. load('/data/backed_up/PERCEPT_SST/ROIcorrelations.mat');
  295. % settings
  296. pixel_p = .05/18; % pixel wise alpha, corrected for number of ROIs
  297. cluster_p = .05/18; % cluster wise alpha, corrected for number of ROIs
  298. nPerm = 5000; % number of permutations
  299. % fisher's z
  300. LCC = atanh(LCC); LFC = atanh(LFC); LPC = atanh(LPC);
  301. LCL = atanh(LCL); LFL = atanh(LFL); LPL = atanh(LPL);
  302. LCR = atanh(LCR); LFR = atanh(LFR); LPR = atanh(LPR);
  303. RCC = atanh(RCC); RFC = atanh(RFC); RPC = atanh(RPC);
  304. RCL = atanh(RCL); RFL = atanh(RFL); RPL = atanh(RPL);
  305. RCR = atanh(RCR); RFR = atanh(RFR); RPR = atanh(RPR);
  306. % run
  307. p.LCC = cPERM2(LCC, zeros(size(LCC)), nPerm, pixel_p, cluster_p);
  308. p.LFC = cPERM2(LFC, zeros(size(LFC)), nPerm, pixel_p, cluster_p);
  309. p.LPC = cPERM2(LPC, zeros(size(LPC)), nPerm, pixel_p, cluster_p);
  310. p.LCL = cPERM2(LCL, zeros(size(LCL)), nPerm, pixel_p, cluster_p);
  311. p.LCR = cPERM2(LCR, zeros(size(LCR)), nPerm, pixel_p, cluster_p);
  312. p.LFL = cPERM2(LFL, zeros(size(LFL)), nPerm, pixel_p, cluster_p);
  313. p.LFR = cPERM2(LFR, zeros(size(LFR)), nPerm, pixel_p, cluster_p);
  314. p.LPL = cPERM2(LPL, zeros(size(LPL)), nPerm, pixel_p, cluster_p);
  315. p.LPR = cPERM2(LPR, zeros(size(LPR)), nPerm, pixel_p, cluster_p);
  316. p.RCC = cPERM2(RCC, zeros(size(RCC)), nPerm, pixel_p, cluster_p);
  317. p.RFC = cPERM2(RFC, zeros(size(RFC)), nPerm, pixel_p, cluster_p);
  318. p.RPC = cPERM2(RPC, zeros(size(RPC)), nPerm, pixel_p, cluster_p);
  319. p.RCL = cPERM2(RCL, zeros(size(RCL)), nPerm, pixel_p, cluster_p);
  320. p.RCR = cPERM2(RCR, zeros(size(RCR)), nPerm, pixel_p, cluster_p);
  321. p.RFL = cPERM2(RFL, zeros(size(RFL)), nPerm, pixel_p, cluster_p);
  322. p.RFR = cPERM2(RFR, zeros(size(RFR)), nPerm, pixel_p, cluster_p);
  323. p.RPL = cPERM2(RPL, zeros(size(RPL)), nPerm, pixel_p, cluster_p);
  324. p.RPR = cPERM2(RPR, zeros(size(RPR)), nPerm, pixel_p, cluster_p);
  325. save('/data/backed_up/PERCEPT_SST/ROIcorrelationsP.mat','p');
  326. %% figure of ROI corrs
  327. close all;
  328. % settings
  329. ssrt = mean([GSssrt.SSRT_integ]); % get sample mean SSRT
  330. lw = 1.5; % line width for significance plot
  331. % load
  332. load(fullfile('/data/backed_up/PERCEPT_SST/ROIcorrelations.mat'));
  333. load(fullfile('/data/backed_up/PERCEPT_SST/ROIcorrelationsP.mat'));
  334. % fisher's z
  335. LCC = atanh(LCC); LFC = atanh(LFC); LPC = atanh(LPC);
  336. LCL = atanh(LCL); LFL = atanh(LFL); LPL = atanh(LPL);
  337. LCR = atanh(LCR); LFR = atanh(LFR); LPR = atanh(LPR);
  338. RCC = atanh(RCC); RFC = atanh(RFC); RPC = atanh(RPC);
  339. RCL = atanh(RCL); RFL = atanh(RFL); RPL = atanh(RPL);
  340. RCR = atanh(RCR); RFR = atanh(RFR); RPR = atanh(RPR);
  341. % Left figure first
  342. ROIs = {'LFL','LFC','LFR','LCL','LCC','LCR','LPL','LPC','LPR'}; % define ROIs
  343. h = figure('Position',[1 1 1000 1000],'Color','w'); % open figure
  344. clims = nan(length(ROIs),2); % preassing clim matrix
  345. % go through ROIs and plot
  346. for ir = 1:length(ROIs)
  347. % open subplot
  348. subplot(3,3,ir);
  349. % get data
  350. data = eval(['squeeze(mean(' ROIs{ir} ',1));']); % data
  351. eval(['px = p.' ROIs{ir} ';']); % pvalue
  352. % plot data
  353. contourf(1:1000,1:1000,data,60,'linecolor','none'); hold; % plot data
  354. % pcolor(data); hold; % plot data
  355. contour(px,[-.5 .5],'k','LineWidth',lw); % plot significance contour
  356. clims(ir,:) = get(gca,'clim'); % store clims
  357. title(ROIs{ir}); % put ROI in title
  358. %format
  359. % shading interp; % shading
  360. colormap(AGF_cmap); % colormap
  361. xlabel('STN: time (ms)'); % x label
  362. ylabel('EEG: time (ms)'); % y label
  363. % ticks
  364. set(gca,'XTick',[1 abs(epochlength(1))*srate+ssrt*srate/1000 diff(epochlength)*srate],'Xticklabel',{'S','SSRT',num2str(epochlength(2)*1000)});
  365. set(gca,'YTick',[1 abs(epochlength(1))*srate+ssrt*srate/1000 diff(epochlength)*srate],'Yticklabel',{'S','SSRT',num2str(epochlength(2)*1000)});
  366. % lines
  367. line([abs(epochlength(1))*srate+ssrt*srate/1000 abs(epochlength(1))*srate+ssrt*srate/1000],[1 diff(epochlength)*srate],'Color','k','LineWidth',.5,'LineStyle',':');
  368. line([1 diff(epochlength)*srate],[abs(epochlength(1))*srate+ssrt*srate/1000 abs(epochlength(1))*srate+ssrt*srate/1000],'Color','k','LineWidth',.5,'LineStyle',':');
  369. line([1 diff(epochlength)*srate],[1 diff(epochlength)*srate],'Color','k','LineWidth',.5,'LineStyle','-');
  370. % limits
  371. set(gca,'Xlim',[abs(epochlength(1))*srate diff(epochlength)*srate]);
  372. set(gca,'Ylim',[abs(epochlength(1))*srate diff(epochlength)*srate]);
  373. end
  374. % go through again and set climits to common max
  375. for ir = 1:length(ROIs)
  376. subplot(3,3,ir);
  377. set(gca,'Clim',[-max(max(abs(clims))) max(max(abs(clims)))]);
  378. end
  379. % Right figure second
  380. ROIs = {'RFL','RFC','RFR','RCL','RCC','RCR','RPL','RPC','RPR'}; % define ROIs
  381. h = figure('Position',[1 1 1000 1000],'Color','w'); % open figure
  382. clims = nan(length(ROIs),2); % preassing clim matrix
  383. % go through ROIs and plot
  384. for ir = 1:length(ROIs)
  385. % open subplot
  386. subplot(3,3,ir);
  387. % get data
  388. data = eval(['squeeze(mean(' ROIs{ir} ',1));']); % data
  389. eval(['px = p.' ROIs{ir} ';']); % pvalue
  390. % plot data
  391. contourf(1:1000,1:1000,data,60,'linecolor','none'); hold; % plot data
  392. % pcolor(data); hold; % plot data
  393. contour(px,[-.5 .5],'k','LineWidth',lw); % plot significance contour
  394. clims(ir,:) = get(gca,'clim'); % store clims
  395. title(ROIs{ir}); % put ROI in title
  396. %format
  397. % shading interp; % shading
  398. colormap(AGF_cmap); % colormap
  399. xlabel('STN: time (ms)'); % x label
  400. ylabel('EEG: time (ms)'); % y label
  401. % ticks
  402. set(gca,'XTick',[1 abs(epochlength(1))*srate+ssrt*srate/1000 diff(epochlength)*srate],'Xticklabel',{'S','SSRT',num2str(epochlength(2)*1000)});
  403. set(gca,'YTick',[1 abs(epochlength(1))*srate+ssrt*srate/1000 diff(epochlength)*srate],'Yticklabel',{'S','SSRT',num2str(epochlength(2)*1000)});
  404. % lines
  405. line([abs(epochlength(1))*srate+ssrt*srate/1000 abs(epochlength(1))*srate+ssrt*srate/1000],[1 diff(epochlength)*srate],'Color','k','LineWidth',.5,'LineStyle',':');
  406. line([1 diff(epochlength)*srate],[abs(epochlength(1))*srate+ssrt*srate/1000 abs(epochlength(1))*srate+ssrt*srate/1000],'Color','k','LineWidth',.5,'LineStyle',':');
  407. line([1 diff(epochlength)*srate],[1 diff(epochlength)*srate],'Color','k','LineWidth',.5,'LineStyle','-');
  408. % limits
  409. set(gca,'Xlim',[abs(epochlength(1))*srate diff(epochlength)*srate]);
  410. set(gca,'Ylim',[abs(epochlength(1))*srate diff(epochlength)*srate]);
  411. end
  412. % go through again and set climits to common max
  413. for ir = 1:length(ROIs)
  414. subplot(3,3,ir);
  415. set(gca,'Clim',[-max(max(abs(clims))) max(max(abs(clims)))]);
  416. end
  417. % exportgraphics(figure(1), fullfile('/data/backed_up/PERCEPT_SST/CS_perceptSST/Figs/', ...
  418. % 'Fig5_PLV1.eps'), 'ContentType', 'vector');
  419. %
  420. % exportgraphics(figure(2), fullfile('/data/backed_up/PERCEPT_SST/CS_perceptSST/Figs/', ...
  421. % 'Fig5_PLV2.eps'), 'ContentType', 'vector');
  422. %% TOPO plot with channels no data (CS added)
  423. % EEG = pop_loadset(fullfile(eeginfolder,eegfiles{1}));
  424. CCroi = {'FC1','FC2','FCz','C1','C2','Cz','CP1','CP2','Cpz'};
  425. FCroi = {'F1','F2','Fz','Fp1','Fp2','Fpz','AF3','AF4'};
  426. PCroi = {'P1','P2','PO3','PO4','POz','O1','O2','Oz'};
  427. CLroi = {'FT7','FC5','FC3','TP7','CP5','CP3','T7','C5','C3'};
  428. CRroi = {'FT8','FC6','FC4','TP8','CP6','CP4','T8','C6','C4'};
  429. FLroi = {'AF7','F7','F3','F5'};
  430. FRroi = {'AF8','F8','F4','F6'};
  431. PLroi = {'P5','P7','PO7'};
  432. PRroi = {'P6','P8','PO8'};
  433. dsize = 100;
  434. figure('Position',[1 1 1000 800]);
  435. topoplot(zeros(EEG.nbchan,1), EEG.chanlocs,'electrodes','on', ...
  436. 'plotchans',find(matches({EEG.chanlocs.labels},FCroi)),...
  437. 'emarker',{'.',[1 0 0],dsize,1}); axis square; hold on;
  438. topoplot(zeros(EEG.nbchan,1), EEG.chanlocs,'electrodes','on', ...
  439. 'plotchans',find(matches({EEG.chanlocs.labels},FLroi)),...
  440. 'emarker',{'.',[1 .5 0],dsize,1}); axis square;
  441. topoplot(zeros(EEG.nbchan,1), EEG.chanlocs,'electrodes','on', ...
  442. 'plotchans',find(matches({EEG.chanlocs.labels},FRroi)),...
  443. 'emarker',{'.',[1 0 .5 ],dsize,1}); axis square;
  444. topoplot(zeros(EEG.nbchan,1), EEG.chanlocs,'electrodes','on', ...
  445. 'plotchans',find(matches({EEG.chanlocs.labels},CCroi)),...
  446. 'emarker',{'.',[0 1 0],dsize,1}); axis square;
  447. topoplot(zeros(EEG.nbchan,1), EEG.chanlocs,'electrodes','on', ...
  448. 'plotchans',find(matches({EEG.chanlocs.labels},CLroi)),...
  449. 'emarker',{'.',[1 1 0],dsize,1}); axis square;
  450. topoplot(zeros(EEG.nbchan,1), EEG.chanlocs,'electrodes','on', ...
  451. 'plotchans',find(matches({EEG.chanlocs.labels},CRroi)),...
  452. 'emarker',{'.',[0 1 1],dsize,1}); axis square;
  453. topoplot(zeros(EEG.nbchan,1), EEG.chanlocs,'electrodes','on', ...
  454. 'plotchans',find(matches({EEG.chanlocs.labels},PCroi)),...
  455. 'emarker',{'.',[0 0 1],dsize,1});
  456. topoplot(zeros(EEG.nbchan,1), EEG.chanlocs,'electrodes','on', ...
  457. 'plotchans',find(matches({EEG.chanlocs.labels},PLroi)),...
  458. 'emarker',{'.',[0 .5 1],dsize,1});
  459. topoplot(zeros(EEG.nbchan,1), EEG.chanlocs,'electrodes','on', ...
  460. 'plotchans',find(matches({EEG.chanlocs.labels},PRroi)),...
  461. 'emarker',{'.',[.5 0 1],dsize,1});
  462. print(fullfile('/data/backed_up/PERCEPT_SST/CS_perceptSST/Figs/','Fig5_emptyTOPO.eps'), ...
  463. '-depsc2','-r300','-painters');

Step2BetaCorrelations.m, no license · at the source

Overview

Authors: Cheol Soh1,2,3, Mario Hervault4, Nathan H. Chalkley1,2, Kien Huynh1,3, Qiang Zhang2, Ergun Y. Uc2,5, Jeremy D. W. Greenlee6, Jan R. Wessel1,2,3
ORCID iDs: Jan R. Wessel
  1. Department of Psychological and Brain Sciences, University of Iowa, Iowa City, Iowa, United States of America
  2. Department of Neurology, University of Iowa Hospitals and Clinics, Iowa City, Iowa, United States of America
  3. Cognitive Control Collaborative, University of Iowa, Iowa City, Iowa, United States of America
  4. University of Grenoble, Grenoble, France
  5. Neurology Service, Iowa City VA Medical Center, Iowa City, Iowa, United States of America
  6. Department of Neurosurgery, University of Iowa Hospitals and Clinics, Iowa City, Iowa, United States of America
Journal: PLoS biology, volume 24, issue 4, article e3003635
Dates: received 7 January 2026; accepted 8 April 2026; published online 24 April 2026
Type: Research article · Language: English
License: CC BY
Identifiers: DOI 10.1371/journal.pbio.3003635 · PMID 42030369 · PMCID PMC13132434 · OpenAlex W7155541812
Open access: gold, a free copy (OpenAlex)
Status: code verified
Categories: EEG (modality), human (organism), systems (subfield)
Methods: Spectral & time-frequency, Connectivity, Statistics, Smoothing, state filtering, decompositions, Machine learning, Preprocessing, Evoked potentials, fMRI & imaging, Physiology & signal measures
MeSH: Cerebral Cortex*, Subthalamic Nucleus*, Electroencephalography, Female, Humans, Male, Movement, Neural Pathways (* major topic)
Journal subjects: Research and Analysis Methods, Bioassays and Physiological Analysis, Electrophysiological Techniques, Brain Electrophysiology, Electroencephalography, Biology and Life Sciences, Physiology, Electrophysiology, Neurophysiology, Neuroscience, Brain Mapping, Medicine and Health Sciences, Clinical Medicine, Clinical Neurophysiology, Imaging Techniques, Neuroimaging, Muscle Electrophysiology, Electromyography, Cell Biology, Signal Transduction, Cell Signaling, Signal Inhibition, Anatomy, Head, Scalp, Brain, Motor Cortex, Engineering and Technology, Signal Processing, Signal Filtering, Medical Conditions, Neurodegenerative Diseases, Movement Disorders, Parkinson Disease, Neurology, Cognitive Science, Cognitive Neuroscience, Reaction Time
Topic: Neurological disorders and treatments (Neurology, Medicine), according to OpenAlex
Funding: HHS | NIH | National Institute of Neurological Disorders and Stroke (NINDS) (2R01NS117753); Clement T. and Sylvia H. Hanson Family (Endowment); Todd and Val Meyerhoff through the Kevin Dill Golf Tournament for Dementia, Parkinson’s and Veterans (Donation)
Citations: not cited yet (Europe PMC); 84 references in the paper

Abstract

Response inhibition is an important cognitive control mechanism that enables flexible behavior by stopping inappropriate actions. Intracranial recordings across species have identified a neural circuit that implements response inhibition via the subthalamic nucleus of the basal ganglia. However, this work has been limited to simple tasks, in which unequivocal, salient “stop”-signals require the inhibition of all ongoing responses. Notably, response inhibition in the real world is substantially different. Real-world response inhibition is selective: it occurs only after specific salient signals (‘stimulus-selectivity’) and stops only specific movements while others continue (‘response-selectivity’). If and how the fronto-subthalamic system implements selective inhibition is largely unknown. Here, we recorded subthalamic local field potentials and scalp-EEG in humans performing a novel, selective inhibition task. Salient signals either required stopping all initiated responses (global inhibition), stopping only some responses (response-selective inhibition), or continuing all responses—i.e., ignoring the signal (which ensures stimulus-selectivity). All three signals initially triggered a common fronto-subthalamic inhibitory process, signified by a rapid increase in β-burst activity. During global inhibition, subthalamic β-bursting subsequently increased above baseline, persisting for over a second. During response-selective inhibition, this activity was delayed, which enabled a second bout of disinhibition and allowed appropriate responses to continue. Throughout this period, frontal cortical and subthalamic β-band activity were tightly coupled. This shows that selective inhibition is accompanied by rapid, context-dependent engagement and release of fronto-subthalamic inhibition. Moreover, subthalamic activity lasted substantially longer than assumed by classic behavioral-computational models. This supports recent theoretical models that assume protracted response inhibition during action-stopping.

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 5 matches between paragraphs and lines of code.

OSF bjd9n

License: none: the authors keep all their rights
State: the link answers, verified on 30 September 2026
Evidence: files inventoried
Languages: MATLAB (14)
Size: 47 files, 14 scripts
Software Heritage: not checked
Found in: “Data Availability”
Not found: README, license file, CITATION.cff, environment file, tests, continuous integration, documentation
Availability: 1 check, the latest on 30 September 2026: the link answers (HTTP 200)
  • 30 September 2026: the link answers (HTTP 200)
14 files
At the source: osf.io/bjd9n

The paper's code and data availability statement is in the Data section.

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;
  • 5 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

All data and analysis code files are available from the OSF at https://osf.io/bjd9n.

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 1, 30 September 2026: the first record

Recorded: type, language, journal, volume, issue, pages, dates, 8 authors, 8 MeSH terms, 3 funders, 82 references.

Cite

This paper

Soh, C., Hervault, M., Chalkley, N. H., Huynh, K., Zhang, Q., Uc, E. Y., Greenlee, J. D. W., & Wessel, J. R. (2026). A cortico-subthalamic circuit rapidly engages and releases inhibition of specific movements depending on the environmental context. PLoS biology, 24(4), e3003635. https://doi.org/10.1371/journal.pbio.3003635

BibTeX

@article{soh2026cortico,
author = {Soh, Cheol and Hervault, Mario and Chalkley, Nathan H. and Huynh, Kien and Zhang, Qiang and Uc, Ergun Y. and Greenlee, Jeremy D. W. and Wessel, Jan R.},
title = {{A cortico-subthalamic circuit rapidly engages and releases inhibition of specific movements depending on the environmental context}},
journal = {PLoS biology},
year = {2026},
month = apr,
volume = {24},
number = {4},
pages = {e3003635},
publisher = {PLOS},
issn = {1544-9173},
doi = {10.1371/journal.pbio.3003635},
url = {https://doi.org/10.1371/journal.pbio.3003635},
pmid = {42030369},
pmcid = {PMC13132434}
}

RIS

TY - JOUR
AU - Soh, Cheol
AU - Hervault, Mario
AU - Chalkley, Nathan H.
AU - Huynh, Kien
AU - Zhang, Qiang
AU - Uc, Ergun Y.
AU - Greenlee, Jeremy D. W.
AU - Wessel, Jan R.
TI - A cortico-subthalamic circuit rapidly engages and releases inhibition of specific movements depending on the environmental context
T2 - PLoS biology
J2 - PLoS Biol
PY - 2026
DA - 2026/04/24
VL - 24
IS - 4
SP - e3003635
SN - 1544-9173
PB - PLOS
DO - 10.1371/journal.pbio.3003635
UR - https://doi.org/10.1371/journal.pbio.3003635
LA - en
ER -

CSL-JSON

{
"id": "10.1371/journal.pbio.3003635",
"type": "article-journal",
"title": "A cortico-subthalamic circuit rapidly engages and releases inhibition of specific movements depending on the environmental context",
"container-title": "PLoS biology",
"author": [
{
"family": "Soh",
"given": "Cheol"
},
{
"family": "Hervault",
"given": "Mario"
},
{
"family": "Chalkley",
"given": "Nathan H."
},
{
"family": "Huynh",
"given": "Kien"
},
{
"family": "Zhang",
"given": "Qiang"
},
{
"family": "Uc",
"given": "Ergun Y."
},
{
"family": "Greenlee",
"given": "Jeremy D. W."
},
{
"family": "Wessel",
"given": "Jan R."
}
],
"container-title-short": "PLoS Biol",
"volume": "24",
"issue": "4",
"page": "e3003635",
"DOI": "10.1371/journal.pbio.3003635",
"PMID": "42030369",
"PMCID": "PMC13132434",
"ISSN": "1544-9173",
"publisher": "PLOS",
"URL": "https://doi.org/10.1371/journal.pbio.3003635",
"language": "en",
"issued": {
"date-parts": [
[
2026,
4,
24
]
]
}
}

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.1016/j.isci.2026.116034
Distinct temporal patterns of beta bursts differentiate successful and failed movement cancellation.
Journal: iScience
In common: 24 references
[2] doi:10.1111/psyp.70397 [code]
Cortical Contributions to Attentional Orienting and Response Cancellation in Action Stopping.
Journal: Psychophysiology
In common: 14 references
[3] doi:10.1038/s41467-026-71502-z [code]
Neurons of the human subthalamic nucleus engage with local delta frequency processes during action cancellation.
Journal: Nature communications
In common: EEGLAB, Image Processing Toolbox, Signal Processing Toolbox, 1 other tool, 9 references
[4] doi:10.1002/gps3.70042 [code]
Effects of single-session transcranial direct current stimulation on response inhibition in stop-signal task performance: A meta-analysis and systematic review.
Journal: General psychiatry
In common: 7 references
[5] doi:10.1111/ejn.70528 [code]
Dorsal Posterior Parietal Cortex Lesions Disrupt Spatial- but Not Motor-Based Inhibition.
Journal: The European journal of neuroscience
In common: 7 references
[6] doi:10.1038/s41467-026-71404-0 [code]
Nonergodicity and Simpson's paradox in neurocognitive dynamics of cognitive control.
Journal: Nature communications
In common: Statistics and Machine Learning Toolbox, 5 references
[7] doi:10.1093/brain/awaf431 [code]
Behavioural and clinical biomarkers of the human bed nucleus of stria terminalis from direct neural recordings.
Journal: Brain : a journal of neurology
In common: EEGLAB, Image Processing Toolbox, Signal Processing Toolbox, 1 other tool, 2 references
[8] doi:10.1038/s41531-026-01421-9 [code]
Cortico-pallidal beta dynamics underlie impaired turning in Parkinson's disease.
Journal: NPJ Parkinson's disease
In common: Image Processing Toolbox, Signal Processing Toolbox, Statistics and Machine Learning Toolbox, systems, 2 references
[9] doi:10.1523/jneurosci.0154-26.2026 [code]
Faster but less precise: expectation enhances response speed while reducing sensory fidelity.
Journal: The Journal of neuroscience : the official journal of the Society for Neuroscience
In common: EEGLAB, Image Processing Toolbox, Signal Processing Toolbox, 1 other tool, EEG, 1 reference
[10] doi:10.1038/s41467-026-73916-1 [code]
Learned statistical regularity modulates anticipatory micro-saccades toward suppressed distractor locations.
Journal: Nature communications
In common: EEGLAB, Image Processing Toolbox, Signal Processing Toolbox, 1 other tool, EEG, 1 reference

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.