OSCR

Cerebellar acceleration of learning in an evidence-accumulation task.

Code ↔ Paper

4 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 4 matches · 1 of them tie a paragraph to a whole file, not to given lines: a weak match, whose lines are not tinted
  1. [1] § STAR★METHODS › METHOD DETAILS › Drift-diffusion modeling ↔ src/model_likelihood.jl, lines 327–408 · score 0.72 · model likelihood, standard deviation, pulses, Hessian, lapse, bias
  2. [2] § STAR★METHODS › METHOD DETAILS › Drift-diffusion modeling ↔ src/PBupsModel.jl, the whole file · a weak match · score 0.62 · PBupsModel, model likelihood, fitted, accumulate
  3. [3] § STAR★METHODS › QUANTIFICATION AND STATISTICAL ANALYSIS › Effect size calculations ↔ src/model_likelihood.jl, lines 327–408 · score 0.59 · square root, Standard deviation
  4. [4] § STAR★METHODS › METHOD DETAILS › Behavior experiments ↔ settings/param_handlers.py, lines 13–114 · score 0.51 · Anti biasing, ports, interval, 200 ms, reward, delay

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

Julia · 409 lines · 14 KB · MIT · 2 matches

  1. # Global variables
  2. const epsilon = 10.0^(-10);
  3. const dx = 0.25;
  4. const dt = 0.02;
  5. const total_rate = 40;
  6. # === Upgrading from ForwardDiff v0.1 to v0.2
  7. # instead of ForwardDiff.GradientNumber and ForwardDiff.HessianNumber,
  8. # we will use ForwardDiff.Dual
  9. convert(::Type{Float64}, x::ForwardDiff.Dual) = Float64(x.value)
  10. function convert(::Array{Float64}, x::Array{ForwardDiff.Dual})
  11. y = zeros(size(x));
  12. for i in 1:prod(size(x))
  13. y[i] = convert(Float64, x[i])
  14. end
  15. return y
  16. end
  17. immutable NumericPair{X,Y} <: Number
  18. x::X
  19. y::Y
  20. end
  21. Base.isless(a::NumericPair, b::NumericPair) = (a.x<b.x) || (a.x==b.x && a.y<b.y)
  22. """
  23. function bin_centers = make_bins(B, dx, binN)
  24. Makes a series of points that will indicate bin centers. The first and
  25. last points will indicate sticky bins. No "bin edges" are made-- the edge
  26. between two bins is always implicity at the halfway point between their
  27. corresponding centers. The center bin is always at x=0; bin spacing
  28. (except for last and first bins) is always dx; and the position
  29. of the first and last bins is chosen so that |B| lies exactly at the
  30. midpoint between 1st (sticky) and 2nd (first real) bins, as well as
  31. exactly at the midpoint between last but one (last real) and last
  32. (sticky) bins.
  33. Playing nice with ForwardDiff means that the *number* of bins must be predetermined.
  34. So this function will not actually set the number of bins; what it'll do is determine their
  35. locations. To accomplish this separation, the function uses as a third parameter binN,
  36. which should be equal to the number of bins with bin centers > 0, as follows:
  37. binN = ceil(B/dx)
  38. and then the total number of bins will be 2*binN+1, with the center one always corresponding
  39. to position zero. Use non-differentiable types for B and dx for this to work.
  40. """
  41. function make_bins{T}(bins::Vector{T}, B, dx::T, binN)
  42. cnt = 1
  43. for i=-binN:binN
  44. bins[cnt] = i*dx
  45. cnt = cnt+1
  46. end
  47. if binN*dx == B
  48. bins[end] = B + dx
  49. bins[1] = -B - dx
  50. else
  51. bins[end] = 2*B - (binN-1)*dx
  52. bins[1] = -2*B + (binN-1)*dx
  53. end
  54. end
  55. """
  56. function F = Fmatrix([sigma, lambda, c], bin_centers)
  57. Uses globals
  58. dt
  59. dx
  60. epsilon (=10.0^-10)
  61. Returns a square Markov matrix of transition probabilities.
  62. Plays nice with ForwardDiff-- that is why bin_centers is a global vector (so that the rem
  63. operations that go into defining the bins, which ForwardDiff doesn't know how to deal with,
  64. stay outside of this differentiable function)
  65. sigma should be in (accumulator units) per (second^(1/2))
  66. lambda should be in s^-1
  67. c should be in accumulator units per second
  68. bin_centers should be a vector of the centers of all the bins. Edges will be at midpoints
  69. between the centers, and the first and last bin will be sticky.
  70. dx is not used inside Fmatrix, because bin_centers specifies all we need to know.
  71. dt *is* used inside Fmatrix, to convert sigma, lambda, and c into timestep units
  72. """
  73. function Fmatrix{T}(F::AbstractArray{T,2},params::Vector, bin_centers)
  74. sigma2 = params[1];
  75. lam = params[2];
  76. c = params[3];
  77. sigma2_sbin = convert(Float64, sigma2)
  78. # println(typeof(sigma2))
  79. # println(size(sigma2))
  80. # println(sigma2)
  81. # println("Converted ", sigma2_sbin)
  82. # println(typeof(sigma2_sbin))
  83. n_sbins = max(70, ceil(10*sqrt(sigma2_sbin)/dx))
  84. F[1,1] = 1;
  85. F[end,end] = 1;
  86. swidth = 5.*sqrt(sigma2_sbin)
  87. sbinsize = swidth/n_sbins #sbins[2] - sbins[1]
  88. base_sbins = collect(-swidth:sbinsize:swidth)
  89. ps = exp(-base_sbins.^2/(2*sigma2)) # exp(Array) -> exp.(x)
  90. ps = ps/sum(ps);
  91. sbin_length = length(base_sbins)
  92. binN = length(bin_centers)
  93. mu = 0.
  94. for j in 2:binN-1
  95. if lam == 0
  96. mu = bin_centers[j] + c*dt#(exp(lam*dt))
  97. else
  98. mu = (bin_centers[j] + c/lam)*exp(lam*dt) - c/lam
  99. end
  100. for k in 1:sbin_length
  101. sbin = (k-1)*sbinsize + mu - swidth
  102. if sbin <= bin_centers[1] #(bin_centers[1] + bin_centers[2])/2
  103. F[1,j] = F[1,j] + ps[k]
  104. elseif bin_centers[end] <= sbin#(bin_centers[end]+bin_centers[end-1])/2 <= sbins[k]
  105. F[end,j] = F[end,j] + ps[k]
  106. else # more condition
  107. if (sbin > bin_centers[1] && sbin < bin_centers[2])
  108. lp = 1; hp = 2;
  109. elseif (sbin > bin_centers[end-1] && sbin < bin_centers[end])
  110. lp = binN-1; hp = binN;
  111. else
  112. lp = floor(Int,((sbin-bin_centers[2])/dx)) + 2#find(bin_centers .<= sbins[k])[end]
  113. hp = ceil(Int,((sbin-bin_centers[2])/dx)) + 2#lp+1#Int(ceil((sbins[k]-bin_centers[2])/dx) + 1);
  114. end
  115. if lp == hp
  116. F[lp,j] = F[lp,j] + ps[k]
  117. else
  118. F[hp,j] = F[hp,j] + ps[k]*(sbin - bin_centers[lp])/(bin_centers[hp] - bin_centers[lp])
  119. F[lp,j] = F[lp,j] + ps[k]*(bin_centers[hp] - sbin)/(bin_centers[hp] - bin_centers[lp])
  120. end
  121. end
  122. end
  123. end
  124. end
  125. """
  126. version with inter-click interval(ici) for c_eff_net / c_eff_tot (followed the matlab code)
  127. (which was using dt for c_eff)
  128. function logProbRight(params::Vector)
  129. RightClickTimes vector with elements indicating times of right clicks
  130. LeftClickTimes vector with elements indicating times of left clicks
  131. Nsteps number of timesteps to simulate
  132. Takes params
  133. sigma_a = params[1]; sigma_s = params[2]; sigma_i = params[3];
  134. lambda = params[4]; B = params[5]; bias = params[6];
  135. phi = params[7]; tau_phi = params[8]; lapse = params[9]
  136. Returns the log of the probability that the agent chose Right.
  137. """
  138. function logProbRight(RightClickTimes::Array{Float64,1}, LeftClickTimes::Array{Float64,1}, Nsteps::Int
  139. ;sigma_a = 0.01, sigma_s_R = 0.01, sigma_s_L = 0.01,
  140. sigma_i = 0.01, lambda = 0., B = 8., bias = 0.,
  141. phi = 1., tau_phi = 0.02, lapse_R = 0.01, lapse_L = 0.01,
  142. input_gain_weight = 0.5)
  143. # now it considers 12p/9p function
  144. # we can update the default parameter later
  145. # check whether sigma_S_L/sigma_S_R are specified
  146. # 1. set one of them as sigma_s
  147. if xor(sigma_s_R!=0.01, sigma_s_L!=0.01)
  148. if sigma_s_R!=0.01
  149. sigma_s_L=sigma_s_R
  150. elseif sigma_s_L!=0.01
  151. sigma_s_R=sigma_s_L
  152. end
  153. end
  154. # same for lapse
  155. # check whether lapse_L/lapse_R are specified
  156. # 1. set one of them as lapse
  157. if xor(lapse_R!=0.01, lapse_L!=0.01)
  158. if lapse_R!=0.01
  159. lapse_L=lapse_R
  160. elseif lapse_L!=0.01
  161. lapse_R=lapse_L
  162. end
  163. end
  164. # function logProbRight(params::Vector, RightClickTimes::Array{Float64,1}, LeftClickTimes::Array{Float64,1}, Nsteps::Int)
  165. # sigma_a = params[1]; sigma_s_R = params[2]; sigma_s_L = params[3];
  166. # sigma_i = params[4]; lambda = params[5]; B = params[6]; bias = params[7];
  167. # phi = params[8]; tau_phi = params[9]; lapse_R = params[10]; lapse_L = params[11];
  168. # input_gain_weight = params[12];
  169. if isempty(RightClickTimes) RightClickTimes = zeros(0) end;
  170. if isempty(LeftClickTimes ) LeftClickTimes = zeros(0) end;
  171. NClicks = zeros(Int, Nsteps);
  172. Lhere = zeros(Int, length(LeftClickTimes));
  173. Rhere = zeros(Int, length(RightClickTimes));
  174. for i in 1:length(LeftClickTimes)
  175. Lhere[i] = ceil((LeftClickTimes[i]+epsilon)/dt)
  176. end
  177. for i in 1:length(RightClickTimes)
  178. Rhere[i] = ceil((RightClickTimes[i]+epsilon)/dt)
  179. end
  180. for i in Lhere
  181. NClicks[Int(i)] = NClicks[Int(i)] + 1
  182. end
  183. for i in Rhere
  184. NClicks[Int(i)] = NClicks[Int(i)] + 1
  185. end
  186. # === Upgrading from ForwardDiff v0.1 to v0.2
  187. # instead of using convert we can use floor(Int, ForwardDiff.Dual) and
  188. # ceil(Int, ForwardDiff.Dual)
  189. binN = ceil(Int, B/dx)#Int(ceil(my_B/dx))
  190. binBias = floor(Int, bias/dx) + binN+1
  191. binBias_hp = ceil(Int, bias/dx) + binN+1
  192. if binBias<1 binBias = 1; end
  193. if binBias>binN*2+1 binBias = binN*2+1; end
  194. if binBias_hp<1 binBias_hp = 1; end
  195. if binBias_hp>binN*2+1 binBias_hp = binN*2+1; end
  196. bin_centers = zeros(typeof(dx), binN*2+1)
  197. make_bins(bin_centers, B, dx, binN)
  198. # Visualization
  199. a_trace = zeros(length(bin_centers), Nsteps)
  200. c_trace = zeros(1, Nsteps)
  201. ## biased lapse rate (lapse_R, lapse_L)
  202. a0 = zeros(typeof(sigma_a),length(bin_centers))
  203. a0[1] = lapse_L/2;
  204. a0[end] = lapse_R/2;
  205. a0[binN+1] = 1-lapse_L/2-lapse_R/2;
  206. temp_l = [NumericPair(LeftClickTimes[i],-1) for i=1:length(LeftClickTimes)]
  207. temp_r = [NumericPair(RightClickTimes[i],1) for i=1:length(RightClickTimes)]
  208. allbups = sort!([temp_l; temp_r])
  209. if phi == 1
  210. c_eff = 1.
  211. else
  212. c_eff = 0.
  213. end
  214. cnt = 0
  215. Fi = zeros(typeof(sigma_i),length(bin_centers),length(bin_centers))
  216. Fmatrix(Fi,[sigma_i, 0., 0.0], bin_centers)
  217. a = Fi*a0;
  218. a_trace[:,1] = a;
  219. F0 = zeros(typeof(sigma_a),length(bin_centers),length(bin_centers))
  220. Fmatrix(F0,[sigma_a*dt, lambda, 0.0], bin_centers)
  221. for i in 2:Nsteps
  222. net_input = 0.
  223. c_eff_tot = 0.
  224. c_eff_net = 0.
  225. net_i_input = 0.
  226. net_c_input = 0.
  227. if NClicks[i-1]==0
  228. c_eff_tot = 0.
  229. c_eff_net = 0.
  230. a = F0*a
  231. else
  232. for j in 1:NClicks[i-1]
  233. if cnt != 0 || j != 1
  234. ici = allbups[cnt+j].x - allbups[cnt+j-1].x
  235. c_eff = 1 + (c_eff*phi - 1)*exp(-ici/tau_phi)
  236. c_eff_tot = c_eff_tot + c_eff
  237. c_eff_net = c_eff_net + c_eff*allbups[cnt+j].y
  238. ## (input_gain_weight) 0 to 1 : 0-left, 1-right
  239. net_c_input = (c_eff_tot+c_eff_net)/2 # right
  240. net_i_input = c_eff_tot-net_c_input # left
  241. net_input = 2*input_gain_weight*net_c_input - 2*(1-input_gain_weight)*net_i_input
  242. elseif cnt==0 && j==1
  243. ici = 0.
  244. c_eff = 1 + (c_eff*phi - 1)*exp(-ici/tau_phi)
  245. c_eff_tot = c_eff_tot + c_eff
  246. c_eff_net = c_eff_net + c_eff*allbups[cnt+j].y
  247. ## (input_gain_weight) 0 to 1 : 0-left, 1-right
  248. # 0.5 is neutral
  249. net_c_input = (c_eff_tot+c_eff_net)/2 # right
  250. net_i_input = c_eff_tot-net_c_input # left
  251. net_input = 2*input_gain_weight*net_c_input - 2*(1-input_gain_weight)*net_i_input
  252. end
  253. if j == NClicks[i-1]
  254. cnt = cnt+j
  255. end
  256. end
  257. ## biased params added
  258. net_sigma = sigma_a*dt + (sigma_s_R*net_i_input)/total_rate + (sigma_s_L*net_c_input)/total_rate
  259. F = zeros(typeof(net_sigma),length(bin_centers),length(bin_centers))
  260. Fmatrix(F,[net_sigma, lambda, net_input/dt], bin_centers)
  261. a = F*a
  262. end
  263. a_trace[:,i] = a
  264. c_trace[i] = c_eff*exp(lambda*dt)
  265. end
  266. # likelihood of poking right
  267. if binBias == binBias_hp
  268. pright = sum(a[binBias+1:end])+a[binBias]/2
  269. else
  270. pright = sum(a[binBias+2:end]) +
  271. a[binBias]*((bin_centers[binBias+1] - bias)/dx/2) +
  272. a[binBias+1]*(0.5 + (bin_centers[binBias+1] - bias)/dx/2)
  273. end
  274. if pright-1 < epsilon && pright > 1
  275. pright = 1
  276. end
  277. if pright < epsilon && pright > 0
  278. pright = 0
  279. end
  280. return log(pright)
  281. end
  282. function LogLikelihood(RightClickTimes::Vector, LeftClickTimes::Vector, Nsteps::Int, rat_choice::Int
  283. ;kwargs...)
  284. if rat_choice > 0
  285. # println("Right")
  286. return logProbRight(RightClickTimes, LeftClickTimes, Nsteps;
  287. kwargs...)#make_dict(args, x)...)
  288. elseif rat_choice < 0
  289. # println("Left")
  290. return log(1 - exp(logProbRight(RightClickTimes, LeftClickTimes, Nsteps;
  291. kwargs...)))#make_dict(args, x)...)))
  292. end
  293. end
  294. """
  295. function (LL, LLgrad, LLhessian, bin_centers, bin_times, a_trace) =
  296. llikey(params, rat_choice, maxT=1, RightPulseTimes=[], LeftPulseTimes=[], dx=0.25, dt=0.02)
  297. Computes the log likelihood according to Bing's model, and returns log likelihood, gradient, and hessian
  298. params is a vector whose elements, in order, are
  299. sigma_a square root of accumulator variance per unit time sqrt(click units^2 per second)
  300. sigma_s standard deviation introduced with each click (will get scaled by click adaptation)
  301. sigma_i square root of initial accumulator variance sqrt(click units^2)
  302. lambda 1/accumulator time constant (sec^-1). Positive means unstable, neg means stable
  303. B sticky bound height (click units)
  304. bias where the decision boundary lies (click units)
  305. phi click adaptation/facilitation multiplication parameter
  306. tau_phi time constant for recovery from click adaptation (sec)
  307. lapse 2*lapse fraction of trials are decided randomly
  308. rat_choice should be either "R" or "L"
  309. RETURNS:
  310. """
  311. # function single_trial(params::Vector, RightClickTimes::Vector, LeftClickTimes::Vector, Nsteps::Int, rat_choice::Int, hess_mode=0::Int)
  312. # function llikey(params::Vector)
  313. # logLike(params, RightClickTimes, LeftClickTimes, Nsteps, rat_choice)
  314. # end
  315. # if hess_mode > 0
  316. # result = HessianResult(params)
  317. # ForwardDiff.hessian!(result, llikey, params);
  318. # else
  319. # result = GradientResult(params)
  320. # ForwardDiff.gradient!(result, llikey, params);
  321. # end
  322. # LL = ForwardDiff.value(result)
  323. # LLgrad = ForwardDiff.gradient(result)
  324. # if hess_mode > 0
  325. # LLhessian = ForwardDiff.hessian(result)
  326. # end
  327. # if hess_mode > 0
  328. # return LL, LLgrad, LLhessian
  329. # else
  330. # return LL, LLgrad
  331. # end
  332. # end

