OSCR

Transient infrared laser exposure modulates calcium activity in cortical dendritic spines.

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] § Results › Anatomical Variation in Calcium Response ↔ SpineGCaMPAnalysis.m, lines 89–229 · score 0.70 · unreactive soma, DS responding, Cohen, rank, ANOVA, phenotype
  2. [2] § Methods › Infrared Laser Exposure ↔ SpineGCaMPAnalysis.m, lines 515–548 · score 0.68 · pulse energy, pulse train, single pulse, SP, PT, temperatures
  3. [3] § Methods › Data Analysis › Signal feature extraction ↔ ExtendedImagingAnalysis.m, lines 60–140 · score 0.66 · low activity, high activity, mCardinal, fluorescence, spiking, actin
  4. [4] § Methods › Microscopy › Confocal imaging ↔ ExtendedImagingAnalysis.m, lines 60–140 · score 0.61 · low activity, high activity, mCardinal, sham, actin, Bonferroni
  5. [5] § Results › Anatomical Variation in Calcium Response ↔ SpineGCaMPAnalysis.m, lines 89–229 · score 0.57 · Reactive neurons, rank, SEM, unreactive, phenotypes, SPME
  6. [6] § Methods › Data Analysis › Image processing and signal measurement ↔ ActinDataExtraction.m, lines 1–111 · score 0.57 · affine, imregtform, imwarp, transform, Multimodal, segmentation
  7. [7] § Results › Concurrent Calcium and F-Actin Dynamics ↔ ExtendedImagingAnalysis.m, lines 199–267 · score 0.55 · individual neuron, mCardinal, reaction, Spearman, correlation, alpha
  8. [8] § Results › Infrared-Induced Calcium Activity Mediated Through Extracellular Entry ↔ SpineGCaMPAnalysis.m, lines 455–513 · score 0.53 · CaFree, AP5, CNQX, TRP, RR, Kruskal

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 · 705 lines · 28 KB · no license · 4 matches

  1. clc, clear, close all
  2. % Load Data
  3. load("Phys Temp.mat"), PhysTemp = ExpData;
  4. load("Room Temp.mat"), RoomTemp = ExpData.PulseTrain;
  5. RoomTemp = rmfield(RoomTemp,'Post');
  6. load("Pharmacology.mat"), Pharma = ExpData.PulseTrain;
  7. Pharma = rmfield(Pharma,'Post');
  8. clear ExpData
  9. DoseType = {'Single', 'Multi'};
  10. artifactpts = 31:5:51;
  11. Colors = [0 0 0;
  12. .5 .5 0;
  13. 0 .5 0;];
  14. yellow_lut = [linspace(0,1,256)', linspace(0,1,256)',zeros(256,1)];
  15. % Separate Room Temp experiments into experimental categories
  16. mask = contains({RoomTemp.Single.filename},'30A');
  17. RoomTemp.Subthreshold.Single = RoomTemp.Single(mask);
  18. RoomTemp.Subthreshold.Multi = RoomTemp.Multi(mask);
  19. RoomTemp.Threshold.Single = RoomTemp.Single(~mask);
  20. RoomTemp.Threshold.Multi = RoomTemp.Multi(~mask);
  21. % Good ol Peak counting. This is the way. [labels,locs height,prom,width]
  22. % Soma = [loction, height, prominance, width ]
  23. % Dendrites = [DendriteLabel, loction, height, prominance, width, bAP]
  24. % Spines = [SpineLabel, ParentDendrite, loction, height, prominance, width, bAP, Reactive, NeuronParent]
  25. PhysTemp.PulseTrain.Single = ExtractPks(PhysTemp.PulseTrain.Single,752,artifactpts(1));
  26. PhysTemp.PulseTrain.Multi = ExtractPks(PhysTemp.PulseTrain.Multi,900,artifactpts);
  27. PhysTemp.SinglePulse.Single = ExtractPks(PhysTemp.SinglePulse.Single,752,artifactpts(1));
  28. PhysTemp.SinglePulse.Multi = ExtractPks(PhysTemp.SinglePulse.Multi,900,artifactpts);
  29. RoomTemp.Subthreshold.Single = ExtractPks(RoomTemp.Subthreshold.Single,752,artifactpts(1));
  30. RoomTemp.Subthreshold.Multi = ExtractPks(RoomTemp.Subthreshold.Multi,900,artifactpts);
  31. RoomTemp.Threshold.Single = ExtractPks(RoomTemp.Threshold.Single,752,artifactpts(1));
  32. RoomTemp.Threshold.Multi = ExtractPks(RoomTemp.Threshold.Multi,900,artifactpts);
  33. Pharma.Single = ExtractPks(Pharma.Single,752,artifactpts(1));
  34. Pharma.Multi = ExtractPks(Pharma.Multi,899,artifactpts);
  35. % Append Data
  36. PhysTemp.PulseTrain = AppendData(PhysTemp.PulseTrain);clc
  37. PhysTemp.SinglePulse = AppendData(PhysTemp.SinglePulse);
  38. RoomTemp.Subthreshold = AppendData(RoomTemp.Subthreshold);
  39. RoomTemp.Threshold = AppendData(RoomTemp.Threshold);
  40. % Peak Stats
  41. PhysTemp.PulseTrain.SpinePkStats = SpinePeakStats(PhysTemp.PulseTrain);
  42. PhysTemp.SinglePulse.SpinePkStats = SpinePeakStats(PhysTemp.SinglePulse);
  43. RoomTemp.Subthreshold.SpinePkStats = SpinePeakStats(RoomTemp.Subthreshold);
  44. RoomTemp.Threshold.SpinePkStats = SpinePeakStats(RoomTemp.Threshold);
  45. Pharma.SpinepkStats = SpinePeakStats(Pharma);
  46. %% Panel 3A
  47. close all
  48. ExpTyp = PhysTemp.SinglePulse.Single;
  49. neuron = 4;
  50. figure('Theme','light');
  51. subplot(8,1,1:5),
  52. spines = RemoveDC(ExpTyp(neuron).Spines,200);
  53. t = (1:length(spines))/7.5;
  54. imagesc(spines'), colormap("hot"),
  55. axpos = get(gca,"Position");
  56. c =colorbar; c.Label.String = '\DeltaF/F'; c.Location = 'manual';
  57. c.Position = [axpos(1)+axpos(3)+.01 axpos(2) .02 axpos(4)];
  58. xline(30*7.5,'LineWidth',2,LineStyle="--",Alpha=1,Color='w')
  59. set(gca, 'XTick', [], 'YTick', [],'FontSize',24)
  60. ylabel('Denditic Spines')
  61. subplot(8,1,6)
  62. mask = ~ExpTyp(neuron).SpinePks(:,end-2);
  63. xline(ExpTyp(neuron).SpinePks(mask,3),'Color','r','LineWidth',2,Alpha=1 );
  64. xline(ExpTyp(neuron).SomaPks(:,1),'LineWidth',2,Alpha=1 );
  65. xlim([t(1) t(end)]), xline(30,'LineWidth',2,LineStyle="--",Alpha=1 )
  66. set(gca, 'XTick', [], 'YTick', [])
  67. subplot(8,1,7:8)
  68. soma = RemoveDC(ExpTyp(neuron).Soma,200);
  69. plot(t,soma,'Color','k','LineWidth',2),
  70. xlim([t(1) t(end)]), xline(30,'LineWidth',2,LineStyle="--",Alpha=1 )
  71. set(gca, 'FontSize',24)
  72. ylabel('\DeltaF/F'), xlabel('time (sec)')
  73. %% Figure 3 comparing Soma, and Spine Responses
  74. close all
  75. SomaLabels = []; SomaMean =[]; SomaPhenotype= []; SpineLabels =[];
  76. SpineMean =[]; SpinePhenotype= []; SpikePercentage = [];
  77. duration = 75;
  78. % Mean Plot responses
  79. for i = 1:4
  80. if i ==1, PulseType = PhysTemp.PulseTrain; ExposureType = PulseType.SingleAppened;
  81. stimpt = round(30*7.5); thresh = stimpt+duration;
  82. ReactiveFraction = PulseType.SpinePkStats.SingleRespondingFraction(:,2);
  83. elseif i ==2, PulseType = PhysTemp.SinglePulse; ExposureType = PulseType.SingleAppened;
  84. ReactiveFraction = PulseType.SpinePkStats.SingleRespondingFraction(:,2);
  85. elseif i ==3, PulseType = PhysTemp.PulseTrain; ExposureType = PulseType.MultiAppened;
  86. stimpt = round(50*7.5); thresh = stimpt+duration;
  87. ReactiveFraction = PulseType.SpinePkStats.MultiRespondingFraction(:,2);
  88. else, PulseType = PhysTemp.SinglePulse; ExposureType = PulseType.MultiAppened;
  89. ReactiveFraction = PulseType.SpinePkStats.MultiRespondingFraction(:,2);
  90. end
  91. soma = RemoveDC(ExposureType.Soma,225);
  92. spines = RemoveDC(ExposureType.Spines,225);
  93. SomaMean = [SomaMean; mean(soma(stimpt:thresh,:))'];
  94. SpineMean = [SpineMean; mean(spines(stimpt:thresh,:))'];
  95. mask = median(sum(soma(stimpt:thresh,:))')<sum(soma(stimpt:thresh,:))'; % Reactive neurons are above the median of the AUC
  96. SomaLabels = [SomaLabels; ones(size(mask))*i];
  97. SomaPhenotype = logical([SomaPhenotype; mask]);
  98. SpikePercentage = [SpikePercentage; ReactiveFraction];
  99. pv = ranksum(ReactiveFraction(mask),ReactiveFraction(~mask));
  100. % Panel C
  101. mask = (PulseType.Labels.Structure=='Spine') & ismember(PulseType.Labels.NeuronID,find(mask));
  102. temp = (PulseType.Labels.Structure=='Soma') | (PulseType.Labels.Structure=='Dendrite');
  103. mask(temp) = [];
  104. SpineLabels = [SpineLabels; ones(size(mask))*i];
  105. SpinePhenotype = logical([SpinePhenotype; mask]);
  106. end
  107. % 3B
  108. Labels = SomaLabels+SomaPhenotype*4;
  109. TickLabels = {'PTSE_(_-_)' 'SPSE_(_-_)' 'PTME_(_-_)' 'SPME_(_-_)'...
  110. 'PTSE_(_+_)' 'SPSE_(_+_)' 'PTME_(_+_)' 'SPME_(_+_)'};
  111. Colors = [repmat([.5 .5 .5],[4 1]); repmat([1 .5 .5],[4 1])];
  112. f1 = figure(Theme='light');
  113. boxchart(Labels, SomaMean,'GroupByColor',Labels,'ColorGroupLayout',...
  114. 'overlaid', 'BoxEdgeColor','k','MarkerSize',10, 'MarkerStyle',...
  115. '.','MarkerColor','k','BoxFaceAlpha', 1);
  116. ax = gca; ax.FontSize = 24; ax.TickDir = 'none';
  117. colororder(Colors), ylabel('\DeltaF/F'),
  118. set(gca, 'XTick', 1:max(Labels), 'XTickLabels', TickLabels)
  119. ax = gca; ax.FontSize = 24; ax.TickDir = 'none'; theme('light')
  120. % Anderson-Darling normality test
  121. for i = 1:max(Labels)
  122. data = SomaMean(Labels==i);
  123. isnormal(i) = adtest(data);
  124. end, isnormal
  125. % P Vals and heat map
  126. dFSoma = PairwiseTest(SomaMean,Labels,TickLabels,'rank');
  127. mask = dFSoma.P_Value<0.05;
  128. figure(f1), hold on
  129. sigstar(dFSoma.Pairs(mask), dFSoma.P_Value(mask)); hold off;
  130. legend('Reactive Soma', 'Unreactive Soma')
  131. for i = 5:8
  132. mask = Labels==i;
  133. M = mean(SomaMean(mask))*100;
  134. sem = std(SomaMean(mask))/sqrt(sum(mask))*100;
  135. sprintf('%s: %.2f+/-%.2f', TickLabels{i}, M, sem)
  136. end
  137. % Panel 3C
  138. Labels = SpineLabels+SpinePhenotype*4;
  139. figure('Theme','light');
  140. swarmchart(SpineLabels(~SpinePhenotype),SpineMean(~SpinePhenotype),5,'black','filled'), hold on
  141. swarmchart(SpineLabels(SpinePhenotype),SpineMean(SpinePhenotype),5,'red','filled'), hold off
  142. set(gca, 'XTick', 1:4, 'XTickLabels', {'PTSE' 'SPSE' 'PTME' 'SPME'})
  143. ylabel("\DeltaF/F")
  144. ax = gca; ax.FontSize = 30; ax.TickDir = 'none';
  145. legend('Unreactive (-)','Reactive (+)',"Location", "northwest",...
  146. "Color",'none','EdgeColor','none');
  147. % Kolmgrov-smirnov normality test & effect size
  148. for i = 1:max(SpineLabels)
  149. spines = SpineLabels==i;
  150. isnormal(i) = kstest(SpineMean(spines));
  151. x = spines & SpinePhenotype;
  152. x = SpineMean(x);
  153. y = spines & ~SpinePhenotype;
  154. y = SpineMean(y);
  155. meanEffectSize(x,y,"Effect","cohen")
  156. d(i,1) = ans.Effect;
  157. CI = abs(ans.ConfidenceIntervals-ans.Effect);
  158. d(i,2) = mean(CI);
  159. end, isnormal
  160. [~,~,stats] =anova1(SpineMean,Labels,"off");
  161. c = multcompare(stats,'Display','off','CriticalValueType','bonferroni');
  162. pvVal = orderpvalues(c);
  163. plotheatmap(TickLabels, pvVal);
  164. title('ANOVA P-Values')
  165. dFSpines = PairwiseTest(SpineMean,Labels,TickLabels,'ttest');
  166. for i = 5:8
  167. mask = Labels==i;
  168. M = mean(SpineMean(mask))*100;
  169. sem = std(SpineMean(mask))/sqrt(sum(mask))*100;
  170. sprintf('%s: %.2f+/-%.2f', TickLabels{i}, M, sem)
  171. end
  172. % 3D Spiking activity striated by soma phenotype
  173. close all
  174. f1 = figure(Theme='light');
  175. Labels = SomaLabels+SomaPhenotype*4;
  176. boxchart(Labels, SpikePercentage*100,'GroupByColor',Labels,'ColorGroupLayout',...
  177. 'overlaid', 'BoxEdgeColor','k','MarkerSize',10, 'MarkerStyle',...
  178. '.','MarkerColor','k','BoxFaceAlpha', .5),
  179. colororder(Colors), ylabel('% DS Responding/Neuron'), ylim([0 100])
  180. set(gca, 'XTick', 1:max(Labels), 'XTickLabels', TickLabels,'FontSize',24)
  181. PhenoSpike = PairwiseTest(SpikePercentage,Labels,TickLabels,'rank');
  182. % Anderson-Darling normality test
  183. for i = 1:max(Labels)
  184. data = SpikePercentage(Labels==i);
  185. isnormal(i) = adtest(data);
  186. end, isnormal
  187. mask = PhenoSpike.P_Value<0.05;
  188. figure(f1), hold on
  189. sigstar(PhenoSpike.Pairs(mask), PhenoSpike.P_Value(mask)); hold off; % Add significance markers
  190. %% Figure 4
  191. close all
  192. % 4B Distances from Soma for each experimental protocol
  193. Distances = horzcat([PhysTemp.PulseTrain.Single.SpineDistance],...
  194. [PhysTemp.PulseTrain.Multi.SpineDistance],...
  195. [PhysTemp.SinglePulse.Single.SpineDistance],...
  196. [PhysTemp.SinglePulse.Multi.SpineDistance]);
  197. % Labels for all Spines
  198. Labels = horzcat(ones(1,length([PhysTemp.PulseTrain.Single.SpineEventMask])),...
  199. ones(1,length([PhysTemp.PulseTrain.Multi.SpineEventMask]))*2,...
  200. ones(1,length([PhysTemp.SinglePulse.Single.SpineEventMask]))*3,...
  201. ones(1,length([PhysTemp.SinglePulse.Multi.SpineEventMask]))*4);
  202. % Mask of activated spines
  203. mask = logical(horzcat([PhysTemp.PulseTrain.Single.SpineEventMask],...
  204. [PhysTemp.PulseTrain.Multi.SpineEventMask],...
  205. [PhysTemp.SinglePulse.Single.SpineEventMask],...
  206. [PhysTemp.SinglePulse.Multi.SpineEventMask]));
  207. figure('Theme','light');
  208. set(gcf, 'Units', 'inches', 'Position', [5, 5, 5.5, 4]);
  209. swarmchart(Labels(~mask),Distances(~mask),10,'black','filled'), hold on
  210. swarmchart(Labels(mask),Distances(mask)',10,'red','filled'), hold off
  211. set(gca, 'XTick', 1:4, 'XTickLabels', {'PTSE' 'PTME' 'SPSE' 'SPME'})
  212. ylabel("Distance (\mum)")
  213. legend('Unreactive','Reactive',"Location", "northwest",...
  214. "Color",'none','EdgeColor','none');
  215. ax = gca; ax.FontSize = 24; ax.TickDir = 'none';
  216. for i = 1:4
  217. imask = Labels == i;
  218. [r(i)] = corr(Distances(imask)', mask(imask)', 'Type', 'Pearson');
  219. end
  220. Labels = Labels+mask*4;
  221. TickLabels = {'PTSE (-)' 'PTME (-)' 'SPSE (-)' 'SPME (-)'...
  222. 'PTSE (+)' 'PTME (+)' 'SPSE (+)' 'SPME (+)'};
  223. [~,~,stats] = anova1(Distances, Labels,"off");
  224. c = multcompare(stats,'Display','off');
  225. p = orderpvalues(c);
  226. plotheatmap(TickLabels, p)
  227. title('ANOVA Bonferroni Post-Hoc P-Values')
  228. % Figure 4 C & D
  229. PTSS = PhysTemp.PulseTrain.SpinePkStats.Post_Single;
  230. PTMS = PhysTemp.PulseTrain.SpinePkStats.Post_Multi;
  231. SPSS = PhysTemp.SinglePulse.SpinePkStats.Post_Single;
  232. SPMS = PhysTemp.SinglePulse.SpinePkStats.Post_Multi;
  233. PkStats = vertcat(PTSS, PTMS, SPSS, SPMS);
  234. Labels = [ones(length(PTSS),1); ones(length(PTMS),1)*2; ...
  235. ones(length(SPSS),1)*3; ones(length(SPMS),1)*4];
  236. IRPks = horzcat(PkStats, Labels);
  237. PTSS = PhysTemp.PulseTrain.SpinePkStats.Single_bAP;
  238. PTMS = PhysTemp.PulseTrain.SpinePkStats.Multi_bAP;
  239. SPSS = PhysTemp.SinglePulse.SpinePkStats.Single_bAP;
  240. SPMS = PhysTemp.SinglePulse.SpinePkStats.Multi_bAP;
  241. PkStats = vertcat(PTSS, PTMS, SPSS, SPMS);
  242. Labels = [ones(length(PTSS),1); ones(length(PTMS),1)*2; ...
  243. ones(length(SPSS),1)*3; ones(length(SPMS),1)*4];
  244. bAPPks = horzcat(PkStats, Labels);
  245. mask = bAPPks(:,3)>30 & bAPPks(:,7)==1;
  246. post_bAPPks = bAPPks(mask,:);
  247. pre_bAPPks = bAPPks(~mask,:);
  248. figure('Theme','light'); set(gcf, 'Units', 'inches', 'Position', [5, 5, 5.5, 4]);
  249. swarmchart(IRPks(:,end),IRPks(:,4),5,'red','filled'), hold on
  250. swarmchart(post_bAPPks(:,end),post_bAPPks(:,4),5,'black','filled'), hold off
  251. set(gca, 'XTick', 1:4, 'XTickLabels', {'PTSE' 'PTME' 'SPSE' 'SPME'})
  252. ylabel("\DeltaF/F (A.U.)")
  253. ax = gca; ax.FontSize = 24; ax.TickDir = 'none';
  254. legend('ICS','bAP',"Location", "best",...
  255. "Color",'none','EdgeColor','none');
  256. TickLabels = {'PTSE bAP' 'PTME bAP' 'SPSE bAP' 'SPME bAP'...
  257. 'PTSE ICS' 'PTME ICS' 'SPSE ICS' 'SPME ICS'};
  258. Data = [post_bAPPks(:,4); IRPks(:,4)];
  259. Labels = [post_bAPPks(:,end); IRPks(:,end)+4];
  260. for i = 1:max(Labels)
  261. neurons = Labels==i;
  262. tempstruct(i) = datastatsJake(Data(neurons));
  263. isnormal(i) = jbtest(Data(neurons));
  264. end, dFstats = struct2table(tempstruct); clear tempstruct
  265. dFstats.Labels = TickLabels'; isnormal
  266. [~,~,stats] = anova1(Data, Labels,"off");
  267. c = multcompare(stats,'CriticalValueType','bonferroni','Display','off');
  268. p = orderpvalues(c);
  269. plotheatmap(TickLabels, p);
  270. title('Kruskal-Wallis P-Values')
  271. disp(dFstats)
  272. figure('Theme','light'); set(gcf, 'Units', 'inches', 'Position', [5, 5, 5.5, 4]);
  273. swarmchart(IRPks(:,end),IRPks(:,5),5,'red','filled'), hold on
  274. swarmchart(post_bAPPks(:,end),post_bAPPks(:,5),5,'black','filled'), hold off
  275. set(gca, 'XTick', 1:4, 'XTickLabels', {'PTSE' 'PTME' 'SPSE' 'SPME'})
  276. ylabel("FWHM (Sec)")
  277. legend('ICS','bAP',"Location", "best",...
  278. "Color",'none','EdgeColor','none');
  279. ax = gca; ax.FontSize = 24; ax.TickDir = 'none';
  280. Data = [post_bAPPks(:,5); IRPks(:,5)];
  281. Labels = [post_bAPPks(:,end); IRPks(:,end)+4];
  282. for i = 1:max(Labels)
  283. neurons = Labels==i;
  284. tempstruct(i) = datastatsJake(Data(neurons));
  285. isnormal(i) = jbtest(Data(neurons));
  286. end, FWHMstats = struct2table(tempstruct); clear tempstruct
  287. FWHMstats.Labels = TickLabels'; isnormal
  288. [~,~,stats] = anova1(Data, Labels,"off");
  289. c = multcompare(stats,'CriticalValueType','bonferroni','Display','off');
  290. p = orderpvalues(c);
  291. plotheatmap(TickLabels, p);
  292. disp(FWHMstats)
  293. % Figure 4E
  294. PkCount = horzcat(PhysTemp.PulseTrain.SpinePkStats.SingleRespondingFraction,...
  295. PhysTemp.PulseTrain.SpinePkStats.MultiRespondingFraction,...
  296. PhysTemp.SinglePulse.SpinePkStats.SingleRespondingFraction,...
  297. PhysTemp.SinglePulse.SpinePkStats.MultiRespondingFraction);
  298. PkCount(:,[3 7]) = [];
  299. [j,k] = size(PkCount);
  300. PTPkCount = reshape(PkCount, [j*k 1])*100;
  301. PTLabels = reshape(repmat(1:k,[j 1]), size(PTPkCount));
  302. PTLabels(PTLabels==4) = 1; PTLabels(PTLabels==5) = 4; PTLabels(PTLabels==6) = 5;
  303. Colors = [0.5, 0.5, 0.5; % Gray
  304. 1, 0, 0; % Bright Red
  305. 0.8, 0, 0; % Darker Red
  306. 1, 0.6, 0; % Light Orange
  307. 0.8, 0.4, 0;]; % Darker Orange
  308. figure('Theme','light'); set(gcf, 'Units', 'inches', 'Position', [1, 1, 7, 6]);
  309. boxchart(PTLabels, PTPkCount,'GroupByColor',PTLabels,'ColorGroupLayout',...
  310. 'overlaid', 'BoxEdgeColor','k','MarkerSize',10, 'MarkerStyle',...
  311. '.','MarkerColor','k','BoxFaceAlpha', 1)
  312. %violinplot(PTLabels, PTPkCount,'GroupByColor',PTLabels,'ColorGroupLayout',...
  313. % 'overlaid','FaceAlpha', 1,'EdgeColor','k','DensityScale','count')
  314. colororder(Colors)
  315. %b = gbar(PkCount, Labels)
  316. ylabel("% DS Responding/Neuron"), ylim([0 100]), xlim([0.5 max(PTLabels)+0.5])
  317. set(gca, 'XTick', 1:5, 'XTickLabels', {'Pre Stim' 'PTSE_3_0' 'PTME_3_0' 'SPSE_3_0' 'SPME_3_0'})
  318. ax = gca; ax.FontSize = 24; ax.TickDir = 'none';
  319. [~,~,stats] = kruskalwallis(PTPkCount, PTLabels,'off');
  320. c = multcompare(stats,'Display','off',CriticalValueType='dunn-sidak');
  321. pairs = num2cell(c(:, 1:2),2); mask = c(:,6)<0.05;
  322. sigstar(pairs(mask), c(mask,6)); hold off; % Add significance markers
  323. p = orderpvalues(c);
  324. plotheatmap({'Pre Stim' 'PTSE' 'PTME' 'SPSE' 'SPME'}, p);
  325. title('Kruskal-Wallis P-Values')
  326. for i = 1:max(PTLabels)
  327. neurons = PTLabels==i;
  328. tempstruct(i) = datastatsJake(PTPkCount(neurons));
  329. isnormal(i) = adtest(PTPkCount(neurons));
  330. end, RespFraction = struct2table(tempstruct); clear tempstruct
  331. isnormal
  332. RespFraction.Labels = {'Pre Stim' 'PTSE' 'PTME' 'SPSE' 'SPME'}';
  333. disp(RespFraction)
  334. % Figure 4F Room Temperature Data
  335. PkCount = horzcat(RoomTemp.Subthreshold.SpinePkStats.SingleRespondingFraction,...
  336. RoomTemp.Subthreshold.SpinePkStats.MultiRespondingFraction,...
  337. RoomTemp.Threshold.SpinePkStats.SingleRespondingFraction,...
  338. RoomTemp.Threshold.SpinePkStats.MultiRespondingFraction);
  339. PkCount(:,[3, 5, 7]) = []; % pre exposure indexes for later time points
  340. [j,k] = size(PkCount);
  341. RTPkCount = reshape(PkCount, [j*k 1])*100;
  342. RTLabels = reshape(repmat(1:k,[j 1]), size(RTPkCount));
  343. titles = {'Pre Stim' 'PTSE_S_u_b' 'PTME_S_u_b' 'SPSE_T_h_r_e_s_h' 'SPME_T_h_r_e_s_h'};
  344. Colors = [0.5, 0.5, 0.5; % Gray
  345. 1, 0, 0; % Bright Red
  346. 0.8, 0, 0; % Darker Red
  347. 0.5, 0.8, 1;
  348. .1, .3, 1;];
  349. figure('Theme','light'); set(gcf, 'Units', 'inches', 'Position', [1, 1, 7, 6]);
  350. boxchart(RTLabels, RTPkCount,'GroupByColor',RTLabels,'ColorGroupLayout',...
  351. 'overlaid', 'BoxEdgeColor','k','MarkerSize',10, 'MarkerStyle',...
  352. '.','MarkerColor','k','BoxFaceAlpha', 1)
  353. colororder(Colors)
  354. ylabel("% DS Responding/Neuron"), ylim([0 100])
  355. set(gca, 'XTick', 1:5, 'XTickLabels',titles)
  356. ax = gca; ax.FontSize = 24; ax.TickDir = 'none';
  357. [~,~,stats] = kruskalwallis(RTPkCount, RTLabels,'off');
  358. c = multcompare(stats,'Display','off',CriticalValueType='dunn-sidak');
  359. pairs = num2cell(c(:, 1:2),2); mask = c(:,6)<0.05;
  360. sigstar(pairs(mask), c(mask,6)); hold off; % Add significance markers
  361. p = orderpvalues(c);
  362. plotheatmap(titles, p)
  363. title('Kruskal-Wallis P-Values')
  364. for i = 1:max(PTLabels)
  365. neurons = PTLabels==i;
  366. tempstruct(i) = datastatsJake(RTPkCount(neurons));
  367. isnormal(i) = adtest(RTPkCount(neurons));
  368. end, RTRespFraction = struct2table(tempstruct); clear tempstruct
  369. RTRespFraction.Labels = titles';
  370. disp(RTRespFraction), isnormal
  371. %% Figure 6 Physiological Mechanism
  372. close all
  373. PharmaGroups ={'Control','CaFree','AP5', 'CNQX', 'RR','Gd','TRP'};
  374. CountLabels = []; PkCount = []; spines = Pharma.Multi;
  375. Locs = []; LocLabels = [];
  376. Colors = orderedcolors("gem");
  377. Colors([2, 5], :) = Colors([5, 2], :);
  378. ex = [3 1 1 1 1 1 1 1 1];
  379. for i = 1:length(PharmaGroups)
  380. mask = contains({Pharma.Multi.filename},PharmaGroups{i});
  381. temp = spines(mask);
  382. TempLocs = vertcat(temp.SpinePks);
  383. TempLocs = TempLocs(~TempLocs(:,6),3); % Time of firing that is not an AP
  384. Locs = [Locs; TempLocs(TempLocs>30)];
  385. LocLabels = [LocLabels; ones(numel(TempLocs(TempLocs>30)),1)*i];
  386. PkCount = [PkCount; Pharma.SpinepkStats.MultiRespondingFraction(mask,2)*100];
  387. CountLabels = [CountLabels; ones(sum(mask),1)*i];
  388. figure('Theme','light'); set(gcf, 'Units', 'inches', 'Position', [1, 1, 6, 2]);
  389. histogram(TempLocs,24,'Normalization','countdensity',...
  390. 'FaceColor', Colors(i,:), 'FaceAlpha', 1), %hold on
  391. ylim([0 15]), xlim([0 120]),
  392. xlabel('Time (sec)'), ylabel('Counts/5 Sec')
  393. xline(artifactpts-1)
  394. set(gca, "FontSize", 20)
  395. legend(PharmaGroups{i},"Location", "best",...
  396. "Color",'none','EdgeColor','none');
  397. end
  398. for i = 1:max(CountLabels)
  399. neurons = CountLabels==i;
  400. tempstruct(i) = datastatsJake(PkCount(neurons));
  401. isnormal(i) = adtest(PkCount(neurons));
  402. end, PRespFraction = struct2table(tempstruct); clear tempstruct
  403. PRespFraction.Labels = PharmaGroups';
  404. disp(PRespFraction),
  405. figure('Theme','light');
  406. set(gcf, 'Units', 'inches', 'Position', [1, 1, 7, 6]);
  407. boxchart(CountLabels, PkCount,'GroupByColor',CountLabels,'ColorGroupLayout','overlaid', ...
  408. 'BoxEdgeColor','k','MarkerSize',10, 'MarkerStyle',...
  409. '.','MarkerColor','k','BoxFaceAlpha', 1)
  410. colororder(Colors)
  411. ylabel("% DS Responding/Neuron"), ylim([0 119])
  412. set(gca, 'XTick', 1:i, 'XTickLabels',PharmaGroups)
  413. set(gca, 'YTick', 0:20:100)%, 'XTickLabels',PharmaGroups)
  414. ax = gca; ax.FontSize = 24; ax.TickDir = 'none';
  415. [~,~,stats] = kruskalwallis(PkCount, CountLabels,'off');
  416. c = multcompare(stats,'Display','off',CriticalValueType='bonferroni');
  417. pairs = num2cell(c(:, 1:2),2); mask = c(:,end)<0.05;
  418. sigstar(pairs(mask), c(mask,6)); hold off; % Add significance markers
  419. p = orderpvalues(c);
  420. plotheatmap(PharmaGroups, p);
  421. %% Energy Calculations
  422. [Area,~] = SpotSizeCalc(0.22,1.33,1.33,400,200,0);
  423. PTAmps = [ 28 28 30 28 27 28 28 28 28 27.5 30 30 30 30 30];
  424. z = 0.02; %cm
  425. lambda = [1860 1880]; alpha = [14.19 31.08]; % Hale & Querry 1973 (1/cm)
  426. alpha = linterp(lambda, alpha, 1875);
  427. % Pulse Train
  428. %m = (121.9-88.7)/(37-28); b = 121.9-m*37;
  429. X = [28 37];
  430. Y = [88.7 121.9];
  431. Period = 0.01;
  432. %PT_Energy = mean(linterp(X,Y,PTAmps)*Period*100);
  433. PT_Energy = 3.52*.25*100 % 7/10 CW measurement I=28.7A
  434. PT_H = PT_Energy*exp(-alpha*z)*1e5/Area;
  435. % Single Pulse
  436. SPAmps = [ 25 25 25 25 24 24 24 23.5 25 25 23 24 24 23 23.5];
  437. X = [23 35];
  438. Y = [233.9 256.7];
  439. Period = 0.1; %seconds
  440. SP_Energy = mean(linterp(X,Y,SPAmps)*Period)
  441. SP_Energy = 2.92*8; % 7/10 CW measurement I=24.2A
  442. SP_H = SP_Energy*exp(-alpha*z)*1e5/Area;
  443. rho = .9932; % density of water at 37C
  444. cp = 4.18; % isobaric specific heat kJ/(kg*K) from engineering toolbox
  445. mean((alpha*SP_H*2)./(rho*cp))+30 % Temperature conversions
  446. % Pulse train energy at 37C: 91.28 +/- 4.17 mJ
  447. % Single 8 ms pulse energy at 37C: 27.02 +/- 0.83 mJ
  448. % Pulse train energy at ~18C: 121.9 mJ
  449. %% Functions
  450. function [ExperimentType] = AppendData(ExperimentType)
  451. ExperimentType.SingleAppened.Soma = [];
  452. ExperimentType.SingleAppened.Dendrites = [];
  453. ExperimentType.SingleAppened.Spines = [];
  454. ExperimentType.MultiAppened.Soma = [];
  455. ExperimentType.MultiAppened.Dendrites = [];
  456. ExperimentType.MultiAppened.Spines = [];
  457. temp = 0; DendriteParent = []; SpineNeuronParent = [];SpineParent =[];
  458. for N = 1:length(ExperimentType.Single)
  459. time = 752;
  460. ExperimentType.SingleAppened.Soma = [ExperimentType.SingleAppened.Soma ExperimentType.Single(N).Soma(1:time,1)];
  461. ExperimentType.SingleAppened.Dendrites = [ExperimentType.SingleAppened.Dendrites ExperimentType.Single(N).Dendrites(1:time,:)];
  462. ExperimentType.SingleAppened.Spines = [ExperimentType.SingleAppened.Spines ExperimentType.Single(N).Spines(1:time,:)];
  463. time = 900;
  464. ExperimentType.MultiAppened.Soma = [ExperimentType.MultiAppened.Soma ExperimentType.Multi(N).Soma(1:time,1)];
  465. ExperimentType.MultiAppened.Dendrites = [ExperimentType.MultiAppened.Dendrites ExperimentType.Multi(N).Dendrites(1:time,:)];
  466. ExperimentType.MultiAppened.Spines = [ExperimentType.MultiAppened.Spines ExperimentType.Multi(N).Spines(1:time,:) ];
  467. sz = size(ExperimentType.Single(N).Dendrites,2);
  468. DendriteParent = [DendriteParent; ones(sz,1)*N];
  469. sz = size(ExperimentType.Single(N).SpineParent,2);
  470. SpineNeuronParent = [SpineNeuronParent; ones(sz,1)*N];
  471. SpineParent = [SpineParent ExperimentType.Single(N).SpineParent+temp];
  472. temp = max(SpineParent);
  473. end
  474. NeuronID = [(1:N)'; DendriteParent; SpineNeuronParent];
  475. DendriteID = [nan(N,1); (1:length(DendriteParent))'; SpineParent'];
  476. Structure = categorical([repelem("Soma", N),...
  477. repelem("Dendrite", length(DendriteParent)),...
  478. repelem("Spine", length(SpineParent))])';
  479. ExperimentType.Labels = table(NeuronID, DendriteID, Structure);
  480. end
  481. function [Traces, trough] = RemoveDC(Traces,Frame)
  482. smoothed = smoothdata(Traces,1,"movmean",30);
  483. trough = min(smoothed(Frame-100:Frame,:),[],1);
  484. Traces = (Traces-trough)./trough;
  485. end
  486. function ExpTyp = ExtractPks(ExpTyp,Frames,artifactpts)
  487. for N = 1:length(ExpTyp)
  488. % Soma
  489. Soma = ExpTyp(N).Soma(1:Frames);
  490. Fs = length(Soma)/ExpTyp(N).ndinfo.duration; % sampling Fq
  491. time = (1:length(Soma))/Fs;
  492. frame = round(30*Fs);
  493. Soma = RemoveDC(Soma,frame);
  494. [Somalocs, ~, height, width] = FindDerivativePks(Soma,artifactpts, Fs, 1);
  495. ExpTyp(N).SomaPks = [Somalocs, height, width];
  496. % Spines
  497. Spines = ExpTyp(N).Spines(1:Frames,:);
  498. Spines = RemoveDC(Spines,frame);
  499. [spinelocs, spinelabel, pkheight, FWHM, bAPlabel] ...
  500. = FindDerivativePks(Spines,artifactpts, Fs, 3, Somalocs);
  501. SomaLabel = ones(numel(spinelabel),1)*N;
  502. SpineParent = ExpTyp(N).SpineParent(spinelabel)';
  503. UniqueSpines = unique(spinelabel.*~bAPlabel);
  504. ActiveSpine = ismember(spinelabel, UniqueSpines);
  505. SpinePks = [spinelabel, SpineParent, spinelocs, pkheight, FWHM, bAPlabel, ActiveSpine, SomaLabel];
  506. SpineEventMask = zeros(size(Spines,2),1);
  507. SpineEventMask(UniqueSpines(2:end)) = 1;
  508. ExpTyp(N).SpinePks = SpinePks;
  509. ExpTyp(N).SpineEventMask = SpineEventMask';
  510. ExpTyp(N).NumberSpineEvent = sum(~bAPlabel);% number of independent spine events
  511. end
  512. end
  513. function [SPkS] = SpinePeakStats(ExpTyp)
  514. timethresh = 30; % Seconds
  515. % Single
  516. if ~isempty(ExpTyp.Single)
  517. PksSpine = vertcat(ExpTyp.Single.SpinePks);
  518. ICS = ~logical(PksSpine(:,end-2)); % not bAP events
  519. ActiveSpines = logical(PksSpine(:,end-1)); % Active Spines only
  520. timemask = PksSpine(:,3)>timethresh; % After Stimulation
  521. for N = 1:max(PksSpine(:,end))
  522. NeuronMask = PksSpine(:,end)==N;
  523. TotalSpines = size(ExpTyp.Single(N).Spines,2);
  524. postmask = ICS & ActiveSpines & NeuronMask & timemask;
  525. premask = ICS & ActiveSpines & NeuronMask & ~timemask;
  526. SpikeFreq(N, 1) = numel(PksSpine(premask,1))/30;
  527. SpikeFreq(N, 2) = numel(PksSpine(postmask,1))/70;
  528. RespondingFraction(N, 1) = numel(unique(PksSpine(premask,1)))/TotalSpines;
  529. RespondingFraction(N, 2) = numel(unique(PksSpine(postmask,1)))/TotalSpines;
  530. end
  531. SPkS.SingleSpikeFreq = SpikeFreq;
  532. SPkS.SingleRespondingFraction = RespondingFraction;
  533. clear SpikeFreq RespondingFraction,
  534. % Peaks before the stimulus that are not AP
  535. mask = ICS & ~timemask;
  536. SPkS.Pre_Spine = PksSpine(mask,:);
  537. % Peaks after the stimulus that are not AP
  538. mask = ICS & timemask;
  539. SPkS.Post_Single = PksSpine(mask,:);
  540. SPkS.Single_bAP = PksSpine(~ICS,:);
  541. end
  542. % Multi
  543. if ~isempty(ExpTyp.Multi)
  544. PksSpine = vertcat(ExpTyp.Multi.SpinePks);
  545. ICS = ~logical(PksSpine(:,end-2)); % not bAP events
  546. ActiveSpines = logical(PksSpine(:,end-1)); % Active Spines only
  547. timemask = PksSpine(:,3)>timethresh; % After Stimulation
  548. for N = 1:max(PksSpine(:,end))
  549. NeuronMask = PksSpine(:,end)==N;
  550. TotalSpines = size(ExpTyp.Multi(N).Spines,2);
  551. postmask = ICS & ActiveSpines & NeuronMask & timemask;
  552. premask = ICS & ActiveSpines & NeuronMask & ~timemask;
  553. SpikeFreq(N, 1) = numel(PksSpine(premask,1))/30;
  554. SpikeFreq(N, 2) = numel(PksSpine(postmask,1))/90;
  555. RespondingFraction(N, 1) = numel(unique(PksSpine(premask,1)))/TotalSpines;
  556. RespondingFraction(N, 2) = numel(unique(PksSpine(postmask,1)))/TotalSpines;
  557. end
  558. SPkS.MultiSpikeFreq = SpikeFreq;
  559. SPkS.MultiRespondingFraction = RespondingFraction;
  560. % Peaks after the stimulus that are not AP
  561. mask = ICS & timemask;
  562. SPkS.Post_Multi = PksSpine(mask,:);
  563. SPkS.Multi_bAP = PksSpine(~ICS,:);
  564. end
  565. end

SpineGCaMPAnalysis.m at commit e3c56b3, no license · at the source

Overview

Authors: Jacob Hardenburger1,2, George Grow1,2, Pratheepa Rasiah1,2, Mona Gerges1,2, Joel Bixler3, Chad Oian3, Bryan Millis1,2, Christopher Valdez4, E Duco Jansen1,2,5, Anita Mahadevan-Jansen1,2,5
  1. Vanderbilt University, Vanderbilt Biophotonics Center, Nashville, Tennessee, United States
  2. Vanderbilt University, Department of Biomedical Engineering, Nashville, Tennessee, United States
  3. Air Force Research Laboratory, Bioeffects Division, JBSA Fort Sam Houston, Texas, United States
  4. University of Texas Health San Antonio, San Antonio, Texas, United States
  5. Department of Neurological Surgery, Vanderbilt University Medical Center, Nashville, Tennessee, United States
Journal: Biophotonics discovery, volume 3, issue 3, article 035001
Dates: received 9 February 2026; accepted 6 July 2026; published online 5 August 2026
Type: Research article · Language: English
License: CC BY
Identifiers: DOI 10.1117/1.bios.3.3.035001 · PMID 42719458 · PMCID PMC13557455 · OpenAlex W7172539871
Open access: hybrid, a free copy (OpenAlex)
Status: code verified
Categories: histology / microscopy (modality), cellular / molecular (subfield)
Methods: Statistics, Preprocessing, fMRI & imaging, Single-unit activity, calcium imaging
Keywords: dendritic spines, laser–tissue interactions, calcium signaling, photothermal, infrared neural stimulation
Topic: Laser Applications in Dentistry and Medicine (Radiology, Nuclear Medicine and Imaging, Medicine), according to OpenAlex
Citations: not cited yet (Europe PMC); 66 references in the paper

Abstract

Significance: Infrared neural stimulation (INS) is an optical neuromodulation technique that elicits neural activity through photothermal temperature gradients. Photothermal gradients have been shown to alter neuronal excitability, but the effects on the dendritic spine (DS) structure and function have not been characterized.

Aim: We aim to determine whether INS induces calcium signaling in DS and whether this signaling alters filamentous actin (F-actin).

Approach: We used confocal imaging of cortical neurons expressing a genetically encoded calcium indicator (GCaMP)8f-Syn1 and mCardinal-LifeAct during laser exposure. Fluorescence signals were measured within regions of interest covering the DS. The resulting fluorescence measurements were baseline-normalized, and transient spiking activity in DS was quantified.

Results: Transient thermal gradients induce persistent calcium activity in a fraction of DS, independent of pulse duration but dependent on the absolute temperature and number of laser exposures. There is no relationship between the calcium activity and F-actin. Calcium signaling in DS was not mediated by ionotropic glutamate receptors but depended on extracellular entry.

Conclusions: These results indicate that transient thermal gradients elicit calcium activity in DS, but the induced activity does not alter F-actin, suggesting that transient thermal gradients may be a useful tool for studying calcium dynamics in DS without triggering traditional structural plasticity pathways.

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.

PanPandaPan615/Photothermal-Spine-Activity

License: none: the authors keep all their rights
State: the link answers, verified on 27 September 2026
Evidence: files inventoried
Commit: e3c56b39cc7e8303501d6671dffdd249a8ade5ae, 6 February 2026
Languages: MATLAB (6)
Size: 7 files, 6 scripts
Software Heritage: not archived
Found in: “Code and Data Availability”
Holds: README
Not found: license file, CITATION.cff, environment file, tests, continuous integration, documentation
Availability: 1 check, the latest on 27 September 2026: the link answers
  • 27 September 2026: the link answers
7 files

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

Datasets cited

Code and Data Availability

The measured data supporting the findings of this article are publicly available at 10.6084/m9.figshare.31286167. The raw image files can be made available upon request. The code used for processing is available at https://github.com/PanPandaPan615/Photothermal-Spine-Activity.git.

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

Versions

The history of this record: each version stored by the harvester or made by a correction of its authors or of the maintainers of its code, and what changed in its facts. The texts of the paper (its abstract, its availability statements) are not part of it; versions that changed only those are not listed.

Version 2, 28 September 2026

  • Funding: added Oak Ridge Institute for Science and Education; Air Force Office of Scientific Research: LRIR 22RHCOR012

Version 1, 27 September 2026: the first record

Recorded: type, language, journal, volume, issue, pages, dates, 10 authors, 5 keywords, 65 references.

Cite

This paper

Hardenburger, J., Grow, G., Rasiah, P., Gerges, M., Bixler, J., Oian, C., Millis, B., Valdez, C., Jansen, E. D., & Mahadevan-Jansen, A. (2026). Transient infrared laser exposure modulates calcium activity in cortical dendritic spines. Biophotonics discovery, 3(3), 035001. https://doi.org/10.1117/1.bios.3.3.035001

BibTeX

@article{hardenburger2026transient,
author = {Hardenburger, Jacob and Grow, George and Rasiah, Pratheepa and Gerges, Mona and Bixler, Joel and Oian, Chad and Millis, Bryan and Valdez, Christopher and Jansen, E Duco and Mahadevan-Jansen, Anita},
title = {{Transient infrared laser exposure modulates calcium activity in cortical dendritic spines}},
journal = {Biophotonics discovery},
year = {2026},
month = jul,
volume = {3},
number = {3},
pages = {035001},
publisher = {Society of Photo-Optical Instrumentation Engineers},
issn = {3005-4745},
doi = {10.1117/1.bios.3.3.035001},
url = {https://doi.org/10.1117/1.bios.3.3.035001},
pmid = {42719458},
pmcid = {PMC13557455}
}

RIS

TY - JOUR
AU - Hardenburger, Jacob
AU - Grow, George
AU - Rasiah, Pratheepa
AU - Gerges, Mona
AU - Bixler, Joel
AU - Oian, Chad
AU - Millis, Bryan
AU - Valdez, Christopher
AU - Jansen, E Duco
AU - Mahadevan-Jansen, Anita
TI - Transient infrared laser exposure modulates calcium activity in cortical dendritic spines
T2 - Biophotonics discovery
J2 - Biophotonics Discov
PY - 2026
DA - 2026/07/01
VL - 3
IS - 3
SP - 035001
SN - 3005-4745
PB - Society of Photo-Optical Instrumentation Engineers
DO - 10.1117/1.bios.3.3.035001
UR - https://doi.org/10.1117/1.bios.3.3.035001
LA - en
ER -

CSL-JSON

{
"id": "10.1117/1.bios.3.3.035001",
"type": "article-journal",
"title": "Transient infrared laser exposure modulates calcium activity in cortical dendritic spines",
"container-title": "Biophotonics discovery",
"author": [
{
"family": "Hardenburger",
"given": "Jacob"
},
{
"family": "Grow",
"given": "George"
},
{
"family": "Rasiah",
"given": "Pratheepa"
},
{
"family": "Gerges",
"given": "Mona"
},
{
"family": "Bixler",
"given": "Joel"
},
{
"family": "Oian",
"given": "Chad"
},
{
"family": "Millis",
"given": "Bryan"
},
{
"family": "Valdez",
"given": "Christopher"
},
{
"family": "Jansen",
"given": "E Duco"
},
{
"family": "Mahadevan-Jansen",
"given": "Anita"
}
],
"container-title-short": "Biophotonics Discov",
"volume": "3",
"issue": "3",
"page": "035001",
"DOI": "10.1117/1.bios.3.3.035001",
"PMID": "42719458",
"PMCID": "PMC13557455",
"ISSN": "3005-4745",
"publisher": "Society of Photo-Optical Instrumentation Engineers",
"URL": "https://doi.org/10.1117/1.bios.3.3.035001",
"language": "en",
"issued": {
"date-parts": [
[
2026,
7,
1
]
]
}
}

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.1002/cbf.70231
Neuroglial Response to High-Amplitude, Short-Duration Pressure Transients in Monoculture.
Journal: Cell biochemistry and function
In common: cellular / molecular, 1 reference, author Pratheepa Rasiah
[2] doi:10.1364/boe.603469 [code]
FLIM quantification of temperature-dependent enzyme-NADH binding dynamics.
Journal: Biomedical optics express
In common: 3 references
[3] doi:10.1016/j.bpj.2026.06.005 [code]
Curvature-based machine-learning method for automated segmentation of dendritic spines.
Journal: Biophysical journal
In common: histology / microscopy, 2 references
[4] doi:10.7554/elife.106134 [code]
Identification and classification of ion channels across the tree of life provide functional insights into understudied CALHM channels.
Journal: eLife
In common: cellular / molecular, 2 references
[5] doi:10.1038/s41380-026-03592-6
Pyrazole-derived TRPC3 antagonist ameliorates synaptic dysfunctions and memory deficits in Alzheimer's disease models.
Journal: Molecular psychiatry
In common: cellular / molecular, 2 references
[6] doi:10.1016/j.isci.2026.117088 [code]
Spatial biases in visual feature representation of mouse dorsal lateral geniculate nucleus boutons.
Journal: iScience
In common: Image Processing Toolbox, Statistics and Machine Learning Toolbox, 1 reference
[7] doi:10.7554/elife.109240 [code]
Neural activity profiles reveal overlapping, intermingled subpopulations spanning area borders in mouse sensorimotor cortex.
Journal: eLife
In common: Image Processing Toolbox, Statistics and Machine Learning Toolbox, 1 reference
[8] doi:10.1016/j.isci.2026.115488 [code]
An integrated &lt;i&gt;i&lt;/i&gt; &lt;i&gt;n vitro&lt;/i&gt; platform and biophysical modeling approach for studying synaptic transmission in isolated neuronal pairs.
Journal: iScience
In common: cellular / molecular, 2 references
[9] doi: [code]
Diffusion-relaxation MRI as virtual histology: separable microstructural signatures of AD pathology in ex vivo human brain
Journal: Research square
In common: Image Processing Toolbox, Statistics and Machine Learning Toolbox, histology / microscopy, cellular / molecular
[10] doi:10.7554/elife.109888 [code]
Intravital calcium imaging of meningeal macrophages reveals niche-specific dynamics and aberrant responses to brain hyperexcitability.
Journal: eLife
In common: Image Processing Toolbox, Statistics and Machine Learning Toolbox, histology / microscopy, cellular / molecular

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.