OSCR

Temporal and Cell-Specific Regulation of Synaptic Homeostasis by the Chromatin Remodeler Chd1.

Code ↔ Paper

The paper beside its authors' code: matches between them have not been computed for this paper yet.

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 · 416 lines · 13 KB · Apache-2.0

  1. import os
  2. import sys
  3. import pandas as pd
  4. import pyabf
  5. import numpy as np
  6. from scipy import signal
  7. from scipy.signal import argrelextrema
  8. from scipy.optimize import basinhopping
  9. import statsmodels.api as sm
  10. import matplotlib.pyplot as plt
  11. class HFRP(object):
  12. """class for high frequency train analysis"""
  13. def __init__(
  14. self,
  15. filename,
  16. channel=1,
  17. lowpass_f=400,
  18. scaling_factor=1,
  19. trough_max_amp=-20,
  20. init_min_amp=-40,
  21. trough_window=80,
  22. peak_window=8,
  23. min_peak_trough_gap=10,
  24. max_peaks_keep=30,
  25. intercept_window=10,
  26. plot_figure=True,
  27. plot_label_size=15,
  28. use_exp_fit=True,
  29. save_res=False,
  30. fix_baseline=True,
  31. fig_extension="svg",
  32. show_fig_box=True,
  33. ):
  34. super(HFRP, self).__init__()
  35. self.filename = filename
  36. self.base_name = os.path.splitext(os.path.basename(filename))[0]
  37. self.base_path = os.path.join(os.path.dirname(filename), "results")
  38. if not os.path.exists(self.base_path):
  39. os.mkdir(self.base_path)
  40. self.abf = pyabf.ABF(filename)
  41. self.channel = channel
  42. self.lowpass_f = lowpass_f
  43. self.trough_max_amp = trough_max_amp
  44. self.init_min_amp = init_min_amp
  45. self.trough_window = trough_window # peak detection window size
  46. self.min_peak_trough_gap = min_peak_trough_gap
  47. self.max_peaks_keep = max_peaks_keep
  48. self.scaling_factor = scaling_factor
  49. self.peak_window = peak_window
  50. self.intercept_window = intercept_window
  51. self.plot_figure = plot_figure
  52. self.plot_label_size = plot_label_size
  53. self.use_exp_fit = use_exp_fit
  54. self.save_res = save_res
  55. self.fix_baseline = fix_baseline # sometimes baseline is not zero
  56. self.fig_extension = fig_extension
  57. self.show_fig_box = show_fig_box
  58. self.T = self.abf.sweepX[1] - self.abf.sweepX[0]
  59. self.fs = 1 / self.T
  60. def exp_int(self, xs):
  61. t1 = 0
  62. y1 = xs[t1]
  63. t3 = len(xs) - 1
  64. y3 = xs[t3]
  65. b = np.nan
  66. if t3 % 2 == 0:
  67. t2 = int(t3 / 2)
  68. y2 = xs[t2]
  69. else:
  70. t2 = t3 * 0.5
  71. b = int(np.floor(t2))
  72. y2 = (xs[b] + xs[b + 1]) * 0.5
  73. # (a-a*e^(bt/2))/(a*e^(bt/2)-a*e^(bt))=e^(-bt/2)
  74. r = (y1 - y2) / (y2 - y3)
  75. if r > 1:
  76. b = 2 / (t1 - t3) * np.log(r)
  77. else:
  78. b = -1e-8
  79. a = (y1 - y3) / (np.exp(b * t1) - np.exp(b * t3))
  80. return [a, b]
  81. def plot_trace(self, sweep_idx, s, t, Y):
  82. fname = os.path.join(
  83. self.base_path,
  84. "{}_{}_trace.{}".format(self.base_name, sweep_idx, self.fig_extension),
  85. )
  86. ts = np.array(range(t - s)) * self.T * 1000
  87. fig = plt.figure(figsize=(16, 9))
  88. plt.plot(ts, Y[s:t])
  89. ymax = max(60, np.max(Y[s:t]))
  90. ymin = min(-300, np.min(Y[s:t]))
  91. plt.ylim([ymin, ymax])
  92. plt.xlim([0, ts[-1]])
  93. plt.xlabel("time (ms)", fontsize=self.plot_label_size)
  94. plt.ylabel(self.sweepUnitsY, fontsize=self.plot_label_size)
  95. plt.title(self.base_name + ", sweep index {}".format(sweep_idx))
  96. fig.savefig(fname)
  97. def proc_trace(self):
  98. nc = self.abf.sweepCount
  99. res0 = []
  100. for i in range(nc):
  101. print(i)
  102. find_sol = True
  103. try:
  104. r = self.proc_single_trace(i)
  105. if len(r) == 0:
  106. find_sol = False
  107. r["success"] = 1
  108. except:
  109. find_sol = False
  110. if not find_sol:
  111. r = {}
  112. r["success"] = 0
  113. r["filename"] = self.base_name
  114. print("bad sweep")
  115. r["sweep"] = i
  116. res0.append(r)
  117. if self.save_res:
  118. pd.DataFrame(res0).to_csv(os.path.join(self.base_path, "results.csv"))
  119. return res0
  120. def proc_single_trace(self, sweep_idx=0):
  121. self.abf.setSweep(sweep_idx, self.channel)
  122. Y = self.abf.sweepY * self.scaling_factor
  123. self.sweepUnitsY = self.abf.sweepUnitsY
  124. # this indicate a bad trace
  125. if Y[0] < self.init_min_amp:
  126. self.plot_trace(sweep_idx, 0, len(Y), Y)
  127. return {}
  128. b, a = signal.butter(
  129. 3, self.lowpass_f, btype="lowpass", fs=self.fs, output="ba"
  130. )
  131. y_notched = signal.filtfilt(b, a, Y)
  132. # first pass use filtered signal
  133. idxs = argrelextrema(y_notched, np.less, order=self.trough_window)[0]
  134. pks = y_notched[idxs]
  135. base_line = np.median(y_notched[: idxs[0]])
  136. # find the first peak and peaks with amplitude lower than the first one are just noise
  137. up = pks[(pks - base_line) < self.trough_max_amp][0] * 1.01
  138. idxs1 = idxs[((pks - base_line) < self.trough_max_amp) & (pks > up)]
  139. # # Using the Median Absolute Deviation to Find Outliers
  140. dd = np.diff(idxs1)
  141. m = np.median(dd)
  142. # v = max(np.median(np.abs(dd - m)) * 1.4826, 0.5)
  143. # # v is typically small for a good trace. choose 15 here to make sure good peaks are not filtered
  144. # up = m + 15 * v
  145. # dn = m - 15 * v
  146. # up is a bound used to identify when the trace stops
  147. up = m * 2
  148. sel = [0, 1]
  149. p = 1
  150. for i in range(2, len(idxs1)):
  151. d = idxs1[i] - idxs1[p]
  152. if d < up:
  153. sel.append(i)
  154. p = i
  155. else:
  156. break
  157. idxs1 = idxs1[sel]
  158. # find peak between two troughs to do an exponential fitting between trough and next peak
  159. idxmf = argrelextrema(y_notched, np.greater, order=self.peak_window)[0]
  160. pidxs = []
  161. tidxs = []
  162. for i in range(len(idxs1)):
  163. s = idxs1[i]
  164. t = idxmf[
  165. np.where(
  166. (idxmf > s + self.min_peak_trough_gap)
  167. & (y_notched[idxmf] > 0.5 * y_notched[s])
  168. )[0][0]
  169. ]
  170. pidxs.append(s)
  171. tidxs.append(t)
  172. pidxs = np.array(pidxs)
  173. tidxs = np.array(tidxs)
  174. rise_time = int(np.mean(pidxs[1:] - tidxs[:-1]))
  175. base_line = 0
  176. if self.fix_baseline:
  177. base_line = np.median(Y[: int(rise_time * 0.98)])
  178. Y = Y - base_line
  179. y_notched = y_notched - base_line
  180. minimizer_kwargs = {"method": "Nelder-Mead", "tol": 1e-6}
  181. fun = lambda w: w[0] * np.exp(-w[1] * ts)
  182. fun1 = lambda w: np.linalg.norm(xs - fun(w))
  183. Yt = Y.copy()
  184. amps = []
  185. exp_params = []
  186. Y1 = Y.copy() * 0
  187. pidxs = []
  188. for i in range(len(idxs1)):
  189. s = idxs1[i]
  190. t = tidxs[i]
  191. s1 = max(int(s - rise_time * 0.25), 0)
  192. t1 = min(int(s + rise_time * 0.25), len(Y))
  193. s2 = np.argmin(Yt[s1:t1]) + s1
  194. pidxs.append(s2)
  195. amps.append(Yt[s2])
  196. s = s2
  197. # amps.append(Yt[s])
  198. if i == len(idxs1) - 1:
  199. break
  200. if i <= 1:
  201. a = 0.6
  202. else:
  203. a = 0.5
  204. b = 0.95
  205. tt = Yt[s:t]
  206. idxt = np.where(tt < tt[0] * (1 - a))[0]
  207. if len(idxt) > 0:
  208. s1 = idxt[-1]
  209. else:
  210. s1 = int(len(tt) * a)
  211. idxt = np.where(tt > tt[0] * (1 - b))[0]
  212. if len(idxt) > 0:
  213. t1 = idxt[idxt > s1][0]
  214. else:
  215. t1 = int(len(tt) * b)
  216. # this is a stable region for exponential fit
  217. xs = tt[s1:t1]
  218. s2 = s1 + s
  219. if self.use_exp_fit:
  220. w0 = self.exp_int(xs)
  221. ts = np.array(range(len(xs)))
  222. r = basinhopping(fun1, w0, minimizer_kwargs=minimizer_kwargs, niter=2)
  223. if r.x[1] < 0:
  224. # print(s, t)
  225. # print(s1, t1)
  226. # plt.plot(xs)
  227. # plt.show()
  228. # print(idxs1)
  229. # print(r)
  230. # import pdb
  231. # pdb.set_trace()
  232. self.plot_trace(sweep_idx, 0, len(Y), Y)
  233. raise NameError("negative exponent")
  234. # remove exponential decay from all future signals
  235. ts = np.array(range(len(Yt) - s2))
  236. yt = fun(r.x)
  237. Yt[s2:] = Yt[s2:] - yt
  238. Y1[s2:] = Y1[s2:] + yt
  239. Y1[s2] = np.nan
  240. exp_params.append(r.x)
  241. pidxs = np.array(pidxs)
  242. aa = amps[: self.max_peaks_keep]
  243. caa = np.cumsum(aa)[-self.intercept_window :]
  244. xs = np.array(range(len(aa)))[-self.intercept_window :] + 1
  245. xs = sm.add_constant(xs, prepend=False)
  246. mod = sm.OLS(caa, xs)
  247. rl = mod.fit()
  248. res = {
  249. "filename": self.base_name,
  250. "intercept": rl.params[1],
  251. "amps": aa,
  252. "pidxs": np.array(pidxs[: self.max_peaks_keep]),
  253. "tidxs": np.array(tidxs[: self.max_peaks_keep]),
  254. "exp_params": exp_params[: self.max_peaks_keep],
  255. "base_line": base_line,
  256. "num_peaks": len(aa),
  257. }
  258. if self.plot_figure:
  259. fname = os.path.join(
  260. self.base_path,
  261. "{}_{}_trace.{}".format(self.base_name, sweep_idx, self.fig_extension),
  262. )
  263. rise_time = int(np.mean(res["pidxs"][1:] - res["tidxs"][:-1]))
  264. # decay_time = int(np.median(res["pidxs"][:-1] - res["tidxs"][:-1]))
  265. s = max(res["pidxs"][0] - 2 * rise_time, 0)
  266. # t = min(res["pidxs"][-1] + decay_time,len(Y))
  267. t = res["tidxs"][-1]
  268. ts = np.array(range(t - s)) * self.T * 1000
  269. # fig = plt.figure(figsize=(16, 9))
  270. fig, ax = plt.subplots(1, 1, figsize=(16, 9))
  271. plt.plot(ts, Y[s:t])
  272. ymax = max(60, np.max(Y[s:t]))
  273. ymin = min(-300, np.min(Y[s:t]))
  274. plt.ylim([ymin, ymax])
  275. plt.xlim([0, ts[-1]])
  276. plt.xlabel("time (ms)", fontsize=self.plot_label_size)
  277. plt.ylabel(self.sweepUnitsY, fontsize=self.plot_label_size)
  278. if self.show_fig_box:
  279. plt.title(self.base_name + ", sweep index {}".format(sweep_idx))
  280. else:
  281. ax.spines[["right", "top"]].set_visible(False)
  282. fig.savefig(fname)
  283. plt.close(fig)
  284. fname = os.path.join(
  285. self.base_path,
  286. "{}_{}_fit.{}".format(self.base_name, sweep_idx, self.fig_extension),
  287. )
  288. # fig = plt.figure(figsize=(16, 9))
  289. fig, ax = plt.subplots(1, 1, figsize=(16, 9))
  290. ts = np.array(range(len(Y1))) * self.T * 1000
  291. plt.plot(ts, Y)
  292. plt.plot(ts, Y1)
  293. for i in res["pidxs"]:
  294. plt.plot(ts[i], Y[i], "ro")
  295. plt.ylim([ymin, ymax])
  296. plt.xlim([ts[s], ts[t]])
  297. plt.xlabel("time (ms)", fontsize=self.plot_label_size)
  298. plt.ylabel(self.sweepUnitsY, fontsize=self.plot_label_size)
  299. if self.show_fig_box:
  300. plt.title(self.base_name + ", sweep index {}".format(sweep_idx))
  301. else:
  302. ax.spines[["right", "top"]].set_visible(False)
  303. fig.savefig(fname)
  304. plt.close(fig)
  305. fname = os.path.join(
  306. self.base_path,
  307. "{}_{}_cum.{}".format(self.base_name, sweep_idx, self.fig_extension),
  308. )
  309. # fig = plt.figure(figsize=(16, 9))
  310. fig, ax = plt.subplots(1, 1, figsize=(16, 9))
  311. plt.plot(range(1, len(aa) + 1), -np.cumsum(aa))
  312. xt = np.array(range(len(aa) + 1))
  313. plt.plot(xt, -(xt * rl.params[0] + rl.params[1]))
  314. plt.xlim(0, len(aa))
  315. ymax = max(5500, np.max(aa))
  316. plt.ylim(0, ymax)
  317. plt.xlabel("peak number", fontsize=self.plot_label_size)
  318. plt.ylabel(self.sweepUnitsY, fontsize=self.plot_label_size)
  319. if self.show_fig_box:
  320. plt.title(
  321. self.base_name
  322. + ", sweep index {}, intercept=".format(sweep_idx)
  323. + str(-np.round(rl.params[1]))
  324. )
  325. else:
  326. ax.spines[["right", "top"]].set_visible(False)
  327. fig.savefig(fname)
  328. plt.close(fig)
  329. return res
  330. if __name__ == "__main__":
  331. is_dir = True
  332. files = []
  333. if len(sys.argv) > 1:
  334. if os.path.isdir(sys.argv[1]):
  335. path = sys.argv[1]
  336. else:
  337. is_dir = False
  338. files = [sys.argv[1]]
  339. base_path = os.path.join(os.path.dirname(sys.argv[1]), "results")
  340. else:
  341. path = "."
  342. if is_dir:
  343. base_path = os.path.join(path, "results")
  344. for file in os.listdir(path):
  345. if file.endswith(".abf"):
  346. filepath = os.path.join(path, file)
  347. files.append(filepath)
  348. res = []
  349. for file in files:
  350. if file.endswith(".abf") and os.path.exists(file):
  351. print(file)
  352. hfrpo = HFRP(file)
  353. rs = hfrpo.proc_trace()
  354. res = res + rs
  355. if len(res) > 0:
  356. if not os.path.exists(base_path):
  357. os.mkdir(base_path)
  358. pd.DataFrame(res).to_csv(os.path.join(base_path, "results.csv"))

