Increased firing rates monotonically expand neuronal coding bandwidth.
The 10 matches
- [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] § 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] § 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] § 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] § 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] § 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] § 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] § 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] § Statistical measures, experimental data, and models ↔ profiles/spectral.py, lines 1–18 · score 0.53 · cross spectrum, power spectra, spectral, neuronal, stimulus
- [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
- """
- Spectral analysis of neuronal responses.
- ## Functions
- - `whitenoise()`: band-limited white noise.
- - `rate()`: firing rate computed by kernel convolution.
- - `spectra()`: stimulus- and response power spectra, and cross spectrum.
- - `susceptibilities()`: stimulus- and response spectra up to second order.
- - `diag_projection()`: projection of the chi2 matrix onto its diagonal.
- - `hor_projection()`: horizontal projection of the chi2 matrix.
- - `peak_size()`: normalized and relative size of a peak expected around a specific frequency.
- """
- import numpy as np
- from scipy.signal import welch, csd
- from scipy.stats import norm
- def whitenoise(cflow, cfup, dt, duration, rng=np.random.default_rng()):
- """Band-limited white noise.
- Generates white noise with a flat power spectrum between `cflow` and
- `cfup` Hertz, zero mean and unit standard deviation. Note, that in
- particular for short segments of the generated noise the mean and
- standard deviation of the returned noise can deviate from zero and
- one.
- Parameters
- ----------
- cflow: float
- Lower cutoff frequency in Hertz.
- cfup: float
- Upper cutoff frequency in Hertz.
- dt: float
- Time step of the resulting array in seconds.
- duration: float
- Total duration of the resulting array in seconds.
- Returns
- -------
- noise: 1-D array
- White noise.
- """
- # number of elements needed for the noise stimulus:
- n = int(np.ceil((duration+0.5*dt)/dt))
- # next power of two:
- nn = int(2**(np.ceil(np.log2(n))))
- # indices of frequencies with `cflow` and `cfup`:
- inx0 = int(np.round(dt*nn*cflow))
- inx1 = int(np.round(dt*nn*cfup))
- if inx0 < 0:
- inx0 = 0
- if inx1 >= nn/2:
- inx1 = nn/2
- # draw random numbers in Fourier domain:
- whitef = np.zeros((nn//2+1), dtype=complex)
- # zero and nyquist frequency must be real:
- if inx0 == 0:
- whitef[0] = 0
- inx0 = 1
- if inx1 >= nn//2:
- whitef[nn//2] = 1
- inx1 = nn//2-1
- phases = 2*np.pi*rng.random(size=inx1 - inx0 + 1)
- whitef[inx0:inx1+1] = np.cos(phases) + 1j*np.sin(phases)
- # inverse FFT:
- noise = np.real(np.fft.irfft(whitef))
- # scaling factor to ensure standard deviation of one:
- sigma = nn / np.sqrt(2*float(inx1 - inx0))
- return noise[:n]*sigma
- def rate(time, spikes, sigma):
- """ Firing rate computed by kernel convolution.
- Parameters
- ----------
- time: ndarray of float
- Times at which firing rate is evaluated.
- spikes: list of ndarray of float
- Spike times.
- sigma: float
- Width of the Gaussian kernel as a standard deviation.
- Returns
- -------
- rate: ndarray of float
- Firing rate of convolved spike trains averaged over trials.
- ratesd: ndarray of float
- Corresponding standard deviation.
- """
- kernel = norm.pdf(time[time < 8*sigma], loc=4*sigma, scale=sigma)
- rates = np.zeros((len(spikes), len(time)))
- xtime = np.append(time, time[-1] + time[1] - time[0])
- for i, spiket in enumerate(spikes):
- b, _ = np.histogram(spiket, xtime)
- rates[i] = np.convolve(b, kernel, 'same')
- return np.mean(rates, 0), np.std(rates, 0)
- def spectra(stimulus, spikes, dt, nfft):
- """Stimulus- and response power spectra, and cross spectrum.
- Compute the complex-valued transfer function (first-order
- susceptibility) and the stimulus-response coherence like this:
- ```
- freqs, pss, prr, prs = spectra(stimulus, spikes, dt, nfft)
- transfer = prs/pss
- coherence = np.abs(prs)**2/pss/prr
- ```
- The gain of the transfer function is the absolute value of the
- transfer function:
- ```
- gain = np.abs(prs)/pss
- ```
- Parameters
- ----------
- stimulus: ndarray of float
- Stimulus waveform with sampling interval 'dt'.
- spikes: list of ndarrays of float
- Spike times in response to the stimulus.
- dt: float
- Sampling interval of stimulus and resolution of the binary spike train.
- nfft: int
- Number of samples used for each Fourier transformation.
- Returns
- -------
- freqs: ndarray of float
- The frequencies corresponding to the spectra.
- pss: ndarray of float
- Power spectrum of the stimulus.
- prr: ndarray of float
- Power spectrum of the response averaged over trials.
- prs: ndarray of complex
- Cross spectrum between stimulus and response averaged over trials.
- """
- time = np.arange(len(stimulus))*dt
- freq, pss = welch(stimulus, fs=1/dt, nperseg=nfft, noverlap=nfft//2)
- prr = np.zeros((len(spikes), len(freq)))
- prs = np.zeros((len(spikes), len(freq)), dtype=complex)
- for i, spiket in enumerate(spikes):
- b, _ = np.histogram(spiket, time)
- b = b / dt
- f, rr = welch(b - np.mean(b), fs=1/dt, nperseg=nfft, noverlap=nfft//2)
- f, rs = csd(b - np.mean(b), stimulus,
- fs=1/dt, nperseg=nfft, noverlap=nfft//2)
- prr[i] = rr
- prs[i] = rs
- return freq, pss, np.mean(prr, 0), np.mean(prs, 0)
- def susceptibilities(stimulus, spikes, dt=0.0005, nfft=2**9, nmax=0):
- """Stimulus- and response spectra up to second order.
- Compute the complex-valued transfer function (first-order
- susceptibility) and the stimulus-response coherence like this:
- ```
- freqs, pss, prr, prs, prss, n = susceptibilities(stimulus, spikes, dt, nfft)
- transfer = prs/pss
- coherence = np.abs(prs)**2/pss/prr
- ```
- The gain of the transfer function is the absolute value of the
- transfer function and has the unit Hz/[s]:
- ```
- gain = np.abs(prs)/pss
- ```
- The complex-valued second-order susceptibility has the unit
- Hz/[ss] and can be computed like this:
- ```
- chi2 = prss*0.5/(pss.reshape(1, -1)*pss.reshape(-1, 1))
- ```
- The variance of the stimulus is the integral over the stimulus
- power spectral density `pss` (unit [s]^2/Hz):
- ```
- deltaf = freqs[1] - freqs[0] # same as 1/(dt*nfft)
- vars = np.sum(pss)*deltaf
- ```
- Likewise for the response.
- The response spectral density `prr` (in Hz^2/Hz = Hz) approaches
- the firing rate for large frequencies.
- Parameters
- ----------
- stimulus: ndarray of float
- Stimulus waveform with sampling interval 'dt'.
- spikes: list of ndarrays of float
- Spike times in response to the stimulus.
- dt: float
- Sampling interval of stimulus and resolution of the binary spike train.
- nfft: int
- Number of samples used for each Fourier transformation.
- nmax: int
- Maximum number of FFT segments to be used. If 0, use all segments.
- Returns
- -------
- freqs: ndarray of float
- The frequencies corresponding to the spectra.
- pss: ndarray of float
- Power spectral density of the stimulus in unit [s]^2/Hz.
- prr: ndarray of float
- Power spectral density of the response averaged over segments
- in unit Hz^2/Hz = Hz.
- prs: ndarray of complex
- Cross spectrum between stimulus and response averaged over segments
- in unit Hz[s]/Hz = [s].
- prss: ndarray of complex
- Cross bispectrum between stimulus and response averaged
- over segments in unit [s]^2/Hz.
- n: int
- Number of FFT segments used.
- """
- freqs = np.fft.fftfreq(nfft, dt)
- freqs = np.fft.fftshift(freqs)
- f0 = np.argmin(np.abs(freqs)) # index of zero frequency
- fidx = np.arange(len(freqs))
- fsum_idx = fidx.reshape(-1, 1) + fidx.reshape(1, -1) - f0
- fsum_idx[fsum_idx < 0] = 0
- fsum_idx[fsum_idx >= len(fidx)] = len(fidx) - 1
- f0 = len(freqs)//4
- f1 = 3*len(freqs)//4
- segments = range(0, len(stimulus) - nfft, nfft)
- # stimulus:
- p_ss = np.zeros(len(freqs))
- fourier_s = np.zeros((len(segments), len(freqs)), complex)
- n = 0
- for j, k in enumerate(segments):
- fourier_s[j] = np.fft.fft(stimulus[k:k + nfft], n=nfft)
- fourier_s[j] = np.fft.fftshift(fourier_s[j])
- p_ss += np.abs(fourier_s[j]*np.conj(fourier_s[j]))
- n += 1
- if nmax > 0 and n >= nmax:
- break
- scale = dt/nfft/n
- p_ss *= scale
- # response spectra:
- time = np.arange(len(stimulus))*dt
- p_rr = np.zeros(len(freqs))
- p_rs = np.zeros(len(freqs), complex)
- p_rss = np.zeros((len(freqs), len(freqs)), complex)
- n = 0
- for i, spiket in enumerate(spikes):
- b, _ = np.histogram(spiket, time)
- b = b / dt
- for j, k in enumerate(segments):
- # stimulus:
- fourier_s1 = fourier_s[j].reshape(len(fourier_s[j]), 1)
- fourier_s2 = fourier_s[j].reshape(1, len(fourier_s[j]))
- fourier_s12 = np.conj(fourier_s1)*np.conj(fourier_s2)
- # response:
- fourier_r = np.fft.fft(b[k:k + nfft] - np.mean(b), n=nfft)
- fourier_r = np.fft.fftshift(fourier_r)
- p_rr += np.abs(fourier_r*np.conj(fourier_r))
- p_rs += np.conj(fourier_s[j])*fourier_r
- p_rss += fourier_s12*fourier_r[fsum_idx]
- n += 1
- if nmax > 0 and n >= nmax:
- break
- if nmax > 0 and n >= nmax:
- break
- scale = dt/nfft/n
- freqs = freqs[f0:f1]
- p_ss = p_ss[f0:f1]
- p_rr = p_rr[f0:f1]*scale
- p_rs = p_rs[f0:f1]*scale
- p_rss = p_rss[f0:f1, f0:f1]*dt*scale
- return freqs, p_ss, p_rr, p_rs, p_rss, n
- def diag_projection(freqs, chi2, fmax):
- """ Projection of the chi2 matrix onto its diagonal.
- Adapted from https://stackoverflow.com/questions/71362928/average-values-over-all-offset-diagonals
- Parameters
- ----------
- freqs: ndarray of float
- Frequencies of the chi2 matrix.
- chi2: 2-D ndarray of float
- Second-order susceptibility matrix.
- fmax: float
- Maximum frequency for the projection.
- Returns
- -------
- dfreqs: ndarray of float
- Frequencies of the projection.
- diagp: ndarray of float
- Projections of the chi2 matrix onto its diagonal.
- That is, averages over the anti-diagonals.
- """
- i0 = np.argmin(freqs < 0)
- i1 = np.argmax(freqs > fmax)
- if i1 == 0:
- i1 = len(freqs)
- chi2 = chi2[i0:i1, i0:i1]
- n = chi2.shape[0]
- diagp = np.zeros(n*2-1, dtype=float)
- for i in range(n):
- diagp[i:i + n] += chi2[i]
- diagp[0:n] /= np.arange(1, n+1, 1, dtype=float)
- diagp[n:] /= np.arange(n-1, 0, -1, dtype=float)
- dfreqs = np.arange(len(diagp))*(freqs[i0 + 1] - freqs[i0]) + freqs[i0]
- return dfreqs, diagp
- def hor_projection(freqs, chi2, fmax):
- """ Horizontal projection of the chi2 matrix.
- Parameters
- ----------
- freqs: ndarray of float
- Frequencies of the chi2 matrix.
- chi2: 2-D ndarray of float
- Second-order susceptibility matrix.
- fmax: float
- Maximum frequency for the projection.
- Returns
- -------
- hfreqs: ndarray of float
- Frequencies of the projection.
- horp: ndarray of float
- Projections of the chi2 matrix onto its x-axis.
- That is, averages over columns.
- """
- i0 = np.argmin(freqs < 0)
- i1 = np.argmax(freqs > fmax)
- if i1 == 0:
- i1 = len(freqs)
- hfreqs = freqs[i0:i1]
- chi2 = chi2[i0:i1, i0:i1]
- horp = np.mean(chi2, 1)
- return hfreqs, horp
- def peak_size(freqs, spectrum, ftarget, median=True,
- searchwin=50, distance=10, averagewin=10):
- """Normalized and relative size of a peak expected around a specific frequency.
- The peak is searched within `searchwin` Hz around the target
- frequency. As a baseline amplitude of the spectrum either the
- averaged values of the spectrum within `averagewin` Hz at a
- distance of `distance` Hz to the left and right of the found
- peak frequency (`median` is `False`, default), or the median of
- the whole spectrum is taken (`median` is `True`).
- Parameters
- ----------
- freqs: ndarray of float
- Frequencies of the spectrum.
- spectrum: ndarray of float
- Some spectrum. Or a projection of the chi2 matrix.
- ftarget: float
- The frequency where a peak is expected in the spectrum.
- median: bool
- If True, normalize the peak height by the median of the spectrum.
- Otherwise (default), normalize by averaged values of the spectrum
- close to the `peak frequency.
- searchwin: float
- Search for the largest peak in the spectrum at `ftarget` plus and
- minus `searchwin` Hertz.
- distance: float
- The windows for estimating the baseline around the peak start
- `distance` Hertz to the left and right of the found peak.
- averagewin: float
- For estimating the baseline around the peak, an average is taken in two
- `averagewin` Hertz wide windows that are located `distance`
- Hertz to the left and right of the detected peak.
- Returns
- -------
- peak_norm: float
- The height of the peak close to `ftarget` normalized to the
- baseline around the peak.
- peak_rel: float
- The height of the peak close to `ftarget` relative to the
- baseline around the peak.
- peak_freq: float
- The frequency of the detected peak.
- """
- mask = (freqs > ftarget - searchwin) & (freqs < ftarget + searchwin)
- snippet = spectrum[mask]
- if len(snippet) == 0:
- return np.nan, np.nan, np.nan
- peak = np.max(snippet)
- fpeak = freqs[np.argmax(snippet) + np.argmax(mask)]
- bleft = np.nan
- bright = np.nan
- baseline = np.nan
- if median:
- baseline = np.median(spectrum)
- else:
- mask = (freqs >= fpeak - distance - averagewin) & \
- (freqs <= fpeak - distance)
- bleft = np.mean(spectrum[mask]) if np.sum(mask) > 0 else np.nan
- mask = (freqs >= fpeak + distance) & \
- (freqs <= fpeak + distance + averagewin)
- bright = np.mean(spectrum[mask]) if np.sum(mask) > 0 else np.nan
- if np.isfinite(bleft) and np.isfinite(bright):
- baseline = 0.5*(bleft + bright)
- elif np.isfinite(bleft):
- baseline = bleft
- elif np.isfinite(bright):
- baseline = bright
- else:
- baseline = np.nan
- if np.isnan(baseline):
- return np.nan, np.nan, np.nan
- peak_norm = peak/baseline
- peak_rel = peak - baseline
- return peak_norm, peak_rel, fpeak
spectral.py at commit 08b9dbd, under GPL-3.0 · at the source
Overview
- Neuroethology, University of Tübingen,Auf der Morgenstelle 28, 72076 Tübingen, Germany
- Physics Department, Humboldt University Berlin,Newtonstr. 15, 12489 Berlin, Germany
- Bernstein Center for Computational Neuroscience Berlin,Philippstr. 13, Haus 2, 10115 Berlin, Germany
- Bernstein Center for Computational Neuroscience Tübingen,Maria-von-Linden-Straße 6, 72076 Tübingen, Germany
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
08b9dbdc12f0cac6bb6cd1b6af84d51c7e333667, 24 September 2025Availability: 1 check, the latest on 26 September 2026: the link answers
- 26 September 2026: the link answers
11 files
- celldata/
extractbaseeods.py — Python, 91 lines - collectmetadata.py — Python, 26 lines
- docs/
parameter_distribution.p — Python, 68 linesy - main.py — Python, 93 lines
- model.py — Python, 101 lines, 1 match
- profiles/
baseline.py — Python, 229 lines, 3 matches - profiles/
eods.py — Python, 112 lines - profiles/
punitprofiles.py — Python, 753 lines, 2 matches - profiles/
spectral.py — Python, 430 lines, 4 matches - LICENSE — License, 674 lines
- README.md — Text, 80 lines
doi.gin.g-node.org/10.12751/g-node.5b08du
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://
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://
BibTeX
@article{wendt2026increa
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/
url = {https://
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/
VL - 120
IS - 5-6
SP - 35
SN - 0340-1200
PB - Springer Science+Business Media
DO - 10.1007/
UR - https://
LA - en
ER -
CSL-JSON
{
"id": "10.1007/
"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":
"volume": "120",
"issue": "5-6",
"page": "35",
"DOI": "10.1007/
"PMID": "42749854",
"PMCID": "PMC13582337",
"ISSN": "0340-1200",
"publisher": "Springer Science+Business Media",
"URL": "https://
"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: eNeuroIn 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 neuroscienceIn 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 advancesIn 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 oneIn common: 4 references
- [5] doi:10.1038/s41467-026-74460-8 [code]
- Spike-based alignment learning solves the weight transport problem.Journal: Nature communicationsIn 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 communicationsIn 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 oneIn 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 neuroscienceIn 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 biologyIn 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.
Claim this paper
Correct its record
Say what each link of this record is, remove the ones that are not the paper's, add the ones that are missing. The correction becomes a new version of the record, in its Versions section.
Validate its tracing map
You validate the map as this page shows it: 2 repositories of the authors' code, each at its verified commit and with its license, 9 scripts, and 10 matches between paragraphs and code (see the Code and Map sections). It then receives a DOI on Zenodo, with you (your ORCID iD) and OSCR as its creators; the code itself is not deposited.
The map's fingerprint: sha256:282de888843786f4…
Add the badge to its README
The badge links the code to this page. Copy one of these into the README of the paper's code: only you decide where it goes, and nothing is changed for you.
Markdown
[, paste the snippet at the top, then “Commit changes…” and, to review it first, “Create a new branch and start a pull request”. You open the pull request; OSCR asks for no permission.
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.
