OSCR

Deep learning-assisted mapping of dendritic spines using sequential 2D two-photon calcium imaging.

Code ↔ Paper

21 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 21 matches · 1 of them tie a paragraph to a whole file, not to given lines: a weak match, whose lines are not tinted
  1. [1] § STAR★Methods › Method details › ROI design and optimization ↔ src/ROIpy/core/structures.py, lines 289–402 · score 0.94 · longitudinal axis, bin factor, fill fraction, frame flyback, start position, dwell
  2. [2] § STAR★Methods › Method details › DeepD3 training and inference ↔ src/spyne/core/spines/analysis/segmentation/post_processing.py, lines 68–113 · score 0.92 · peak local max, cv2.distanceTransform, binary masks, post processed, dendritic mask, spine masks
  3. [3] § STAR★Methods › Method details › ROI design and optimization ↔ src/ROIpy/core/makeroi/make_roi.py, lines 12–149 · score 0.90 · Coplanar nodes, neuronal morphologies, dendritic ROIs, scan period, farthest, frame rate
  4. [4] § STAR★Methods › Method details › Calcium event classifier training and inference ↔ calcium_event_classifier/core/train_loop.py, lines 21–89 · score 0.88 · torch nn, PyTorch, validation loss, loss function, F1 score, recall
  5. [5] § STAR★Methods › Method details › DeepD3 training and inference ↔ src/spyne/core/spines/analysis/segmentation/pipeline.py, lines 176–254 · score 0.85 · cv2.distanceTransform, dendrites probability maps, binary masks, post processed, algorithm, inference
  6. [6] § STAR★Methods › Method details › Calcium event classifier training and inference ↔ calcium_event_classifier/core/classifier_dff.py, lines 63–145 · score 0.84 · fully connected layer, residual blocks, PyTorch, dropout, flattened, leaky
  7. [7] § Results › ROIpy produces rectangular ROIs aligned with dendritic trajectories ↔ src/ROIpy/core/makeroi/make_roi.py, lines 12–149 · score 0.80 · Short rectangles, apical dendrites, neuronal morphology, coverage, frame rate, elongating
  8. [8] § STAR★Methods › Method details › ROI design and optimization ↔ src/ROIpy/core/structures.py, lines 289–402 · score 0.80 · numerical aperture, starting position, um ratio, Nyquist, laser, wavelength
  9. [9] § STAR★Methods › Method details › Calcium imaging and analysis ↔ src/spyne/core/spines/analysis/timeseries/timeseries.py, lines 28–87 · score 0.78 · dilated spine, area outside, spine masks, disk, neuropil, dilation
  10. [10] § Results › Custom deep learning classifier automatically identifies active spines ↔ calcium_event_classifier/core/classifier_dff.py, lines 5–60 · score 0.77 · leaky ReLU, residual block, Skip connections, convolutional layer, batch normalization, activation
  11. [11] § Results › Custom deep learning classifier automatically identifies active spines ↔ calcium_event_classifier/core/train_loop.py, lines 201–266 · score 0.68 · precision recall, validation loss, F1 score, calcium event, curve, trained
  12. [12] § Results › ROIpy produces rectangular ROIs aligned with dendritic trajectories ↔ src/ROIpy/core/components.py, lines 36–175 · score 0.67 · ScanImage, child, encodes, density, volume, compartment
  13. [13] § STAR★Methods › Method details › Calcium imaging and analysis ↔ src/spyne/core/spines/analysis/timeseries/pipeline.py, lines 9–70 · score 0.67 · background signal, contamination, dilated, disk, neuropil, dilation
  14. [14] § Results › Mapping dendritic spines from discrete 2D ROIs ↔ src/spyne/core/spines/analysis/timeseries/timeseries.py, lines 91–190 · score 0.65 · modified Okada filter, spine masks, rolling, background, fraction, baseline
  15. [15] § Results › Mapping dendritic spines from discrete 2D ROIs ↔ src/spyne/core/spines/analysis/__init__.py, the whole file · a weak match · score 0.62 · modified Okada filter, dendritic spines, calcium event, centroid, transformation, inference
  16. [16] § STAR★Methods › Method details › ROI design and optimization ↔ src/spyne/core/imaging/visualization.py, lines 17–131 · score 0.61 · scan duration, frame period, frame rate, loop, allocated, dimension
  17. [17] § STAR★Methods › Method details › Gated PMTs artifact correction ↔ src/spyne/core/imaging/load.py, lines 391–443 · score 0.59 · Gating artifact correction, stripe, PMTs, channel, scanning, frame
  18. [18] § STAR★Methods › Method details › CSBDeep model training for CARE ↔ calcium_event_classifier/core/train_loop.py, lines 21–89 · score 0.58 · validation loss, loss function, epochs, optimizer, trained, model
  19. [19] § STAR★Methods › Method details › CSBDeep model training for CARE ↔ src/spyne/core/spines/analysis/backends/csbdeep_backend.py, lines 51–74 · score 0.58 · CSBDeep, quality, restoration
  20. [20] § STAR★Methods › Method details › Logistic regression classifier ↔ calcium_event_classifier/core/inference.py, lines 7–40 · score 0.54 · neural network, calcium event, Hyperparameters, weight, classifier, train
  21. [21] § STAR★Methods › Method details › Patch-clamp electrophysiology ↔ src/spyne/core/electrophysiology/analysis/pyabf_passive_props.py, lines 139–257 · score 0.53 · access resistance, isolated, pulses, electrode, slices, min

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 · 315 lines · 10 KB · no license · 3 matches

  1. """ Created on Tue Jul 8 14:46:08 2025
  2. @author: dcupolillo """
  3. import torch
  4. from torch.optim.lr_scheduler import ReduceLROnPlateau
  5. from torch.utils.data import DataLoader
  6. import torch.nn as nn
  7. import copy
  8. import time
  9. from tqdm import tqdm
  10. from sklearn.metrics import (
  11. f1_score, precision_recall_curve, average_precision_score)
  12. import numpy as np
  13. def compute_l1_regularization(model) -> float:
  14. return sum(p.abs().sum() for p in model.parameters())
  15. def train(
  16. train_loader: DataLoader,
  17. valid_loader: DataLoader,
  18. model: nn.Module,
  19. criterion: torch.nn.modules.loss,
  20. device: str,
  21. epochs: int,
  22. learning_rate: float,
  23. lr_drop_factor: float,
  24. lr_drop_patience: int,
  25. lambda1: float,
  26. lambda2: float,
  27. patience: int,
  28. ) -> tuple:
  29. """
  30. Train a model with early stopping and optional latent feature extraction.
  31. Parameters
  32. ----------
  33. train_loader : DataLoader
  34. DataLoader for training data.
  35. valid_loader : DataLoader
  36. DataLoader for validation data.
  37. model : nn.Module
  38. PyTorch model to train.
  39. criterion: torch.nn.modules.loss,
  40. Loss function.
  41. device : str
  42. Device identifier ("cpu" or "cuda").
  43. epochs : int
  44. Maximum number of training epochs.
  45. learning_rate : float
  46. Initial learning rate for the optimizer.
  47. lambda1 : float
  48. L1 regularization weight.
  49. lambda2 : float
  50. L2 regularization weight (weight decay).
  51. patience : int
  52. Number of epochs with no improvement before early stopping.
  53. Returns
  54. -------
  55. model : nn.Module
  56. Best-performing model on the validation set.
  57. train_loss : list of float
  58. Training loss per epoch.
  59. validation_loss : list of float
  60. Validation loss per epoch.
  61. train_f1 : list of float
  62. F1 score on the training set per epoch.
  63. validation_f1 : list of float
  64. F1 score on the validation set per epoch.
  65. validation_precision : list of float
  66. Precision on the validation set per epoch.
  67. validation_recall : list of float
  68. Recall on the validation set per epoch.
  69. best_thresholds : list of float
  70. Optimal classification threshold per epoch.
  71. validation_auc_pr : list of float
  72. AUC-PR score per epoch.
  73. valid_epoch_features : list of torch.Tensor or None
  74. Latent features from validation set per epoch (if available).
  75. valid_epoch_labels : list of torch.Tensor or None
  76. Corresponding labels for validation features (if available).
  77. train_epoch_features : list of torch.Tensor or None
  78. Latent features from training set per epoch (if available).
  79. train_epoch_labels : list of torch.Tensor or None
  80. Corresponding labels for training features (if available).
  81. """
  82. model.to(device)
  83. optimizer = torch.optim.Adam(
  84. model.parameters(),
  85. lr=learning_rate,
  86. weight_decay=lambda2,
  87. amsgrad=True
  88. )
  89. scheduler = ReduceLROnPlateau(
  90. optimizer,
  91. mode='min',
  92. factor=lr_drop_factor,
  93. patience=lr_drop_patience,
  94. verbose=True
  95. )
  96. train_loss, validation_loss = [], []
  97. train_f1, validation_f1 = [], []
  98. validation_precision, validation_recall, best_thresholds = [], [], []
  99. validation_auc_pr = []
  100. valid_epoch_features = []
  101. valid_epoch_labels = []
  102. train_epoch_features = []
  103. train_epoch_labels = []
  104. best_loss = float('inf')
  105. best_model = copy.deepcopy(model)
  106. wait = 0
  107. print("======================================")
  108. print(" #### Training ####")
  109. print("======================================\n")
  110. start_time = time.time()
  111. for epoch in range(epochs):
  112. # Training
  113. model.train()
  114. running_loss = 0.0
  115. total_train_samples = 0
  116. all_preds = []
  117. all_targets = []
  118. all_train_feats = []
  119. # Looping through all the traces
  120. for data, target in tqdm(
  121. train_loader, desc=f"Training Epoch {epoch+1}/{epochs}"):
  122. if data.ndim == 2:
  123. data = data.unsqueeze(1).float() # (B, T) → (B, 1, T)
  124. elif data.ndim == 3:
  125. data = data.float() # already [B, C, T]
  126. # Change dtype before sending to device
  127. # data = data.float().unsqueeze(1).to(device)
  128. target = target.float().view(-1, 1)
  129. data, target = data.to(device), target.to(device)
  130. optimizer.zero_grad()
  131. # Forward pass
  132. features, logits = model(data, return_features=True)
  133. loss = criterion(logits, target)
  134. probs = torch.sigmoid(logits)
  135. l1_norm = compute_l1_regularization(model)
  136. loss += lambda1 * l1_norm
  137. # ...smoothing loss removed...
  138. running_loss += loss.item() * data.size(0)
  139. total_train_samples += data.size(0)
  140. loss.backward() # Backpropagate
  141. optimizer.step() # Update weights
  142. all_preds.extend(probs.detach().cpu().numpy().flatten())
  143. all_targets.extend(target.detach().cpu().numpy().flatten())
  144. all_train_feats.append(features.detach().cpu())
  145. # Compute average loss and prec./recall for training across batches
  146. avg_train_loss = running_loss / total_train_samples
  147. train_loss.append(avg_train_loss)
  148. precision, recall, thresholds = precision_recall_curve(
  149. all_targets, all_preds)
  150. precision_ = precision[1:]
  151. recall_ = recall[1:]
  152. f1_scores = 2 * (precision_ * recall_) / (precision_ + recall_ + 1e-8)
  153. if len(thresholds) > 0:
  154. best_idx = np.argmax(f1_scores)
  155. best_threshold = thresholds[best_idx]
  156. else:
  157. # degenerate case: all_preds identical; fall back to 0.5
  158. best_idx = 0
  159. best_threshold = 0.5
  160. binarized_preds = (
  161. np.array(all_preds) >= best_threshold).astype(int)
  162. train_f1.append(
  163. f1_score(all_targets, binarized_preds, zero_division=0))
  164. train_epoch_features.append(torch.cat(all_train_feats))
  165. train_epoch_labels.append(torch.tensor(all_targets))
  166. # Validation
  167. model.eval()
  168. running_loss = 0.0
  169. total_valid_samples = 0
  170. all_preds = []
  171. all_targets = []
  172. all_valid_feats = []
  173. with torch.no_grad(): # Disable gradient calculation for validation
  174. for data, target in valid_loader:
  175. if data.ndim == 2: # [B, T]
  176. data = data.unsqueeze(1) # → [B, 1, T]
  177. elif data.ndim == 3:
  178. data = data # already [B, C, T]
  179. target = target.float()
  180. target = target.view(-1, 1)
  181. data, target = data.to(device), target.to(device)
  182. features, logits = model(data, return_features=True)
  183. loss = criterion(logits, target)
  184. probs = torch.sigmoid(logits)
  185. running_loss += loss.item() * data.size(0)
  186. total_valid_samples += data.size(0)
  187. all_preds.extend(probs.detach().cpu().numpy().flatten())
  188. all_targets.extend(target.detach().cpu().numpy().flatten())
  189. all_valid_feats.append(features.cpu())
  190. # Compute average loss and prec./recall for validation
  191. avg_valid_loss = running_loss / total_valid_samples
  192. validation_loss.append(avg_valid_loss)
  193. precision, recall, thresholds = precision_recall_curve(
  194. all_targets, all_preds)
  195. precision_ = precision[1:]
  196. recall_ = recall[1:]
  197. f1_scores = 2 * (precision_ * recall_) / (precision_ + recall_ + 1e-8)
  198. if len(thresholds) > 0:
  199. best_idx = np.argmax(f1_scores)
  200. best_threshold = thresholds[best_idx]
  201. val_f1 = f1_scores[best_idx]
  202. else:
  203. best_idx = 0
  204. best_threshold = 0.5
  205. # compute F1 at this fixed threshold for logging
  206. bin_preds = (np.array(all_preds) >= best_threshold).astype(int)
  207. val_f1 = f1_score(all_targets, bin_preds, zero_division=0)
  208. val_auc_pr = average_precision_score(all_targets, all_preds)
  209. validation_f1.append(val_f1)
  210. validation_precision.append(precision[best_idx])
  211. validation_recall.append(recall[best_idx])
  212. best_thresholds.append(best_threshold)
  213. validation_auc_pr.append(val_auc_pr)
  214. valid_epoch_features.append(torch.cat(all_valid_feats))
  215. valid_epoch_labels.append(torch.tensor(all_targets))
  216. # Eventually, reduces learning rate
  217. scheduler.step(avg_valid_loss)
  218. # Early Stopping Check based on accuracy
  219. if avg_valid_loss < best_loss: # check if new best loss
  220. best_loss = avg_valid_loss
  221. best_model = copy.deepcopy(model)
  222. wait = 0
  223. else:
  224. # if loss is not improving, increase the wait until patience
  225. wait += 1
  226. if wait > patience:
  227. print(f"Early stopping at epoch: {epoch+1}")
  228. break
  229. print(
  230. f"Epoch {epoch+1}: "
  231. f"🔵 Train loss: {avg_train_loss:.2f} | "
  232. f"🟢 Val loss: {avg_valid_loss:.2f} | "
  233. f"🎯 Val F1: {validation_f1[-1]:.3f} @ thr={best_threshold:.2f} | "
  234. f"🔻 Prec: {validation_precision[-1]:.3f}, "
  235. f"Rec: {validation_recall[-1]:.3f} | "
  236. f"🏆 Best loss: {best_loss:.2f}"
  237. )
  238. end_time = time.time()
  239. training_time = (
  240. time.strftime("%H:%M:%S", time.gmtime(end_time - start_time)))
  241. print(f"\n🕒 Time for training: {training_time}")
  242. print("======================================\n")
  243. return (
  244. best_model,
  245. train_loss,
  246. validation_loss,
  247. train_f1,
  248. validation_f1,
  249. validation_precision,
  250. validation_recall,
  251. best_thresholds,
  252. validation_auc_pr,
  253. valid_epoch_features,
  254. valid_epoch_labels,
  255. train_epoch_features,
  256. train_epoch_labels
  257. )

