OSCR

The Role of Plasticity in Replay: Stability Through Anti-Hebbian Rules.

Code ↔ Paper

8 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 8 matches
  1. [1] § Methods › Model Overview › Phase 1 Online Learning: Point Process Model for Learning ↔ scripts/poisson_proc.py, lines 84–109 · score 0.66 · theta modulation, tuning curves, firing rate, Poisson, track, Phase
  2. [2] § Methods › Model Overview › Phase 1 Online Learning: Point Process Model for Learning ↔ scripts/poisson_proc.py, lines 84–109 · score 0.62 · tuning curve, place field, firing rate, position, theta, Phase
  3. [3] § Methods › Simulation Data Collection ↔ scripts/plots.py, lines 245–340 · score 0.59 · neuron spike, state monitoring, firing rate, Brian2, ID, PC
  4. [4] § Methods › Model Overview › Phase 2 Offline Replay ↔ scripts/stdp-lb.py, lines 26–71 · score 0.57 · mossy fiber, connection probabilities, inhibitory, MF, BCs, neurons
  5. [5] § Methods › Replay Candidate Identification and Validation ↔ scripts/spw_network-lb-CPP.py, lines 537–671 · score 0.54 · replay detection, PC population, bounds, ISI, BCs, linear
  6. [6] § Methods › Model Overview › Phase 1 Online Learning: Point Process Model for Learning ↔ scripts/poisson_proc.py, lines 70–81 · score 0.54 · tuning curve, Place fields, Gaussian, linear, track, cells
  7. [7] § Methods › Model Overview › Phase 1 Online Learning: Point Process Model for Learning ↔ scripts/detect_replay.py, lines 35–69 · score 0.54 · tuning curve, place field, animal, activity, neuron, spike
  8. [8] § Methods › Replay Candidate Identification and Validation ↔ scripts/spw_network with inhibitory stdp.py, lines 547–671 · score 0.52 · replay detection, PC population, bounds, ISI, linear, activity

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 · 133 lines · 5.3 KB · MIT · 3 matches

  1. # -*- coding: utf8 -*-
  2. """
  3. Functions used for generating hippocampal like spike trains (inhomogeneous Poisson process)
  4. Setup: many repetitions on a circular track or (mapped) linear [0, 2pi] track
  5. authors: András Ecker, Eszter Vértes, Szabolcs Káli last update: 10.2018
  6. """
  7. import numpy as np
  8. f_theta = 7.0 # theta osc. freq. [Hz]
  9. v_mice = 32.43567842 # [cm/s]
  10. l_route = 300.0 # circumference [cm]
  11. l_place_field = 30.0 # [cm]
  12. r = l_route / (2*np.pi) # [cm]
  13. phi_PF_rad = l_place_field / r # [rad]
  14. t_route = l_route / v_mice # [s]
  15. w_mice = 2*np.pi / t_route # angular velocity
  16. # hard coded s and std of Gaussians: 1/10th of the total route is PF (used with the parameters above and 10% rate def. from Dragoi and Buzsáki 2006)
  17. #TODO: make these parameters calculated based on PF parameters (otherwise DON'T touch this!)
  18. s = 47.0 # phase-locking (param of circular Gaussian)
  19. std = 0.146 # std (param of Gaussian, defined in [0,2*np.pi])
  20. def _generate_exp_rand_numbers(lambda_, n_rnds, seed):
  21. """
  22. MATLAB's random exponential number
  23. :param lambda_: normalization (will be the rate of Poisson proc - see `hom_poisson()`)
  24. :param n_rnds: number of random numbers to gerenerate
  25. :param seed: seed for random number generation
  26. :return: exponential random numbers
  27. """
  28. np.random.seed(seed)
  29. return -1.0 / lambda_ * np.log(np.random.rand(n_rnds))
  30. def hom_poisson(lambda_, n_rnds, t_max, seed):
  31. """
  32. Generates Poisson process (interval times X_i = -ln(U_i)/lambda_, where lambda_ is the rate and U_i ~ Uniform(0,1))
  33. :param lambda_: rate of the Poisson process
  34. :param n_rnds: see `_generate_exp_rand_numbers()`
  35. :param t_max: length of the generate Poisson process
  36. :param seed: seed for random number generation (see `_generate_exp_rand_numbers()`)
  37. :return: poisson_proc: np.array which represent a homogenos Poisson process
  38. """
  39. rnd_isis = _generate_exp_rand_numbers(lambda_, n_rnds, seed)
  40. poisson_proc = np.cumsum(rnd_isis)
  41. #assert poisson_proc[-1] > t_max, "Spike train is too short, consider increasing `n_rnds`!"
  42. return poisson_proc[np.where(poisson_proc <= t_max)]
  43. def get_tuning_curve_circular(spatial_points, phi_start):
  44. """
  45. Calculates (not estimates) tuning curve (on a circle -> circular Gaussian function)
  46. :param spatial_points: spatial points along the circle (in rad)
  47. :param phi_start: starting point of the place field (in rad)
  48. :return: tau: tuning curve of the place cell
  49. """
  50. mid_PF = np.mod(phi_start + phi_PF_rad/2.0, 2*np.pi)
  51. tau = 1.0/np.exp(s) * np.exp(s*np.cos(spatial_points - mid_PF)) # circular Gaussian
  52. return tau
  53. def get_tuning_curve_linear(spatial_points, phi_start):
  54. """
  55. Calculates (not estimates) tuning curve (Gaussian function)
  56. :param spatial_points: spatial points along the track
  57. :param phi_start: starting point of the place field
  58. :return: tau: tuning curve of the place cell
  59. """
  60. mid_PF = phi_start + phi_PF_rad/2.0
  61. tau = np.exp(-np.power(spatial_points-mid_PF, 2)/(2*std**2))
  62. return tau
  63. def evaluate_lambda_t(t, phi_start, linear, phase0):
  64. """
  65. Evaluates firing rate(t, x) = tuning_curve(x) * theta_modulation(t, x) at given time points
  66. :param t: sample time points
  67. :param phi_start: starting point of the place field (in rad)
  68. :param linear: flag for circular vs. linear track -> slightly diff tuning curves
  69. :param phase0: init. phase (used to calc. phase precession)
  70. :return: lambda_t sampled at the given time points
  71. """
  72. x = np.mod(w_mice * t, 2*np.pi) # positions of the mice [rad]
  73. if not linear:
  74. tau_x = get_tuning_curve_circular(x, phi_start)
  75. else:
  76. tau_x = get_tuning_curve_linear(x, phi_start)
  77. # theta modulation of firing rate + phase precession
  78. phase = phase0 + 2*np.pi * f_theta * t
  79. phase_shift = -np.pi / phi_PF_rad * (x - phi_start)
  80. theta_mod = np.cos(phase - phase_shift)
  81. lambda_t = tau_x * theta_mod
  82. lambda_t[np.where(lambda_t < 0.0)] = 0.0
  83. return lambda_t
  84. def inhom_poisson(lambda_, t_max, phi_start, linear, seed, phase0=0.0):
  85. """
  86. Generates a homogeneous Poisson process and converts it to inhomogeneous
  87. via keeping only a subset of spikes based on the (time and space dependent) rate of the place cell (see `evaluate_lambda_t()`)
  88. :param lambda_: rate of the hom. Poisson process (see `hom_poisson()`)
  89. :param t_max: length of the generate Poisson process
  90. :param phi_start: starting point of the place field (see `evaluate_lambda_t()`)
  91. :param linear: flag for circular vs. linear track (see `evaluate_lambda_t()`)
  92. :param seed: seed for random number generation
  93. :param phase0: initial phase (see `evaluate_lambda_t()`)
  94. :return: inhom_poisson_proc: inhomogenos Poisson process representing the spike train of a place cell
  95. """
  96. #poisson_proc = hom_poisson(lambda_, 10000, t_max, seed) # hard coded 10000 works with 20Hz rate and 405sec spike train
  97. poisson_proc = hom_poisson(lambda_, 10000, t_max, seed) # hard coded 10000 works with 20Hz rate and 405sec spike train
  98. # keep only a subset of spikes
  99. lambda_t = evaluate_lambda_t(poisson_proc, phi_start, linear, phase0)
  100. np.random.seed(seed)
  101. inhom_poisson_proc = poisson_proc[np.where(lambda_t >= np.random.rand(poisson_proc.shape[0]))]
  102. return inhom_poisson_proc