hfrp.py at commit 6f64091, under Apache-2.0 · at the source

Overview

Authors: Danielle T. Morency1,2, Tao Cui1, Yimei Cai1, Chloe Lok3, Rachel E. Nokku3, Ruoxian Huang4, Grace L. Chu3, Yumeng Xie1, Saleem W. Abu‐Tayeh1, Kaikai He5, Chengjie Qiu5, Junyi Wang4, Paxton M. Paganelli1, Ting Wang1, Gabrielle Williams1, Sreejith Nair6, Huadong Pei6, Dion K. Dickman5, Stefano Vicini1,2, Tingting Wang1,2
  1. Department of Pharmacology & Physiology Georgetown University Medical Center Washington, D.C. USA
  2. Interdisciplinary Program in Neuroscience Georgetown University Medical Center Washington, D.C. USA
  3. Biology Department Georgetown University Washington, D.C. USA
  4. Department of Human Science School of Health Georgetown University Washington, D.C. USA
  5. Department of Neurobiology University of Southern California Los Angeles CA USA
  6. Department of Oncology Georgetown Lombardi Comprehensive Cancer Center Georgetown University Medical Center Washington, D.C. USA
Journal: Advanced science (Weinheim, Baden-Wurttemberg, Germany), volume 13, issue 33, article e10538
Dates: received 8 June 2025; accepted 4 March 2026; published online 15 March 2026; in print June 2026
Type: Research article · Language: English
License: CC BY
Identifiers: DOI 10.1002/advs.202510538 · PMID 41833011 · PMCID PMC13271595 · OpenAlex W7136084204
Open access: gold, a free copy (OpenAlex)
Status: code verified
Categories: human (organism), drosophila (organism), epilepsy (population), autism (population), cellular / molecular (subfield)
Methods: Statistics, Smoothing, state filtering, decompositions, Evoked potentials, Connectivity, Complexity, fMRI & imaging, Single-unit activity, calcium imaging, Physiology & signal measures
Keywords: autism, Chd1, epigenetic regulation, epilepsy, glia, neuromuscular junction, presynaptic homeostatic plasticity
MeSH: Autism Spectrum Disorder*, Chromatin Assembly and Disassembly*, DNA-Binding Proteins*, Drosophila Proteins*, Homeostasis*, Neuronal Plasticity*, Synapses*, Animals, Drosophila, Humans, Synaptic Transmission (* major topic)
Topic: Genomics and Chromatin Dynamics (Molecular Biology, Biochemistry, Genetics and Molecular Biology), according to OpenAlex
Funding: NIH NRSA (F31NS139658); Simons Foundation Autism Research Initiative (551354, SURFiN‐00008126, AN‐SURFiN‐00003291, SFI‐AN‐SURFiN‐00008776); Brain and Behavior Research Foundation (27792); NSF (2440057); National Institute of Mental Health (R01MH134978); NINDS (R01NS117372, R01NS126654)
Citations: not cited yet (Europe PMC); 135 references in the paper

