OSCR

Increased firing rates monotonically expand neuronal coding bandwidth.

Code ↔ Paper

10 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 10 matches
  1. [1] § Statistical measures, experimental data, and models › Experimental recordings from P-units ↔ profiles/spectral.py, lines 160–283 · score 0.70 · Fourier transformation, stimulus power, spike train, segments, resolution, cross
  2. [2] § Statistical measures, experimental data, and models › Leaky integrate-and-fire model › Analytical result for the coherence function ↔ profiles/spectral.py, lines 103–157 · score 0.63 · cross spectrum, spike train, power spectrum, absolute, susceptibility, coherence
  3. [3] § Statistical measures, experimental data, and models › P-unit model › Fitting process ↔ profiles/baseline.py, lines 107–141 · score 0.63 · serial correlation, baseline activity, interspike intervals
  4. [4] § Statistical measures, experimental data, and models › P-unit model › Fitting process ↔ profiles/punitprofiles.py, lines 316–361 · score 0.61 · steady state firing, step stimuli, onset, intervals, firing rate, baseline
  5. [5] § Statistical measures, experimental data, and models › P-unit model › Simulation parameter ↔ profiles/spectral.py, lines 103–157 · score 0.61 · cross spectra, Spike train, power spectra, resolution, coherence, stimulus
  6. [6] § Statistical measures, experimental data, and models › P-unit model ↔ profiles/punitprofiles.py, lines 442–494 · score 0.60 · generated EOD, EOD frequency, unit model, rectified, amplitude, zero
  7. [7] § Statistical measures, experimental data, and models › Experimental recordings from P-units ↔ profiles/baseline.py, lines 18–56 · score 0.57 · baseline activity, interspike intervals, variation, coefficient, CV
  8. [8] § Statistical measures, experimental data, and models › P-unit model ↔ model.py, lines 43–101 · score 0.54 · amplitude modulations, EOD frequency, thresholding, zero, signal, noise
  9. [9] § Statistical measures, experimental data, and models ↔ profiles/spectral.py, lines 1–18 · score 0.53 · cross spectrum, power spectra, spectral, neuronal, stimulus
  10. [10] § Results › LIF-based P-unit model reproduces experimental observations ↔ profiles/baseline.py, lines 18–56 · score 0.51 · interspike intervals, baseline firing rates, variation, coefficient, CV, spikes

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

