OSCR

Human forebrain neural synchronization and entrainment to breathing during wakefulness, sleep, and external mechanical ventilation.

Code ↔ Paper

12 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 12 matches · 6 of them tie a paragraph to a whole file, not to given lines: weak matches, whose lines are not tinted
  1. [1] § Results › Across participants, neural oscillations at numerous forebrain sites and regions synchronized with breathing during wakefulness ↔ reqfunc/roiNameUpdate.m, the whole file · a weak match · score 0.99 · superior parietal lobule, inferior frontal, inferior temporal, superior temporal, superior frontal, posterior cingulate
  2. [2] § Results › Across participants, neural oscillations at numerous forebrain sites and regions synchronized with breathing during wakefulness ↔ reqfunc/sortROI.m, the whole file · a weak match · score 0.78 · AngG, ACC, IFG, ITG, MCC, MFG
  3. [3] § Results › External mechanical ventilation drove forebrain entrainment to breathing ↔ reqfunc/roiNameUpdate.m, the whole file · a weak match · score 0.76 · superior frontal, posterior dorsal, middle temporal, supramarginal, fusiform, orbital
  4. [4] § Methods › Statistical analysis ↔ reqfunc/plotLME.m, the whole file · a weak match · score 0.76 · logit transformation, LME model, linear mixed, fitlme, channel, coherence
  5. [5] § Results › External mechanical ventilation using slow, deep breathing parameters increased the number of forebrain sites entrained to breathing ↔ NeuralbreathingScript.m, lines 412–511 · score 0.69 · deep breathing, sided Wilcoxon, template brain, brain sites, Violin, horizontal
  6. [6] § Results › External mechanical ventilation using slow, deep breathing parameters increased the number of forebrain sites entrained to breathing ↔ NeuralbreathingScript.m, lines 412–511 · score 0.64 · tidal volume, deep breathing, brain sites, Wilcoxon, ventilator, coherence
  7. [7] § Methods › Spectral and coherence analysis ↔ reqfunc/plotPSD.m, the whole file · a weak match · score 0.57 · Power spectral density, pwelch, PSD, overlap, windows
  8. [8] § Methods › Signal processing ↔ dbt.m, lines 1–126 · score 0.57 · demodulated band transform, cutoff, downsampled, filtered, lowpass, DBT
  9. [9] § Methods › Statistical analysis ↔ dbtcoh.m, lines 1–51 · score 0.56 · cross spectral, permutation, efficiency, spectrum, correlation, zero
  10. [10] § Methods › Signal processing ↔ dbtvbw.m, lines 1–118 · score 0.56 · demodulated band transform, cutoff, downsampled, filtered, lowpass, DBT
  11. [11] § Methods › Statistical analysis ↔ reqfunc/plotLME.m, the whole file · a weak match · score 0.54 · coefTest, intercept, predicted, model, coefficients, sleep
  12. [12] § Results › Forebrain synchrony with breathing decreased during sleep ↔ NeuralbreathingScript.m, lines 194–336 · score 0.51 · Wilcoxon rank sum, IQR, Median, sleep, awake, coherence

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 · 604 lines · 22 KB · MIT · 3 matches

  1. coh_results_Path = '.\saved_results\';
  2. addpath(genpath('.\reqfunc\'));
  3. % load saved coherence results
  4. dataAw = load([coh_results_Path,'CohAwakeBiPolar.mat']);
  5. dataAnes = load([coh_results_Path,'CohAnesBiPolar.mat']);
  6. dataVS = load([coh_results_Path,'CohVentBiPolar.mat']);
  7. dataSLP = load([coh_results_Path,'CohSleepBiPolar.mat']);
  8. %% define colors
  9. color_aw = [0.1 0.7 0];
  10. colorSleep = [0.9 0.4 0.1];
  11. color_sp = [0 0.6 0.8];
  12. color_vs = [0.6 0.12 0.47];
  13. colorS = [color_aw;colorSleep;color_sp;color_vs];
  14. Fs = 500; % sampling rate all blocks except sleep
  15. Fs_slp = 250; % sampling rate for sleep data
  16. % some plotting variables to define
  17. pThr = 0.05;
  18. Msize = 80;
  19. Csize = [50,180];
  20. templateAlpha = 0.09;
  21. Malpha = 0.9;
  22. BrHem = 1;
  23. % find significant indexes
  24. % get significant contacts indexes
  25. awakeIndx = dataAw.significance_v;
  26. anesIndx = dataAnes.significance_v;
  27. ventsIndx = dataVS.significance_v;
  28. sleepIndx = dataSLP.significance_v;
  29. %% Figure 1: Plot coverage and Coherence for each patient
  30. Msize = 35;
  31. Csize = [50,180]; BrainAlpha = 0.3; BrainColor = [1 0.98 0.98];
  32. unqPt = unique(dataAw.ptID);
  33. for j = 1:length(unqPt)
  34. close all;
  35. plotPatientBrain(unqPt(j),BrHem,BrainAlpha,BrainColor,[]); % plot the template brain LH on right, RH on left hemReverse=true
  36. h = gca; h.ZAxis.Visible = 'off'; light('position', [-30000 0 0]);
  37. set(gcf, 'Position', [100, 100, 590, 600]); % for lateral view
  38. AwCord = dataAw.ChnCoordinates(dataAw.ptID==unqPt(j),:); % locIndx_aw from later section to plot only GM contacts
  39. h1=scatter3(AwCord(:,1), AwCord(:,2),AwCord(:,3), Msize.*ones(size(AwCord,1),1),...
  40. MarkerFaceColor = [0.4 0.4 0.4],MarkerFaceAlpha = Malpha,MarkerEdgeColor=[0.1 0.1 0.1]);
  41. axx = gca;
  42. camlight('headlight');
  43. zlim([-60 95]);
  44. view([0 0 90]); % Axial
  45. %view([0 -90 0]); % coronal view
  46. %view([-90 0 0]); % lateral view
  47. tmpVal = dataAw.CohValue(dataAw.ptID==unqPt(j));
  48. tmpcoord = dataAw.ChnCoordinates(dataAw.ptID==unqPt(j),:);
  49. tmpindx = awakeIndx(dataAw.ptID==unqPt(j));
  50. plotPatientscatter(unqPt(j),tmpcoord, tmpindx,tmpVal,BrHem,BrainAlpha,Csize,color_aw,Malpha,BrainColor,false);
  51. camlight('headlight');
  52. h = gca; h.ZAxis.Visible = 'off';
  53. zlim([-60 95]);
  54. view([0 0 90]); % Axial
  55. % plot patient brain surf
  56. plotPatientBrain(unqPt(j),BrHem,0.92,[0.92 0.92 0.92],[],false);
  57. %camlight('headlight','infinite');
  58. delete(findall(gcf,'Type','light'));
  59. light('position', [0 0 900000]); %light('position', [0 -300000 0])
  60. material dull;
  61. h = gca; h.YAxis.Visible = 'off';
  62. fig = gcf; % Get the current figure handle
  63. set(fig, 'Name',num2str(unqPt(j)) , 'NumberTitle', 'off');
  64. fprintf('Patient: %d\n',unqPt(j))
  65. % plot respiration data
  66. tt = (1:length(dataAw.tsData(j).belt))./Fs;
  67. figure('Position',[200 200 750 280],'Color','w');
  68. plot(tt,zscore(dataAw.tsData(j).belt),'color',[0.4,0.4,0.4],'LineWidth',1.6);
  69. xlim([50 30+55]);
  70. ylim([-2.9 2.9]);
  71. yticks([-2,-1,0,1,2]);
  72. set(gca,'FontSize',25);
  73. [Pbb,pF] = plotPSD(dataAw.tsData(j).belt,Fs,50,0,2^19,'n');
  74. [~,mxIn] = max(Pbb);
  75. Resfreq(j) = pF(mxIn);
  76. box off; title(sprintf(['%d: f = %0.2fHz'], unqPt(j),Resfreq(j) ));
  77. h = gca; h.XAxis.Visible = 'off';
  78. end
  79. % Plot sagittal Left and Right
  80. fprintf('Plotting: Lateral views........\n');
  81. Msize = 35; Csize = [50,180];
  82. unqPt = unique(dataAw.ptID);
  83. for j = 1:length(unqPt)
  84. %close all;
  85. tmpVal = dataAw.CohValue(dataAw.ptID==unqPt(j));
  86. tmpcoord = dataAw.ChnCoordinates(dataAw.ptID==unqPt(j),:);
  87. tmpindx = awakeIndx(dataAw.ptID==unqPt(j));
  88. plotPatientSagittal(unqPt(j),tmpcoord, tmpindx,tmpVal,BrainAlpha,Csize,color_aw,Malpha,BrainColor,0);
  89. fprintf('Patient: %d\n',unqPt(j));
  90. end
  91. %% plot coverage during Awake States and Coherence on template Brain
  92. % plot Coverage
  93. hemRev = false; % plot the template brain LH on right, RH on left
  94. plotBrainPatch(BrHem,templateAlpha,[],[], hemRev);
  95. % plot Significant contacts in Awake breathing
  96. awCord = dataAw.ChnCoordinates;
  97. h1=scatter3(awCord(:,1),awCord(:,2),awCord(:,3), Msize.*ones(size(awCord,1),1)./2, [0.3 0.3 0.3],'fill');
  98. h1.MarkerFaceAlpha = Malpha;
  99. axx = gca;
  100. % Create line
  101. view([0 0 90]);
  102. material metal;
  103. camlight(axx, 'headlight');
  104. set(gcf,'Name','Coverage Map: Awake Fig3B, Anesthetized Fig5B, Ventilated Fig6B','NumberTitle', 'off');
  105. %BrainColor = [0.78 0.7 0.7];
  106. %
  107. BrainAlpha = 0.3; BrainColor = [1 0.98 0.98];
  108. plotbrainscatter(dataAw,awakeIndx,dataAw.CohValue,BrHem,BrainAlpha,Csize,color_aw,Malpha,BrainColor)
  109. set(gcf,'Name','Coherence Map: Awake Fig3C','NumberTitle', 'off');
  110. plotbrainscatter(dataAw,awakeIndx,dataAw.CohValue,BrHem,BrainAlpha,Csize,color_aw,Malpha,BrainColor,true)
  111. set(gcf,'Name','Coherence Map: Awake Fig3C','NumberTitle', 'off');
  112. % plot coverage during Sleep States and Coherence on template Brain
  113. plotBrainPatch(BrHem,templateAlpha,[],[]); % plot the template brain LH on right, RH on left
  114. % plot Significant contacts in Awake breathing
  115. slpCord = dataSLP.ChnCoordinates; % locIndx_aw from later section to plot only GM contacts
  116. h1=scatter3(-slpCord(:,1), slpCord(:,2),slpCord(:,3), Msize.*ones(size(slpCord,1),1)./2,[0.3 0.3 0.3],'fill');
  117. h1.MarkerFaceAlpha = Malpha;
  118. axx = gca;
  119. % Create line
  120. view([0 0 90]);
  121. camlight(axx, 'headlight');
  122. set(gcf,'Name','Coverage Map: Sleep Fig4B','NumberTitle', 'off');
  123. % plot coherence
  124. plotbrainscatter(dataSLP,sleepIndx,dataSLP.CohValue,BrHem,BrainAlpha,Csize,colorSleep,Malpha,BrainColor)
  125. set(gcf,'Name','Coherence Map: Sleep Fig4C','NumberTitle', 'off');
  126. % plot Coherence on template Brain: Anesthesia and mechanical ventilation
  127. plotbrainscatter(dataAnes,anesIndx,dataAnes.CohValue,BrHem,BrainAlpha,Csize,color_sp,Malpha,BrainColor);
  128. set(gcf,'Name','Coherence Map: Anesthetized Fig5C','NumberTitle', 'off');
  129. plotbrainscatter(dataAnes,anesIndx,dataAnes.CohValue,BrHem,BrainAlpha,Csize,color_sp,Malpha,BrainColor,true);
  130. set(gcf,'Name','Coherence Map: Anesthetized Fig5C','NumberTitle', 'off');
  131. % mechanical ventilation
  132. plotbrainscatter(dataVS,ventsIndx,dataVS.CohValue,BrHem,BrainAlpha,Csize,color_vs,Malpha,BrainColor);
  133. set(gcf,'Name','Coherence Map: Ventilated Fig6C','NumberTitle', 'off');
  134. plotbrainscatter(dataVS,ventsIndx,dataVS.CohValue,BrHem,BrainAlpha,Csize,color_vs,Malpha,BrainColor,true);
  135. set(gcf,'Name','Coherence Map: Ventilated Fig6C','NumberTitle', 'off');
  136. %% ROIbased scatter plots
  137. roiscatterplot(dataAw.CohValue,dataAw.LocationsKN,color_aw,[0,1]);
  138. set(gcf,'Name','Fig3H Awake Breathing-LFP coherence','NumberTitle', 'off');
  139. roiscatterplot(dataSLP.CohValue,dataSLP.LocationsKN,colorSleep,[0,0.8]);
  140. set(gcf,'Name','Fig4D Sleep Breathing-LFP coherence','NumberTitle', 'off');
  141. roiscatterplot(dataAnes.CohValue,dataAnes.LocationsKN,color_sp,[0,1]);
  142. set(gcf,'Name','Fig5D Anesthetized automatic Breathing-LFP coherence','NumberTitle', 'off');
  143. roiscatterplot(dataVS.CohValue,dataVS.LocationsKN,color_vs,[0,0.8]);
  144. set(gcf,'Name','Fig5D Anesthetized ventilated Breathing-LFP coherence','NumberTitle', 'off');
  145. %% summary stats
  146. dataList = {dataAw, dataSLP, dataAnes, dataVS};
  147. stateNames = {'Awake', 'Sleep', 'Anesthetized','Ventilation'};
  148. for d = 1:length(dataList)
  149. data = dataList{d};
  150. state = stateNames{d};
  151. sigIndx = data.significance_v;
  152. ptIDs = unique(data.ptID);
  153. nSite = zeros(length(ptIDs), 1);
  154. nSigf = zeros(length(ptIDs), 1);
  155. for ii = 1:length(ptIDs)
  156. nSite(ii) = sum(data.ptID == ptIDs(ii));
  157. nSigf(ii) = sum(sigIndx(data.ptID == ptIDs(ii)));
  158. end
  159. totalSites = sum(nSite);
  160. totalSigf = sum(nSigf);
  161. meanSitesPerPt = mean(nSite);
  162. stdSitesPerPt = std(nSite);
  163. meanSigfPerPt = mean(nSigf);
  164. stdSigfPerPt = std(nSigf);
  165. percentSigf = (totalSigf / totalSites) * 100;
  166. % Print for this state
  167. fprintf('\n=== %s ===\n', state);
  168. fprintf('Total sites: %d\n', totalSites);
  169. fprintf('Total significant sites: %d\n', totalSigf);
  170. fprintf('Sites per participant: %.1f ± %.1f\n', meanSitesPerPt, stdSitesPerPt);
  171. fprintf('Significant sites per participant: %.1f ± %.1f\n', meanSigfPerPt, stdSigfPerPt);
  172. fprintf('Overall percentage of significant sites: %.1f%%\n', percentSigf);
  173. end
  174. %% Coherence in each ROI bar plot
  175. awValues = dataAw.CohValue; slpValues = dataSLP.CohValue;
  176. spValues = dataAnes.CohValue; vsValues = dataVS.CohValue;
  177. LocOR = roiNameUpdate(dataAw.LocationsKN);
  178. LocSLP = roiNameUpdate(dataSLP.LocationsKN);
  179. % unique ROIs
  180. unqROI = unique([LocOR;LocSLP]);
  181. Nroi = length(unqROI);
  182. CountsROI = zeros(Nroi, 2); countsS = zeros(Nroi, 4);
  183. vioData = cell(Nroi,4);
  184. for kk = 1:Nroi
  185. indxAW = strcmp(LocOR, unqROI{kk});
  186. indxSLP = strcmp(LocSLP, unqROI{kk});
  187. CountsROI(kk,1) = sum(indxAW);%sum(cell2mat(strfind(Loc, uniqLoc{kk})));
  188. CountsROI(kk,2) = sum(indxSLP);
  189. countsS(kk,1) = sum(strcmp(LocOR(awakeIndx), unqROI{kk}));
  190. countsS(kk,2) = sum(strcmp(LocSLP(sleepIndx), unqROI{kk}));
  191. countsS(kk,3) = sum(strcmp(LocOR(anesIndx), unqROI{kk}));
  192. countsS(kk,4) = sum(strcmp(LocOR(ventsIndx), unqROI{kk}));
  193. vioData{kk,1} = awValues(indxAW)';
  194. vioData{kk,2} = slpValues(indxSLP)';
  195. vioData{kk,3} = spValues(indxAW)';
  196. vioData{kk,4} = vsValues(indxAW)';
  197. end
  198. % remove ROIs less than 5 total contacts
  199. rmvIndx = find(CountsROI(:,1)<=5);
  200. CountsROI(rmvIndx,:)=[];
  201. countsS(rmvIndx,:)=[];
  202. unqROI(rmvIndx)=[];
  203. vioData(rmvIndx,:) = [];
  204. roiInx = sortROI(unqROI);
  205. CountsROI = CountsROI(roiInx,:);
  206. countsS = countsS(roiInx,:);
  207. unqROI = unqROI(roiInx);
  208. vioData = vioData(roiInx,:);
  209. roiPercentage = 100*([countsS(:,1)./CountsROI(:,1),countsS(:,2)./CountsROI(:,2),countsS(:,3:4)./CountsROI(:,1)]);
  210. % find empty cells in vioData
  211. isEmptyCell = cellfun(@isempty, vioData);
  212. [vioData{isEmptyCell}] = deal(NaN); % filling NaN values on empty cells
  213. meanCorr = cell2mat(cellfun(@mean, vioData, 'UniformOutput', false));
  214. stdCorr = cell2mat(cellfun(@std, vioData, 'UniformOutput', false));
  215. % Compare coherence during Awake vs Sleep across participants
  216. AwakeVal = [];
  217. SleepVal = [];
  218. nPt = unique(dataAw.ptID);
  219. for i = 1:length(nPt)
  220. IndxAwake = dataAw.ptID == nPt(i);
  221. IndxSleep = dataSLP.ptID == nPt(i);
  222. % Mean coherence per participant in each state
  223. if ~isnan(mean(dataSLP.CohValue(IndxSleep)))
  224. SleepVal = [SleepVal; mean(dataSLP.CohValue(IndxSleep))];
  225. end
  226. if ~isnan(mean(dataAw.CohValue(IndxAwake)))
  227. AwakeVal = [AwakeVal; mean(dataAw.CohValue(IndxAwake))];
  228. end
  229. end
  230. % Statistical Comparison
  231. % Wilcoxon Rank-Sum test
  232. [p_slp_awake, ~, stats] = ranksum(AwakeVal, SleepVal);
  233. % Rank-biserial correlation effect size
  234. ranksumU = stats.ranksum;
  235. nAw = numel(AwakeVal);
  236. nSlp = numel(SleepVal);
  237. U = stats.ranksum - nAw*(nAw+1)/2; % convert from W to U
  238. rankBiserial = (2*U)/(nAw * nSlp) - 1; % effect size
  239. % Medians and IQRs
  240. AwakeMedian = median(AwakeVal);
  241. AwakeIQR = iqr(AwakeVal);
  242. SleepMedian = median(SleepVal);
  243. SleepIQR = iqr(SleepVal);
  244. fprintf('\n--- Statistical Summary (Awake vs Sleep) ---\n');
  245. fprintf('Wilcoxon rank-sum test: p = %.4f\n', p_slp_awake);
  246. fprintf('Rank-biserial correlation: %.2f\n', rankBiserial);
  247. fprintf('Awake: median = %.3f, IQR = %.3f\n', AwakeMedian, AwakeIQR);
  248. fprintf('Sleep: median = %.3f, IQR = %.3f\n', SleepMedian, SleepIQR);
  249. % Violin Plot
  250. mxLen = max([length(AwakeVal), length(SleepVal)]);
  251. vio_aw = [AwakeVal; NaN(mxLen-length(AwakeVal),1)];
  252. vio_slp = [SleepVal; NaN(mxLen-length(SleepVal),1)];
  253. violinData = [vio_aw, vio_slp];
  254. figure("Position", [200, 100, 400, 350]);
  255. vp = violinplot(violinData, {'Awake', 'Sleep'}, ...
  256. 'ViolinColor', brighten(colorS, 0.4), 'Width', 0.2, 'ShowMean', true);
  257. for ii = 1:length(vp)
  258. mmColor = brighten(colorS(ii,:), -0.6);
  259. vp(ii).MeanPlot.Color = mmColor;
  260. vp(ii).MeanPlot.LineWidth = 2;
  261. vp(ii).MedianColor = [1, 1, 1];
  262. vp(ii).MedianPlot.SizeData = 100;
  263. end
  264. ylim([0 0.45]);
  265. ylabel('Coherence (R)')
  266. box off;
  267. xlim([0.5 2.5]);
  268. set(gcf, 'color', 'w');
  269. axx = gca;
  270. axx.YTick = [0:0.2:1];
  271. set(axx, 'fontSize', 16);
  272. set(gcf,'Name','Awake vs. Sleep: Fig4E');
  273. % compute where to place the text
  274. ymax = max([AwakeVal; SleepVal]);
  275. % display the exact p-value
  276. text(1.5, ymax*1.3, sprintf('p = %.4f', p_slp_awake), ...
  277. 'HorizontalAlignment','center', 'FontSize',14);
  278. % plot awake vs sleep
  279. % unique ROIs
  280. sleepROI = unique([LocOR;LocSLP]);
  281. Nroi = length(sleepROI);
  282. sleepROIcount = zeros(Nroi, 1);
  283. for kk = 1:Nroi
  284. indxSLP = strcmp(LocSLP, sleepROI{kk});
  285. sleepROIcount(kk) = sum(indxSLP);
  286. end
  287. % remove ROIs less than 5 total contacts
  288. rmvIndx = find(sleepROIcount(:,1)<=5);
  289. sleepROIcount(rmvIndx,:)=[];
  290. sleepROI(rmvIndx)=[];
  291. roiInx = sortROI(sleepROI);
  292. sleepROIcount = sleepROIcount(roiInx);
  293. sleepROI = sleepROI(roiInx);
  294. awake_sleep_LME = plotLME(sleepROI,dataAw,dataSLP,awakeIndx,sleepIndx,color_aw,colorSleep,{'Awake','Sleep'});
  295. ylim([0 0.38]);
  296. set(gcf,'Name','Awake vs. Sleep LME: Fig4F');
  297. %% compare states Spont vs vents
  298. spontVal = [];
  299. ventVal = [];
  300. nPt = unique(dataAnes.ptID);
  301. for i = 1:length(nPt)
  302. IndxSpont = dataAnes.ptID ==nPt(i);
  303. IndxVent = dataVS.ptID ==nPt(i);
  304. if ~isnan(mean(dataAnes.CohValue(IndxSpont)))
  305. spontVal = [spontVal;mean(dataAnes.CohValue(IndxSpont))];
  306. end
  307. if ~isnan(mean(dataAw.CohValue(IndxVent)))
  308. ventVal = [ventVal;mean(dataVS.CohValue(IndxVent))];
  309. end
  310. end
  311. % Wilcoxon signed-rank test for paired samples
  312. [p_sp_vs, ~, stats] = signrank(spontVal, ventVal);
  313. % Rank-biserial correlation (paired samples)
  314. % r = (number of positive - number of negative differences) / total pairs
  315. diffSigns = sign(spontVal - ventVal);
  316. rankBiserial = sum(diffSigns) / numel(diffSigns);
  317. % Medians and IQRs
  318. SpontMedian = median(spontVal);
  319. SpontIQR = iqr(spontVal);
  320. VentMedian = median(ventVal);
  321. VentIQR = iqr(ventVal);
  322. fprintf('\n--- Statistical Summary (Spontaneous vs Ventilation, Paired) ---\n');
  323. fprintf('Wilcoxon signed-rank test: p = %.4f\n', p_sp_vs);
  324. fprintf('Rank-biserial correlation: %.2f\n', rankBiserial);
  325. fprintf('Spontaneous: median = %.3f, IQR = %.3f\n', SpontMedian, SpontIQR);
  326. fprintf('Ventilation: median = %.3f, IQR = %.3f\n', VentMedian, VentIQR);
  327. mxLen = max([length(spontVal),length(ventVal)]);
  328. vio_sp = [spontVal;NaN(mxLen-length(spontVal),1)];
  329. vio_vs = [ventVal;NaN(mxLen-length(ventVal),1)];
  330. %violinData = [vio_aw,vio_slp, vio_sp,vio_vs];
  331. violinData = [vio_sp, vio_vs];
  332. figure("Position",[200,100,700,550]);
  333. vp = violinplot(violinData,{'Anesthetized','Ventilated'},...
  334. 'ViolinColor',brighten(colorS(3:4,:),0.4),'Width',0.2,'ShowMean',true); %'ShowBox',false,'ShowMedian',false);
  335. for ii = 1:length(vp)
  336. mmColor = brighten(colorS(2+ii,:),-0.6);
  337. vp(ii).MeanPlot.Color = mmColor;
  338. vp(ii).MeanPlot.LineWidth = 2;
  339. vp(ii).MedianColor = [1,1,1];
  340. vp(ii).MedianPlot.SizeData = 100;
  341. end
  342. ylim([0 0.45]);
  343. ylabel('Coherence (R)')
  344. box off;
  345. xlim([0.5 2.5]);
  346. set(gcf, 'color', 'w');
  347. axx = gca;
  348. axx.YTick = [0:0.2:1];
  349. set(axx, 'fontSize', 16);
  350. % hh = sigstar({[1 2]}, p_sp_vs, 0);
  351. % set(hh(:,2), 'FontSize', 20);
  352. % compute where to place the text
  353. ymax = max([spontVal; ventVal]);
  354. % display the exact p-value
  355. text(1.5, ymax*1.3, sprintf('p = %.3f', p_sp_vs), ...
  356. 'HorizontalAlignment','center', 'FontSize',14);
  357. % plot spont vs vents
  358. lme_anes_vent = plotLME(unqROI,dataAnes,dataVS,anesIndx,ventsIndx,color_sp,color_vs,{'Anesthetized','Ventilated'});
  359. ylim([0 0.38]);
  360. set(gcf,'Name','Anethetized vs. Ventilated LME: Fig6E');
  361. %% slow-deep breathing
  362. clear
  363. addpath(genpath('.\reqfunc\'));
  364. roundM = @(x,m) round(x*10^m)./10^m;
  365. dataVHi = load('.\saved_results\CohVentHi.mat'); % load saved results for high-tidal volume ventilation
  366. dataVS = load('.\saved_results\CohVent_matchedHiTV.mat'); % load saved results for mathed ventilation (5 Part)
  367. % define colors
  368. color_vs = [0.6 0.12 0.47];
  369. color_vHi = [0 0.5 0.3]; %[0.2 0.9 0.8];
  370. colorS = [color_vs;color_vHi];
  371. Fs = 500;
  372. % some used variables to define
  373. pThr = 0.05;
  374. Msize = 70;
  375. Csize = [50,180];
  376. templateAlpha = 0.09;
  377. BrainAlpha = 0.3;
  378. Malpha = 0.9;
  379. BrHem = 1;
  380. % significant contact indexes
  381. ventsIndx = dataVS.significance_v;
  382. ventHiIndx = dataVHi.significance_v;
  383. %plot coverage during Awake States and Correlations on template Brain
  384. % plot Coverage
  385. plotBrainPatch(BrHem,templateAlpha,[],[],true); % plot the template brain LH on right, RH on left
  386. % plot Significant contacts in Awake breathing
  387. vHiCord = dataVHi.ChnCoordinates; % Brain sites MNI coordinates
  388. h1=scatter3(-vHiCord(:,1),vHiCord(:,2),vHiCord(:,3),Msize.*ones(size(vHiCord,1),1)./2,...
  389. MarkerFaceColor = [0.4 0.4 0.4],MarkerFaceAlpha = Malpha,MarkerEdgeColor=[0.1 0.1 0.1]);
  390. axx = gca;
  391. % Create line
  392. view([0 0 90]);
  393. camlight(axx, 'headlight');
  394. set(gcf,'Name','Coverage Map: Slow-deep Fig7A','NumberTitle', 'off');
  395. % plot coherence on template brain
  396. dataVS.ChnCoordinates = dataVHi.ChnCoordinates;
  397. ventsIndx(dataVS.CohValue< 0.1)=0;
  398. BrainColor = [1 0.98 0.98];
  399. plotbrainscatter(dataVS,ventsIndx,dataVS.CohValue,BrHem,BrainAlpha,Csize,color_vs,Malpha,BrainColor);
  400. set(gcf,'Name','Coherence: Standard Fig7B','NumberTitle', 'off');
  401. plotbrainscatter(dataVHi,ventHiIndx,dataVHi.CohValue,BrHem,BrainAlpha,Csize,color_vHi,Malpha,BrainColor)
  402. set(gcf,'Name','Coherence: Slow-deep Fig7C','NumberTitle', 'off');
  403. %
  404. conds = {"VentS","VentHi"};
  405. % Common participants present in both conditions
  406. commonPt = sort(intersect(unique(dataVS.ptID(:)), unique(dataVHi.ptID(:))));
  407. ratioVS = nan(numel(commonPt),1);
  408. ratioVHi = nan(numel(commonPt),1);
  409. for i = 1:numel(commonPt)
  410. p = commonPt(i);
  411. ratioVS(i) = mean(logical(dataVS.significance_v(dataVS.ptID==p)));
  412. ratioVHi(i) = mean(logical(dataVHi.significance_v(dataVHi.ptID==p)));
  413. end
  414. % Print per-participant ratios
  415. fprintf('Per-participant proportion of significant contacts (all sites):\n');
  416. for i = 1:numel(commonPt)
  417. fprintf(' %d: VentS=%.3f, VentHi=%.3f\n', commonPt(i), ratioVS(i), ratioVHi(i));
  418. end
  419. % One-sided paired Wilcoxon: VentHi > VentS
  420. [p_one,~,~] = signrank(ratioVS, ratioVHi, 'tail','left'); % tests median(VentS - VentHi) < 0
  421. fprintf('One-sided Wilcoxon (VentHi > VentS): N=%d, p=%.4g\n', numel(commonPt), p_one);
  422. violinData = [ratioVS, ratioVHi];
  423. figure("Position",[200,100,400,450]);
  424. vp = violinplot(violinData,{'Standard','Slow-deep'},...
  425. 'ViolinColor',brighten(colorS(1:2,:),0.5),'Width',0.2,'ShowMean',true); %'ShowBox',false,'ShowMedian',false);
  426. for ii = 1:length(vp)
  427. mmColor = brighten(colorS(ii,:),-0.7);
  428. vp(ii).MeanPlot.Color = mmColor;
  429. vp(ii).MeanPlot.LineWidth = 2;
  430. vp(ii).MedianColor = [1,1,1];
  431. vp(ii).MedianPlot.SizeData = 100;
  432. end
  433. ylim([0 0.8]);
  434. ylabel('Proportion of significant sites')
  435. box off;
  436. xlim([0.5 2.5]);
  437. set(gcf, 'color', 'w');
  438. axx = gca;
  439. axx.YTick = 0:0.2:1;
  440. set(axx, 'fontSize', 16);
  441. % hh = sigstar({[1 2]}, p_one, 0);
  442. % set(hh(:,2), 'FontSize', 20);
  443. % display the exact p-value
  444. ymax = max(violinData(:), [], 'omitnan');
  445. text(1.5, ymax*1.15, sprintf('p = %.3g', p_one), ...
  446. 'HorizontalAlignment','center', 'FontSize',14);
  447. %% summary stats
  448. dataList = {dataVS,dataVHi};
  449. stateNames = {'Ventilation','Slow-deep'};
  450. for d = 1:length(dataList)
  451. data = dataList{d};
  452. state = stateNames{d};
  453. sigIndx = data.significance_v;
  454. ptIDs = unique(data.ptID);
  455. nSite = zeros(length(ptIDs), 1);
  456. nSigf = zeros(length(ptIDs), 1);
  457. for ii = 1:length(ptIDs)
  458. nSite(ii) = sum(data.ptID == ptIDs(ii));
  459. nSigf(ii) = sum(sigIndx(data.ptID == ptIDs(ii)));
  460. end
  461. totalSites = sum(nSite);
  462. totalSigf = sum(nSigf);
  463. meanSitesPerPt = mean(nSite);
  464. stdSitesPerPt = std(nSite);
  465. meanSigfPerPt = mean(nSigf);
  466. stdSigfPerPt = std(nSigf);
  467. percentSigf = (totalSigf / totalSites) * 100;
  468. % Print for this state
  469. fprintf('\n=== %s ===\n', state);
  470. fprintf('Total sites: %d\n', totalSites);
  471. fprintf('Total significant sites: %d\n', totalSigf);
  472. fprintf('Sites per participant: %.1f ± %.1f\n', meanSitesPerPt, stdSitesPerPt);
  473. fprintf('Significant sites per participant: %.1f ± %.1f\n', meanSigfPerPt, stdSigfPerPt);
  474. fprintf('Overall percentage of significant sites: %.1f%%\n', percentSigf);
  475. end
  476. %scatter plot
  477. roiscatter2states(dataVS.CohValue,dataVHi.LocationsKN,dataVHi.CohValue,dataVHi.LocationsKN,colorS);
  478. title('Breathing-LFP coherence in ventilator driven breathing: standard and slow, deep ventilation');
  479. set(gcf,'Name','Coherence: Fig7D','NumberTitle', 'off');
  480. % LME for standard vs slow-deep
  481. vsValues = dataVS.CohValue;
  482. vHiValues = dataVHi.CohValue;
  483. LocVent = roiNameUpdate(dataVHi.LocationsKN);
  484. % unique ROIs
  485. unqROI = unique(LocVent);
  486. Nroi = length(unqROI);
  487. CountsROI = zeros(Nroi, 1); countsS = zeros(Nroi, 2);
  488. vioData = cell(Nroi,2); % select number of columns (columns represent states)
  489. for kk = 1:Nroi
  490. indxL = strcmp(LocVent, unqROI{kk});
  491. CountsROI(kk,1) = sum(indxL);%sum(cell2mat(strfind(Loc, uniqLoc{kk})));
  492. countsS(kk,1) = sum(strcmp(LocVent(ventsIndx), unqROI{kk}));
  493. countsS(kk,2) = sum(strcmp(LocVent(ventHiIndx), unqROI{kk}));
  494. vioData{kk,1} = vsValues(indxL)';
  495. vioData{kk,2} = vHiValues(indxL)';
  496. end
  497. % remove ROIs less than 5 total contacts
  498. rmvIndx = find(CountsROI<=5);
  499. CountsROI(rmvIndx,:)=[];
  500. countsS(rmvIndx,:)=[];
  501. unqROI(rmvIndx)=[];
  502. vioData(rmvIndx,:) = [];
  503. roiInx = sortROI(unqROI);
  504. CountsROI = CountsROI(roiInx,:);
  505. countsS = countsS(roiInx,:);
  506. unqROI = unqROI(roiInx);
  507. vioData = vioData(roiInx,:);
  508. roiPercentage = 100*([countsS(:,1),countsS(:,2)]./CountsROI);
  509. % find empty cells in vioData
  510. isEmptyCell = cellfun(@isempty, vioData);
  511. [vioData{isEmptyCell}] = deal(NaN); % filling NaN values on empty cells
  512. meanCorr = cell2mat(cellfun(@mean, vioData, 'UniformOutput', false));
  513. stdCorr = cell2mat(cellfun(@std, vioData, 'UniformOutput', false));
  514. lme_ventHi = plotLME(unqROI,dataVS,dataVHi,ventsIndx,ventHiIndx,color_vs,color_vHi,{'standard ventilation','slow-deep ventilation'});
  515. ylim([0 0.49]);
  516. yticks([0:0.15:1]);
  517. set(gcf,'Name','Coherence: Fig7F','NumberTitle', 'off');

NeuralbreathingScript.m at commit 5eb6972, under MIT · at the source

Overview

Authors: Md Rakibul Mowla1, Ariane E Rhone1, Sukhbinder Kumar1, Christopher K Kovach1,2, Junjie V Liu3, Aubrey C Chan4,5, Hiroto Kawasaki1, Rashmi N Mueller1,6, Justin D Kuhn7, Ryan T Frede8, Michael A Ciliberto9, Theresa M Czech9, Sreenath Thati Ganganna9, James W Owens9, Ania K Dabrowski9, Brittany N Sprigg9, Mark A Granner3, Kristina Simonyan10,11,12, Kirill V Nourski1,13, Bryan M Krause14
and 7 other authorsMatthew I Banks14, Matthew A Howard III1,3,13, Paul W Davenport15, Kyle T S Pattinson16,17, George B Richerson1,3,13, John A Wemmie1,4,5,13, Brian J Dlouhy1,9,13
17 affiliations
  1. Department of Neurosurgery, University of Iowa, Iowa City, IA USA
  2. Department of Neurosurgery, University of Nebraska Medical Center, Omaha, NE USA
  3. Department of Neurology, University of Iowa, Iowa City, IA USA
  4. Department of Psychiatry, University of Iowa, Iowa City, IA USA
  5. Department of Veterans Affairs Medical Center, Iowa City, IA USA
  6. Department of Anesthesia, University of Iowa, Iowa City, IA USA
  7. Institute for Clinical and Translational Science, University of Iowa, Iowa City, IA USA
  8. Department of Respiratory Care, University of Iowa, Iowa City, IA USA
  9. Department of Pediatrics, University of Iowa, Iowa City, IA USA
  10. Department of Otolaryngology, Head and Neck Surgery, Massachusetts Eye and Ear, Boston, MA USA
  11. Department of Neurology, Massachusetts General Hospital, Boston, MA USA
  12. Harvard Medical School, Boston, MA USA
  13. Iowa Neuroscience Institute, University of Iowa, Iowa City, IA USA
  14. Department of Anesthesiology, University of Wisconsin, Madison, WI USA
  15. Department of Physiology, University of Florida, Gainesville, FL USA
  16. Wellcome Centre for Integrative Neuroimaging, University of Oxford, Oxford, UK
  17. Nuffield Department of Clinical Neurosciences, University of Oxford, Oxford, UK
Journal: Nature communications, volume 17, issue 1, article 6949
Dates: received 30 April 2025; accepted 19 May 2026; published online 28 May 2026
Type: Research article · Language: English
License: CC BY-NC-ND
Identifiers: DOI 10.1038/s41467-026-73828-0 · PMID 42209532 · PMCID PMC13388959 · OpenAlex W7162687326
Open access: gold, a free copy (OpenAlex)
Status: code verified
Categories: human (organism)
Methods: Connectivity, Spectral & time-frequency, Statistics, Preprocessing, fMRI & imaging, Physiology & signal measures
Keywords: Respiration, Neural circuits, Sensory processing
MeSH: Prosencephalon*, Respiration*, Respiration, Artificial*, Sleep*, Wakefulness*, Adult, Female, Humans, Interoception, Male, Young Adult (* major topic)
Topic: Neuroscience of respiration and sleep (Endocrine and Autonomic Systems, Neuroscience), according to OpenAlex
Funding: U.S. Department of Health & Human Services | NIH | National Institute of Mental Health (NIMH) (R01MH113325); U.S. Department of Health & Human Services | NIH | National Institute on Drug Abuse (NIDA) (R01DA052953); NIMH NIH HHS (T32 MH019113, R01 MH113325); U.S. Department of Health & Human Services | NIH | National Institute of Neurological Disorders and Stroke (NINDS) (K08 NS112573-01); U.S. Department of Health & Human Services | NIH | National Institute on Deafness and Other Communication Disorders (NIDCD) (P50DC01990); NIDCD NIH HHS (P50 DC019900); NINDS NIH HHS (K08 NS112573, R01 NS113764); NIDA NIH HHS (R01 DA052953)
Citations: cited by 1 paper (Europe PMC); 105 references in the paper

Abstract

The abstract is not reproduced here: the paper's license (CC BY-NC-ND) does not allow it. Read it in the paper, at the publisher or on Europe PMC.

Repositories

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

Zenodo 19502572

License: MIT
State: the link answers, verified on 28 September 2026
Evidence: files inventoried
Size: 2 files
Software Heritage: not checked
Found in: “Code availability”
Not found: README, license file, CITATION.cff, environment file, tests, continuous integration, documentation
Availability: 1 check, the latest on 28 September 2026: the link answers (HTTP 200)
  • 28 September 2026: the link answers (HTTP 200)
At the source:

rakib05/NeuralBreathing

License: MIT
State: the link answers, verified on 28 September 2026
Evidence: files inventoried
Commit: 5eb697294ca4adc3f0974daaccc8564f48efdaf7, 10 April 2026
Languages: MATLAB (13)
Size: 17 files, 13 scripts
Software Heritage: not archived
Found in: “Code availability”
Holds: README, license file
Not found: CITATION.cff, environment file, tests, continuous integration, documentation
Availability: 1 check, the latest on 28 September 2026: the link answers
  • 28 September 2026: the link answers
15 files

ckovach/DBT

License: MIT
State: the link answers, verified on 28 September 2026
Evidence: files inventoried
Commit: 82751b4b360f400f16cc6d91d4b26fdaf07102c4, 2 March 2018
Languages: MATLAB (19)
Size: 21 files, 19 scripts
Software Heritage: not archived
Found in: “Code availability”
Holds: README, license file
Not found: CITATION.cff, environment file, tests, continuous integration, documentation
Availability: 1 check, the latest on 28 September 2026: the link answers
  • 28 September 2026: the link answers
21 files
At the source: github.com/ckovach/DBT

Code availability statement

The paper has a code availability statement. Its license (CC BY-NC-ND) does not allow reproducing it here; in short, from what the harvester recognized in it:

Read it in the paper: doi.org/10.1038/s41467-026-73828-0.

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:

  • 3 repositories of the authors' code, each at its verified commit, with its license and how the link was found in the paper;
  • 32 scripts, each with its path and the digest of its content;
  • 12 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 paper has a data availability statement. Its license (CC BY-NC-ND) does not allow reproducing it here; in short, from what the harvester recognized in it:

  • it says that the data are available on request

Read it in the paper: doi.org/10.1038/s41467-026-73828-0.

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

Recorded: type, language, journal, volume, issue, pages, dates, 27 authors, 3 keywords, 11 MeSH terms, 8 funders, 96 references.

Cite

This paper

Mowla, M. R., Rhone, A. E., Kumar, S., Kovach, C. K., Liu, J. V., Chan, A. C., Kawasaki, H., Mueller, R. N., Kuhn, J. D., Frede, R. T., Ciliberto, M. A., Czech, T. M., Ganganna, S. T., Owens, J. W., Dabrowski, A. K., Sprigg, B. N., Granner, M. A., Simonyan, K., Nourski, K. V., . . . Dlouhy, B. J. (2026). Human forebrain neural synchronization and entrainment to breathing during wakefulness, sleep, and external mechanical ventilation. Nature communications, 17(1), 6949. https://doi.org/10.1038/s41467-026-73828-0

BibTeX

@article{mowla2026human,
author = {Mowla, Md Rakibul and Rhone, Ariane E and Kumar, Sukhbinder and Kovach, Christopher K and Liu, Junjie V and Chan, Aubrey C and Kawasaki, Hiroto and Mueller, Rashmi N and Kuhn, Justin D and Frede, Ryan T and Ciliberto, Michael A and Czech, Theresa M and Ganganna, Sreenath Thati and Owens, James W and Dabrowski, Ania K and Sprigg, Brittany N and Granner, Mark A and Simonyan, Kristina and Nourski, Kirill V and Krause, Bryan M and Banks, Matthew I and Howard, Matthew A and Davenport, Paul W and Pattinson, Kyle T S and Richerson, George B and Wemmie, John A and Dlouhy, Brian J},
title = {{Human forebrain neural synchronization and entrainment to breathing during wakefulness, sleep, and external mechanical ventilation}},
journal = {Nature communications},
year = {2026},
month = may,
volume = {17},
number = {1},
pages = {6949},
publisher = {Nature Publishing Group},
issn = {2041-1723},
doi = {10.1038/s41467-026-73828-0},
url = {https://doi.org/10.1038/s41467-026-73828-0},
pmid = {42209532},
pmcid = {PMC13388959}
}

RIS

TY - JOUR
AU - Mowla, Md Rakibul
AU - Rhone, Ariane E
AU - Kumar, Sukhbinder
AU - Kovach, Christopher K
AU - Liu, Junjie V
AU - Chan, Aubrey C
AU - Kawasaki, Hiroto
AU - Mueller, Rashmi N
AU - Kuhn, Justin D
AU - Frede, Ryan T
AU - Ciliberto, Michael A
AU - Czech, Theresa M
AU - Ganganna, Sreenath Thati
AU - Owens, James W
AU - Dabrowski, Ania K
AU - Sprigg, Brittany N
AU - Granner, Mark A
AU - Simonyan, Kristina
AU - Nourski, Kirill V
AU - Krause, Bryan M
AU - Banks, Matthew I
AU - Howard, Matthew A
AU - Davenport, Paul W
AU - Pattinson, Kyle T S
AU - Richerson, George B
AU - Wemmie, John A
AU - Dlouhy, Brian J
TI - Human forebrain neural synchronization and entrainment to breathing during wakefulness, sleep, and external mechanical ventilation
T2 - Nature communications
J2 - Nat Commun
PY - 2026
DA - 2026/05/28
VL - 17
IS - 1
SP - 6949
SN - 2041-1723
PB - Nature Publishing Group
DO - 10.1038/s41467-026-73828-0
UR - https://doi.org/10.1038/s41467-026-73828-0
LA - en
ER -

CSL-JSON

{
"id": "10.1038/s41467-026-73828-0",
"type": "article-journal",
"title": "Human forebrain neural synchronization and entrainment to breathing during wakefulness, sleep, and external mechanical ventilation",
"container-title": "Nature communications",
"author": [
{
"family": "Mowla",
"given": "Md Rakibul"
},
{
"family": "Rhone",
"given": "Ariane E"
},
{
"family": "Kumar",
"given": "Sukhbinder"
},
{
"family": "Kovach",
"given": "Christopher K"
},
{
"family": "Liu",
"given": "Junjie V"
},
{
"family": "Chan",
"given": "Aubrey C"
},
{
"family": "Kawasaki",
"given": "Hiroto"
},
{
"family": "Mueller",
"given": "Rashmi N"
},
{
"family": "Kuhn",
"given": "Justin D"
},
{
"family": "Frede",
"given": "Ryan T"
},
{
"family": "Ciliberto",
"given": "Michael A"
},
{
"family": "Czech",
"given": "Theresa M"
},
{
"family": "Ganganna",
"given": "Sreenath Thati"
},
{
"family": "Owens",
"given": "James W"
},
{
"family": "Dabrowski",
"given": "Ania K"
},
{
"family": "Sprigg",
"given": "Brittany N"
},
{
"family": "Granner",
"given": "Mark A"
},
{
"family": "Simonyan",
"given": "Kristina"
},
{
"family": "Nourski",
"given": "Kirill V"
},
{
"family": "Krause",
"given": "Bryan M"
},
{
"family": "Banks",
"given": "Matthew I"
},
{
"family": "Howard",
"given": "Matthew A"
},
{
"family": "Davenport",
"given": "Paul W"
},
{
"family": "Pattinson",
"given": "Kyle T S"
},
{
"family": "Richerson",
"given": "George B"
},
{
"family": "Wemmie",
"given": "John A"
},
{
"family": "Dlouhy",
"given": "Brian J"
}
],
"container-title-short": "Nat Commun",
"volume": "17",
"issue": "1",
"page": "6949",
"DOI": "10.1038/s41467-026-73828-0",
"PMID": "42209532",
"PMCID": "PMC13388959",
"ISSN": "2041-1723",
"publisher": "Nature Publishing Group",
"URL": "https://doi.org/10.1038/s41467-026-73828-0",
"language": "en",
"issued": {
"date-parts": [
[
2026,
5,
28
]
]
}
}

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.2603853123 [code]
A nose-to-brain circuit underlies anxiety regulation by nasal afferent frequency in mice.
Journal: Proceedings of the National Academy of Sciences of the United States of America
In common: Signal Processing Toolbox, 14 references
[2] doi:10.1016/j.isci.2026.115760
A reversible rat model of hyposmia affects respiration-linked brain oscillations and behavior.
Journal: iScience
In common: 13 references
[3] doi:10.1038/s41467-026-71604-8 [code]
Respiration as a dynamic modulator of sensory sampling.
Journal: Nature communications
In common: Violinplot-Matlab, Signal Processing Toolbox, Statistics and Machine Learning Toolbox, 8 references
[4] doi:10.1038/s41467-026-73106-z [code]
Respiratory pauses highlight sleep architecture in mice.
Journal: Nature communications
In common: Signal Processing Toolbox, Statistics and Machine Learning Toolbox, 9 references
[5] doi:10.1371/journal.pbio.3003982 [code]
No evidence for modulation of the readiness potential by respiratory phase during natural breathing.
Journal: PLoS biology
In common: Signal Processing Toolbox, Statistics and Machine Learning Toolbox, 9 references
[6] doi:10.1126/sciadv.aeb3326 [code]
Insular routing to orbitofrontal cortex enables breathing awareness.
Journal: Science advances
In common: Signal Processing Toolbox, 8 references
[7] doi:10.7554/elife.107081 [code]
Cortical motor activity modulates respiration and reduces apnoea in neonates.
Journal: eLife
In common: Signal Processing Toolbox, Statistics and Machine Learning Toolbox, 7 references
[8] doi:10.1093/braincomms/fcag041
Exercise enhances hippocampal-cortical ripple interactions in the human brain.
Journal: Brain communications
In common: 2 references, 2 authors
[9] doi:10.1126/sciadv.aee1002 [code]
Theta oscillations are an organizational unit of odor processing in the olfactory bulb.
Journal: Science advances
In common: Signal Processing Toolbox, Statistics and Machine Learning Toolbox, 3 references
[10] doi:10.1371/journal.pcbi.1014672 [code]
Robust circular cluster-based statistics for respiration-brain coupling.
Journal: PLoS computational biology
In common: Signal Processing Toolbox, Statistics and Machine Learning Toolbox, 3 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.