poisson_proc.py at commit 958508b, under MIT · at the source

Overview

Authors: Lior Baron1, Kamran Diba2, Asohan Amarasingham1,3,4
ORCID iDs: Kamran Diba
  1. Department of Computer Science, CUNY Graduate Center, New York, New York, USA
  2. Department of Anesthesiology, University of Michigan Medical School, Ann Arbor, Michigan, USA
  3. Department of Mathematics, The City College of New York, New York, New York, USA
  4. Department of Biology, CUNY Graduate Center, New York, New York, USA
Institutions: The Graduate Center, CUNY (United States); University of Michigan (United States); Michigan Medicine (United States); City College of New York (United States)
Journal: Hippocampus, volume 36, issue 3, article e70089
Dates: received 27 October 2025; accepted 4 March 2026; published online 11 April 2026; in print May 2026
Type: Research article · Language: English
License: CC BY
Identifiers: DOI 10.1002/hipo.70089 · PMID 41964401 · PMCID PMC13069501 · OpenAlex W7153511527
Open access: hybrid, a free copy (OpenAlex)
Status: code verified
Categories: cellular / molecular (subfield)
Methods: Statistics, Single-unit activity, calcium imaging
Keywords: CA3 recurrent network, hippocampal replay, memory consolidation, synaptic plasticity
MeSH: Hippocampus*, Models, Neurological*, Neuronal Plasticity*, Action Potentials, Animals, Neurons, Synapses (* major topic)
Topic: Memory and Neural Mechanisms (Cognitive Neuroscience, Neuroscience), according to OpenAlex
Funding: National Institute of Mental Health (R01MH139216); NIMH NIH HHS (R01MH139216); National Science Foundation (PHY-230195, PHY‐230195, 2423995)
Citations: cited by 1 paper (Europe PMC); 71 references in the paper

