Spike Generation in Electroreceptor Afferents Introduces Additional Spectral Response Components by Weakly Nonlinear Interactions.
The 12 matches
- [1] § Materials and Methods › Stimulation ↔ profiles/spectral.py, lines 21–72 · score 0.85 · Fourier domain, cutoff frequency, white noise stimuli, band limited, standard deviation, inverse
- [2] § Materials and Methods › LIF models for P-units ↔ profiles/spectral.py, lines 21–72 · score 0.75 · Fourier domain, band limited white, standard deviation, noise stimulus, inverse
- [3] § Materials and Methods › Data analysis › Spectral analysis ↔ profiles/spectral.py, lines 160–283 · score 0.69 · power spectral density, Fourier transforms, FFT segments, spectrum, stimulus
- [4] § Materials and Methods › Data analysis › Spectral analysis ↔ profiles/spectral.py, lines 103–157 · score 0.66 · cross spectrum, transfer function, spike trains, power spectrum, Spectral, susceptibility
- [5] § Materials and Methods › Data analysis › White-noise analysis ↔ profiles/spectral.py, lines 75–100 · score 0.65 · Gaussian kernels, spike train, standard deviation, convolved, firing rate
- [6] § Materials and Methods › Identification of P-units and ampullary cells ↔ profiles/baseline.py, lines 18–56 · score 0.63 · interspike intervals, baseline activity, baseline firing rate, variation, coefficient, ISIs
- [7] § Materials and Methods › Data analysis › White-noise analysis ↔ profiles/baseline.py, lines 18–56 · score 0.62 · Gaussian kernels, standard deviation, baseline firing rate, variation, activity, spike
- [8] § Materials and Methods › LIF models for P-units ↔ profiles/punitprofiles.py, lines 198–249 · score 0.58 · serial correlation, vector strength, lag, ISIs, CV, EOD
- [9] § Materials and Methods › Identification of P-units and ampullary cells ↔ profiles/punitprofiles.py, lines 198–249 · score 0.57 · serial correlation, vector strengths, phase, ISIs, CV, EOD
- [10] § Materials and Methods › Data analysis › Spectral analysis ↔ profiles/spectral.py, lines 160–283 · score 0.56 · Fourier transform, binary, spectral, resolution, sum, FFTs
- [11] § Results › Ampullary afferents exhibit strong nonlinear interactions ↔ profiles/spectral.py, lines 1–18 · score 0.55 · band limited white, power spectrum, diagonals, firing rate, peaks, noise
- [12] § Results › Model-based estimation of the second-order susceptibility ↔ profiles/punitprofiles.py, lines 442–494 · score 0.52 · temporal resolution, fourier transform, spectra, model, stimulus
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 · 7 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
- Institute for Neurobiology, Eberhard Karls Universität Tübingen, Tübingen 72076, Germany
- Bernstein Center for Computational Neuroscience Berlin, Berlin 10115, Germany
- Department of Physics, Humboldt University Berlin, Berlin 12489, Germany
- Bernstein Center for Computational Neuroscience Tübingen, Tübingen 72076, Germany
Abstract
Spiking thresholds in neurons or rectification at synapses are essential for neuronal computations rendering neuronal processing inherently nonlinear. Nevertheless, linear response theory has been instrumental for understanding, for example, the impact of noise or neuronal synchrony on signal transmission, or the emergence of oscillatory activity, but is valid only at low stimulus amplitudes or large levels of intrinsic noise. At higher signal-to-noise ratios, however, nonlinear response components become relevant. Theoretical results for leaky integrate-and-fire neurons in the weakly nonlinear regime suggest strong responses at the sum of two input frequencies if one of these frequencies or their sum matches the neuron’s baseline firing rate. We here analyze nonlinear responses in two types of primary electroreceptor afferents, the P-units of the active and the ampullary cells of the passive electrosensory system of the wave-type electric fish Apteronotus leptorhynchus of either sex. In our combined experimental and modeling approach, we identify these predicted nonlinear responses in those 31 out of 172 P-units that are characterized by low intrinsic noise. In contrast, the majority (22 out of 30) ampullary cells show nonlinear responses. Our results provide experimental evidence for nonlinear responses of spike generators in the weakly nonlinear regime. We conclude that such nonlinear responses occur in any sensory neuron that operates in similar regimes, particularly at near-threshold stimulus conditions.
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 12 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
- profiles/
baseline.py , Python, 229 lines, 2 matches - profiles/
eods.py , Python, 112 lines - profiles/
punitprofiles.py , Python, 753 lines, 3 matches - profiles/
spectral.py , Python, 430 lines, 7 matches - LICENSE, License, 674 lines
- README.md, Text, 80 lines
doi:10.12751/g-node.4w8ebq
Availability: 1 check, the latest on 28 September 2026: the link answers (HTTP 200)
- 28 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;
- 12 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.
Code and data accessibility
The P-unit model parameters and spectral analysis algorithms are available at 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 1, 28 September 2026: the first record
Recorded: type, language, journal, volume, issue, pages, dates, 5 authors, 4 keywords, 10 MeSH terms, 1 funder, 73 references.
Cite
This paper
Barayeu, A., Schlungbaum, M., Lindner, B., Grewe, J., & Benda, J. (2026). Spike Generation in Electroreceptor Afferents Introduces Additional Spectral Response Components by Weakly Nonlinear Interactions. eNeuro, 13(5), ENEURO.0357-25.2026. https://
BibTeX
@article{barayeu2026spik
author = {Barayeu, Alexandra and Schlungbaum, Maria and Lindner, Benjamin and Grewe, Jan and Benda, Jan},
title = {{Spike Generation in Electroreceptor Afferents Introduces Additional Spectral Response Components by Weakly Nonlinear Interactions}},
journal = {eNeuro},
year = {2026},
month = may,
volume = {13},
number = {5},
pages = {ENEURO.0357--25.2026},
publisher = {Society for Neuroscience},
issn = {2373-2822},
doi = {10.1523/
url = {https://
pmid = {41922166},
pmcid = {PMC13150474}
}
RIS
TY - JOUR
AU - Barayeu, Alexandra
AU - Schlungbaum, Maria
AU - Lindner, Benjamin
AU - Grewe, Jan
AU - Benda, Jan
TI - Spike Generation in Electroreceptor Afferents Introduces Additional Spectral Response Components by Weakly Nonlinear Interactions
T2 - eNeuro
J2 - eNeuro
PY - 2026
DA - 2026/
VL - 13
IS - 5
SP - ENEURO.0357
EP - 25.2026
SN - 2373-2822
PB - Society for Neuroscience
DO - 10.1523/
UR - https://
LA - en
ER -
CSL-JSON
{
"id": "10.1523/
"type": "article-journal",
"title": "Spike Generation in Electroreceptor Afferents Introduces Additional Spectral Response Components by Weakly Nonlinear Interactions",
"container-title": "eNeuro",
"author": [
{
"family": "Barayeu",
"given": "Alexandra"
},
{
"family": "Schlungbaum",
"given": "Maria"
},
{
"family": "Lindner",
"given": "Benjamin"
},
{
"family": "Grewe",
"given": "Jan"
},
{
"family": "Benda",
"given": "Jan"
}
],
"container-title-short":
"volume": "13",
"issue": "5",
"page": "ENEURO.0357-25.2026",
"DOI": "10.1523/
"PMID": "41922166",
"PMCID": "PMC13150474",
"ISSN": "2373-2822",
"publisher": "Society for Neuroscience",
"URL": "https://
"language": "en",
"issued": {
"date-parts": [
[
2026,
5,
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.1007/s00422-026-01063-3 [code]
- Increased firing rates monotonically expand neuronal coding bandwidth.Journal: Biological cyberneticsIn common: Numba, pandas, SciPy, 2 other tools, 15 references, 3 authors
- [2] doi:10.1371/journal.pone.0348018
- Spatial coding of conspecifics in the electrosensory system: Early segregation of information streams.Journal: PloS oneIn common: 6 references
- [3] doi:10.1371/journal.pbio.3003856 [code]
- Aging and metabolism contribute separately to brain-body health.Journal: PLoS biologyIn common: pandas, SciPy, Matplotlib, 1 other tool, 3 references
- [4] doi:10.1007/s00422-026-01043-7
- Fluctuation-response relations for a two-stage population of spiking neurons stimulated by common noise.Journal: Biological cyberneticsIn common: 4 references
- [5] 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, cellular / molecular, 1 reference
- [6] doi:10.1371/journal.pcbi.1014157 [code]
- Modeling spatial contrast sensitivity in responses of primate retinal ganglion cells to natural movies.Journal: PLoS computational biologyIn common: Numba, pandas, SciPy, 1 other tool, 2 references
- [7] doi:10.1523/eneuro.0060-26.2026 [code]
- Spatial Adaptation of Primate Retinal Ganglion Cells Between Artificial and Natural Stimuli.Journal: eNeuroIn common: pandas, SciPy, Matplotlib, 1 other tool, 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 advancesIn common: pandas, SciPy, Matplotlib, 1 other tool, 2 references
- [9] doi:10.1371/journal.pcbi.1014532 [code]
- High reelin expression may explain why a subgroup of entorhinal cortex neurons functions as an initial nucleation site of Alzheimer's disease.Journal: PLoS computational biologyIn common: Numba, pandas, SciPy, 2 other tools, 1 reference
- [10] doi:10.1371/journal.pcbi.1014571 [code]
- SynAPSeg: A novel dataset and image analysis framework for deep learning-based synapse detection and quantification.Journal: PLoS computational biologyIn common: Numba, pandas, SciPy, 2 other tools, 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 12 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:1ad4f617ed7db5eb…
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.