model_likelihood.jl at commit 70fff04, under MIT · at the source

Overview

Authors: Marlies Oostland1,2,3, Mikhail Kislin1,4,3, Yuhang Chen1, Tiffany Chen5, Sarah Jo Venditto1, Ben Deverett6, Samuel S-H Wang1,7
  1. Neuroscience Institute, Princeton University, Princeton, NJ, USA
  2. Swammerdam Institute for Life Sciences, University of Amsterdam, Amsterdam, the Netherlands
  3. These authors contributed equally
  4. Present address: Albert Einstein College of Medicine, 1410 Pelham Parkway S, Kennedy 915, Bronx, NY, USA
  5. Department of Neurological Surgery, University of California, San Francisco, San Francisco, CA, USA
  6. Department of Anesthesiology, Stanford University Medical Center, Stanford, CA, USA
  7. Lead contact
Institutions: Princeton University (United States); University of Amsterdam (Netherlands); University of California, San Francisco (United States); Stanford Medicine (United States)
Journal: Cell reports, volume 45, issue 4, article 117262
Dates: published online 16 April 2026; in print April 2026
Type: Research article · Language: English
License: CC BY
Identifiers: DOI 10.1016/j.celrep.2026.117262 · PMID 41999601 · PMCID PMC13198533 · OpenAlex W4200393806
Open access: gold, a free copy (OpenAlex)
Status: code verified
Categories: mouse (organism), autism (population), cognitive (subfield)
Methods: Statistics, Machine learning, Preprocessing, fMRI & imaging, Single-unit activity, calcium imaging, Physiology & signal measures, Connectivity
Keywords: Cerebellum, Learning, Cognition, Anterior cingulate cortex, Autism, Behavioral State, Complex Spikes, Sensory Reactivity, Task Focus, Cp: Neuroscience
Topic: Neural dynamics and brain function (Cognitive Neuroscience, Neuroscience), according to OpenAlex
Funding: NINDS NIH HHS (R01 NS045193, U19 NS104648); National Institute of Neurological Disorders and Stroke (R01 NS045193, U19 NS104648); National Institute of Mental Health (R01 MH115750); NIMH NIH HHS (R01 MH115750); EU Framework Programme for Research and Innovation Marie Skłodowska-Curie Actions (844318); Horizon 2020 Framework Programme; National Institutes of Health
Citations: not cited yet (Europe PMC); 68 references in the paper
Research resources: RRID:AB_143165, Corticosterone ELISA Kit RRID:AB_2877626, RRID:AB_476866, Mouse: C57BL/6J RRID:IMSR_JAX:000664, RRID:IMSR_JAX:004146, Mouse: Tsc1flox/flox: Tsc1tm1Djk/J RRID:IMSR_JAX:005680, RRID:IMSR_JAX:010536, RRID:IMSR_JAX:012567, RRID:IMSR_JAX:030328, ScanImage 2015 RRID:SCR_014307, i-control™ microplate reader software RRID:SCR_024562, NDP.view2 Plus RRID:SCR_025177

