Modeling spatial contrast sensitivity in responses of primate retinal ganglion cells to natural movies.
The 23 matches · 3 of them tie a paragraph to a whole file, not to given lines: weak matches, whose lines are not tinted
- [1] § Methods › Modeling › Subunit model. ↔ sc_model/scripts/run_compute_stc.py, lines 1–45 · score 0.81 · spike triggered covariance, stimulus features, spatially cropped, enclosed, absolute, eigenvalue
- [2] § Methods › Visual stimulation and basic cell characterizations › Estimation of receptive fields and stimulus filters. ↔ sc_model/utils/gaussian.py, lines 131–202 · score 0.73 · curve_fit, Gaussian function, Gaussian fit, ellipse, scipy, squares
- [3] § Methods › Visual stimulation and basic cell characterizations › Estimation of receptive fields and stimulus filters. ↔ sc_model/utils/receptive_fields.py, lines 35–69 · score 0.68 · median absolute deviation, selected pixels, receptive field, STA, spatiotemporal, filters
- [4] § Methods › Modeling › Linear-nonlinear (LN) model. ↔ sc_model/scripts/run_ln_model.py, lines 1–74 · score 0.64 · linear filter, activation function, LN model, temporal filter, spatial filter, white noise
- [5] § Methods › Modeling › Model fitting and evaluation. ↔ sc_model/utils/training.py, lines 147–211 · score 0.64 · subunit norms, subunit weights, functional subunits, subunit model, pruned, training
- [6] § Methods › Modeling › Model fitting and evaluation. ↔ sc_model/utils/minimization.py, lines 8–101 · score 0.64 · optimization algorithm, minimized, BFGS, scipy, bounds, argument
- [7] § Methods › Modeling › Subunit model. ↔ sc_model/utils/stc.py, lines 15–90 · score 0.63 · spike triggered covariance, absolute deviations, eigenvalue, STC, eigenvectors, filters
- [8] § Results › Predictive model with spatial-contrast sensitivity ↔ sc_model/utils/minimization.py, lines 104–135 · score 0.61 · Poisson spiking process, negative log likelihood, minimizing, SC model, nonlinearity
- [9] § Methods › Modeling › Subunit model. ↔ sc_model/models/subunit_model.py, lines 19–51 · score 0.60 · STC eigenvectors, subunit model, functional subunit, logical, threshold, weight
- [10] § Methods › Spatial smoothing and optimal scale of spatial integration ↔ sc_model/utils/convolutions.py, lines 115–234 · score 0.60 · gaussian_filter, convolved stimulus, standard deviations, SC model, smoothed, computation
- [11] § Methods › Modeling › Subunit model. ↔ sc_model/scripts/run_subunit_pipeline.py, lines 1–53 · score 0.60 · STC eigenvectors, functional subunit, subunit model, pruning, spatial filter, norm
- [12] § Methods › Modeling › Model fitting and evaluation. ↔ sc_model/utils/minimization.py, lines 8–101 · score 0.59 · negative log likelihood, spike trains, minimizing, activation, optimized, fitting
- [13] § Methods › Power spectrum analysis ↔ sc_model/utils/convolutions.py, lines 21–112 · score 0.59 · spatial dimensions, Stimulus smoothing, convolved stimulus, naturalistic movie, temporal filter, frames
- [14] § Results › Identifying spatial scales of stimulus integration with the SC model ↔ sc_model/utils/convolutions.py, lines 115–234 · score 0.58 · Gaussian filter, SC model, convolved stimulus, Imean, dimensional, smoothing
- [15] § Methods › Modeling › Model fitting and evaluation. ↔ sc_model/models/ln_model.py, lines 13–93 · score 0.58 · LN model, BFGS, scipy, minimized, bounds, scored
- [16] § Methods › Modeling › Model fitting and evaluation. ↔ sc_model/utils/training.py, lines 467–528 · score 0.57 · PyTorch, Adam, loss, epochs, log, batch
- [17] § Methods › Modeling › Subunit model. ↔ sc_model/models/logical_or_model.py, lines 18–129 · score 0.55 · STC eigenvectors, temporally convolved, logical, probabilistic, subunit, linearly
- [18] § Methods › Modeling › Model fitting and evaluation. ↔ postProcess/ccg.m, the whole file · a weak match · score 0.55 · Poisson process, spike train, probability, likelihood, binned
- [19] § Methods › Modeling › Subunit model. ↔ sc_model/models/subunit_model.py, lines 19–51 · score 0.54 · ReLU, subunit nonlinearity, softplus, weight, filter, model
- [20] § Methods › Electrophysiological recordings ↔ eMouse/make_eMouseData.m, the whole file · a weak match · score 0.53 · refractory period, Kilosort, clusters, signals, Spikes
- [21] § Methods › Electrophysiological recordings ↔ postProcess/find_merges.m, the whole file · a weak match · score 0.53 · refractory period violations, clusters, binned, Spikes
- [22] § Methods › Modeling › Linear-nonlinear (LN) model. ↔ sc_model/scripts/run_ln_model.py, lines 1–74 · score 0.51 · linear activation, LN model, spatial filter, receptive field, pixel, Gaussian
- [23] § Results › Cell-type-specific comparison of LN and SC models ↔ sc_model/models/ln_model.py, lines 13–93 · score 0.50 · ground truth, LN model, naturalistic movie, SC model, convolved, temporally
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 · 172 lines · 6.4 KB · MIT · 3 matches
- import numpy as np
- from scipy.optimize import (
- check_grad,
- minimize,
- )
- def fit_parameters_mle(
- input_signal,
- response_counts,
- fit_func,
- starter_params,
- method="L-BFGS-B",
- fit_func_der=None,
- bounds=None,
- check_gradient=False,
- options=None,
- ):
- """
- Fit parameters using maximum likelihood estimation (MLE) for Poisson spike trains.
- This function minimizes the negative log-likelihood function for Poisson spike trains
- using the provided fit function and its derivative. It uses the `scipy.optimize.minimize`
- function to perform the optimization.
- The function takes the input signal, response counts, fit function, initial parameters,
- and other optional parameters for the optimization. It returns the optimized parameters
- that minimize the negative log-likelihood function.
- :param input_signal:
- The input signal to the nonlinearity defined in the `fit-func` function.
- :param response_counts:
- The response counts that the output of the `fit-func` function should be fitted to.
- :param fit_func:
- The non-linear activation function to be used in the model.
- :param starter_params:
- The initial parameters for the optimization.
- :param method:
- The optimization method to be used. This argument is passed directly to
- `scipy.optimize.minimize`. Default is "L-BFGS-B".
- :param fit_func_der:
- The derivative of the non-linear activation function with respect to the parameters to be optimized.
- This function is used to compute the gradient of the negative log-likelihood function.
- If None, the gradient is not computed.
- :param bounds:
- The bounds for the parameters to be optimized.
- The bounds should be specified as a list of tuples, where each tuple contains the lower and upper
- bounds for each parameter. For example, [(0, 1), (0, None), (0, None)] specifies that the first
- parameter is bounded between 0 and 1, while the second and third parameters are unbounded.
- :param check_gradient:
- If True, the gradient of the negative log-likelihood function is checked using finite differences.
- This is useful for debugging and ensuring that the gradient is computed correctly.
- Default is False.
- :param options:
- Additional options for the optimization algorithm. This argument is passed directly to
- `scipy.optimize.minimize`. For example, you can specify the maximum number of iterations or
- the tolerance for convergence.
- :return:
- The optimized parameters that minimize the negative log-likelihood function.
- The output is a list of the fitted parameters.
- """
- loglike_fn = poisson_negative_log_likelihood
- if fit_func_der is not None:
- loglike_prime_fn = poisson_negative_log_likelihood_derivative
- else:
- loglike_prime_fn = None
- if check_gradient and loglike_prime_fn is not None:
- grads = []
- for i in range(10):
- grad_error = check_grad(
- loglike_fn,
- loglike_prime_fn,
- np.random.uniform(0, 1, len(starter_params)),
- fit_func,
- fit_func_der,
- input_signal,
- response_counts,
- )
- grads.append(grad_error)
- print(f"Gradient error: {np.mean(grads)} +- {np.std(grads)}")
- result = minimize(
- fun=loglike_fn,
- jac=loglike_prime_fn,
- x0=starter_params,
- args=(
- fit_func,
- fit_func_der,
- input_signal,
- response_counts,
- ),
- bounds=bounds,
- method=method,
- options=options
- )
- return result.x
- def poisson_negative_log_likelihood(
- function_parameters: list,
- *args,
- ):
- """
- General negative log-likelihood function for poisson spike trains.
- :param function_parameters:
- The parameters of the non-linear activation function.
- These parameters are passed to the nonlinear function.
- :param args:
- Other arguments for the negative log-likelihood function.
- These include the nonlinear function, its derivative, the input signal, and the response counts.
- :return:
- The negative log-likelihood value for the given parameters.
- This value is computed under the assumption of a Poisson spiking process.
- """
- function, function_derivative, input_signal, response_counts = args
- # for reference in this function:
- #
- # M is the size of `response counts`
- # shape of input signal: (..., M)
- # there are no requirements on the first dimension of the `input signal`
- # and this must be taken care of by the `function`
- #
- # function output shape: (M,)
- function_output = function(input_signal, function_parameters)
- sum_1 = function_output.sum()
- sum_2 = (response_counts * np.log(function_output)).sum()
- return (sum_1 - sum_2) / response_counts.sum()
- def poisson_negative_log_likelihood_derivative(
- function_parameters: list,
- *args,
- ):
- """
- First derivative of the negative log-likelihood function for poisson spike trains.
- :param function_parameters:
- The parameters of the non-linear activation function.
- These parameters are passed to the nonlinear function and its derivative.
- :param args:
- Other arguments for the negative log-likelihood function.
- These include the nonlinear function, its derivative, the input signal, and the response counts.
- :return:
- """
- function, function_derivative, input_signal, response_counts = args
- # for reference in this function:
- #
- # M is the size of `response counts`
- # N is the number of independent function parameters
- # shape of input signal: (..., M)
- # there are no requirements on the first dimension of the `input signal`
- # and this must be taken care of by the `function` and `function derivative`
- #
- # derivative output shape: (M, N)
- derivative_output = function_derivative(input_signal, function_parameters)
- # function output shape: (M,)
- function_output = function(input_signal, function_parameters)
- # sum_1 shape: (N,)
- sum_1 = derivative_output.sum(axis=0)
- # sum_2 shape: (N,)
- # (M,) @ (M, N)
- sum_2 = (response_counts / function_output) @ derivative_output
- return (sum_1 - sum_2) / response_counts.sum()
minimization.py at commit 76b7334, under MIT · at the source
Overview
- Department of Ophthalmology, University Medical Center Göttingen, Göttingen, Germany
- Bernstein Center for Computational Neuroscience Göttingen, Göttingen, Germany
- University of Göttingen, Institute of Computer Science and Campus Institute Data Science, Göttingen, Germany
- International Max Planck Research School for Neurosciences, Göttingen, Germany
- German Primate Center, Laboratory Animal Science Unit, Göttingen, Germany
- German Center for Cardiovascular Research, Partner Site Göttingen, Göttingen, Germany
- Max Planck Institute for Dynamics and Self-Organization, Göttingen, Germany
- Cluster of Excellence “Multiscale Bioimaging: from Molecular Machines to Networks of Excitable Cells“ (MBExC), University of Göttingen, Göttingen, Germany
- Else Kröner Fresenius Center for Optogenetic Therapies, University Medical Center Göttingen, Göttingen, Germany
Abstract
Retinal ganglion cells, the output neurons of the vertebrate retina, often display nonlinear summation of visual signals over their receptive fields. This creates sensitivity to spatial contrast, letting the cells respond to spatially structured visual stimuli even when no net change in overall illumination of the receptive field occurs. Yet, computational models of ganglion cell responses are often based on linear receptive fields, and typical nonlinear extensions, which separate receptive fields into nonlinearly combined subunits, are often cumbersome to fit to experimental data. Previous work has suggested to model spatial-contrast sensitivity in responses to flashed images by combining signals from the mean and variance of light intensity inside the receptive field. Here, we extend and adjust this spatial contrast model for application to spatiotemporal stimulation and explore its performance on spiking responses that we recorded from ganglion cells of marmosets under artificial and naturalistic movies. We show how the model can be fitted to experimental data and that it outperforms common models with linear spatial integration to different degrees for different types of ganglion cells. Finally, we use the model framework to infer the cells’ spatial scale of nonlinear spatial integration. Our work shows that the spatial contrast model can capture aspects of nonlinear spatial integration in the primate retina with only few free parameters. The model can be used to assess the cells’ functional properties under natural stimulation and provides a simple-to-obtain benchmark for comparison with more detailed nonlinear encoding models.
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 23 matches between paragraphs and lines of code.
gollischlab/SpatiotemporalSCModel
76b733421cc16131c2229e66a7714d8892de39d7, 30 January 2026Availability: 1 check, the latest on 29 September 2026: the link answers
- 29 September 2026: the link answers
25 files
- sc_model/
__init__.py , Python, 1 line - sc_model/
dataio/ , Python, 11 lines__init__.py - sc_model/
dataio/ , Python, 342 linesdataio.py - sc_model/
dataio/ , Python, 818 linesnatural_movie_loader.py - sc_model/
dataio/ , Python, 514 lineswhitenoise_loader.py - sc_model/
models/ , Python, 4 lines__init__.py - sc_model/
models/ , Python, 202 lines, 2 matchesln_model.py - sc_model/
models/ , Python, 129 lines, 1 matchlogical_or_model.py - sc_model/
models/ , Python, 212 linessc_model.py - sc_model/
models/ , Python, 171 lines, 2 matchessubunit_model.py - sc_model/
scripts/ , Python, 364 lines, 1 matchrun_compute_stc.py - sc_model/
scripts/ , Python, 187 lines, 2 matchesrun_ln_model.py - sc_model/
scripts/ , Python, 193 linesrun_sc_model.py - sc_model/
scripts/ , Python, 548 lines, 1 matchrun_subunit_pipeline.py - sc_model/
utils/ , Python, 15 lines__init__.py - sc_model/
utils/ , Python, 280 lines, 3 matchesconvolutions.py - sc_model/
utils/ , Python, 230 lines, 1 matchgaussian.py - sc_model/
utils/ , Python, 172 lines, 3 matchesminimization.py - sc_model/
utils/ , Python, 34 linesnonlinearities.py - sc_model/
utils/ , Python, 8 linesproject_variables.py - sc_model/
utils/ , Python, 220 lines, 1 matchreceptive_fields.py - sc_model/
utils/ , Python, 172 lines, 1 matchstc.py - sc_model/
utils/ , Python, 763 lines, 2 matchestraining.py - LICENSE, License, 21 lines
- README.md, Text, 160 lines
dimokaramanlis/KiloSortMEA
b7d54fe7068801f5a847e7119eb4b3dd414e9840, 31 July 2024Availability: 1 check, the latest on 29 September 2026: the link answers
- 29 September 2026: the link answers
110 files
- CUDA/
mexGPUall.m , MATLAB, 15 lines - CUDA/
mexMPmuFEAT.cu , CUDA, 426 lines - CUDA/
mexMPregMU.cu , CUDA, 322 lines - CUDA/
mexWtW2.cu , CUDA, 114 lines - batch_run_ks.m, MATLAB, 203 lines
- compare_results.m, MATLAB, 35 lines
- concatenateAndCleanBinar
ies.m , MATLAB, 59 lines - configFiles/
getKsOptionsMEA.m , MATLAB, 131 lines - configFiles/
getKsOptionsNP.m , MATLAB, 80 lines - configFiles/
hexaChannelMap.m , MATLAB, 43 lines - configFiles/
meaChannelMap.m , MATLAB, 56 lines - configFiles/
private/ , MATLAB, 67 linesStandardConfig_MOVEME.m - configFiles/
private/ , MATLAB, 76 linesTestConfig252MEA.m - configFiles/
private/ , MATLAB, 76 linesTestConfig60MEA.m - configFiles/
private/ , MATLAB, 78 linesTestConfig60MEAculture.m - configFiles/
private/ , MATLAB, 76 linesTestConfig60pMEA.m - configFiles/
private/ , MATLAB, 18 linescreate252ChannelMapFile. m - configFiles/
private/ , MATLAB, 46 linescreateChannelMapFile.m - configFiles/
updateOpsMEA.m , MATLAB, 60 lines - dataConversion/
convertMcdToRawBinary.m , MATLAB, 84 lines - dataConversion/
convertMsrdH5ToRawBinary , MATLAB, 95 lines.m - dataConversion/
convertOpenEphysToRawBIn , MATLAB, 71 linesary.m - dataConversion/
convertToKsRawBinary.m , MATLAB, 12 lines - dataConversion/
convertToRawBinary.m , MATLAB, 87 lines - dataConversion/
getChannelMapForRawBinar , MATLAB, 95 linesy.m - dataConversion/
getMCSdllPath.m , MATLAB, 16 lines - dataConversion/
neuroshare/ , C, 2,584 linesprivate/ main.c - dataConversion/
neuroshare/ , C, 40 linesprivate/ mexversion.c - dataConversion/
neuroshare/ , C, 732 linesprivate/ ns.c - dataConversion/
neuroshare/ , C/C++, 822 linesprivate/ ns.h - dataConversion/
neuroshare/ , C/C++, 329 linesprivate/ nsAPItypes.h - dataConversion/
test_new_conversion.m , MATLAB, 63 lines - eMouse/
benchmark_simulation.m , MATLAB, 57 lines - eMouse/
compareClustering2.m , MATLAB, 141 lines - eMouse/
config_eMouse.m , MATLAB, 65 lines - eMouse/
make_eMouseChannelMap.m , MATLAB, 47 lines - eMouse/
make_eMouseData.m , MATLAB, 110 lines, 1 match - eMouse/
master_eMouse.m , MATLAB, 66 lines - finalPass/
calculatePrincipalCompon , MATLAB, 79 linesents.m - finalPass/
combineAndSortFeaturesKS , MATLAB, 98 lines1.m - finalPass/
cpuMPmuFEAT.m , MATLAB, 79 lines - finalPass/
fullMPMU.m , MATLAB, 290 lines - finalPass/
fullMPMUNew.m , MATLAB, 250 lines - finalPass/
fullMPMUNew2.m , MATLAB, 297 lines - finalPass/
getWtW2.m , MATLAB, 23 lines - finalPass/
ksEventMarkers.m , MATLAB, 101 lines - finalPass/
rezToPhy.m , MATLAB, 126 lines - finalPass/
savePrincipalComponentsK , MATLAB, 61 linesS1.m - frametimeExtraction/
newframetimings.m , MATLAB, 117 lines - frametimeExtraction/
readFrametimes.m , MATLAB, 161 lines - frametimeExtraction/
readFrametimesNew.m , MATLAB, 120 lines - helperFunctions/
compareSpikeTemplates.m , MATLAB, 52 lines - helperFunctions/
findTempForEachClu.m , MATLAB, 20 lines - helperFunctions/
getWaveForms.m , MATLAB, 67 lines - helperFunctions/
loadKSdir.m , MATLAB, 94 lines - helperFunctions/
loadParamsPy.m , MATLAB, 44 lines - helperFunctions/
readClusterGroupsCSV.m , MATLAB, 25 lines - helperFunctions/
templatePositionsAmplitu , MATLAB, 76 linesdes.m - initialize/
merge_spikes0.m , MATLAB, 25 lines - initialize/
optimizePeaks.m , MATLAB, 137 lines - initialize/
reduce_clusters0.m , MATLAB, 31 lines - mainLoop/
alignW.m , MATLAB, 20 lines - mainLoop/
alignWU.m , MATLAB, 31 lines - mainLoop/
decompose_dWU.m , MATLAB, 38 lines - mainLoop/
distance_betwxt.m , MATLAB, 21 lines - mainLoop/
fitTemplates.m , MATLAB, 236 lines - mainLoop/
get_svds.m , MATLAB, 27 lines - mainLoop/
initialize_waves0.m , MATLAB, 77 lines - mainLoop/
initialize_waves1.m , MATLAB, 87 lines - mainLoop/
initialize_waves2.m , MATLAB, 43 lines - mainLoop/
merge_spikes_in.m , MATLAB, 35 lines - mainLoop/
merging_score.m , MATLAB, 24 lines - mainLoop/
mexMPregMUcpu.m , MATLAB, 49 lines - mainLoop/
pairwise_dists.m , MATLAB, 17 lines - mainLoop/
reduce_clusters.m , MATLAB, 35 lines - mainLoop/
replace_clusters.m , MATLAB, 91 lines - mainLoop/
split_clust.m , MATLAB, 78 lines - mainLoop/
update_params.m , MATLAB, 52 lines - mainLoop/
zeroOutKcoords.m , MATLAB, 39 lines - postProcess/
ccg.m , MATLAB, 86 lines, 1 match - postProcess/
find_merges.m , MATLAB, 99 lines, 1 match - postProcess/
merge_posthoc2.m , MATLAB, 122 lines - preProcess/
extractPCfromSnippets.m , MATLAB, 47 lines - preProcess/
getChannelMapForRawBinar , MATLAB, 95 linesy.m - preProcess/
get_PCproj.m , MATLAB, 24 lines - preProcess/
get_SpikeSample.m , MATLAB, 24 lines - preProcess/
get_good_channels.m , MATLAB, 92 lines - preProcess/
get_isolated.m , MATLAB, 29 lines - preProcess/
get_uproj.m , MATLAB, 56 lines - preProcess/
get_whitening_matrix.m , MATLAB, 91 lines - preProcess/
isolated_peaks.m , MATLAB, 12 lines - preProcess/
isolated_peaks_new.m , MATLAB, 25 lines - preProcess/
loadChanMap.m , MATLAB, 78 lines - preProcess/
preprocessData.m , MATLAB, 127 lines - preProcess/
whiteningLocal.m , MATLAB, 14 lines - run_ks_neuropixels.m, MATLAB, 64 lines
- utils/
ccg.m , MATLAB, 86 lines - utils/
gather_try.m , MATLAB, 6 lines - utils/
getOr.m , MATLAB, 26 lines - utils/
get_file_size.m , MATLAB, 16 lines - utils/
my_conv.m , MATLAB, 20 lines - utils/
my_conv2.m , MATLAB, 55 lines - utils/
my_inv.m , MATLAB, 7 lines - utils/
my_min.m , MATLAB, 39 lines - utils/
my_sum.m , MATLAB, 39 lines - utils/
normc.m , MATLAB, 3 lines - utils/
sq.m , MATLAB, 4 lines - utils/
svdecon.m , MATLAB, 56 lines - licence.txt, License, 339 lines
- readme.md, Text, 116 lines
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;
- 131 scripts, each with its path and the digest of its content;
- 23 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
Datasets cited
- doi:10.12751/
g-node.t43ph1 , at GIN; found in “Data Availability”
Data Availability
The data of this study have been made publicly available on G-Node (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, 29 September 2026: the first record
Recorded: type, language, journal, volume, issue, pages, dates, 11 authors, 8 MeSH terms, 2 funders, 80 references.
Cite
This paper
Sridhar, S., Vystrčilová, M., Khani, M. H., Karamanlis, D., Schreyer, H. M., Ramakrishna, V., Krüppel, S., Zapp, S. J., Mietsch, M., Ecker, A. S., & Gollisch, T. (2026). Modeling spatial contrast sensitivity in responses of primate retinal ganglion cells to natural movies. PLoS computational biology, 22(4), e1014157. https://
BibTeX
@article{sridhar2026mode
author = {Sridhar, Shashwat and Vystrčilová, Michaela and Khani, Mohammad H. and Karamanlis, Dimokratis and Schreyer, Helene M. and Ramakrishna, Varsha and Krüppel, Steffen and Zapp, Sören J. and Mietsch, Matthias and Ecker, Alexander S. and Gollisch, Tim},
title = {{Modeling spatial contrast sensitivity in responses of primate retinal ganglion cells to natural movies}},
journal = {PLoS computational biology},
year = {2026},
month = apr,
volume = {22},
number = {4},
pages = {e1014157},
publisher = {PLOS},
issn = {1553-734X},
doi = {10.1371/
url = {https://
pmid = {41945609},
pmcid = {PMC13099094}
}
RIS
TY - JOUR
AU - Sridhar, Shashwat
AU - Vystrčilová, Michaela
AU - Khani, Mohammad H.
AU - Karamanlis, Dimokratis
AU - Schreyer, Helene M.
AU - Ramakrishna, Varsha
AU - Krüppel, Steffen
AU - Zapp, Sören J.
AU - Mietsch, Matthias
AU - Ecker, Alexander S.
AU - Gollisch, Tim
TI - Modeling spatial contrast sensitivity in responses of primate retinal ganglion cells to natural movies
T2 - PLoS computational biology
J2 - PLoS Comput Biol
PY - 2026
DA - 2026/
VL - 22
IS - 4
SP - e1014157
SN - 1553-734X
PB - PLOS
DO - 10.1371/
UR - https://
LA - en
ER -
CSL-JSON
{
"id": "10.1371/
"type": "article-journal",
"title": "Modeling spatial contrast sensitivity in responses of primate retinal ganglion cells to natural movies",
"container-title": "PLoS computational biology",
"author": [
{
"family": "Sridhar",
"given": "Shashwat"
},
{
"family": "Vystrčilová",
"given": "Michaela"
},
{
"family": "Khani",
"given": "Mohammad H."
},
{
"family": "Karamanlis",
"given": "Dimokratis"
},
{
"family": "Schreyer",
"given": "Helene M."
},
{
"family": "Ramakrishna",
"given": "Varsha"
},
{
"family": "Krüppel",
"given": "Steffen"
},
{
"family": "Zapp",
"given": "Sören J."
},
{
"family": "Mietsch",
"given": "Matthias"
},
{
"family": "Ecker",
"given": "Alexander S."
},
{
"family": "Gollisch",
"given": "Tim"
}
],
"container-title-short":
"volume": "22",
"issue": "4",
"page": "e1014157",
"DOI": "10.1371/
"PMID": "41945609",
"PMCID": "PMC13099094",
"ISSN": "1553-734X",
"publisher": "PLOS",
"URL": "https://
"language": "en",
"issued": {
"date-parts": [
[
2026,
4,
7
]
]
}
}
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.0060-26.2026 [code]
- Spatial Adaptation of Primate Retinal Ganglion Cells Between Artificial and Natural Stimuli.Journal: eNeuroIn common: PyTorch, pandas, SciPy, 1 other tool, 9 references, 5 authors
- [2] doi:10.1016/j.patter.2026.101590 [code]
- Density-based longitudinal neuron tracking in high-density electrophysiological recordings.Journal: Patterns (New York, N.Y.)In common: Kilosort, Parallel Computing Toolbox, Signal Processing Toolbox, 5 other tools, 1 reference
- [3] doi:10.1038/s41467-026-75347-4 [code]
- Sleep reveals dynamics integrating and segregating movement and stimulus representations in V1.Journal: Nature communicationsIn common: Parallel Computing Toolbox, Numba, Signal Processing Toolbox, 5 other tools, 1 reference
- [4] doi:10.1038/s41593-026-02232-0 [code]
- Entorhinal cortex represents task-relevant remote locations independently of CA1.Journal: Nature neuroscienceIn common: Kilosort, Numba, Signal Processing Toolbox, 5 other tools
- [5] doi:10.1038/s42003-026-10957-8 [code]
- Brain defence by the extracellular matrix protein Cochlin.Journal: Communications biologyIn common: CuPy, Numba, Signal Processing Toolbox, 5 other tools
- [6] doi:10.1371/journal.pcbi.1014123 [code]
- Subunit-specific behavioral modulation of sensory tuning in the visual cortex.Journal: PLoS computational biologyIn common: pandas, NumPy, computational modeling (no new data), 4 references
- [7] doi:10.7554/elife.110588 [code]
- Opening the black box toward a modular approach to spike sorting.Journal: eLifeIn common: Kilosort, Numba, PyTorch, 3 other tools, 1 reference
- [8] doi:10.1038/s41467-026-71664-w [code]
- Dorsal prefrontal cortex drives perseverative behavior in mice.Journal: Nature communicationsIn common: Kilosort, Parallel Computing Toolbox, Signal Processing Toolbox, 2 other tools, 1 reference
- [9] doi:10.2147/opth.s590186 [code]
- Differential Effects of Balanced and Imbalanced Binocular Stimulation on Visual Cortex Responses in Amblyopic Children.Journal: Clinical ophthalmology (Auckland, N.Z.)In common: CuPy, Parallel Computing Toolbox, Signal Processing Toolbox, 4 other tools
- [10] doi:10.1038/s41467-026-76581-6 [code]
- Thalamocortical bursts encode reward contingencies and drive associative learning.Journal: Nature communicationsIn common: Kilosort, Signal Processing Toolbox, Statistics and Machine Learning Toolbox, 3 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, 131 scripts, and 23 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:060b8464cbd8890e…
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.