Abstract

Disruptions in chromatin remodelers and synaptic proteins represent major genetic risk factors for autism spectrum disorder (ASD), yet how these distinct gene classes converge to impair circuit function remains unclear. CHD2, a chromatin remodeler linked to ASD, epilepsy, and intellectual disability, regulates gene expression through epigenetic mechanisms. In Drosophila, its homologue Chd1 functions as a key regulator of presynaptic homeostatic potentiation (PHP), a conserved form of synaptic plasticity that stabilizes neurotransmission. Electrophysiology, calcium imaging, super‐resolution microscopy, behavioral assays, and machine learning‐based analysis reveal that Chd1 acts in a temporal and cell type‐specific manner: it is required in perineurial glia for rapid PHP induction and in motoneurons, muscle, and glia for long‐term maintenance. Chd1 controls presynaptic calcium influx and expansion of the readily releasable vesicle pool, both core features of homeostatic compensation. An electrophysiology‐based genetic screen guided by unsupervised machine learning identifies 14 Chd1‐dependent genes necessary for acute PHP, including the glial‐specific effector Cadherin 74A. Loss of Chd1 increases seizure susceptibility and disrupts motor function, mirroring phenotypes observed in CHD2‐related neurodevelopmental disorders. These findings establish a mechanistic connection between chromatin remodeling and synaptic homeostasis and identify glial epigenetic regulation as a critical modulator of circuit stability in health and disease.

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