Abstract

Cerebellar processing contributes to sensory salience, cognition, and behavioral flexibility. Here, we report that learning on a sensory evidence-accumulation task in mice is accelerated by cue-locked optogenetic stimulation of Purkinje cells but not by continuous optogenetic interference. Latent-state analysis revealed that accelerated learning was associated with enhanced focus on current over past trials. A cerebellum-specific transgenic autism model with disrupted Purkinje cell function also unexpectedly showed accelerated learning as well as enhanced reactivity to touch and auditory cues. Transgenic mice and wild-type mice receiving cue-locked stimulation showed prolonged sensory responses in Purkinje cell complex spikes and anterior cingulate cortex, and a subset of Purkinje cells in crus I showed on-task enhanced response to stimuli in wild-type mice. Sensory salience and task state may be different facets of a complex-spike-based mechanism for regulating brain-wide learning mechanisms. These findings potentially link cerebellum-dependent sensory salience with a global weak coherence account of autism.

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

wanglabprinceton/accumulating_puffs

License: Apache-2.0
State: the link answers, verified on 29 September 2026
Evidence: files inventoried
Commit: d3ed79c86cf663921412b608aa0287b4d34ee035, 13 June 2018
Languages: Python (43)
Size: 57 files, 43 scripts
Software Heritage: archived
Found in: the text, “Behavior experiments”
Holds: README, license file
Not found: CITATION.cff, environment file, tests, continuous integration, documentation
Tools: NumPy (22 files), pandas (9 files), Matplotlib (4 files), h5py (3 files), SciPy (1 file)
Availability: 1 check, the latest on 29 September 2026: the link answers
  • 29 September 2026: the link answers
