Temporal and Cell-Specific Regulation of Synaptic Homeostasis by the Chromatin Remodeler Chd1.
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
- import os
- import sys
- import pandas as pd
- import pyabf
- import numpy as np
- from scipy import signal
- from scipy.signal import argrelextrema
- from scipy.optimize import basinhopping
- import statsmodels.api as sm
- import matplotlib.pyplot as plt
- class HFRP(object):
- """class for high frequency train analysis"""
- def __init__(
- self,
- filename,
- channel=1,
- lowpass_f=400,
- scaling_factor=1,
- trough_max_amp=-20,
- init_min_amp=-40,
- trough_window=80,
- peak_window=8,
- min_peak_trough_gap=10,
- max_peaks_keep=30,
- intercept_window=10,
- plot_figure=True,
- plot_label_size=15,
- use_exp_fit=True,
- save_res=False,
- fix_baseline=True,
- fig_extension="svg",
- show_fig_box=True,
- ):
- super(HFRP, self).__init__()
- self.filename = filename
- self.base_name = os.path.splitext(os.path.basename(filename))[0]
- self.base_path = os.path.join(os.path.dirname(filename), "results")
- if not os.path.exists(self.base_path):
- os.mkdir(self.base_path)
- self.abf = pyabf.ABF(filename)
- self.channel = channel
- self.lowpass_f = lowpass_f
- self.trough_max_amp = trough_max_amp
- self.init_min_amp = init_min_amp
- self.trough_window = trough_window # peak detection window size
- self.min_peak_trough_gap = min_peak_trough_gap
- self.max_peaks_keep = max_peaks_keep
- self.scaling_factor = scaling_factor
- self.peak_window = peak_window
- self.intercept_window = intercept_window
- self.plot_figure = plot_figure
- self.plot_label_size = plot_label_size
- self.use_exp_fit = use_exp_fit
- self.save_res = save_res
- self.fix_baseline = fix_baseline # sometimes baseline is not zero
- self.fig_extension = fig_extension
- self.show_fig_box = show_fig_box
- self.T = self.abf.sweepX[1] - self.abf.sweepX[0]
- self.fs = 1 / self.T
- def exp_int(self, xs):
- t1 = 0
- y1 = xs[t1]
- t3 = len(xs) - 1
- y3 = xs[t3]
- b = np.nan
- if t3 % 2 == 0:
- t2 = int(t3 / 2)
- y2 = xs[t2]
- else:
- t2 = t3 * 0.5
- b = int(np.floor(t2))
- y2 = (xs[b] + xs[b + 1]) * 0.5
- # (a-a*e^(bt/2))/(a*e^(bt/2)-a*e^(bt))=e^(-bt/2)
- r = (y1 - y2) / (y2 - y3)
- if r > 1:
- b = 2 / (t1 - t3) * np.log(r)
- else:
- b = -1e-8
- a = (y1 - y3) / (np.exp(b * t1) - np.exp(b * t3))
- return [a, b]
- def plot_trace(self, sweep_idx, s, t, Y):
- fname = os.path.join(
- self.base_path,
- "{}_{}_trace.{}".format(self.base_name, sweep_idx, self.fig_extension),
- )
- ts = np.array(range(t - s)) * self.T * 1000
- fig = plt.figure(figsize=(16, 9))
- plt.plot(ts, Y[s:t])
- ymax = max(60, np.max(Y[s:t]))
- ymin = min(-300, np.min(Y[s:t]))
- plt.ylim([ymin, ymax])
- plt.xlim([0, ts[-1]])
- plt.xlabel("time (ms)", fontsize=self.plot_label_size)
- plt.ylabel(self.sweepUnitsY, fontsize=self.plot_label_size)
- plt.title(self.base_name + ", sweep index {}".format(sweep_idx))
- fig.savefig(fname)
- def proc_trace(self):
- nc = self.abf.sweepCount
- res0 = []
- for i in range(nc):
- print(i)
- find_sol = True
- try:
- r = self.proc_single_trace(i)
- if len(r) == 0:
- find_sol = False
- r["success"] = 1
- except:
- find_sol = False
- if not find_sol:
- r = {}
- r["success"] = 0
- r["filename"] = self.base_name
- print("bad sweep")
- r["sweep"] = i
- res0.append(r)
- if self.save_res:
- pd.DataFrame(res0).to_csv(os.path.join(self.base_path, "results.csv"))
- return res0
- def proc_single_trace(self, sweep_idx=0):
- self.abf.setSweep(sweep_idx, self.channel)
- Y = self.abf.sweepY * self.scaling_factor
- self.sweepUnitsY = self.abf.sweepUnitsY
- # this indicate a bad trace
- if Y[0] < self.init_min_amp:
- self.plot_trace(sweep_idx, 0, len(Y), Y)
- return {}
- b, a = signal.butter(
- 3, self.lowpass_f, btype="lowpass", fs=self.fs, output="ba"
- )
- y_notched = signal.filtfilt(b, a, Y)
- # first pass use filtered signal
- idxs = argrelextrema(y_notched, np.less, order=self.trough_window)[0]
- pks = y_notched[idxs]
- base_line = np.median(y_notched[: idxs[0]])
- # find the first peak and peaks with amplitude lower than the first one are just noise
- up = pks[(pks - base_line) < self.trough_max_amp][0] * 1.01
- idxs1 = idxs[((pks - base_line) < self.trough_max_amp) & (pks > up)]
- # # Using the Median Absolute Deviation to Find Outliers
- dd = np.diff(idxs1)
- m = np.median(dd)
- # v = max(np.median(np.abs(dd - m)) * 1.4826, 0.5)
- # # v is typically small for a good trace. choose 15 here to make sure good peaks are not filtered
- # up = m + 15 * v
- # dn = m - 15 * v
- # up is a bound used to identify when the trace stops
- up = m * 2
- sel = [0, 1]
- p = 1
- for i in range(2, len(idxs1)):
- d = idxs1[i] - idxs1[p]
- if d < up:
- sel.append(i)
- p = i
- else:
- break
- idxs1 = idxs1[sel]
- # find peak between two troughs to do an exponential fitting between trough and next peak
- idxmf = argrelextrema(y_notched, np.greater, order=self.peak_window)[0]
- pidxs = []
- tidxs = []
- for i in range(len(idxs1)):
- s = idxs1[i]
- t = idxmf[
- np.where(
- (idxmf > s + self.min_peak_trough_gap)
- & (y_notched[idxmf] > 0.5 * y_notched[s])
- )[0][0]
- ]
- pidxs.append(s)
- tidxs.append(t)
- pidxs = np.array(pidxs)
- tidxs = np.array(tidxs)
- rise_time = int(np.mean(pidxs[1:] - tidxs[:-1]))
- base_line = 0
- if self.fix_baseline:
- base_line = np.median(Y[: int(rise_time * 0.98)])
- Y = Y - base_line
- y_notched = y_notched - base_line
- minimizer_kwargs = {"method": "Nelder-Mead", "tol": 1e-6}
- fun = lambda w: w[0] * np.exp(-w[1] * ts)
- fun1 = lambda w: np.linalg.norm(xs - fun(w))
- Yt = Y.copy()
- amps = []
- exp_params = []
- Y1 = Y.copy() * 0
- pidxs = []
- for i in range(len(idxs1)):
- s = idxs1[i]
- t = tidxs[i]
- s1 = max(int(s - rise_time * 0.25), 0)
- t1 = min(int(s + rise_time * 0.25), len(Y))
- s2 = np.argmin(Yt[s1:t1]) + s1
- pidxs.append(s2)
- amps.append(Yt[s2])
- s = s2
- # amps.append(Yt[s])
- if i == len(idxs1) - 1:
- break
- if i <= 1:
- a = 0.6
- else:
- a = 0.5
- b = 0.95
- tt = Yt[s:t]
- idxt = np.where(tt < tt[0] * (1 - a))[0]
- if len(idxt) > 0:
- s1 = idxt[-1]
- else:
- s1 = int(len(tt) * a)
- idxt = np.where(tt > tt[0] * (1 - b))[0]
- if len(idxt) > 0:
- t1 = idxt[idxt > s1][0]
- else:
- t1 = int(len(tt) * b)
- # this is a stable region for exponential fit
- xs = tt[s1:t1]
- s2 = s1 + s
- if self.use_exp_fit:
- w0 = self.exp_int(xs)
- ts = np.array(range(len(xs)))
- r = basinhopping(fun1, w0, minimizer_kwargs=minimizer_kwargs, niter=2)
- if r.x[1] < 0:
- # print(s, t)
- # print(s1, t1)
- # plt.plot(xs)
- # plt.show()
- # print(idxs1)
- # print(r)
- # import pdb
- # pdb.set_trace()
- self.plot_trace(sweep_idx, 0, len(Y), Y)
- raise NameError("negative exponent")
- # remove exponential decay from all future signals
- ts = np.array(range(len(Yt) - s2))
- yt = fun(r.x)
- Yt[s2:] = Yt[s2:] - yt
- Y1[s2:] = Y1[s2:] + yt
- Y1[s2] = np.nan
- exp_params.append(r.x)
- pidxs = np.array(pidxs)
- aa = amps[: self.max_peaks_keep]
- caa = np.cumsum(aa)[-self.intercept_window :]
- xs = np.array(range(len(aa)))[-self.intercept_window :] + 1
- xs = sm.add_constant(xs, prepend=False)
- mod = sm.OLS(caa, xs)
- rl = mod.fit()
- res = {
- "filename": self.base_name,
- "intercept": rl.params[1],
- "amps": aa,
- "pidxs": np.array(pidxs[: self.max_peaks_keep]),
- "tidxs": np.array(tidxs[: self.max_peaks_keep]),
- "exp_params": exp_params[: self.max_peaks_keep],
- "base_line": base_line,
- "num_peaks": len(aa),
- }
- if self.plot_figure:
- fname = os.path.join(
- self.base_path,
- "{}_{}_trace.{}".format(self.base_name, sweep_idx, self.fig_extension),
- )
- rise_time = int(np.mean(res["pidxs"][1:] - res["tidxs"][:-1]))
- # decay_time = int(np.median(res["pidxs"][:-1] - res["tidxs"][:-1]))
- s = max(res["pidxs"][0] - 2 * rise_time, 0)
- # t = min(res["pidxs"][-1] + decay_time,len(Y))
- t = res["tidxs"][-1]
- ts = np.array(range(t - s)) * self.T * 1000
- # fig = plt.figure(figsize=(16, 9))
- fig, ax = plt.subplots(1, 1, figsize=(16, 9))
- plt.plot(ts, Y[s:t])
- ymax = max(60, np.max(Y[s:t]))
- ymin = min(-300, np.min(Y[s:t]))
- plt.ylim([ymin, ymax])
- plt.xlim([0, ts[-1]])
- plt.xlabel("time (ms)", fontsize=self.plot_label_size)
- plt.ylabel(self.sweepUnitsY, fontsize=self.plot_label_size)
- if self.show_fig_box:
- plt.title(self.base_name + ", sweep index {}".format(sweep_idx))
- else:
- ax.spines[["right", "top"]].set_visible(False)
- fig.savefig(fname)
- plt.close(fig)
- fname = os.path.join(
- self.base_path,
- "{}_{}_fit.{}".format(self.base_name, sweep_idx, self.fig_extension),
- )
- # fig = plt.figure(figsize=(16, 9))
- fig, ax = plt.subplots(1, 1, figsize=(16, 9))
- ts = np.array(range(len(Y1))) * self.T * 1000
- plt.plot(ts, Y)
- plt.plot(ts, Y1)
- for i in res["pidxs"]:
- plt.plot(ts[i], Y[i], "ro")
- plt.ylim([ymin, ymax])
- plt.xlim([ts[s], ts[t]])
- plt.xlabel("time (ms)", fontsize=self.plot_label_size)
- plt.ylabel(self.sweepUnitsY, fontsize=self.plot_label_size)
- if self.show_fig_box:
- plt.title(self.base_name + ", sweep index {}".format(sweep_idx))
- else:
- ax.spines[["right", "top"]].set_visible(False)
- fig.savefig(fname)
- plt.close(fig)
- fname = os.path.join(
- self.base_path,
- "{}_{}_cum.{}".format(self.base_name, sweep_idx, self.fig_extension),
- )
- # fig = plt.figure(figsize=(16, 9))
- fig, ax = plt.subplots(1, 1, figsize=(16, 9))
- plt.plot(range(1, len(aa) + 1), -np.cumsum(aa))
- xt = np.array(range(len(aa) + 1))
- plt.plot(xt, -(xt * rl.params[0] + rl.params[1]))
- plt.xlim(0, len(aa))
- ymax = max(5500, np.max(aa))
- plt.ylim(0, ymax)
- plt.xlabel("peak number", fontsize=self.plot_label_size)
- plt.ylabel(self.sweepUnitsY, fontsize=self.plot_label_size)
- if self.show_fig_box:
- plt.title(
- self.base_name
- + ", sweep index {}, intercept=".format(sweep_idx)
- + str(-np.round(rl.params[1]))
- )
- else:
- ax.spines[["right", "top"]].set_visible(False)
- fig.savefig(fname)
- plt.close(fig)
- return res
- if __name__ == "__main__":
- is_dir = True
- files = []
- if len(sys.argv) > 1:
- if os.path.isdir(sys.argv[1]):
- path = sys.argv[1]
- else:
- is_dir = False
- files = [sys.argv[1]]
- base_path = os.path.join(os.path.dirname(sys.argv[1]), "results")
- else:
- path = "."
- if is_dir:
- base_path = os.path.join(path, "results")
- for file in os.listdir(path):
- if file.endswith(".abf"):
- filepath = os.path.join(path, file)
- files.append(filepath)
- res = []
- for file in files:
- if file.endswith(".abf") and os.path.exists(file):
- print(file)
- hfrpo = HFRP(file)
- rs = hfrpo.proc_trace()
- res = res + rs
- if len(res) > 0:
- if not os.path.exists(base_path):
- os.mkdir(base_path)
- 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
- Department of Pharmacology & Physiology Georgetown University Medical Center Washington, D.C. USA
- Interdisciplinary Program in Neuroscience Georgetown University Medical Center Washington, D.C. USA
- Biology Department Georgetown University Washington, D.C. USA
- Department of Human Science School of Health Georgetown University Washington, D.C. USA
- Department of Neurobiology University of Southern California Los Angeles CA USA
- Department of Oncology Georgetown Lombardi Comprehensive Cancer Center Georgetown University Medical Center Washington, D.C. USA
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
6f64091d8833448fc0ffb3d8f69a9bb983c2578c, 1 May 2024Availability: 1 check, the latest on 30 September 2026: the link answers
- 30 September 2026: the link answers
wanglab-georgetown/JOINT
044a2ee6122d7e0cf61108d486e6f2cd12240d9f, 30 January 2021Availability: 1 check, the latest on 30 September 2026: the link answers
- 30 September 2026: the link answers
12 files
- examples/
2celltype_clustering.ipy , Jupyter, 139 linesnb - examples/
2celltype_sim.py , Python, 62 lines - joint/
__init__.py , Python, 1 line - joint/
deg.py , Python, 139 lines - joint/
em.py , Python, 172 lines - joint/
impute.py , Python, 159 lines - joint/
init_clusters.py , Python, 199 lines - joint/
joint.py , Python, 127 lines - joint/
utils.py , Python, 4 lines - setup.py, Python, 46 lines
- LICENSE, License, 13 lines
- README.md, Text, 103 lines
wanglab-georgetown/fractal
6cea884f89ac574c0b90df661e1b61061ce7dd3b, 19 December 2024Availability: 1 check, the latest on 30 September 2026: the link answers
- 30 September 2026: the link answers
6 files
- fractal/
__init__.py , Python, 1 line - fractal/
fractal.py , Python, 451 lines - fractal/
utils.py , Python, 289 lines - tests/
fractal_tests.ipynb , Jupyter, 321 lines - LICENSE.txt, License, 13 lines
- README.md, Text, 128 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:
- 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://
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://
BibTeX
@article{morency2026temp
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/
url = {https://
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/
VL - 13
IS - 33
SP - e10538
SN - 2198-3844
PB - Wiley
DO - 10.1002/
UR - https://
LA - en
ER -
CSL-JSON
{
"id": "10.1002/
"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":
"volume": "13",
"issue": "33",
"page": "e10538",
"DOI": "10.1002/
"PMID": "41833011",
"PMCID": "PMC13271595",
"ISSN": "2198-3844",
"publisher": "Wiley",
"URL": "https://
"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: eLifeIn 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 advancesIn 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 advancesIn 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 reportsIn 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: iScienceIn 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 communicationsIn 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 researchIn 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 methodsIn 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: NatureIn 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 TechnologiesJournal: 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.
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: 3 repositories of the authors' code, each at its verified commit and with its license, 15 scripts, and 0 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:65b3cb2abaf4b7a0…
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.
