OSCR

Anterior lateral motor cortex enables contextual decision-making via dynamic reconfiguration of local circuits.

Code ↔ Paper

2 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 2 matches
  1. [1] § STAR★METHODS › QUANTIFICATION AND STATISTICAL ANALYSIS › Decoding and PCA analysis ↔ fitsvm8T_cos.m, lines 154–193 · score 0.77 · SVM weight vectors, sliding window, odor onset, matrix, cosine, bin
  2. [2] § RESULTS › Generalization of context at the level of choice neurons ↔ fitsvm8T_cos.m, lines 154–193 · score 0.52 · SVM weight vectors, odor onset, cosine

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 · 420 lines · 15 KB · no license · 2 matches

  1. function [cors_ab,cors_cd,cors_sh] = fitsvm8T_cos(Ninput,ds0,data0,prm,fe)
  2. % train svm with lick triggered dataset
  3. % train the decode on A/B data and test on C/D
  4. Nfold = 50; %number of iteration
  5. fold = 0.8; % 5 fold cross-validation
  6. if length(ds0) ~= length(data0)
  7. disp('input cell dimension mismatch!')
  8. end
  9. n_ss = length(ds0);
  10. d_wd = prm.d_wd;
  11. stp = prm.stp; st = prm.st; en = prm.en; binsize = prm.binsize;
  12. d_bins = round((d_wd(1)-st)/stp+2):round((d_wd(2)-st)/stp+1);
  13. n_bins = length(d_bins);
  14. cors_ab = nan(n_ss,n_bins);
  15. errs_ab = nan(n_ss,n_bins);
  16. cors_cd = nan(n_ss,n_bins);
  17. errs_cd = nan(n_ss,n_bins);
  18. for i = 1 %n_ss
  19. % fprintf('computing roc for session #%d\n',i);
  20. ds = ds0{i}; data = data0{i};
  21. if size(data,1) ~= size(ds,1)
  22. disp('number of trials mismatch!')
  23. end
  24. N = size(data,3); % number of units in current session
  25. Nmax = Ninput;
  26. if Nmax == 0
  27. Nmax = N;
  28. fprintf('Session #%d has %d units\n',i,N);
  29. elseif Nmax <= N
  30. fprintf('Session #%d has %d units\n',i,N);
  31. elseif Nmax > N
  32. fprintf('Session #%d has %d units, skipped\n',i,N);
  33. continue;
  34. end
  35. sel = ds.correct==1; % correct trials only
  36. % % sel = ds.miss ~= 1; % remove miss trials
  37. % % ds.error = ds.error | ds.xSwitch; % treat switch trials as error
  38. % % sel = ds.miss == 0 | ds.xSwitch == 0; % remove miss and switch trials
  39. % if kp_el == 0 % exclude early licks
  40. % sel = sel & ds.early_lick==0; % no early lick trials
  41. % end
  42. ds = ds(sel,:);
  43. data = data(sel,:,:);
  44. ds_ab = ds(ds.tt<4,:);
  45. ds_cd = ds(ds.tt>=4,:);
  46. data_ab = data(ds.tt<4,:,:);
  47. data_cd = data(ds.tt>=4,:,:);
  48. P = size(ds_ab,1); % number of correct control trials
  49. Ptrain = floor(fold*P); % number of trials for training
  50. ds_ab.AasSample = ds_ab.tt<=1;
  51. ds_cd.CasSample = ds_cd.tt<=5;
  52. ds_ab.AasTest = ismember(ds_ab.tt,[0 3 4 7]);
  53. ds_cd.AasTest = ismember(ds_cd.tt,[0 3 4 7]);
  54. switch fe
  55. case 'sample'
  56. labels_ab = ds_ab.AasSample;
  57. labels_cd = ds_cd.CasSample;
  58. case 'match'
  59. labels_ab = ds_ab.match;
  60. labels_cd = ds_cd.match;
  61. case 'test'
  62. labels_ab = ds_ab.AasTest;
  63. labels_cd = ds_cd.AasTest;
  64. case 'choice'
  65. labels_ab = ds_ab.left;
  66. labels_cd = ds_cd.left;
  67. case 'trialtype'
  68. labels_ab = ds_ab.trial_type;
  69. labels_cd = ds_cd.trial_type - 4;
  70. % case 'correct'
  71. % labels = ds.correct;
  72. case 'context'
  73. labels_ab = ds_ab.context;
  74. labels_cd = ds_cd.context;
  75. end
  76. labels_ab = double(labels_ab);
  77. labels_cd = double(labels_cd);
  78. % fr = squeeze(mean(data(:,wd_bins,:),2));
  79. % Initialize weight storage
  80. svm_weights = nan(n_bins, Nmax,Nfold); % Store SVM weights over time bins
  81. for j = 1:n_bins
  82. fprintf('bin %d of %d\n',j,n_bins);
  83. bi_en = d_bins(j);
  84. bi_st = bi_en - round(binsize/stp) + 1;
  85. cur_data_ab = data_ab(:,bi_st:bi_en,:);
  86. cur_data_cd = data_cd(:,bi_st:bi_en,:);
  87. fr_ab = squeeze(mean(cur_data_ab,2));
  88. fr_cd = squeeze(mean(cur_data_cd,2));
  89. cur_cor_ab = zeros(Nfold,1);
  90. cur_err_ab = zeros(Nfold,1);
  91. cur_cor_cd = zeros(Nfold,1);
  92. cur_err_cd = zeros(Nfold,1);
  93. cur_cor_sh = zeros(Nfold,1);
  94. cur_err_sh = zeros(Nfold,1);
  95. for fi = 1:Nfold
  96. indtrain = randsample(P,Ptrain); %indices of trials to use for training
  97. indtest = setdiff(1:P,indtrain); %indices for testing
  98. labelstrain_ab = labels_ab(indtrain);
  99. datatrain_ab = fr_ab(indtrain,:);
  100. labelstest_ab = labels_ab(indtest);
  101. datatest_ab = fr_ab(indtest,:);
  102. labelshuffle = labels_ab(randperm(length(labels_ab))');
  103. labelstrain_shuffle = labelshuffle(indtrain);
  104. labelstest_shuffle = labelshuffle(indtest);
  105. if Nmax ~= N
  106. cellinds = randsample(N,Nmax);
  107. datatrain_ab = datatrain_ab(:,cellinds);
  108. datatest_ab = datatest_ab(:,cellinds);
  109. end
  110. model = train(labelstrain_ab,sparse(datatrain_ab),'-q');
  111. svm_weights(j, :,fi) = model.w; % Store the weight vector for this time bin
  112. predtest_ab = predict(ones(length(labelstest_ab),1),...
  113. sparse(datatest_ab),model,'-q');
  114. cur_cor_ab(fi) = mean(predtest_ab == labelstest_ab);
  115. cur_err_ab(fi) = mean(predtest_ab ~= labelstest_ab);
  116. pred_cd = predict(ones(length(labels_cd),1),...
  117. sparse(fr_cd),model,'-q');
  118. cur_cor_cd(fi) = mean(pred_cd == labels_cd);
  119. cur_err_cd(fi) = mean(pred_cd ~= labels_cd);
  120. model = train(labelstrain_shuffle,sparse(datatrain_ab),'-q');
  121. predtest_shuffle = predict(ones(length(labelstest_shuffle),1),...
  122. sparse(datatest_ab),model,'-q');
  123. cur_cor_sh(fi) = mean(predtest_shuffle == labelstest_shuffle);
  124. cur_err_sh(fi) = mean(predtest_shuffle ~= labelstest_shuffle);
  125. end %end loop over folds
  126. cors_ab(i,j) = mean(cur_cor_ab);
  127. errs_ab(i,j) = mean(cur_err_ab);
  128. cors_cd(i,j) = mean(cur_cor_cd);
  129. errs_cd(i,j) = mean(cur_err_cd);
  130. cors_sh(i,j) = mean(cur_cor_sh);
  131. errs_sh(i,j) = mean(cur_err_sh);
  132. end % end loop over bins
  133. disp('Done!')
  134. weights = squeeze(mean(svm_weights,3));
  135. peak_perf = find(cors_ab(i,:) > 0.9);
  136. % Define before and after odor bins
  137. test_odor_bin = 36; %find(d_bins == 0, 1); %the location of test odor bin starts, which is 42
  138. before_idx = 11:test_odor_bin-1; % cut the baseline, starts from sample onset
  139. after_idx = test_odor_bin:test_odor_bin+length(before_idx)-1;
  140. % Inputs:
  141. % - SVM_weights: [time_points x feature_dim] matrix of SVM weight vectors
  142. % - time: Vector of time points
  143. % - test_odor_time: Time of test odor onset
  144. before_plot_idx = intersect(before_idx, peak_perf);
  145. after_plot_idx = intersect(after_idx, peak_perf);
  146. window_size = 5; %Number of time bins to average over
  147. before_plot_idx = before_plot_idx - 11 - 4;
  148. after_plot_idx = after_plot_idx - 11 - 4;
  149. num_timepoints_before = length(before_idx);
  150. num_timepoints_after = length(after_idx);
  151. feature_dim = size(weights, 2);
  152. % Compute the number of sliding window steps
  153. num_windows_before = num_timepoints_before - window_size + 1;
  154. num_windows_after = num_timepoints_after - window_size + 1;
  155. % Initialize sliding window weight matrix
  156. windowed_weights_before = nan(num_windows_before, feature_dim); %nan(num_timepoints_before, feature_dim); %
  157. windowed_weights_after = nan(num_windows_after, feature_dim); %nan(num_timepoints_after, feature_dim); %
  158. % Apply sliding window averaging
  159. for w = 1:num_windows_before %num_timepoints_before %
  160. windowed_weights_before(w, :) = mean(weights(before_idx(w):before_idx(w+window_size-1), :), 1); %weights(before_idx(w), :) ;%
  161. end
  162. for w = 1:num_windows_before %num_timepoints_after
  163. windowed_weights_after(w, :) = mean(weights(after_idx(w):after_idx(w+window_size-1), :), 1); %weights(after_idx(w), :) ;%
  164. end
  165. % Initialize cosine similarity matrix
  166. combined_matrix_before = nan(num_windows_before, num_windows_before);
  167. combined_matrix_after = nan(num_windows_after, num_windows_after);
  168. combined_matrix = nan(num_windows_after+ num_windows_after, num_windows_after+ num_windows_after);
  169. % Function to compute cosine similarity
  170. cosine_sim = @(w1, w2) dot(w1, w2) / (norm(w1) * norm(w2));
  171. % Compute cosine similarity Before vs Before
  172. for w = 1:num_windows_before
  173. for x = w:num_windows_before
  174. combined_matrix(w, x) = cosine_sim(windowed_weights_before(w, :), windowed_weights_before(x, :));
  175. combined_matrix(x, w) = combined_matrix(w,x); % Symmetric
  176. end
  177. end
  178. % Compute cosine similarity After vs After
  179. for w = 1:num_windows_after
  180. for x = w:num_windows_after
  181. combined_matrix(num_windows_before+w, num_windows_before+x) = cosine_sim(windowed_weights_after(w, :), windowed_weights_after(x, :));
  182. combined_matrix(num_windows_before+x, num_windows_before+w) = combined_matrix(num_windows_before+w, num_windows_before+x);
  183. end
  184. end
  185. % Compute cosine similarity Before vs After
  186. for w = 1:num_windows_before
  187. for x = 1:num_windows_after
  188. combined_matrix(w, num_windows_before+x) = cosine_sim(windowed_weights_before(w, :), windowed_weights_after(x, :));
  189. combined_matrix(num_windows_before+x, w) = combined_matrix(w, num_windows_before+x);
  190. end
  191. end
  192. % Plot combined heatmap
  193. kernel_size = 1; % Adjust as needed
  194. % calculate the delta cosine similarity
  195. for c = 1:size(combined_matrix,2) %num_windows_before
  196. dcosim1 (c) = mean(combined_matrix(1:num_windows_before,c)) - mean(combined_matrix(num_windows_before+1:end,c));
  197. end
  198. for c = 1:size(combined_matrix,1)
  199. dcosim2 (c) = mean(combined_matrix(c,1:num_windows_before)) - mean(combined_matrix(c, num_windows_before+1:end));
  200. end
  201. figure
  202. plot(dcosim1)
  203. figure
  204. plot(dcosim2)
  205. % Apply Gaussian smoothing
  206. smoothed_matrix = imgaussfilt(combined_matrix, kernel_size);
  207. % try the smoothed matrix
  208. for c = 1:size(smoothed_matrix,2) %num_windows_before
  209. sdcosim1 (c) = mean(smoothed_matrix(1:num_windows_before,c)) - mean(smoothed_matrix(num_windows_before+1:end,c));
  210. end
  211. for c = 1:size(smoothed_matrix,1)
  212. sdcosim2 (c) = mean(smoothed_matrix(c,1:num_windows_before)) - mean(smoothed_matrix(c, num_windows_before+1:end));
  213. end
  214. figure
  215. plot(sdcosim1)
  216. figure
  217. plot(sdcosim2)
  218. figure;
  219. imagesc(smoothed_matrix);
  220. colorbar;
  221. xlabel('Time');
  222. ylabel('Time');
  223. title('Combined Cosine Similarity Matrix');
  224. figure;
  225. subplot(2,2,1)
  226. imagesc(smoothed_matrix(before_plot_idx, before_plot_idx));
  227. colorbar;
  228. xlabel('Time');
  229. ylabel('Time');
  230. title('Combined Cosine Similarity Matrix');
  231. subplot(2,2,2)
  232. imagesc(smoothed_matrix(before_plot_idx, after_plot_idx));
  233. colorbar;
  234. xlabel('Time');
  235. ylabel('Time');
  236. title('Combined Cosine Similarity Matrix');
  237. subplot(2,2,3)
  238. imagesc(smoothed_matrix((27:40),(27:40))) %(after_plot_idx, after_plot_idx));
  239. colorbar;
  240. xlabel('Time');
  241. ylabel('Time');
  242. title('Combined Cosine Similarity Matrix');
  243. subplot(2,2,4)
  244. imagesc(smoothed_matrix(after_plot_idx, before_plot_idx));
  245. colorbar;
  246. xlabel('Time');
  247. ylabel('Time');
  248. title('Combined Cosine Similarity Matrix');
  249. % Extract the relevant cosine similarity subsets from the smoothed matrix
  250. bef_bef = smoothed_matrix(before_plot_idx, before_plot_idx);
  251. bef_aft = smoothed_matrix(before_plot_idx, after_plot_idx);
  252. aft_aft = smoothed_matrix(after_plot_idx, after_plot_idx);
  253. % Flatten the upper triangle (excluding diagonal) of each block
  254. mask_upper = @(M) M(triu(true(size(M)), 1));
  255. sim_bef_bef = mask_upper(bef_bef);
  256. sim_bef_aft = bef_aft(:);
  257. sim_aft_aft = mask_upper(aft_aft);
  258. mean_bef_bef = mean(bef_bef);
  259. mean_bef_aft = mean(bef_aft);
  260. mean_aft_aft = mean(aft_aft);
  261. % Compute actual mean differences
  262. real_diff = mean(sim_bef_bef) - mean(sim_bef_aft);
  263. real_diff2 = mean(sim_aft_aft) - mean(sim_bef_aft);
  264. % Combine and prepare for permutation
  265. combined = [sim_bef_bef; sim_bef_aft];
  266. n_bef = length(sim_bef_bef);
  267. n_aft = length(sim_bef_aft);
  268. combined2 = [sim_aft_aft; sim_bef_aft];
  269. n_aa = length(sim_aft_aft);
  270. n_cross = length(sim_bef_aft);
  271. % Monte Carlo permutation test
  272. % n_perm = 1000;
  273. % perm_diffs = nan(n_perm, 1);
  274. % perm_diffs2 = nan(n_perm, 1);
  275. % for i = 1:n_perm
  276. % % Before-Before vs Before-After
  277. % perm = combined(randperm(length(combined)));
  278. % perm_diffs(i) = mean(perm(1:n_bef)) - mean(perm(n_bef+1:end));
  279. %
  280. % % After-After vs Before-After
  281. % perm2 = combined2(randperm(length(combined2)));
  282. % perm_diffs2(i) = mean(perm2(1:n_aa)) - mean(perm2(n_aa+1:end));
  283. % end
  284. %
  285. % % Calculate two-tailed p-values
  286. % p_val = mean(abs(perm_diffs) >= abs(real_diff));
  287. % p_val2 = mean(abs(perm_diffs2) >= abs(real_diff2));
  288. %
  289. % % Display results
  290. % fprintf('Monte Carlo p-value (Before-Before vs Before-After): %.4f\n', p_val);
  291. % fprintf('Monte Carlo p-value (After-After vs Before-After): %.4f\n', p_val2);
  292. % Plot null distributions
  293. % figure;
  294. % subplot(1,2,1);
  295. % histogram(perm_diffs, 30);
  296. % xline(real_diff, 'r', 'LineWidth', 2);
  297. % title('Null: Before-Before vs Before-After');
  298. % xlabel('\Delta Cosine Similarity'); ylabel('Count');
  299. %
  300. % subplot(1,2,2);
  301. % histogram(perm_diffs2, 30);
  302. % xline(real_diff2, 'r', 'LineWidth', 2);
  303. % title('Null: After-After vs Before-After');
  304. % xlabel('\Delta Cosine Similarity'); ylabel('Count');
  305. % % Add separation lines for before vs after
  306. % test_odor_idx = find(adjusted_time >= test_odor_time, 1);
  307. % hold on;
  308. % plot([test_odor_idx, test_odor_idx], ylim, 'k--', 'LineWidth', 1);
  309. % plot(xlim, [test_odor_idx, test_odor_idx], 'k--', 'LineWidth', 1);
  310. % hold off;
  311. % max_lag = 20;
  312. % cosine_sim_before = nan(length(before_idx), max_lag);
  313. % cosine_sim_after = nan(length(after_idx), max_lag);
  314. %
  315. % % Function to compute cosine similarity
  316. % cosine_sim = @(w1, w2) dot(w1, w2) / (norm(w1) * norm(w2));
  317. %
  318. % % Compute Cosine Similarity Before Odor
  319. % for t = 1:length(before_idx)
  320. % for lag = 1:max_lag
  321. % t_lag = t + lag;
  322. % if t_lag <= length(before_idx)
  323. % cosine_sim_before(t, lag) = cosine_sim(weights(before_idx(t), :), weights(before_idx(t_lag), :));
  324. % end
  325. % end
  326. % end
  327. %
  328. % % Compute Cosine Similarity After Odor
  329. % for t = 1:length(after_idx)
  330. % for lag = 1:max_lag
  331. % t_lag = t + lag;
  332. % if t_lag <= length(after_idx)
  333. % cosine_sim_after(t, lag) = cosine_sim(weights(after_idx(t), :), weights(after_idx(t_lag), :));
  334. % end
  335. % end
  336. % end
  337. % Plot results
  338. % figure;
  339. % subplot(1,2,1);
  340. % imagesc(1:max_lag, before_idx, cosine_sim_before);
  341. % colorbar;
  342. % xlabel('Lag (time bins)');
  343. % ylabel('Time (before odor onset)');
  344. % title('Cosine Similarity Before Test Odor');
  345. %
  346. % subplot(1,2,2);
  347. % imagesc(1:max_lag, after_idx, cosine_sim_after);
  348. % colorbar;
  349. % xlabel('Lag (time bins)');
  350. % ylabel('Time (after odor onset)');
  351. % title('Cosine Similarity After Test Odor');
  352. %
  353. % % Initialize matrix to store cosine similarity
  354. % cosine_sim_between = nan(length(before_idx), length(after_idx));
  355. %
  356. % % Function to compute cosine similarity
  357. % cosine_sim = @(w1, w2) dot(w1, w2) / (norm(w1) * norm(w2));
  358. %
  359. % % Compute cosine similarity between before and after odor onset
  360. % for be = 1:length(before_idx)
  361. % for af = 1:length(after_idx)
  362. % cosine_sim_between(be, af) = cosine_sim(weights(before_idx(be), :), weights(after_idx(af), :));
  363. % end
  364. % end
  365. %
  366. % % Plot heatmap of cosine similarity
  367. % figure;
  368. % imagesc(after_idx, before_idx, cosine_sim_between);
  369. % colorbar;
  370. % xlabel('Time (after odor onset)');
  371. % ylabel('Time (before odor onset)');
  372. % title('Cosine Similarity Between Before and After Odor');
  373. end % end loop over sessions