train_loop.py at commit 8d12d2a, no license · at the source

Overview

Authors: Dario Cupolillo1, Vincenzo Regio1, Valentina Galleano1,2, Andrea Barberis1
ORCID iDs: Dario Cupolillo
  1. Istituto Italiano di Tecnologia, Synaptic Plasticity of Inhibitory Networks, 16163 Genova, Italy
  2. The Open University, School of Life, Health and Chemical Sciences, Milton Keynes MK7 6AA, UK
Institutions: Italian Institute of Technology (Italy); The Open University (United Kingdom)
Journal: iScience, volume 29, issue 8, article 117010
Dates: received 5 December 2025; accepted 15 July 2026; published online 1 August 2026
Type: Research article · Language: English
License: CC BY
Identifiers: DOI 10.1016/j.isci.2026.117010 · PMID 42577014 · PMCID PMC13453581 · OpenAlex W7172225065
Open access: gold, a free copy (OpenAlex)
Status: code verified
Methods: Spectral & time-frequency, Connectivity, Statistics, Machine learning, Preprocessing, Evoked potentials, fMRI & imaging, Single-unit activity, calcium imaging
Keywords: dendritic spines, synaptic spatial organization, sequential dendritic imaging, two-dimensional two-photon microscopy, calcium imaging, single-spine calcium imaging, calcium event classification
Topic: Nonlinear Optical Materials Studies (Biomedical Engineering, Engineering), according to OpenAlex
Funding: Horizon (MSCA-2021-PF-01 –SynEMO, 101068871)
Citations: not cited yet (Europe PMC); 65 references in the paper
Research resources: AAV5-CaMKIIa-hChR2(H134R)-EYFP RRID:Addgene_26969, Mouse: Fos2A-iCreERT2 RRID:IMSR_JAX:030323, Fiji RRID:SCR_002285, scikit-learn RRID:SCR_002577, scipy RRID:SCR_008058, Python 3 RRID:SCR_008394, matplotlib RRID:SCR_008624, numpy RRID:SCR_008633, pCLAMP 11 RRID:SCR_011323, Scanimage 2021 RRID:SCR_014307, Allen Cell Types Database38 RRID:SCR_014806, pytorch RRID:SCR_018536, scikit-posthoc RRID:SCR_021363, tifffile RRID:SCR_023338, nnU-net RRID:SCR_028165