Python · 430 lines · 14 KB · GPL-3.0 · 4 matches

  1. """
  2. Spectral analysis of neuronal responses.
  3. ## Functions
  4. - `whitenoise()`: band-limited white noise.
  5. - `rate()`: firing rate computed by kernel convolution.
  6. - `spectra()`: stimulus- and response power spectra, and cross spectrum.
  7. - `susceptibilities()`: stimulus- and response spectra up to second order.
  8. - `diag_projection()`: projection of the chi2 matrix onto its diagonal.
  9. - `hor_projection()`: horizontal projection of the chi2 matrix.
  10. - `peak_size()`: normalized and relative size of a peak expected around a specific frequency.
  11. """
  12. import numpy as np
  13. from scipy.signal import welch, csd
  14. from scipy.stats import norm
  15. def whitenoise(cflow, cfup, dt, duration, rng=np.random.default_rng()):
  16. """Band-limited white noise.
  17. Generates white noise with a flat power spectrum between `cflow` and
  18. `cfup` Hertz, zero mean and unit standard deviation. Note, that in
  19. particular for short segments of the generated noise the mean and
  20. standard deviation of the returned noise can deviate from zero and
  21. one.
  22. Parameters
  23. ----------
  24. cflow: float
  25. Lower cutoff frequency in Hertz.
  26. cfup: float
  27. Upper cutoff frequency in Hertz.
  28. dt: float
  29. Time step of the resulting array in seconds.
  30. duration: float
  31. Total duration of the resulting array in seconds.
  32. Returns
  33. -------
  34. noise: 1-D array
  35. White noise.
  36. """
  37. # number of elements needed for the noise stimulus:
  38. n = int(np.ceil((duration+0.5*dt)/dt))
  39. # next power of two:
  40. nn = int(2**(np.ceil(np.log2(n))))
  41. # indices of frequencies with `cflow` and `cfup`:
  42. inx0 = int(np.round(dt*nn*cflow))
  43. inx1 = int(np.round(dt*nn*cfup))
  44. if inx0 < 0:
  45. inx0 = 0
  46. if inx1 >= nn/2:
  47. inx1 = nn/2
  48. # draw random numbers in Fourier domain:
  49. whitef = np.zeros((nn//2+1), dtype=complex)
  50. # zero and nyquist frequency must be real:
  51. if inx0 == 0:
  52. whitef[0] = 0
  53. inx0 = 1
  54. if inx1 >= nn//2:
  55. whitef[nn//2] = 1
  56. inx1 = nn//2-1
  57. phases = 2*np.pi*rng.random(size=inx1 - inx0 + 1)
  58. whitef[inx0:inx1+1] = np.cos(phases) + 1j*np.sin(phases)
  59. # inverse FFT:
  60. noise = np.real(np.fft.irfft(whitef))
  61. # scaling factor to ensure standard deviation of one:
  62. sigma = nn / np.sqrt(2*float(inx1 - inx0))
  63. return noise[:n]*sigma
  64. def rate(time, spikes, sigma):
  65. """ Firing rate computed by kernel convolution.
  66. Parameters
  67. ----------
  68. time: ndarray of float
  69. Times at which firing rate is evaluated.
  70. spikes: list of ndarray of float
  71. Spike times.
  72. sigma: float
  73. Width of the Gaussian kernel as a standard deviation.
  74. Returns
  75. -------
  76. rate: ndarray of float
  77. Firing rate of convolved spike trains averaged over trials.
  78. ratesd: ndarray of float
  79. Corresponding standard deviation.
  80. """
  81. kernel = norm.pdf(time[time < 8*sigma], loc=4*sigma, scale=sigma)
  82. rates = np.zeros((len(spikes), len(time)))
  83. xtime = np.append(time, time[-1] + time[1] - time[0])
  84. for i, spiket in enumerate(spikes):
  85. b, _ = np.histogram(spiket, xtime)
  86. rates[i] = np.convolve(b, kernel, 'same')
  87. return np.mean(rates, 0), np.std(rates, 0)
  88. def spectra(stimulus, spikes, dt, nfft):
  89. """Stimulus- and response power spectra, and cross spectrum.
  90. Compute the complex-valued transfer function (first-order
  91. susceptibility) and the stimulus-response coherence like this:
  92. ```
  93. freqs, pss, prr, prs = spectra(stimulus, spikes, dt, nfft)
  94. transfer = prs/pss
  95. coherence = np.abs(prs)**2/pss/prr
  96. ```
  97. The gain of the transfer function is the absolute value of the
  98. transfer function:
  99. ```
  100. gain = np.abs(prs)/pss
  101. ```
  102. Parameters
  103. ----------
  104. stimulus: ndarray of float
  105. Stimulus waveform with sampling interval 'dt'.
  106. spikes: list of ndarrays of float
  107. Spike times in response to the stimulus.
  108. dt: float
  109. Sampling interval of stimulus and resolution of the binary spike train.
  110. nfft: int
  111. Number of samples used for each Fourier transformation.
  112. Returns
  113. -------
  114. freqs: ndarray of float
  115. The frequencies corresponding to the spectra.
  116. pss: ndarray of float
  117. Power spectrum of the stimulus.
  118. prr: ndarray of float
  119. Power spectrum of the response averaged over trials.
  120. prs: ndarray of complex
  121. Cross spectrum between stimulus and response averaged over trials.
  122. """
  123. time = np.arange(len(stimulus))*dt
  124. freq, pss = welch(stimulus, fs=1/dt, nperseg=nfft, noverlap=nfft//2)
  125. prr = np.zeros((len(spikes), len(freq)))
  126. prs = np.zeros((len(spikes), len(freq)), dtype=complex)
  127. for i, spiket in enumerate(spikes):
  128. b, _ = np.histogram(spiket, time)
  129. b = b / dt
  130. f, rr = welch(b - np.mean(b), fs=1/dt, nperseg=nfft, noverlap=nfft//2)
  131. f, rs = csd(b - np.mean(b), stimulus,
  132. fs=1/dt, nperseg=nfft, noverlap=nfft//2)
  133. prr[i] = rr
  134. prs[i] = rs
  135. return freq, pss, np.mean(prr, 0), np.mean(prs, 0)
  136. def susceptibilities(stimulus, spikes, dt=0.0005, nfft=2**9, nmax=0):
  137. """Stimulus- and response spectra up to second order.
  138. Compute the complex-valued transfer function (first-order
  139. susceptibility) and the stimulus-response coherence like this:
  140. ```
  141. freqs, pss, prr, prs, prss, n = susceptibilities(stimulus, spikes, dt, nfft)
  142. transfer = prs/pss
  143. coherence = np.abs(prs)**2/pss/prr
  144. ```
  145. The gain of the transfer function is the absolute value of the
  146. transfer function and has the unit Hz/[s]:
  147. ```
  148. gain = np.abs(prs)/pss
  149. ```
  150. The complex-valued second-order susceptibility has the unit
  151. Hz/[ss] and can be computed like this:
  152. ```
  153. chi2 = prss*0.5/(pss.reshape(1, -1)*pss.reshape(-1, 1))
  154. ```
  155. The variance of the stimulus is the integral over the stimulus
  156. power spectral density `pss` (unit [s]^2/Hz):
  157. ```
  158. deltaf = freqs[1] - freqs[0] # same as 1/(dt*nfft)
  159. vars = np.sum(pss)*deltaf
  160. ```
  161. Likewise for the response.
  162. The response spectral density `prr` (in Hz^2/Hz = Hz) approaches
  163. the firing rate for large frequencies.
  164. Parameters
  165. ----------
  166. stimulus: ndarray of float
  167. Stimulus waveform with sampling interval 'dt'.
  168. spikes: list of ndarrays of float
  169. Spike times in response to the stimulus.
  170. dt: float
  171. Sampling interval of stimulus and resolution of the binary spike train.
  172. nfft: int
  173. Number of samples used for each Fourier transformation.
  174. nmax: int
  175. Maximum number of FFT segments to be used. If 0, use all segments.
  176. Returns
  177. -------
  178. freqs: ndarray of float
  179. The frequencies corresponding to the spectra.
  180. pss: ndarray of float
  181. Power spectral density of the stimulus in unit [s]^2/Hz.
  182. prr: ndarray of float
  183. Power spectral density of the response averaged over segments
  184. in unit Hz^2/Hz = Hz.
  185. prs: ndarray of complex
  186. Cross spectrum between stimulus and response averaged over segments
  187. in unit Hz[s]/Hz = [s].
  188. prss: ndarray of complex
  189. Cross bispectrum between stimulus and response averaged
  190. over segments in unit [s]^2/Hz.
  191. n: int
  192. Number of FFT segments used.
  193. """
  194. freqs = np.fft.fftfreq(nfft, dt)
  195. freqs = np.fft.fftshift(freqs)
  196. f0 = np.argmin(np.abs(freqs)) # index of zero frequency
  197. fidx = np.arange(len(freqs))
  198. fsum_idx = fidx.reshape(-1, 1) + fidx.reshape(1, -1) - f0
  199. fsum_idx[fsum_idx < 0] = 0
  200. fsum_idx[fsum_idx >= len(fidx)] = len(fidx) - 1
  201. f0 = len(freqs)//4
  202. f1 = 3*len(freqs)//4
  203. segments = range(0, len(stimulus) - nfft, nfft)
  204. # stimulus:
  205. p_ss = np.zeros(len(freqs))
  206. fourier_s = np.zeros((len(segments), len(freqs)), complex)
  207. n = 0
  208. for j, k in enumerate(segments):
  209. fourier_s[j] = np.fft.fft(stimulus[k:k + nfft], n=nfft)
  210. fourier_s[j] = np.fft.fftshift(fourier_s[j])
  211. p_ss += np.abs(fourier_s[j]*np.conj(fourier_s[j]))
  212. n += 1
  213. if nmax > 0 and n >= nmax:
  214. break
  215. scale = dt/nfft/n
  216. p_ss *= scale
  217. # response spectra:
  218. time = np.arange(len(stimulus))*dt
  219. p_rr = np.zeros(len(freqs))
  220. p_rs = np.zeros(len(freqs), complex)
  221. p_rss = np.zeros((len(freqs), len(freqs)), complex)
  222. n = 0
  223. for i, spiket in enumerate(spikes):
  224. b, _ = np.histogram(spiket, time)
  225. b = b / dt
  226. for j, k in enumerate(segments):
  227. # stimulus:
  228. fourier_s1 = fourier_s[j].reshape(len(fourier_s[j]), 1)
  229. fourier_s2 = fourier_s[j].reshape(1, len(fourier_s[j]))
  230. fourier_s12 = np.conj(fourier_s1)*np.conj(fourier_s2)
  231. # response:
  232. fourier_r = np.fft.fft(b[k:k + nfft] - np.mean(b), n=nfft)
  233. fourier_r = np.fft.fftshift(fourier_r)
  234. p_rr += np.abs(fourier_r*np.conj(fourier_r))
  235. p_rs += np.conj(fourier_s[j])*fourier_r
  236. p_rss += fourier_s12*fourier_r[fsum_idx]
  237. n += 1
  238. if nmax > 0 and n >= nmax:
  239. break
  240. if nmax > 0 and n >= nmax:
  241. break
  242. scale = dt/nfft/n
  243. freqs = freqs[f0:f1]
  244. p_ss = p_ss[f0:f1]
  245. p_rr = p_rr[f0:f1]*scale
  246. p_rs = p_rs[f0:f1]*scale
  247. p_rss = p_rss[f0:f1, f0:f1]*dt*scale
  248. return freqs, p_ss, p_rr, p_rs, p_rss, n
  249. def diag_projection(freqs, chi2, fmax):
  250. """ Projection of the chi2 matrix onto its diagonal.
  251. Adapted from https://stackoverflow.com/questions/71362928/average-values-over-all-offset-diagonals
  252. Parameters
  253. ----------
  254. freqs: ndarray of float
  255. Frequencies of the chi2 matrix.
  256. chi2: 2-D ndarray of float
  257. Second-order susceptibility matrix.
  258. fmax: float
  259. Maximum frequency for the projection.
  260. Returns
  261. -------
  262. dfreqs: ndarray of float
  263. Frequencies of the projection.
  264. diagp: ndarray of float
  265. Projections of the chi2 matrix onto its diagonal.
  266. That is, averages over the anti-diagonals.
  267. """
  268. i0 = np.argmin(freqs < 0)
  269. i1 = np.argmax(freqs > fmax)
  270. if i1 == 0:
  271. i1 = len(freqs)
  272. chi2 = chi2[i0:i1, i0:i1]
  273. n = chi2.shape[0]
  274. diagp = np.zeros(n*2-1, dtype=float)
  275. for i in range(n):
  276. diagp[i:i + n] += chi2[i]
  277. diagp[0:n] /= np.arange(1, n+1, 1, dtype=float)
  278. diagp[n:] /= np.arange(n-1, 0, -1, dtype=float)
  279. dfreqs = np.arange(len(diagp))*(freqs[i0 + 1] - freqs[i0]) + freqs[i0]
  280. return dfreqs, diagp
  281. def hor_projection(freqs, chi2, fmax):
  282. """ Horizontal projection of the chi2 matrix.
  283. Parameters
  284. ----------
  285. freqs: ndarray of float
  286. Frequencies of the chi2 matrix.
  287. chi2: 2-D ndarray of float
  288. Second-order susceptibility matrix.
  289. fmax: float
  290. Maximum frequency for the projection.
  291. Returns
  292. -------
  293. hfreqs: ndarray of float
  294. Frequencies of the projection.
  295. horp: ndarray of float
  296. Projections of the chi2 matrix onto its x-axis.
  297. That is, averages over columns.
  298. """
  299. i0 = np.argmin(freqs < 0)
  300. i1 = np.argmax(freqs > fmax)
  301. if i1 == 0:
  302. i1 = len(freqs)
  303. hfreqs = freqs[i0:i1]
  304. chi2 = chi2[i0:i1, i0:i1]
  305. horp = np.mean(chi2, 1)
  306. return hfreqs, horp
  307. def peak_size(freqs, spectrum, ftarget, median=True,
  308. searchwin=50, distance=10, averagewin=10):
  309. """Normalized and relative size of a peak expected around a specific frequency.
  310. The peak is searched within `searchwin` Hz around the target
  311. frequency. As a baseline amplitude of the spectrum either the
  312. averaged values of the spectrum within `averagewin` Hz at a
  313. distance of `distance` Hz to the left and right of the found
  314. peak frequency (`median` is `False`, default), or the median of
  315. the whole spectrum is taken (`median` is `True`).
  316. Parameters
  317. ----------
  318. freqs: ndarray of float
  319. Frequencies of the spectrum.
  320. spectrum: ndarray of float
  321. Some spectrum. Or a projection of the chi2 matrix.
  322. ftarget: float
  323. The frequency where a peak is expected in the spectrum.
  324. median: bool
  325. If True, normalize the peak height by the median of the spectrum.
  326. Otherwise (default), normalize by averaged values of the spectrum
  327. close to the `peak frequency.
  328. searchwin: float
  329. Search for the largest peak in the spectrum at `ftarget` plus and
  330. minus `searchwin` Hertz.
  331. distance: float
  332. The windows for estimating the baseline around the peak start
  333. `distance` Hertz to the left and right of the found peak.
  334. averagewin: float
  335. For estimating the baseline around the peak, an average is taken in two
  336. `averagewin` Hertz wide windows that are located `distance`
  337. Hertz to the left and right of the detected peak.
  338. Returns
  339. -------
  340. peak_norm: float
  341. The height of the peak close to `ftarget` normalized to the
  342. baseline around the peak.
  343. peak_rel: float
  344. The height of the peak close to `ftarget` relative to the
  345. baseline around the peak.
  346. peak_freq: float
  347. The frequency of the detected peak.
  348. """
  349. mask = (freqs > ftarget - searchwin) & (freqs < ftarget + searchwin)
  350. snippet = spectrum[mask]
  351. if len(snippet) == 0:
  352. return np.nan, np.nan, np.nan
  353. peak = np.max(snippet)
  354. fpeak = freqs[np.argmax(snippet) + np.argmax(mask)]
  355. bleft = np.nan
  356. bright = np.nan
  357. baseline = np.nan
  358. if median:
  359. baseline = np.median(spectrum)
  360. else:
  361. mask = (freqs >= fpeak - distance - averagewin) & \
  362. (freqs <= fpeak - distance)
  363. bleft = np.mean(spectrum[mask]) if np.sum(mask) > 0 else np.nan
  364. mask = (freqs >= fpeak + distance) & \
  365. (freqs <= fpeak + distance + averagewin)
  366. bright = np.mean(spectrum[mask]) if np.sum(mask) > 0 else np.nan
  367. if np.isfinite(bleft) and np.isfinite(bright):
  368. baseline = 0.5*(bleft + bright)
  369. elif np.isfinite(bleft):
  370. baseline = bleft
  371. elif np.isfinite(bright):
  372. baseline = bright
  373. else:
  374. baseline = np.nan
  375. if np.isnan(baseline):
  376. return np.nan, np.nan, np.nan
  377. peak_norm = peak/baseline
  378. peak_rel = peak - baseline
  379. return peak_norm, peak_rel, fpeak

spectral.py at commit 08b9dbd, under GPL-3.0 · at the source

Overview

  1. Neuroethology, University of Tübingen,Auf der Morgenstelle 28, 72076 Tübingen, Germany
  2. Physics Department, Humboldt University Berlin,Newtonstr. 15, 12489 Berlin, Germany
  3. Bernstein Center for Computational Neuroscience Berlin,Philippstr. 13, Haus 2, 10115 Berlin, Germany
  4. Bernstein Center for Computational Neuroscience Tübingen,Maria-von-Linden-Straße 6, 72076 Tübingen, Germany
Journal: Biological cybernetics, volume 120, issue 5-6, article 35
Dates: received 14 April 2026; accepted 27 August 2026; published online 17 September 2026; in print 2026
Type: Research article · Language: English
License: CC BY
Identifiers: DOI 10.1007/s00422-026-01063-3 · PMID 42749854 · PMCID PMC13582337 · OpenAlex W7213424585
Open access: hybrid, a free copy (OpenAlex)
Status: code verified
Categories: none (in silico) (organism), computational (subfield)
Methods: Spectral & time-frequency, Connectivity, Single-unit activity, calcium imaging
Keywords: Spiking neurons, LIF model, Encoding, Bandwidth, Coherence
MeSH: Action Potentials*, Models, Neurological*, Neurons*, Animals, Computer Simulation (* major topic)
Topic: Fish biology, ecology, and behavior (Nature and Landscape Conservation, Environmental Science), according to OpenAlex
Funding: Deutsche Forschungsgemeinschaft (430157666)
Citations: not cited yet (Europe PMC); 67 references in the paper

Abstract

Sensory information is often processed by populations of neurons that vary with respect to their levels of spiking activity. It appears plausible that neurons that fire more often are capable of following faster changes in the input signal than those with lower firing rates. In this study, we test this intuitive assumption by systematically investigating how the spiking activity of a neuron affects information transmission. To this end, we employ the coherence function as a spectral measure of information transmission and study the relation between the width of the coherence function, which we call coding bandwidth, and the firing rate. The reexamination of experimental data from a previous study on weakly-electric fish and the simulation of biologically inspired neuron models fitted to real neurons reveal indeed a significant correlation between firing rate and coding bandwidth. In addition, known analytical expressions for the coherence function for the stochastic leaky integrate-and-fire model demonstrate a linear relation for high firing rates. However, in contrast to intuition, the width of the coherence function becomes independent of the firing rate and is completely set by the membrane time constant for very low firing rates.

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

bendalab/punitmodel

License: GPL-3.0
State: the link answers, verified on 26 September 2026
Evidence: files inventoried
Commit: 08b9dbdc12f0cac6bb6cd1b6af84d51c7e333667, 24 September 2025
Languages: Python (9)
Size: 245 files, 9 scripts
Software Heritage: not archived
Found in: the text, “Fitting process”
Holds: README, license file, documentation
Not found: CITATION.cff, environment file, tests, continuous integration
Tools: NumPy (9 files), Matplotlib (4 files), SciPy (4 files), pandas (2 files), Numba (1 file)
Availability: 1 check, the latest on 26 September 2026: the link answers
  • 26 September 2026: the link answers
11 files

doi.gin.g-node.org/10.12751/g-node.5b08du

License: none: the authors keep all their rights
State: the link answers, verified on 26 September 2026
Evidence: the link answers
Software Heritage: not checked
Found in: “Data Availability”
Not found: README, license file, CITATION.cff, environment file, tests, continuous integration, documentation
Availability: 1 check, the latest on 26 September 2026: the link answers (HTTP 200)
  • 26 September 2026: the link answers (HTTP 200)

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;
  • 9 scripts, each with its path and the digest of its content;
  • 10 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 used experimental data is available under the following DOI: https://doi.gin.g-node.org/10.12751/g-node.5b08du Analysis code is available 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 3, 28 September 2026

  • Publisher: — → Springer Science+Business Media

Version 1, 27 September 2026: the first record

Recorded: type, language, journal, volume, issue, pages, dates, 5 authors, 5 keywords, 5 MeSH terms, 1 funder, 58 references.

Cite

This paper

Wendt, A., Klett, K., Benda, J., Lindner, B., & Grewe, J. (2026). Increased firing rates monotonically expand neuronal coding bandwidth. Biological cybernetics, 120(5-6), 35. https://doi.org/10.1007/s00422-026-01063-3

BibTeX

@article{wendt2026increased,
author = {Wendt, Alexander and Klett, Kolja and Benda, Jan and Lindner, Benjamin and Grewe, Jan},
title = {{Increased firing rates monotonically expand neuronal coding bandwidth}},
journal = {Biological cybernetics},
year = {2026},
month = sep,
volume = {120},
number = {5-6},
pages = {35},
publisher = {Springer Science+Business Media},
issn = {0340-1200},
doi = {10.1007/s00422-026-01063-3},
url = {https://doi.org/10.1007/s00422-026-01063-3},
pmid = {42749854},
pmcid = {PMC13582337}
}

RIS

TY - JOUR
AU - Wendt, Alexander
AU - Klett, Kolja
AU - Benda, Jan
AU - Lindner, Benjamin
AU - Grewe, Jan
TI - Increased firing rates monotonically expand neuronal coding bandwidth
T2 - Biological cybernetics
J2 - Biol Cybern
PY - 2026
DA - 2026/09/17
VL - 120
IS - 5-6
SP - 35
SN - 0340-1200
PB - Springer Science+Business Media
DO - 10.1007/s00422-026-01063-3
UR - https://doi.org/10.1007/s00422-026-01063-3
LA - en
ER -

CSL-JSON

{
"id": "10.1007/s00422-026-01063-3",
"type": "article-journal",
"title": "Increased firing rates monotonically expand neuronal coding bandwidth",
"container-title": "Biological cybernetics",
"author": [
{
"family": "Wendt",
"given": "Alexander"
},
{
"family": "Klett",
"given": "Kolja"
},
{
"family": "Benda",
"given": "Jan"
},
{
"family": "Lindner",
"given": "Benjamin"
},
{
"family": "Grewe",
"given": "Jan"
}
],
"container-title-short": "Biol Cybern",
"volume": "120",
"issue": "5-6",
"page": "35",
"DOI": "10.1007/s00422-026-01063-3",
"PMID": "42749854",
"PMCID": "PMC13582337",
"ISSN": "0340-1200",
"publisher": "Springer Science+Business Media",
"URL": "https://doi.org/10.1007/s00422-026-01063-3",
"language": "en",
"issued": {
"date-parts": [
[
2026,
9,
17
]
]
}
}

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.0357-25.2026 [code]
Spike Generation in Electroreceptor Afferents Introduces Additional Spectral Response Components by Weakly Nonlinear Interactions.
Journal: eNeuro
In common: Numba, pandas, SciPy, 2 other tools, 15 references, 3 authors
[2] doi:10.3389/fncom.2026.1813959 [code]
Coherent-resonant netting: disorder-enhanced selectivity from transient wave-like dynamics on biological connectomes.
Journal: Frontiers in computational neuroscience
In common: pandas, SciPy, Matplotlib, 1 other tool, 3 references
[3] doi:10.1126/sciadv.aed4172 [code]
Locomotion optimizes sensory representations through a computational principle shared by rodents and primates.
Journal: Science advances
In common: Numba, pandas, SciPy, 2 other tools, 2 references
[4] doi:10.1371/journal.pone.0348018
Spatial coding of conspecifics in the electrosensory system: Early segregation of information streams.
Journal: PloS one
In common: 4 references
[5] doi:10.1038/s41467-026-74460-8 [code]
Spike-based alignment learning solves the weight transport problem.
Journal: Nature communications
In common: Numba, pandas, SciPy, 2 other tools, 1 reference
[6] doi:10.1038/s41467-026-75347-4 [code]
Sleep reveals dynamics integrating and segregating movement and stimulus representations in V1.
Journal: Nature communications
In common: Numba, pandas, SciPy, 2 other tools, 1 reference
[7] doi:10.1371/journal.pone.0348005 [code]
THOI: An efficient and accessible library for computing higher-order interactions enhanced by batch-processing.
Journal: PloS one
In common: pandas, SciPy, Matplotlib, 1 other tool, 2 references
[8] doi:10.3389/fnsys.2026.1822122 [code]
Convergence-divergence circuits for multimodal integration of innate and learned opponent valences.
Journal: Frontiers in systems neuroscience
In common: Numba, pandas, SciPy, 2 other tools, 1 reference
[9] doi:10.1016/j.patter.2026.101619 [code]
Sampling bias corrections for discrete and Gaussian partial information decompositions.
Journal: Patterns (New York, N.Y.)
In common: pandas, SciPy, Matplotlib, 1 other tool, 2 references
[10] doi:10.1371/journal.pcbi.1014378 [code]
A mean-field model of neural networks with PV and SOM interneurons reveals connectivity-based mechanisms of gamma oscillations.
Journal: PLoS computational biology
In common: SciPy, Matplotlib, NumPy, none (in silico), computational, 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.