fitsvm8T_cos.m at commit 5e9d9ad, no license · at the source

Overview

Authors: Jia Shen1,2, Nuttida Rungratsameetaweemana3, Prayshita Sharma4, Darcy S. Peterka1,5, Herbert Zheng Wu6, Michael N. Shadlen1,2,5,7,8,9
  1. Mortimer B. Zuckerman Mind Brain Behavior Institute, Columbia University, New York, NY, USA
  2. Department of Neuroscience, Columbia University, New York, NY, USA
  3. Department of Biomedical Engineering, Columbia University, New York, NY, USA
  4. PhD Program in Computational Neuroscience, University of Chicago, Chicago, IL, USA
  5. The Kavli Institute for Brain Science, Columbia University, New York, NY, USA
  6. Nash Family Department of Neuroscience and Friedman Brain Institute, Icahn School of Medicine at Mount Sinai, New York, NY, USA
  7. Howard Hughes Medical Institute, Chevy Chase, MD, USA
  8. Grossman Center for the Statistics of the Mind, Columbia University, New York, NY, USA
  9. Lead contact
Journal: Cell reports, volume 45, issue 6, article 117456
Dates: published online 4 June 2026; in print 23 June 2026
Type: Research article · Language: English
License: CC BY
Identifiers: DOI 10.1016/j.celrep.2026.117456 · PMID 42247294 · PMCID PMC13419430 · OpenAlex W7163506527
Open access: gold, a free copy (OpenAlex)
Status: code verified
Categories: optical imaging (calcium, voltage, 2-photon) (modality), mouse (organism)
Methods: Statistics, Smoothing, state filtering, decompositions, Machine learning, fMRI & imaging, Single-unit activity, calcium imaging, Connectivity
Keywords: Cognitive Flexibility, Two-photon Calcium Imaging, Secondary Motor Cortex, Stimulus-response Mapping, Context-dependent Decision-making, Anterior Lateral Motor Cortex, Cp: Neuroscience, Circuit Reconfiguration, Contingency Neurons
MeSH: Decision Making*, Motor Cortex*, Animals, Male, Mice, Mice, Inbred C57BL, Neurons, Odorants, Optogenetics (* major topic)
Topic: Motor Control and Adaptation (Cognitive Neuroscience, Neuroscience), according to OpenAlex
Funding: National Institute of Mental Health (R01MH133039); National Institutes of Health (/ NIDA F32); NIMH NIH HHS (R01 MH122513, R01 MH133039); National Institute on Drug Abuse (5F32DA060751, F32); Columbia University; Howard Hughes Medical Institute; Air Force Office of Scientific Research (21RT0878); NIDA NIH HHS (F32 DA060751); NINDS NIH HHS (R01 NS113113)
Citations: not cited yet (Europe PMC); 38 references in the paper
Research resources: Mouse: wild type C57BL/6J RRID:IMSR_JAX