Abstract

Neurons transform complex spatiotemporal synaptic inputs into structured action potential sequences. Excitatory inputs initiate or interact with dendritic spikes or plateau potentials, adding computational layers that diversify input-output transformations. Because synapse location strategically shapes the dendritic events, mapping synaptic organization is critical for understanding neuronal function. Spine calcium imaging offers a direct readout of active contact location but requires access to spines distributed across intricate three-dimensional dendrites. We present a software pipeline for targeted dendritic imaging and analysis using sequential two-dimensional scanning on standard two-photon microscopes. It includes a ScanImage-compatible pre-acquisition tool, ROIpy, which generates dendrite-aligned region-of-interests (ROIs) for depth-specific dendritic imaging, and a post-acquisition suite, Spyne, which includes deep learning modules for spine detection and binary classification of calcium activity (active vs. non-active spines). This method accommodates diverse experimental designs, including two-photon imaging with patch-clamp or all-optical setups, supporting whole-arbor or branch-specific imaging.

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 21 matches between paragraphs and lines of code.

dcupolillo/ROIpy

License: MIT
State: the link answers, verified on 26 September 2026
Evidence: files inventoried
Commit: 7f920ed31f0ec41ae27fd935c5519dd7ba9a0143, 13 July 2026
Languages: Python (19)
Size: 33 files, 19 scripts
Software Heritage: not archived
Found in: “Data and code availability”
Holds: README, license file, CITATION.cff, environment (environment.yaml, pyproject.toml)
Not found: tests, continuous integration, documentation
Tools: NumPy (9 files), Matplotlib (5 files), tifffile (2 files), SciPy (1 file)
Availability: 1 check, the latest on 26 September 2026: the link answers
  • 26 September 2026: the link answers
