OSCR

Alpha-synuclein overexpression reduces neural activity within a basal ganglia vocal nucleus in a zebra finch model.

Code ↔ Paper

3 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 3 matches
  1. [1] § 3. Results › 3.2. Extracellular identification of neuronal subtypes in anesthetized finches ↔ ZEB_Classify_Neurons.m, lines 1–73 · score 0.91 · low threshold spiking, awake finches, MSN neurons, low firing rates, waveform features, wide waveforms
  2. [2] § 3. Results › 3.2. Extracellular identification of neuronal subtypes in anesthetized finches ↔ ZEB_Classify_Neurons.m, lines 1–73 · score 0.74 · PAL neurons, high firing rates, Waveform features, wide waveforms, awake, tonic
  3. [3] § 3. Results › 3.2. Extracellular identification of neuronal subtypes in anesthetized finches ↔ ZEB_Classify_Neurons.m, lines 416–442 · score 0.52 · clear bimodality, spike width, trough width, Hz, firing rate, classification

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 · 453 lines · 20 KB · no license · 3 matches

  1. function [TBL,CLASS_FEATURES] = ZEB_Classify_Neurons(TBL, INFO) %% Determine if there are separate groupings of neurons based on
  2. % waveform features and firing features.
  3. % Depths to consider: Area X is only between 3100 and 3400.
  4. % Add firing rate and other criteria for MSN and PAL neurons from Goldberg
  5. % and Fee 2010 papers (there are 2 papers- on on the typical Areax and one on PAL)
  6. % So 6 cell types that we should distinguish.
  7. %
  8. % There are some high firing wide waveform (look like MSN but rate is too
  9. % high to be MSN neurnos) so we should apply a rate cirterion.
  10. %
  11. % Goldberg and Fee 2010a(striatal) and 2010b(PAL): 6 cell types total in Area X:
  12. % 4 classic (mammalian) and 2 PAL types and both PAL types fire > 60 Hz.
  13. % NOTE: I think going with the 2010a paper is good as it shows that firing
  14. % rate alone separates the PAL from the striatal. They do use the
  15. % complicated IFR and burst detection but in awake finches. Not sure how
  16. % well this applies. NOTE: 2010a did not classify based on bursting but
  17. % used it for post-hoc interpretaion - also used sparsity of firing but
  18. % mostly to assess relationship to song - not relevant for our study.
  19. %
  20. % NOTE: they only used half width - not peak to trough.
  21. % I should perhaps keep to this.
  22. % Also- many of OUR neurons are much larger than theirs.
  23. %
  24. % MSN (type 1): low firing (<6 Hz or even less), WIDE waveform. High Bursting.
  25. %
  26. % FS (type 2) In Area X they fire up to 20Hz DURING SINGING, but much ower (around 8Hz) during rest. Probably more like this during anesthesia.(Fee 2010a).
  27. % NARROW waveform. Low Bursting. I
  28. % think reasonably we can limit the upper range to 60Hz since that's where
  29. % the PAL start (> 60Hz). Probabbly should lower to 50Hz considering
  30. % anesthesia.
  31. %
  32. % TANS (type 3) have a high firing rate but WIDE waveform.
  33. % Can be distinguished from MSNs (even though they have wide
  34. % waveforms) by their high firing rates. Not bursting.
  35. %
  36. % LTS (type 4) low threshold spiking. 1000Hz???? That's what they say - on
  37. % a burst. The paper focuses on these rare neurons. Bursting
  38. %
  39. % PAL1,2 (type HF-1 (GPe-like HF wiht ~300ms pauses), HF-2 (fast tonic)
  40. % from GF2010b second paper). NOTE: this paper does all sorts of fancy PSD and peak rate response analysis to separate the two. Enter at your own risk- all was in waking birds.
  41. % some singing some not.
  42. %
  43. % both subgroups fire >60Hz.
  44. % BUT classification in the paper was done through peak IFR - not mean
  45. % IFR- I don't cluster based on this - but could do it.
  46. % The GF2010 paper did not use waveform to classify cells.
  47. % GF did use IFR smoothed and looked at the peak in this IFR as another
  48. % distinguishing feature to separate HF1 and HF2. HF1 more bursty than HF2.
  49. % in primates - PAL https://pmc.ncbi.nlm.nih.gov/articles/PMC2917366/ have
  50. % 2 classes as well - a high-frequency but that
  51. %
  52. % This is anesthesia however, but since GF did not use waveform, I do not
  53. % see how we can distinguish these cells from others. I can look at the IFR
  54. % and that may be more informative.
  55. %
  56. % UPSHOT: MSNs are relatively easy to ID given low rate and wide waveform.
  57. % PALs are not so clear as only 5 cells fire > 60Hz.
  58. %
  59. % Experimental questions: a-syn, SNCA is the core protein that misfolds and
  60. % forms Lewy Bodies and may drive dopamine cell loss in PD. Zebra Finches
  61. % with human a-syn are predicted to have neuronal alterations homologous to
  62. % predictions in PD. What are those predictions? Interactions between PAL
  63. % and MSN neurons (they should be opposite in a healthy bird).
  64. %
  65. % Look at....
  66. % LtBlue 121, Yellow 160, Red 967, Lavender 162 (sham/non-surgical birds)
  67. % Yellow 160-10/18/22, Red 967-10/13/22, Lavender 162-10/4/22
  68. % TODO: Incorporate firing rate to correct for strange clusters.
  69. % What are the firing rates that we should limit to?
  70. % MSN rate
  71. % TODO: Look at other measures of bursting.
  72. %
  73. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  74. % Cowen 2025
  75. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  76. GP = ZEB_Globals;
  77. PLOT_IT = false;
  78. [clustered_data_dir] = fileparts(which('ZEB_Globals.m'));
  79. %cluster_method = '4 Group'; fig_size = [144 290 1186 343];
  80. % cluster_method = 'Optimal';
  81. % cluster_method = 'Rate_and_width';
  82. cluster_method = 'Rate_and_width_and_PAL';
  83. MSN_max_firing_rate_Hz = 6; % From Fee 2010a - set a cutoff at 10Hz. 6Hz was my original cutoff. THAT SAID, the log frate seems to cutoff at 3Hz.
  84. % MSN_max_firing_rate_Hz = 3; % From Fee 2010a - set a cutoff at 10Hz. 6Hz was my original cutoff. THAT SAID, the log frate seems to cutoff at 3Hz.
  85. PAL_min_firing_rate_Hz = 50; % This is in the literature, but in our data hardly ANY fired at this rate.
  86. % Fast_firing_min_rate_Hz = 20;
  87. Fast_firing_min_rate_Hz = 8; % Maybe +2 and not +4 since 2010aFee indicates that at rest these rates are low.
  88. % peak_trough_thresh_for_wide_ms = 0.35; % nnot using this now as Fee did not use this.
  89. half_width_thresh_for_wide_ms = 0.24; % I had used 0.25. Where is this from? Fee2010a looks like a MUCH lowerr number - like .06!!!
  90. half_width_thresh_for_narrow_ms = 0.22; % I had used 0.25. Where is this from? Fee2010a looks like a MUCH lowerr number - like .06!!!
  91. n_min = 4; % the minimum number of neurons in a category to be considered.
  92. set(0,'DefaultTextInterpreter','none')
  93. clrs = lines(400);
  94. % Store the features used to classify neurons.
  95. CLASS_FEATURES.MSN_max_firing_rate_Hz = MSN_max_firing_rate_Hz;
  96. CLASS_FEATURES.PAL_min_firing_rate_Hz = PAL_min_firing_rate_Hz;
  97. CLASS_FEATURES.Fast_firing_min_rate_Hz = Fast_firing_min_rate_Hz;
  98. CLASS_FEATURES.half_width_thresh_for_wide_ms = half_width_thresh_for_wide_ms;
  99. CLASS_FEATURES.half_width_thresh_for_narrow_ms = half_width_thresh_for_narrow_ms;
  100. CLASS_FEATURES.cluster_method = cluster_method;
  101. % RECUSTER OR LOAD CURRENT CLUSTER?
  102. close all
  103. % 1/median(diff(INFO.WV_x_ms)/1000)
  104. TBL.ACn = TBL.AC - mean(TBL.AC(:,end-20:end),2);
  105. WV_X_IX = INFO.WV_x_ms > -.4 & INFO.WV_x_ms < 1;
  106. WV_X_KM_IX = INFO.WV_x_ms > -.2 & INFO.WV_x_ms < .6;
  107. WVup_X_IX = INFO.WV_x_ms_up > -.4 & INFO.WV_x_ms_up < 1;
  108. AC_X_IX = INFO.AC_x_ms < 50;
  109. % plot(TBL.WaveNorm(:,WV_X_KM_IX)')
  110. [pc,sc] = pca(TBL.WaveNorm(:,WV_X_KM_IX));
  111. TBL.PC1 = sc(:,1);
  112. TBL.PC2 = sc(:,2);
  113. TBL.PC3 = sc(:,3);
  114. TBL.PC4 = sc(:,4);
  115. F = Z_scores([TBL.WaveNorm(:,WV_X_KM_IX) TBL.Half_width_ms TBL.Peak_to_trough_ms]); % My favorite.
  116. % F = Z_scores([TBL.Wave(:,WV_X_KM_IX) TBL.Half_width_ms TBL.Peak_to_trough_ms sc(:,1:3)]); % My favorite.
  117. % F = Z_scores([TBL.Wave(:,WV_X_KM_IX) TBL.Half_width_ms TBL.Peak_to_trough_ms]); %
  118. % F = Z_scores([TBL.Half_width_ms TBL.Peak_to_trough_ms]); %
  119. % F = [TBL.Wave(:,WV_X_KM_IX) TBL.Half_width_ms TBL.Peak_to_trough_ms sc(:,1:3) TBL.AC(:,AC_X_IX)];
  120. % F = [TBL.WaveRaw(:,WV_X_KM_IX) TBL.Peak_to_trough_ms]; % NOPE- think you need to norm WV
  121. % F = [TBL.Wave(:,WV_X_KM_IX) TBL.AC(:,AC_X_IX) TBL.LV TBL.frate];
  122. % F = [TBL.Wave(:,WV_X_KM_IX) TBL.frate];
  123. % [eva, C] = kmeans_optimal_k(F,9);
  124. % IIN THE FUTURE: I would want to further divide the wide waveform up
  125. % into subforms.
  126. [pc,sc] = pca(Z_scores([F TBL.frate]));
  127. TBL.PC1f = sc(:,1);
  128. TBL.PC2f = sc(:,2);
  129. TBL.PC3f = sc(:,3);
  130. TBL.PC4f = sc(:,4);
  131. rng(42) % keep at 42 for now.
  132. C = kmeans(F,2); % do an initially sorting on waveform. Very random.
  133. [cluster_info,C_optimal_clusters] = kmeans_optimal_k(F,6); % do an initially sorting on waveform.
  134. % now find the ones with the narrow waveform (presum IN, HF-1, HF-2) and
  135. % cluster in to 3 groups.
  136. TBL.Neuron_type_NarWide_cat = categorical(NaN(size(C)));
  137. if 0
  138. figure
  139. subplot(1,2,1)
  140. tsne_plot(TBL.WaveNorm(:,WV_X_KM_IX))
  141. subplot(1,2,2)
  142. tsne_plot(F)
  143. end
  144. if 0
  145. % old way
  146. if mean(TBL.Peak_to_trough_ms(C == 1)) > mean(TBL.Peak_to_trough_ms(C == 2))
  147. TBL.Neuron_type_NarWide_cat(C == 1) = 'Wide';
  148. CIX = C==2;
  149. else
  150. TBL.Neuron_type_NarWide_cat(C == 2) = 'Wide';
  151. CIX = C==1;
  152. end
  153. end
  154. % WIX = TBL.Peak_to_trough_ms > peak_trough_thresh_for_wide_ms | TBL.Half_width_ms > half_width_thresh_for_wide_ms; % this breaks it.
  155. WIX = TBL.Half_width_ms > half_width_thresh_for_wide_ms;
  156. NIX = ~WIX & TBL.Half_width_ms < half_width_thresh_for_narrow_ms;
  157. sum(WIX)
  158. sum(NIX)
  159. TBL.Neuron_type_NarWide_cat(1:end) = 'Uncategorized';
  160. TBL.Neuron_type_NarWide_cat(WIX) = 'Wide';
  161. TBL.Neuron_type_NarWide_cat(NIX) = 'Narrow';
  162. TBL.Neuron_type_final_cat = categorical(NaN(size(TBL.Neuron_type_NarWide_cat)));
  163. TBL.Neuron_type_final_cat(1:end) = 'Uncategorized';
  164. if PLOT_IT
  165. CL = C;
  166. CL = C_optimal_clusters;
  167. % CL = TBL.Neuron_type_NarWide_cat;
  168. figure;hist(CL)
  169. u = unique(CL);
  170. clrs = lines(20);
  171. figure
  172. for ii = 1:length(u)
  173. CIX = CL == u(ii);
  174. plot(TBL.WaveNorm(CIX,WV_X_KM_IX)','Color',clrs(ii,:))
  175. hold on
  176. end
  177. figure
  178. subplot(2,2,1)
  179. hist_groups(TBL.Peak_to_trough_ms,CL);xlabel('peak trought width')
  180. subplot(2,2,2)
  181. hist_groups(TBL.Half_width_ms,CL);xlabel('half width')
  182. subplot(2,2,3)
  183. histogram(TBL.Peak_to_trough_ms,50);xlabel('peak trought width')
  184. subplot(2,2,4)
  185. histogram(TBL.Half_width_ms,50);xlabel('half width')
  186. end
  187. switch cluster_method
  188. case '4 Group'
  189. % Further divide the WIDE into 2 groups.
  190. WIX = TBL.Neuron_type_NarWide_cat == 'Wide';
  191. F2 = Z_scores([TBL.WaveNorm(WIX,WV_X_KM_IX) TBL.Wave_max(WIX) sc(WIX,1:4)]);
  192. min_clu = 0;
  193. while min_clu < 20
  194. C = kmeans(F2,2);
  195. c = histcounts(C);
  196. min_clu = min(c);
  197. disp('too few')
  198. end
  199. wix = find(WIX);
  200. WIX1 = false(size(WIX));
  201. WIX1(wix(C==1)) = true;
  202. WIX2 = false(size(WIX));
  203. WIX2(wix(C==2)) = true;
  204. if mean(TBL.Peak_to_trough_ms(WIX1)) > mean(TBL.Peak_to_trough_ms(WIX2))
  205. TBL.Neuron_type_final_cat(WIX1) = 'Wide1';
  206. TBL.Neuron_type_final_cat(WIX2) = 'Wide2';
  207. else
  208. TBL.Neuron_type_final_cat(WIX1) = 'Wide2';
  209. TBL.Neuron_type_final_cat(WIX2) = 'Wide1';
  210. end
  211. % % F2 = Z_scores([ TBL.LV(CIX) TBL.frate(CIX) TBL.Half_width_ms TBL.Peak_to_trough_ms sc(CIX,1:3)]); % My favorite.
  212. NARIX = TBL.Neuron_type_NarWide_cat == 'Narrow';
  213. F2 = Z_scores([ TBL.LV(NARIX) TBL.frate(NARIX) TBL.Half_width_ms(NARIX) TBL.Peak_to_trough_ms(NARIX) sc(NARIX,1:3)]); % My favorite.
  214. min_clu = 0;
  215. while min_clu < 20
  216. C = kmeans(F2,2);
  217. c = histcounts(C);
  218. min_clu = min(c);
  219. disp('too few')
  220. end
  221. C = categorical(C);
  222. C(C=='1') = 'Nar1';
  223. C(C=='2') = 'Nar2';
  224. TBL.Neuron_type_final_cat(NARIX) = categorical(C);
  225. TBL.Neuron_type_final_cat = removecats(TBL.Neuron_type_final_cat);
  226. TBL.Neuron_type_final_cat = reordercats(TBL.Neuron_type_final_cat,{'Wide1' 'Wide2' 'Nar1' 'Nar2'});
  227. case 'Rate_and_width'
  228. SWIX = TBL.Neuron_type_NarWide_cat == 'Wide' & TBL.frate <= MSN_max_firing_rate_Hz;
  229. TBL.Neuron_type_final_cat(SWIX) = 'WideLowRate';
  230. SWIX = TBL.Neuron_type_NarWide_cat == 'Wide' & TBL.frate >= Fast_firing_min_rate_Hz;
  231. TBL.Neuron_type_final_cat(SWIX) = 'WideFastRate';
  232. SWIX = TBL.Neuron_type_NarWide_cat == 'Narrow' & TBL.frate >= Fast_firing_min_rate_Hz;
  233. TBL.Neuron_type_final_cat(SWIX) = 'NarrowFastRate';
  234. SWIX = TBL.Neuron_type_NarWide_cat == 'Narrow' & TBL.frate <= MSN_max_firing_rate_Hz;
  235. TBL.Neuron_type_final_cat(SWIX) = 'NarrowLowRate';
  236. % helps to ensure the MSNs are plotted OVER the others.
  237. TBL.Neuron_type_final_cat = reordercats(TBL.Neuron_type_final_cat, {'Uncategorized','WideLowRate', 'WideFastRate', 'NarrowLowRate', 'NarrowFastRate'});
  238. % TBL.Neuron_type_final_cat = reordercats(TBL.Neuron_type_final_cat, {'Uncategorized','NarrowLowRate', 'NarrowFastRate', 'WideFastRate', 'WideLowRate', 'VeryFastRate'});
  239. figure
  240. gscatter(TBL.Half_width_ms, TBL.Peak_to_trough_ms, TBL.Neuron_type_final_cat);
  241. xlabel('Half_width_ms');ylabel('ms pt width')
  242. axis tight
  243. pubify_figure_axis
  244. figure;
  245. gscatter(log10(TBL.frate), TBL.Peak_to_trough_ms, TBL.Neuron_type_final_cat);
  246. xlabel('log10 Hz');ylabel('ms pt width')
  247. axis tight
  248. pubify_figure_axis
  249. % plot_vert_line_at_zero(log10(MSN_max_firing_rate_Hz))
  250. % plot_vert_line_at_zero(log10(Fast_firing_min_rate_Hz))
  251. if 0
  252. figure
  253. clrs = lines(5);
  254. IX = TBL.Neuron_type_final_cat == 'WideFastRate';
  255. plot(TBL.frate(IX), TBL.Peak_to_trough_ms(IX), 'ko','MarkerFaceColor',clrs(1,:))
  256. hold on
  257. IX = TBL.Neuron_type_final_cat == 'NarrowFastRate';
  258. plot(TBL.frate(IX), TBL.Peak_to_trough_ms(IX), 'ko','MarkerFaceColor',clrs(2,:))
  259. IX = TBL.Neuron_type_final_cat == 'NarrowLowRate';
  260. plot(TBL.frate(IX), TBL.Peak_to_trough_ms(IX), 'ko','MarkerFaceColor',clrs(3,:))
  261. IX = TBL.Neuron_type_final_cat == 'WideLowRate';
  262. plot(TBL.frate(IX), TBL.Peak_to_trough_ms(IX), 'ko','MarkerFaceColor',clrs(4,:))
  263. xlabel('Hz');ylabel('ms pt width')
  264. end
  265. case 'Rate_and_width_and_PAL'
  266. SWIX = TBL.Neuron_type_NarWide_cat == 'Wide' & TBL.frate <= MSN_max_firing_rate_Hz;
  267. TBL.Neuron_type_final_cat(SWIX) = 'WideLowRate';
  268. SWIX = TBL.Neuron_type_NarWide_cat == 'Wide' & TBL.frate >= Fast_firing_min_rate_Hz;
  269. TBL.Neuron_type_final_cat(SWIX) = 'WideFastRate';
  270. SWIX = TBL.Neuron_type_NarWide_cat == 'Narrow' & TBL.frate >= Fast_firing_min_rate_Hz;
  271. TBL.Neuron_type_final_cat(SWIX) = 'NarrowFastRate';
  272. SWIX = TBL.Neuron_type_NarWide_cat == 'Narrow' & TBL.frate <= MSN_max_firing_rate_Hz;
  273. TBL.Neuron_type_final_cat(SWIX) = 'NarrowLowRate';
  274. sum(TBL.Neuron_type_final_cat == 'Uncategorized')
  275. % NOW for the putative PAL cells. I think 50 Hz is reasonable.
  276. % Nothing conclusive has been published for waveform shape, but
  277. % there are putatively 2 types Fee paper).
  278. % NOTE: Only one of these neurons had a LV of >1 and so I got rid
  279. % of the tonic/phasic category.
  280. if 0
  281. SWIX = TBL.frate >= PAL_min_firing_rate_Hz & TBL.LV < 1;
  282. if sum(SWIX) > n_min
  283. TBL.Neuron_type_final_cat(SWIX) = 'VeryFastRateTonic';
  284. end
  285. SWIX = TBL.frate >= PAL_min_firing_rate_Hz & TBL.LV > 1;
  286. disp(['Found ' num2str(sum(SWIX)) ' phasic VHR neurons'])
  287. if sum(SWIX) > n_min
  288. TBL.Neuron_type_final_cat(SWIX) = 'VeryFastRatePhasic';
  289. end
  290. try
  291. TBL.Neuron_type_final_cat = reordercats(TBL.Neuron_type_final_cat, {'Uncategorized', 'WideLowRate','WideFastRate', 'NarrowLowRate', 'NarrowFastRate', 'VeryFastRateTonic', 'VeryFastRatePhasic'});
  292. catch
  293. TBL.Neuron_type_final_cat = reordercats(TBL.Neuron_type_final_cat, {'Uncategorized', 'WideLowRate','WideFastRate', 'NarrowLowRate', 'NarrowFastRate', 'VeryFastRateTonic'});
  294. end
  295. end
  296. SWIX = TBL.frate >= PAL_min_firing_rate_Hz;
  297. TBL.Neuron_type_final_cat(SWIX) = 'VeryFastRate';
  298. TBL.Neuron_type_final_cat = reordercats(TBL.Neuron_type_final_cat, {'Uncategorized', 'WideLowRate','WideFastRate', 'NarrowLowRate', 'NarrowFastRate', 'VeryFastRate'});
  299. figure
  300. subplot(1,3,1)
  301. gscatter(TBL.Half_width_ms, TBL.Peak_to_trough_ms, TBL.Neuron_type_final_cat);
  302. xlabel('Half_width_ms');ylabel('ms pt width')
  303. axis tight
  304. pubify_figure_axis
  305. subplot(1,3,2)
  306. gscatter(TBL.LV, TBL.frate, TBL.Neuron_type_final_cat);
  307. legend off
  308. xlabel('LV');ylabel('frateHz')
  309. axis tight
  310. pubify_figure_axis
  311. % plot_vert_line_at_zero(log10(MSN_max_firing_rate_Hz))
  312. % plot_vert_line_at_zero(log10(Fast_firing_min_rate_Hz))
  313. subplot(1,3,3)
  314. gscatter(log10(TBL.frate), TBL.Peak_to_trough_ms, TBL.Neuron_type_final_cat);
  315. xlabel('log10 Hz');ylabel('ms pt width')
  316. axis tight
  317. pubify_figure_axis
  318. legend off
  319. case 'Optimal'
  320. TBL.Neuron_type_final_cat = categorical(C_optimal_clusters);
  321. end
  322. if 0
  323. %% Rebuttal Figure 1: Firing rate.
  324. % Show this for the pre and post asyn neurons?
  325. GIX = TBL.Group == 'GFP' | TBL.Group == 'ASYN';
  326. % Non-log
  327. figure
  328. subplot(2,1,1)
  329. gscatter(TBL.frate(GIX), TBL.Peak_to_trough_ms(GIX), TBL.Group(GIX), [], 'o^+v');
  330. pubify_figure_axis
  331. if 1
  332. plot_vert_line_at_zero(MSN_max_firing_rate_Hz)
  333. plot_vert_line_at_zero(Fast_firing_min_rate_Hz)
  334. end
  335. set(gca,'xlim',[0 100])
  336. ylabel('Peak to trough width (ms)')
  337. xlabel('Mean firing rate (Hz)')
  338. subplot(2,1,2)
  339. binsize = 2;
  340. edges = 0:binsize:120;
  341. histogram(TBL.frate(GIX),edges,DisplayStyle = 'stairs', LineWidth = 3, EdgeColor = [0 0 0]);
  342. hold on
  343. if 1
  344. plot_vert_line_at_zero(MSN_max_firing_rate_Hz)
  345. plot_vert_line_at_zero(Fast_firing_min_rate_Hz)
  346. end
  347. pubify_figure_axis
  348. set(gca,'xlim',[0 100])
  349. xlabel('Mean firing rate (Hz)')
  350. ylabel('Count')
  351. set(gcf,'Position',[1 1 651 515])
  352. % For reference - also did this in log to ensure that shows nothign...
  353. % Log%%%%%%%%%%%%
  354. nbins = 40;
  355. figure
  356. subplot(2,1,1)
  357. gscatter(log10(TBL.frate(GIX)), TBL.Peak_to_trough_ms(GIX), TBL.Group(GIX), [], 'o^+v', [], [], 1);
  358. pubify_figure_axis
  359. set(gca,'xlim',[0 log10(100)])
  360. ylabel('Peak to trough width (ms)')
  361. if 1
  362. plot_vert_line_at_zero(log10(MSN_max_firing_rate_Hz))
  363. plot_vert_line_at_zero(log10(Fast_firing_min_rate_Hz))
  364. end
  365. % xlabel('Log10(firing rate)')
  366. subplot(2,1,2)
  367. histogram(log10(TBL.frate(GIX)),nbins,DisplayStyle = 'stairs', LineWidth = 3, EdgeColor = [0 0 0]);
  368. pubify_figure_axis
  369. set(gca,'xlim',[0 log10(100)])
  370. xlabel('Log10(firing rate)')
  371. ylabel('Count')
  372. if 1
  373. plot_vert_line_at_zero(log10(MSN_max_firing_rate_Hz))
  374. plot_vert_line_at_zero(log10(Fast_firing_min_rate_Hz))
  375. end
  376. title(sprintf('10^.45 = %1.2f', 10^.45))
  377. set(gcf,'Position',[1 1 651 515])
  378. %% Rebuttal 1.1 Show that my categories have a 'hump' in the separation. They will not.
  379. % part 2 Can the two Wide-Spike Width type [SC2.1]neurons be separated by firing rate with clear bimodal distributions, or is the data more continuous?
  380. IXwlr = TBL.Neuron_type_final_cat == 'WideLowRate'
  381. IXwhr = TBL.Neuron_type_final_cat == 'WideLowRate'
  382. nbins = 40;
  383. figure
  384. subplot(2,1,1)
  385. gscatter(log10(TBL.frate(GIX)), TBL.Peak_to_trough_ms(GIX), TBL.Neuron_type_final_cat(GIX), [], 'o^+v', [], [], 1);
  386. pubify_figure_axis
  387. set(gca,'xlim',[0 log10(100)])
  388. ylabel('Peak to trough width (ms)')
  389. % xlabel('Log10(firing rate)')
  390. subplot(2,1,2)
  391. histogram(log10(TBL.frate(GIX)),nbins,DisplayStyle = 'stairs', LineWidth = 3, EdgeColor = [0 0 0]);
  392. pubify_figure_axis
  393. set(gca,'xlim',[0 log10(100)])
  394. xlabel('Log10(firing rate)')
  395. ylabel('Count')
  396. title(sprintf('10^.45 = %1.2f', 10^.45))
  397. set(gcf,'Position',[1 1 651 515])
  398. if 1
  399. plot_vert_line_at_zero(log10(MSN_max_firing_rate_Hz))
  400. plot_vert_line_at_zero(log10(Fast_firing_min_rate_Hz))
  401. end
  402. end
  403. %%
  404. TBL.Neuron_type_NarWide_cat = removecats(TBL.Neuron_type_NarWide_cat);
  405. TBL.Neuron_type_final_cat = removecats(TBL.Neuron_type_final_cat);
  406. % Neuron_type_IDs = unique(TBL.Neuron_type_NarWide_cat);
  407. % Neuron_type_IDs2 = unique(TBL.Neuron_type_final_cat);
  408. % SAVE THIS STATE AS EVERY TIME YOU RUN THIS YOU WILL GET A NEW RESULT!!!!
  409. % save(fullfile(clustered_data_dir,'Q1_clustered_data'))

ZEB_Classify_Neurons.m, no license · at the source

Overview

Authors: Brian R Dominguez1, Gabriel Holguin2, Madeleine S Daly1, Reed T Bjork1, Stephen L Cowen2,3, Julie E Miller1,4
ORCID iDs: Julie E Miller
  1. Department of Neuroscience, University of Arizona, Tucson, Arizona, United States of America
  2. Department of Psychology, University of Arizona, Tucson, Arizona, United States of America
  3. Evelyn F. McKnight Brain Institute, University of Arizona, Tucson, Arizona, United States of America
  4. Departments of Speech, Language and Hearing Sciences, Neurology, Graduate Interdisciplinary Program in Neuroscience, and the BIO5 Institute, Tucson, Arizona, United States of America
Institutions: University of Arizona (United States); BIO5 Institute
Journal: PloS one, volume 21, issue 7, article e0333158
Dates: received 26 September 2025; accepted 22 June 2026; published online 16 July 2026
Type: Research article · Language: English
License: CC BY
Identifiers: DOI 10.1371/journal.pone.0333158 · PMID 42461894 · PMCID PMC13374917 · OpenAlex W4414258321
Open access: gold, a free copy (OpenAlex)
Status: code verified
Categories: human (organism), other (organism), Parkinson's (population), cellular / molecular (subfield)
Methods: Statistics, Smoothing, state filtering, decompositions, Evoked potentials, Single-unit activity, calcium imaging, Physiology & signal measures
MeSH: alpha-Synuclein*, Basal Ganglia*, Finches*, Neurons*, Vocalization, Animal*, Animals, Dependovirus, Humans, Male (* major topic)
Topic: Animal Vocal Communication and Behavior (Developmental Biology, Biochemistry, Genetics and Molecular Biology), according to OpenAlex
Funding: NINDS NIH HHS (R21 NS123512)
Citations: not cited yet (Europe PMC); 111 references in the paper

Abstract

Changes in vocal pitch, loudness, and timing are prevalent in Parkinson’s Disease (PD) and a target for early intervention and treatment. The neural mechanisms underlying these impairments are not understood, motivating work in animal models. The adult male zebra finch songbird is uniquely poised for these studies given vocally-dedicated brain nuclei and a quantifiable output (birdsong). Our prior publication revealed that injection of an adeno-associated virus (AAV5) expressing the human (h) alpha-synuclein (hSNCA, a-syn) gene into basal ganglia vocal nucleus Area X results in elevated insoluble a-syn protein and parkinsonian-like changes including softer, shorter, and reduced vocalizations compared to controls. Here, we test the hypothesis that AAV-hSNCA overexpression reduces the firing rate of specific neuronal sub-types in Area X using in vivo recordings in anesthetized finches. Five classes of neurons were differentiated in AAV-treated finches based on waveform width (narrow vs. wide) and firing rates (low vs. high). We found that neurons in the AAV-hSNCA group with wide waveforms exhibited reduced firing rates and enhanced post-peak rebound compared to AAV controls. No differences in firing rate nor waveform shape were detected for the narrow waveform neurons. Our findings provide the first characterization of early a-syn-driven neural activity changes in vocal control neurocircuitry.

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

supp:PMC13374917/pone.0333158.s010.zip

License: none: the authors keep all their rights
State: the link answers, verified on 27 September 2026
Evidence: files inventoried
Languages: MATLAB (7)
Size: 8 files, 7 scripts
Software Heritage: not checked
Found in: the supplementary material
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 (HTTP 200)
  • 27 September 2026: the link answers (HTTP 200)
8 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;
  • 7 scripts, each with its path and the digest of its content;
  • 3 matches between paragraphs of the paper and lines of the code (method lexical-v1);
  • neither the text of the paper nor the code itself.

Its JSON (tracing-map.json) is deposited on Zenodo with its DOI once the map is validated.

Data

No dataset and no data link were found in the paper.

Data Availability

The raw electrophysiological data, birdsong data, and microscopy images (Fig 2) used in this study will be available at the time of publication through the University of Arizona figshare ReData Repository, under a CC-BY license. https://doi.org/10.25422/azu.data.27868266 All other data including the Matlab code used for the electrophysiological analyses can be found in the Supporting Information.

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

Recorded: type, language, journal, volume, issue, pages, dates, 6 authors, 9 MeSH terms, 1 funder, 109 references, 3 RRIDs.

Cite

This paper

Dominguez, B. R., Holguin, G., Daly, M. S., Bjork, R. T., Cowen, S. L., & Miller, J. E. (2026). Alpha-synuclein overexpression reduces neural activity within a basal ganglia vocal nucleus in a zebra finch model. PloS one, 21(7), e0333158. https://doi.org/10.1371/journal.pone.0333158

BibTeX

@article{dominguez2026alpha,
author = {Dominguez, Brian R and Holguin, Gabriel and Daly, Madeleine S and Bjork, Reed T and Cowen, Stephen L and Miller, Julie E},
title = {{Alpha-synuclein overexpression reduces neural activity within a basal ganglia vocal nucleus in a zebra finch model}},
journal = {PloS one},
year = {2026},
month = jul,
volume = {21},
number = {7},
pages = {e0333158},
publisher = {PLOS},
issn = {1932-6203},
doi = {10.1371/journal.pone.0333158},
url = {https://doi.org/10.1371/journal.pone.0333158},
pmid = {42461894},
pmcid = {PMC13374917}
}

RIS

TY - JOUR
AU - Dominguez, Brian R
AU - Holguin, Gabriel
AU - Daly, Madeleine S
AU - Bjork, Reed T
AU - Cowen, Stephen L
AU - Miller, Julie E
TI - Alpha-synuclein overexpression reduces neural activity within a basal ganglia vocal nucleus in a zebra finch model
T2 - PloS one
J2 - PLoS One
PY - 2026
DA - 2026/07/16
VL - 21
IS - 7
SP - e0333158
SN - 1932-6203
PB - PLOS
DO - 10.1371/journal.pone.0333158
UR - https://doi.org/10.1371/journal.pone.0333158
LA - en
ER -

CSL-JSON

{
"id": "10.1371/journal.pone.0333158",
"type": "article-journal",
"title": "Alpha-synuclein overexpression reduces neural activity within a basal ganglia vocal nucleus in a zebra finch model",
"container-title": "PloS one",
"author": [
{
"family": "Dominguez",
"given": "Brian R"
},
{
"family": "Holguin",
"given": "Gabriel"
},
{
"family": "Daly",
"given": "Madeleine S"
},
{
"family": "Bjork",
"given": "Reed T"
},
{
"family": "Cowen",
"given": "Stephen L"
},
{
"family": "Miller",
"given": "Julie E"
}
],
"container-title-short": "PLoS One",
"volume": "21",
"issue": "7",
"page": "e0333158",
"DOI": "10.1371/journal.pone.0333158",
"PMID": "42461894",
"PMCID": "PMC13374917",
"ISSN": "1932-6203",
"publisher": "PLOS",
"URL": "https://doi.org/10.1371/journal.pone.0333158",
"language": "en",
"issued": {
"date-parts": [
[
2026,
7,
16
]
]
}
}

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.1523/eneuro.0199-25.2026
Zebra Finch Introductory Notes Become Song-Like But Have Different Timing and Acoustic Correlations with the Song That Follows.
Journal: eNeuro
In common: other, 3 references
[2] doi:10.3389/fncel.2026.1901103
Loss of epigenetic adaptation to a high-fat diet in alpha-synuclein transgenic mice.
Journal: Frontiers in cellular neuroscience
In common: Parkinson's, cellular / molecular, 3 references
[3] doi:10.7554/elife.103046 [code]
Dichotomy between extracellular signatures of active dendritic chemical synapses and gap junctions.
Journal: eLife
In common: Signal Processing Toolbox, Statistics and Machine Learning Toolbox, cellular / molecular, 2 references
[4] doi:10.1038/s41531-026-01420-w
Locus coeruleus α-synuclein overexpression induces prodromal Parkinsonian features in mice.
Journal: NPJ Parkinson's disease
In common: Parkinson's, cellular / molecular, 2 references
[5] doi:10.1523/jneurosci.1594-25.2026 [code]
KIASORT: Knowledge-Integrated Automated Spike Sorting for Geometry-Free Neuron Tracking.
Journal: The Journal of neuroscience : the official journal of the Society for Neuroscience
In common: 3 references
[6] doi:10.1038/s41467-026-74961-6 [code]
Spatial multi-omics identifies early synaptic pruning and context-specific dopaminergic vulnerability in synucleinopathies.
Journal: Nature communications
In common: Parkinson's, cellular / molecular, 2 references
[7] doi:10.1016/j.nbd.2026.107379 [code]
DYRK1A and Parkinson's disease, facts and hypotheses.
Journal: Neurobiology of disease
In common: Parkinson's, cellular / molecular, 2 references
[8] doi:10.1523/eneuro.0023-26.2026 [code]
Real-Time Segmentation and Classification of Birdsong Syllables for Learning Experiments.
Journal: eNeuro
In common: other, 2 references
[9] doi:10.1038/s41467-026-73553-8 [code]
Universal rhythmic architecture uncovers two modes of neural dynamics.
Journal: Nature communications
In common: Signal Processing Toolbox, Statistics and Machine Learning Toolbox, 1 reference
[10] doi:10.1038/s41467-026-76581-6 [code]
Thalamocortical bursts encode reward contingencies and drive associative learning.
Journal: Nature communications
In common: Signal Processing Toolbox, Statistics and Machine Learning Toolbox, 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.