Abstract

Hippocampal replay is now considered to be a cornerstone of memory consolidation, yet the synaptic plasticity rules governing its dynamics remain elusive. Under the standard asymmetric Hebbian spike‐timing dependent plasticity (STDP) model, the same spike patterns that promote activity propagation along one direction of sequential activation undermine propagation in the reverse direction, compromising “bidirectional” replay. On the other hand, symmetric potentiation rules, as recently proposed for region CA3, risk corrupting the memory trace by saturating synaptic weights. Using Ecker et al.'s recurrent network model of place cells that spontaneously generate replays during ripples, we systematically investigated how different STDP plasticity rules modulate offline replays. We developed a classification framework to study the mechanisms relating different STDP kernels to key replay characteristics, including directionality, speed, and stability. Our results confirmed that symmetric potentiation rules during offline states saturate synapses, inducing rigid attractors that corrupt the memory trace, and that an asymmetric Hebbian STDP kernel induces strong biases in the directionality of replay, leading to rapid replay acceleration and replay degradation. Notably, we found that an asymmetric anti‐Hebbian STDP kernel preserves replay bi‐directionality and stabilizes replay speed. We further identified the negative timing component of the STDP rule as the primary driver of replay speed: potentiation causes deceleration, while depression causes acceleration. These findings provide a mechanistic explanation for empirically observed replay deceleration and suggest a role for anti‐Hebbian synaptic depression in stabilizing replay dynamics.

Reproduced under the paper's license (CC BY), from the paper cited above.

Repository

Its files are read in the Code ↔ Paper reader above, with 8 matches between paragraphs and lines of code.

sliorbar/ca3net

License: MIT
State: the link answers, verified on 28 September 2026
Evidence: files inventoried
Commit: 958508b819b5d54c2de87d0aa4a7586d1ce5faf1, 17 July 2024
Languages: Python (32), Jupyter (1)
Size: 61 files, 33 scripts
Software Heritage: not archived
Found in: “Data, Code, and Reproducibility”
Holds: README, license file, environment (requirements.txt), 1 notebook
Not found: CITATION.cff, tests, continuous integration, documentation
Tools: NumPy (31 files), Brian 2 (17 files), Matplotlib (15 files), pandas (10 files), SciPy (7 files), SymPy (6 files), PyWavelets (2 files), seaborn (2 files), OpenCV (1 file)
Availability: 1 check, the latest on 28 September 2026: the link answers
  • 28 September 2026: the link answers
35 files

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:

  • 1 repository of the authors' code, each at its verified commit, with its license and how the link was found in the paper;
  • 33 scripts, each with its path and the digest of its content;
  • 8 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 Statement

The data that support the findings of this study are available from the corresponding author upon reasonable 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 2, 28 September 2026

  • Publisher: — → Wiley

Version 1, 28 September 2026: the first record

Recorded: type, language, journal, volume, issue, pages, dates, 3 authors, 4 keywords, 7 MeSH terms, 3 funders, 68 references.

Cite

This paper

Baron, L., Diba, K., & Amarasingham, A. (2026). The Role of Plasticity in Replay: Stability Through Anti-Hebbian Rules. Hippocampus, 36(3), e70089. https://doi.org/10.1002/hipo.70089

BibTeX