21 files

Zenodo 21334250

License: MIT
State: the link answers, verified on 26 September 2026
Evidence: files inventoried
Size: 1 file
Software Heritage: not checked
Found in: “Data and code availability”
Not found: README, license file, CITATION.cff, environment file, tests, continuous integration, documentation
Tools: NumPy (9 files), Matplotlib (5 files), tifffile (2 files), SciPy (1 file)
Availability: 1 check, the latest on 26 September 2026: the link answers (HTTP 200)
  • 26 September 2026: the link answers (HTTP 200)
21 files

dcupolillo/spyne

License: none: the authors keep all their rights
State: the link answers, verified on 26 September 2026
Evidence: files inventoried
Commit: 9c7ad551825afd866afda24f6094acb9218efd1d, 13 July 2026
Languages: Python (54)
Size: 65 files, 54 scripts
Software Heritage: not archived
Found in: “Data and code availability”
Holds: README, CITATION.cff, environment (environment.yml, environment_CPU.yml, pyproject.toml)
Not found: license file, tests, continuous integration, documentation
Tools: NumPy (30 files), SciPy (6 files), TensorFlow (6 files), tifffile (6 files), Matplotlib (4 files), scikit-image (4 files), OpenCV (3 files), pyABF (3 files), PyTorch (2 files), pandas (1 file), scikit-learn (1 file)
Availability: 1 check, the latest on 26 September 2026: the link answers
  • 26 September 2026: the link answers