Repositories

Its files are read in the Code ↔ Paper reader above.

wanglab-georgetown/HFRP_analysis

License: Apache-2.0
State: the link answers, verified on 30 September 2026
Evidence: files inventoried
Commit: 6f64091d8833448fc0ffb3d8f69a9bb983c2578c, 1 May 2024
Languages: Python (1)
Size: 8 files, 1 script
Software Heritage: not archived
Found in: “Data Availability Statement”
Holds: README, license file, environment (requirements.txt)
Not found: CITATION.cff, tests, continuous integration, documentation
Tools: Matplotlib (1 file), NumPy (1 file), pandas (1 file), pyABF (1 file), SciPy (1 file), statsmodels (1 file)
Availability: 1 check, the latest on 30 September 2026: the link answers
  • 30 September 2026: the link answers
3 files

wanglab-georgetown/JOINT

License: Apache-2.0
State: the link answers, verified on 30 September 2026
Evidence: files inventoried
Commit: 044a2ee6122d7e0cf61108d486e6f2cd12240d9f, 30 January 2021
Languages: Python (9), Jupyter (1)
Size: 16 files, 10 scripts
Software Heritage: not archived
Found in: “Data Availability Statement”
Holds: README, license file, environment (requirements.txt, setup.py), 1 notebook
Not found: CITATION.cff, tests, continuous integration, documentation
Tools: NumPy (8 files), pandas (5 files), scikit-learn (3 files), TensorFlow (3 files), anndata (2 files), Scanpy (2 files), SciPy (2 files), Matplotlib (1 file)
Availability: 1 check, the latest on 30 September 2026: the link answers
  • 30 September 2026: the link answers