@article{baron2026role,
author = {Baron, Lior and Diba, Kamran and Amarasingham, Asohan},
title = {{The Role of Plasticity in Replay: Stability Through Anti-Hebbian Rules}},
journal = {Hippocampus},
year = {2026},
month = may,
volume = {36},
number = {3},
pages = {e70089},
publisher = {Wiley},
issn = {1050-9631},
doi = {10.1002/hipo.70089},
url = {https://doi.org/10.1002/hipo.70089},
pmid = {41964401},
pmcid = {PMC13069501}
}

RIS

TY - JOUR
AU - Baron, Lior
AU - Diba, Kamran
AU - Amarasingham, Asohan
TI - The Role of Plasticity in Replay: Stability Through Anti-Hebbian Rules
T2 - Hippocampus
J2 - Hippocampus
PY - 2026
DA - 2026/05/01
VL - 36
IS - 3
SP - e70089
SN - 1050-9631
PB - Wiley
DO - 10.1002/hipo.70089
UR - https://doi.org/10.1002/hipo.70089
LA - en
ER -

CSL-JSON

{
"id": "10.1002/hipo.70089",
"type": "article-journal",
"title": "The Role of Plasticity in Replay: Stability Through Anti-Hebbian Rules",
"container-title": "Hippocampus",
"author": [
{
"family": "Baron",
"given": "Lior"
},
{
"family": "Diba",
"given": "Kamran"
},
{
"family": "Amarasingham",
"given": "Asohan"
}
],
"container-title-short": "Hippocampus",
"volume": "36",
"issue": "3",
"page": "e70089",
"DOI": "10.1002/hipo.70089",
"PMID": "41964401",
"PMCID": "PMC13069501",
"ISSN": "1050-9631",
"publisher": "Wiley",
"URL": "https://doi.org/10.1002/hipo.70089",
"language": "en",
"issued": {
"date-parts": [
[
2026,
5,
1
]
]
}
}

The tracing map gets a citation of its own once an author has validated it and it has a DOI.

Similar papers

The papers with a page that share the most with this one: the tools found in their code, their categories, datasets, cited references and authors, the rarest counting most.

[1] doi:10.1038/s41593-026-02357-2 [code]
Experience reorganizes content-specific memory traces in macaques.
Journal: Nature neuroscience
In common: seaborn, pandas, SciPy, 2 other tools, 6 references
[2] doi:10.1038/s41593-026-02362-5 [code]
Replay of procedural memory is independent of the hippocampus.
Journal: Nature neuroscience
In common: seaborn, pandas, SciPy, 2 other tools, 6 references
[3] doi:10.7554/elife.108023 [code]
Challenges in replay detection by TDLM in post-encoding resting state.
Journal: eLife
In common: seaborn, pandas, SciPy, 2 other tools, 6 references
[4] doi:10.1016/j.neuron.2026.05.004 [code]
A learning-evoked slow-oscillatory architecture paces population activity for offline reactivation across the human medial temporal lobe.
Journal: Neuron
In common: seaborn, SciPy, Matplotlib, 1 other tool, 6 references
[5] doi:10.1126/sciadv.aee9425 [code]
Probabilistic inference of homonymous and heteronymous recurrent inhibition in human muscles from large-scale motor neuron recordings.
Journal: Science advances
In common: Brian 2, PyWavelets, seaborn, 4 other tools, 1 reference
[6] doi:10.1016/j.celrep.2026.117793 [code]
Clustered inputs engage dendritic nonlinearities and calcium signaling to support efficient place-field formation in CA1 pyramidal neurons.
Journal: Cell reports
In common: Brian 2, seaborn, pandas, 3 other tools, cellular / molecular, 2 references
[7] doi:10.1523/jneurosci.1506-25.2026 [code]
Controlling Spatio-Temporal Sequences of Neural Activity by Local Synaptic Changes.
Journal: The Journal of neuroscience : the official journal of the Society for Neuroscience
In common: Brian 2, pandas, SciPy, 2 other tools, cellular / molecular, 3 references
[8] doi:10.1371/journal.pcbi.1014752 [code]
Hierarchical feature binding in a spiking neural network model of the primate ventral visual pathway.
Journal: PLoS computational biology
In common: Brian 2, OpenCV, pandas, 3 other tools, 2 references
[9] doi:10.1038/s41467-026-77318-1 [code]
Offline generative network reconfiguration guides insight-like accelerated learning by assimilation into schema in rats.
Journal: Nature communications
In common: seaborn, pandas, SciPy, 1 other tool, 4 references
[10] doi:10.1038/s41593-026-02318-9 [code]
Induction of cortical on/off periods in awake mice fulfills sleep functions.
Journal: Nature neuroscience
In common: OpenCV, seaborn, pandas, 3 other tools, 2 references

Contribute

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

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

Request its removal

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

Discussion, reproductions, activity

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

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

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