55 files

Zenodo 21334656

License: CC-BY-4.0
State: the link answers, verified on 26 September 2026
Evidence: files inventoried
Size: 1 file
Software Heritage: not checked
Found in: “Data and code availability”
Not found: README, license file, CITATION.cff, environment file, tests, continuous integration, documentation
Tools: NumPy (30 files), SciPy (6 files), TensorFlow (6 files), tifffile (6 files), Matplotlib (4 files), scikit-image (4 files), OpenCV (3 files), pyABF (3 files), PyTorch (2 files), pandas (1 file), scikit-learn (1 file)
Availability: 1 check, the latest on 26 September 2026: the link answers (HTTP 200)
  • 26 September 2026: the link answers (HTTP 200)
55 files

dcupolillo/calcium_event_classifier

License: none: the authors keep all their rights
State: the link answers, verified on 26 September 2026
Evidence: files inventoried
Commit: 8d12d2a910a7c70501b59b8183a39a54b785a131, 13 July 2026
Languages: Python (11), Jupyter (3)
Size: 24 files, 14 scripts
Software Heritage: not archived
Found in: “Data and code availability”
Holds: README, CITATION.cff, environment (pyproject.toml), 3 notebooks
Not found: license file, tests, continuous integration, documentation
Tools: NumPy (10 files), Matplotlib (8 files), PyTorch (8 files), scikit-learn (5 files), seaborn (2 files)
Availability: 1 check, the latest on 26 September 2026: the link answers
  • 26 September 2026: the link answers