45 files

misun6312/PBupsModel.jl

License: MIT
State: the link answers, verified on 29 September 2026
Evidence: files inventoried
Commit: 70fff040d4134591f6729e5864bb6a92d260117e, 28 August 2018
Languages: Julia (8)
Size: 17 files, 8 scripts
Software Heritage: not archived
Found in: the text, “Drift-diffusion modeling”
Holds: README, license file, tests, continuous integration
Not found: CITATION.cff, environment file, documentation
Availability: 1 check, the latest on 29 September 2026: the link answers
  • 29 September 2026: the link answers
10 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;
  • 51 scripts, each with its path and the digest of its content;
  • 4 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 that support the findings of this study will be made available upon reasonable request.

Code used for data acquisition is available at https://github.com/wanglabprinceton/accumulating_puffs.

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

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

Recorded: type, language, journal, volume, issue, pages, dates, 7 authors, 10 keywords, 7 funders, 65 references, 12 RRIDs.

Cite

This paper

Oostland, M., Kislin, M., Chen, Y., Chen, T., Venditto, S. J., Deverett, B., & Wang, S. S.-H. (2026). Cerebellar acceleration of learning in an evidence-accumulation task. Cell reports, 45(4), 117262. https://doi.org/10.1016/j.celrep.2026.117262