Abstract

Cognitive operations often require flexible implementation of stimulus-response contingencies, depending on context. We developed an olfactory task in which mice learned to associate a test odor with a directional lick response, conditional on a preceding context odor drawn from a different odor set. Two-photon imaging shows that the anterior lateral motor cortex (ALM) contains distinct populations encoding context, test odors, and choice. Optogenetic silencing during the context and delay periods impairs performance, suggesting that ALM contributes to configuring the appropriate contingency. Although context odors that instruct the same mapping are represented by separate populations, their influence converges at the level of choice-selective neurons. A subpopulation of these neurons exhibit dual selectivity for context and choice, forming what we term “contingency neurons.” These findings suggest that ALM supports flexible behavior not by abstracting over context cues but by dynamically reconfiguring local circuits to route sensory input to the appropriate motor output.

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

Repositories

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

Zenodo 19828551

License: CC-BY-4.0
State: the link answers, verified on 27 September 2026
Evidence: files inventoried
Size: 1 file
Software Heritage: not checked
Found in: “Data and code availability”
Not found: README, 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)
4 files

asjessie/shadlen-lab

License: none: the authors keep all their rights
State: the link answers, verified on 27 September 2026
Evidence: files inventoried
Commit: 5e9d9ad46c52be5342924a38144ff5f59621566a, 27 April 2026
Languages: MATLAB (4)
Size: 4 files, 4 scripts
Software Heritage: not archived
Found in: the Zenodo archive record
Not found: README, 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
4 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:

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