15 files

Zenodo 21334890

License: CC-BY-4.0
State: the link answers, verified on 26 September 2026
Evidence: files inventoried
Size: 1 file
Software Heritage: not checked
Found in: “Data and code availability”
Not found: README, license file, CITATION.cff, environment file, tests, continuous integration, documentation
Tools: NumPy (10 files), Matplotlib (8 files), PyTorch (8 files), scikit-learn (5 files), seaborn (2 files)
Availability: 1 check, the latest on 26 September 2026: the link answers (HTTP 200)
  • 26 September 2026: the link answers (HTTP 200)
15 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:

  • 6 repositories of the authors' code, each at its verified commit, with its license and how the link was found in the paper;
  • 174 scripts, each with its path and the digest of its content;
  • 21 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 and code availability

• Data: The following data have been deposited at IIT-Dataverse and are publicly available as of the date of publication at https://doi.org/10.48557/GZYED8: ○ Training images and spine and dendrites labels used to train spine segmentation algorithm. ○ Trained DeepD3 and nnU-net model. ○ High- and low-signal-to-noise ratio images used to train CSBDeep model. ○ Trained CSBDeep model. ○ Calcium imaging traces used to train custom deep learning classifier. ○ Calcium event classifier trained model. • Code: All original code has been deposited on GitHub at https://github.com/dcupolillo/ROIpy (https://doi.org/10.5281/zenodo.21334250), https://github.com/dcupolillo/spyne (https://doi.org/10.5281/zenodo.21334656), and https://github.com/dcupolillo/calcium_event_classifier (https://doi.org/10.5281/zenodo.21334890). • Additional information: Any additional information required to reanalyze the data reported in this paper is available from the lead contact 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 3, 28 September 2026

  • Authors: added Dario Cupolillo (0000-0002-1517-3815); removed Dario Cupolillo

Version 1, 27 September 2026: the first record

Recorded: type, language, journal, volume, issue, pages, dates, 4 authors, 7 keywords, 1 funder, 63 references, 15 RRIDs.

Cite

This paper

Cupolillo, D., Regio, V., Galleano, V., & Barberis, A. (2026). Deep learning-assisted mapping of dendritic spines using sequential 2D two-photon calcium imaging. iScience, 29(8), 117010. https://doi.org/10.1016/j.isci.2026.117010

BibTeX