12 files

wanglab-georgetown/fractal

License: Apache-2.0
State: the link answers, verified on 30 September 2026
Evidence: files inventoried
Commit: 6cea884f89ac574c0b90df661e1b61061ce7dd3b, 19 December 2024
Languages: Python (3), Jupyter (1)
Size: 7 files, 4 scripts
Software Heritage: not archived
Found in: “Data Availability Statement”
Holds: README, license file, environment (requirements.txt), tests, 1 notebook
Not found: CITATION.cff, continuous integration, documentation
Tools: NumPy (3 files), Matplotlib (2 files), pandas (2 files), SciPy (2 files)
Availability: 1 check, the latest on 30 September 2026: the link answers
  • 30 September 2026: the link answers
6 files

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:

  • 3 repositories of the authors' code, each at its verified commit, with its license and how the link was found in the paper;
  • 15 scripts, each with its path and the digest of its content;
  • no match between paragraphs and code yet;
  • 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

All data generated are included in the main Figures and Supporting Information. The datasets that support the findings of this study are available from the corresponding author upon reasonable request. Custom Python codes are available at Github: RRP estimation: https://github.com/wanglab‐georgetown/HFRP_analysis (https://github.com/wanglab-georgetown/HFRP_analysis); scRNA‐seq data cluster and visualization: https://github.com/wanglab‐georgetown/JOINT (https://github.com/wanglab-georgetown/JOINT); Larval crawling fractal dimension analysis: https://github.com/wanglab‐georgetown/fractal (https://github.com/wanglab-georgetown/fractal). All transgenic lines and antibodies generated for this study are available upon request.

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