BibTeX

@article{oostland2026cerebellar,
author = {Oostland, Marlies and Kislin, Mikhail and Chen, Yuhang and Chen, Tiffany and Venditto, Sarah Jo and Deverett, Ben and Wang, Samuel S-H},
title = {{Cerebellar acceleration of learning in an evidence-accumulation task}},
journal = {Cell reports},
year = {2026},
month = apr,
volume = {45},
number = {4},
pages = {117262},
publisher = {Cell Press},
issn = {2211-1247},
doi = {10.1016/j.celrep.2026.117262},
url = {https://doi.org/10.1016/j.celrep.2026.117262},
pmid = {41999601},
pmcid = {PMC13198533}
}

RIS

TY - JOUR
AU - Oostland, Marlies
AU - Kislin, Mikhail
AU - Chen, Yuhang
AU - Chen, Tiffany
AU - Venditto, Sarah Jo
AU - Deverett, Ben
AU - Wang, Samuel S-H
TI - Cerebellar acceleration of learning in an evidence-accumulation task
T2 - Cell reports
J2 - Cell Rep
PY - 2026
DA - 2026/04/16
VL - 45
IS - 4
SP - 117262
SN - 2211-1247
PB - Cell Press
DO - 10.1016/j.celrep.2026.117262
UR - https://doi.org/10.1016/j.celrep.2026.117262
LA - en
ER -

CSL-JSON

{
"id": "10.1016/j.celrep.2026.117262",
"type": "article-journal",
"title": "Cerebellar acceleration of learning in an evidence-accumulation task",
"container-title": "Cell reports",
"author": [
{
"family": "Oostland",
"given": "Marlies"
},
{
"family": "Kislin",
"given": "Mikhail"
},
{
"family": "Chen",
"given": "Yuhang"
},
{
"family": "Chen",
"given": "Tiffany"
},
{
"family": "Venditto",
"given": "Sarah Jo"
},
{
"family": "Deverett",
"given": "Ben"
},
{
"family": "Wang",
"given": "Samuel S-H"
}
],
"container-title-short": "Cell Rep",
"volume": "45",
"issue": "4",
"page": "117262",
"DOI": "10.1016/j.celrep.2026.117262",
"PMID": "41999601",
"PMCID": "PMC13198533",
"ISSN": "2211-1247",
"publisher": "Cell Press",
"URL": "https://doi.org/10.1016/j.celrep.2026.117262",
"language": "en",
"issued": {
"date-parts": [
[
2026,
4,
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.1038/s41398-026-03952-4 [code]
Perineuronal nets in cerebellar nuclei neurons orchestrate social behaviour via regulation of neuronal activity in circuits innervated by the cerebellum.
Journal: Translational psychiatry
In common: SciPy, autism, mouse, 5 references
[2] doi:10.1073/pnas.2616911123 [code]
Cerebellar microcircuits enable robust evidence-based decisions through cortico-cerebellar coupling.
Journal: Proceedings of the National Academy of Sciences of the United States of America
In common: Matplotlib, NumPy, cognitive, 5 references
[3] doi:10.1371/journal.pcbi.1014585 [code]
Decoding behavior with minimal and interpretable agent models.
Journal: PLoS computational biology
In common: pandas, SciPy, Matplotlib, 1 other tool, cognitive, mouse, 3 references
[4] doi:10.1038/s42003-026-10034-0 [code]
Region- and cell type-specific changes in gene expression in the cerebellum after classical fear conditioning.
Journal: Communications biology
In common: pandas, SciPy, Matplotlib, 1 other tool, mouse, 3 references
[5] doi:10.1002/advs.202519479 [code]
Diminished Signal-to-Noise Ratio Disrupts Somatosensory Population Encoding and Drives Tactile Hyposensitivity in the Fmr1&lt;sup&gt;-/y&lt;/sup&gt; Autism Model.
Journal: Advanced science (Weinheim, Baden-Wurttemberg, Germany)
In common: h5py, pandas, SciPy, 2 other tools, autism, cognitive, mouse, 1 reference
[6] doi:10.1038/s41467-026-72445-1 [code]
Perception and neural representation of intermittent odor stimuli in mice.
Journal: Nature communications
In common: h5py, pandas, SciPy, 2 other tools, mouse, 2 references
[7] doi:10.1038/s41467-026-72057-9 [code]
Sex-specific behavioral feedback modulates sensorimotor processing and drives flexible social behavior.
Journal: Nature communications
In common: h5py, pandas, SciPy, 2 other tools, 2 references
[8] doi:10.1126/sciadv.aed6417 [code]
Intrinsic timing, not temporal prediction, underlies ramping dynamics in visual and parietal cortex during passive behavior.
Journal: Science advances
In common: h5py, pandas, SciPy, 2 other tools, mouse, 2 references
[9] doi:10.1038/s41593-026-02314-z [code]
Low-dimensional population dynamics in the brainstem gate REM sleep.
Journal: Nature neuroscience
In common: h5py, pandas, SciPy, 2 other tools, mouse, 2 references
[10] doi:10.1038/s41467-026-75371-4 [code]
Cerebellar neural populations orchestrate dopamine reward signaling with single-trial precision.
Journal: Nature communications
In common: pandas, SciPy, Matplotlib, 1 other tool, mouse, 2 references

Contribute

The authors of this paper can claim it, correct its record and validate its tracing map, and the maintainers of its code (its owner, or a public member of its organization) correct what it says of their repository; anyone signed in can ask for its removal. Every request goes to OSCR's own machine, which answers it; your account page follows them.

Sign in with ORCID to claim this paper as one of its authors, correct its record or validate its tracing map: when the paper's metadata lists your ORCID iD, you are recognized at once. Maintainers of its code: sign in with GitHub, then claim the repository on your account page.

Request its removal

To ask OSCR to remove this record, the copies of its authors' scripts or its tracing map, use the removal request page: signed in, you say who you are, what to remove and why, then review and confirm the request. Published rules decide every request (how).

Discussion, reproductions, activity

Discussion: questions and error reports about this paper and its code, from signed-in readers and its authors. It opens with sign-in.

Reproductions: reports from readers who ran the authors' code: what they reproduced, with which environment, commit and data. It opens with sign-in.

Activity: what happens around this paper: new versions of its record, its map's validation, discussions and reproductions. It opens with sign-in.