@article{cupolillo2026deep,
author = {Cupolillo, Dario and Regio, Vincenzo and Galleano, Valentina and Barberis, Andrea},
title = {{Deep learning-assisted mapping of dendritic spines using sequential 2D two-photon calcium imaging}},
journal = {iScience},
year = {2026},
month = aug,
volume = {29},
number = {8},
pages = {117010},
publisher = {Elsevier},
issn = {2589-0042},
doi = {10.1016/j.isci.2026.117010},
url = {https://doi.org/10.1016/j.isci.2026.117010},
pmid = {42577014},
pmcid = {PMC13453581}
}

RIS

TY - JOUR
AU - Cupolillo, Dario
AU - Regio, Vincenzo
AU - Galleano, Valentina
AU - Barberis, Andrea
TI - Deep learning-assisted mapping of dendritic spines using sequential 2D two-photon calcium imaging
T2 - iScience
J2 - iScience
PY - 2026
DA - 2026/08/01
VL - 29
IS - 8
SP - 117010
SN - 2589-0042
PB - Elsevier
DO - 10.1016/j.isci.2026.117010
UR - https://doi.org/10.1016/j.isci.2026.117010
LA - en
ER -

CSL-JSON

{
"id": "10.1016/j.isci.2026.117010",
"type": "article-journal",
"title": "Deep learning-assisted mapping of dendritic spines using sequential 2D two-photon calcium imaging",
"container-title": "iScience",
"author": [
{
"family": "Cupolillo",
"given": "Dario"
},
{
"family": "Regio",
"given": "Vincenzo"
},
{
"family": "Galleano",
"given": "Valentina"
},
{
"family": "Barberis",
"given": "Andrea"
}
],
"container-title-short": "iScience",
"volume": "29",
"issue": "8",
"page": "117010",
"DOI": "10.1016/j.isci.2026.117010",
"PMID": "42577014",
"PMCID": "PMC13453581",
"ISSN": "2589-0042",
"publisher": "Elsevier",
"URL": "https://doi.org/10.1016/j.isci.2026.117010",
"language": "en",
"issued": {
"date-parts": [
[
2026,
8,
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.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: seaborn, scikit-learn, pandas, 3 other tools, cellular / molecular, 11 references
[2] doi:10.1126/sciadv.aec3961 [code]
Linking functional and structural dendritic spine remodeling during fear learning and extinction in vivo.
Journal: Science advances
In common: pandas, SciPy, Matplotlib, 1 other tool, histology / microscopy, 9 references
[3] doi:10.1126/sciadv.adz4123 [code]
Highly attenuated dendritic propagation of isolated synaptic potentials in vivo.
Journal: Science advances
In common: cellular / molecular, 11 references
[4] doi:10.1371/journal.pcbi.1014571 [code]
SynAPSeg: A novel dataset and image analysis framework for deep learning-based synapse detection and quantification.
Journal: PLoS computational biology
In common: tifffile, TensorFlow, OpenCV, 8 other tools, 2 references
[5] doi:10.1073/pnas.2533168123 [code]
Dendritic morphology and synaptic nonlinearities enhance functional complexity in human cortical neurons.
Journal: Proceedings of the National Academy of Sciences of the United States of America
In common: PyTorch, scikit-learn, pandas, 3 other tools, cellular / molecular, 7 references
[6] doi:10.7554/elife.111876 [code]
Distinct sensorimotor encoding in tuft dendrites and somata associated with action, correction, and learning.
Journal: eLife
In common: tifffile, PyTorch, seaborn, 5 other tools, 5 references
[7] doi:10.7554/elife.89629 [code]
Active dendrites enable robust spiking computations despite timing jitter.
Journal: eLife
In common: seaborn, pandas, Matplotlib, 1 other tool, 8 references
[8] doi:10.1016/j.bpj.2026.06.005 [code]
Curvature-based machine-learning method for automated segmentation of dendritic spines.
Journal: Biophysical journal
In common: TensorFlow, scikit-image, scikit-learn, 4 other tools, histology / microscopy, 3 references
[9] doi:10.7554/elife.108352 [code]
Analysis of dendritic input currents during place field dynamics.
Journal: eLife
In common: pandas, Matplotlib, NumPy, 7 references
[10] doi:10.7554/elife.100880 [code]
An applicable and efficient retrograde monosynaptic circuit mapping tool for larval zebrafish.
Journal: eLife
In common: tifffile, OpenCV, scikit-image, 6 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.