Versions

The history of this record: each version stored by the harvester or made by a correction of its authors or of the maintainers of its code, and what changed in its facts. The texts of the paper (its abstract, its availability statements) are not part of it; versions that changed only those are not listed.

Version 1, 30 September 2026: the first record

Recorded: type, language, journal, volume, issue, pages, dates, 20 authors, 7 keywords, 11 MeSH terms, 6 funders, 135 references.

Cite

This paper

Morency, D. T., Cui, T., Cai, Y., Lok, C., Nokku, R. E., Huang, R., Chu, G. L., Xie, Y., Abu‐Tayeh, S. W., He, K., Qiu, C., Wang, J., Paganelli, P. M., Wang, T., Williams, G., Nair, S., Pei, H., Dickman, D. K., Vicini, S., & Wang, T. (2026). Temporal and Cell-Specific Regulation of Synaptic Homeostasis by the Chromatin Remodeler Chd1. Advanced science (Weinheim, Baden-Wurttemberg, Germany), 13(33), e10538. https://doi.org/10.1002/advs.202510538

BibTeX

@article{morency2026temporal,
author = {Morency, Danielle T. and Cui, Tao and Cai, Yimei and Lok, Chloe and Nokku, Rachel E. and Huang, Ruoxian and Chu, Grace L. and Xie, Yumeng and Abu‐Tayeh, Saleem W. and He, Kaikai and Qiu, Chengjie and Wang, Junyi and Paganelli, Paxton M. and Wang, Ting and Williams, Gabrielle and Nair, Sreejith and Pei, Huadong and Dickman, Dion K. and Vicini, Stefano and Wang, Tingting},
title = {{Temporal and Cell-Specific Regulation of Synaptic Homeostasis by the Chromatin Remodeler Chd1}},
journal = {Advanced science (Weinheim, Baden-Wurttemberg, Germany)},
year = {2026},
month = mar,
volume = {13},
number = {33},
pages = {e10538},
publisher = {Wiley},
issn = {2198-3844},
doi = {10.1002/advs.202510538},
url = {https://doi.org/10.1002/advs.202510538},
pmid = {41833011},
pmcid = {PMC13271595}
}

RIS

TY - JOUR
AU - Morency, Danielle T.
AU - Cui, Tao
AU - Cai, Yimei
AU - Lok, Chloe
AU - Nokku, Rachel E.
AU - Huang, Ruoxian
AU - Chu, Grace L.
AU - Xie, Yumeng
AU - Abu‐Tayeh, Saleem W.
AU - He, Kaikai
AU - Qiu, Chengjie
AU - Wang, Junyi
AU - Paganelli, Paxton M.
AU - Wang, Ting
AU - Williams, Gabrielle
AU - Nair, Sreejith
AU - Pei, Huadong
AU - Dickman, Dion K.
AU - Vicini, Stefano
AU - Wang, Tingting
TI - Temporal and Cell-Specific Regulation of Synaptic Homeostasis by the Chromatin Remodeler Chd1
T2 - Advanced science (Weinheim, Baden-Wurttemberg, Germany)
J2 - Adv Sci (Weinh)
PY - 2026
DA - 2026/03/15
VL - 13
IS - 33
SP - e10538
SN - 2198-3844
PB - Wiley
DO - 10.1002/advs.202510538
UR - https://doi.org/10.1002/advs.202510538
LA - en
ER -

CSL-JSON

{
"id": "10.1002/advs.202510538",
"type": "article-journal",
"title": "Temporal and Cell-Specific Regulation of Synaptic Homeostasis by the Chromatin Remodeler Chd1",
"container-title": "Advanced science (Weinheim, Baden-Wurttemberg, Germany)",
"author": [
{
"family": "Morency",
"given": "Danielle T."
},
{
"family": "Cui",
"given": "Tao"
},
{
"family": "Cai",
"given": "Yimei"
},
{
"family": "Lok",
"given": "Chloe"
},
{
"family": "Nokku",
"given": "Rachel E."
},
{
"family": "Huang",
"given": "Ruoxian"
},
{
"family": "Chu",
"given": "Grace L."
},
{
"family": "Xie",
"given": "Yumeng"
},
{
"family": "Abu‐Tayeh",
"given": "Saleem W."
},
{
"family": "He",
"given": "Kaikai"
},
{
"family": "Qiu",
"given": "Chengjie"
},
{
"family": "Wang",
"given": "Junyi"
},
{
"family": "Paganelli",
"given": "Paxton M."
},
{
"family": "Wang",
"given": "Ting"
},
{
"family": "Williams",
"given": "Gabrielle"
},
{
"family": "Nair",
"given": "Sreejith"
},
{
"family": "Pei",
"given": "Huadong"
},
{
"family": "Dickman",
"given": "Dion K."
},
{
"family": "Vicini",
"given": "Stefano"
},
{
"family": "Wang",
"given": "Tingting"
}
],
"container-title-short": "Adv Sci (Weinh)",
"volume": "13",
"issue": "33",
"page": "e10538",
"DOI": "10.1002/advs.202510538",
"PMID": "41833011",
"PMCID": "PMC13271595",
"ISSN": "2198-3844",
"publisher": "Wiley",
"URL": "https://doi.org/10.1002/advs.202510538",
"language": "en",
"issued": {
"date-parts": [
[
2026,
3,
15
]
]
}
}

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.7554/elife.107939 [code]
Resolving synaptic events using subsynaptically targeted GCaMP8 variants.
Journal: eLife
In common: pandas, SciPy, Matplotlib, 1 other tool, drosophila, cellular / molecular, 8 references, author Chengjie Qiu
[2] doi:10.1016/j.xhgg.2026.100652 [code]
CRISPR-engineered deletion of POGZ alters transcription factor binding at promoters of genes involved in synaptic signaling.
Journal: HGG advances
In common: pandas, SciPy, Matplotlib, 1 other tool, autism, cellular / molecular, 6 references
[3] doi:10.1126/sciadv.adq6577 [code]
Autism-like phenotypes and increased NMDAR2D expression in mice with KDM5B histone lysine demethylase deficiency.
Journal: Science advances
In common: anndata, Scanpy, pandas, 3 other tools, autism, 4 references
[4] doi:10.1038/s41598-026-48613-0 [code]
An snRNA-seq aging clock for the fruit fly head sheds light on sex-biased aging.
Journal: Scientific reports
In common: anndata, Scanpy, TensorFlow, 5 other tools, drosophila, cellular / molecular, 1 reference
[5] doi:10.1016/j.isci.2026.116099
Complete muscle denervation triggers compensatory sprouting of a bystander tonic motor neuron in &lt;i&gt;Drosophila&lt;/i&gt; larvae.
Journal: iScience
In common: drosophila, cellular / molecular, 6 references
[6] doi:10.1038/s41467-026-70303-8 [code]
Behavioral screening defines the molecular Parkinsonism-related subgroups in Drosophila.
Journal: Nature communications
In common: anndata, Scanpy, scikit-learn, 4 other tools, drosophila, cellular / molecular, 1 reference
[7] doi:10.1093/nar/gkag706 [code]
scDifformer: diffusion-based post-training for virtual cell modeling across large-scale single-cell data.
Journal: Nucleic acids research
In common: anndata, Scanpy, TensorFlow, 6 other tools
[8] doi:10.1038/s41592-026-03057-2 [code]
CREsted: modeling genomic and synthetic cell-type-specific enhancers across tissues and species.
Journal: Nature methods
In common: anndata, Scanpy, TensorFlow, 6 other tools
[9] doi:10.1038/s41586-026-10658-6 [code]
An AI system to help scientists write expert-level empirical software.
Journal: Nature
In common: anndata, Scanpy, TensorFlow, 5 other tools, 1 reference
[10] doi:10.21203/rs.3.rs-9676637/v1 [code]
A Comprehensive Benchmarking of Spatial Deconvolution and Domain Detection Methods across Diverse Tissues and Spatial Transcriptomic Technologies
Journal: Research Square (preprint)
In common: anndata, Scanpy, TensorFlow, 5 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.

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.