All data reported in this paper will be shared by the lead contact upon request.

All original code has been deposited at GitHub/Zenodo at https://doi.org/10.5281/zenodo.19828551 and is publicly available as of the date of publication.

Any additional information required to reanalyze the data reported in this paper is available from the lead contact upon request.

SUPPLEMENTAL INFORMATION

Supplemental information can be found online at https://doi.org/10.1016/j.celrep.2026.117456.

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

  • Publisher: n/a → Cell Press

Version 1, 27 September 2026: the first record

Recorded: type, language, journal, volume, issue, pages, dates, 6 authors, 9 keywords, 9 MeSH terms, 9 funders, 35 references, 1 RRID.

Cite

This paper

Shen, J., Rungratsameetaweemana, N., Sharma, P., Peterka, D. S., Wu, H. Z., & Shadlen, M. N. (2026). Anterior lateral motor cortex enables contextual decision-making via dynamic reconfiguration of local circuits. Cell reports, 45(6), 117456. https://doi.org/10.1016/j.celrep.2026.117456

BibTeX

@article{shen2026anterior,
author = {Shen, Jia and Rungratsameetaweemana, Nuttida and Sharma, Prayshita and Peterka, Darcy S. and Wu, Herbert Zheng and Shadlen, Michael N.},
title = {{Anterior lateral motor cortex enables contextual decision-making via dynamic reconfiguration of local circuits}},
journal = {Cell reports},
year = {2026},
month = jun,
volume = {45},
number = {6},
pages = {117456},
publisher = {Cell Press},
issn = {2211-1247},
doi = {10.1016/j.celrep.2026.117456},
url = {https://doi.org/10.1016/j.celrep.2026.117456},
pmid = {42247294},
pmcid = {PMC13419430}
}

RIS

TY - JOUR
AU - Shen, Jia
AU - Rungratsameetaweemana, Nuttida
AU - Sharma, Prayshita
AU - Peterka, Darcy S.
AU - Wu, Herbert Zheng
AU - Shadlen, Michael N.
TI - Anterior lateral motor cortex enables contextual decision-making via dynamic reconfiguration of local circuits
T2 - Cell reports
J2 - Cell Rep
PY - 2026
DA - 2026/06/04
VL - 45
IS - 6
SP - 117456
SN - 2211-1247
PB - Cell Press
DO - 10.1016/j.celrep.2026.117456
UR - https://doi.org/10.1016/j.celrep.2026.117456
LA - en
ER -

CSL-JSON

{
"id": "10.1016/j.celrep.2026.117456",
"type": "article-journal",
"title": "Anterior lateral motor cortex enables contextual decision-making via dynamic reconfiguration of local circuits",
"container-title": "Cell reports",
"author": [
{
"family": "Shen",
"given": "Jia"
},
{
"family": "Rungratsameetaweemana",
"given": "Nuttida"
},
{
"family": "Sharma",
"given": "Prayshita"
},
{
"family": "Peterka",
"given": "Darcy S."
},
{
"family": "Wu",
"given": "Herbert Zheng"
},
{
"family": "Shadlen",
"given": "Michael N."
}
],
"container-title-short": "Cell Rep",
"volume": "45",
"issue": "6",
"page": "117456",
"DOI": "10.1016/j.celrep.2026.117456",
"PMID": "42247294",
"PMCID": "PMC13419430",
"ISSN": "2211-1247",
"publisher": "Cell Press",
"URL": "https://doi.org/10.1016/j.celrep.2026.117456",
"language": "en",
"issued": {
"date-parts": [
[
2026,
6,
4
]
]
}
}

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.1038/s41467-026-73622-y [code]
Contextual gating of whisker-evoked responses by frontal cortex supports flexible decision making.
Journal: Nature communications
In common: Image Processing Toolbox, Statistics and Machine Learning Toolbox, mouse, 6 references
[2] doi:10.7554/elife.109717 [code]
Retrosplenial cortex enables context-dependent goal-directed sensorimotor transformation.
Journal: eLife
In common: Statistics and Machine Learning Toolbox, mouse, 6 references
[3] doi:10.1371/journal.pbio.3003831 [code]
Disinhibitory signaling enables flexible coding of top-down information in cortical networks.
Journal: PLoS biology
In common: Image Processing Toolbox, Statistics and Machine Learning Toolbox, mouse, 4 references
[4] 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, optical imaging (calcium, voltage, 2-photon), mouse, 3 references
[5] doi:10.1038/s41467-026-71664-w [code]
Dorsal prefrontal cortex drives perseverative behavior in mice.
Journal: Nature communications
In common: Image Processing Toolbox, Statistics and Machine Learning Toolbox, mouse, 3 references
[6] doi:10.1126/sciadv.aed4808 [code]
Perirhinal input to auditory cortex supports memory-guided sensory perception.
Journal: Science advances
In common: shadedErrorBar, mouse, 3 references
[7] doi:10.1038/s41467-026-74869-1 [code]
Complementary roles of cell-type-specific plasticity in shaping neocortical dynamics for learning action timing.
Journal: Nature communications
In common: mouse, 4 references
[8] doi:10.1038/s41467-026-71725-0 [code]
Interactions across hemispheres in prefrontal cortex reflect global cognitive processing.
Journal: Nature communications
In common: Image Processing Toolbox, Statistics and Machine Learning Toolbox, 3 references
[9] doi:10.1016/j.isci.2026.116728 [code]
Awake cortex stabilizes traveling waves for global and reliable information routing.
Journal: iScience
In common: shadedErrorBar, Image Processing Toolbox, Statistics and Machine Learning Toolbox, 1 reference
[10] doi:10.1016/j.crmeth.2026.101481 [code]
A hybrid micro-ECoG for functionally targeted multi-site and multi-scale investigation.
Journal: Cell reports methods
In common: shadedErrorBar, Image 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.