OSCR

Data-driven mouse motor thalamus model reveals topography and spatial weight scaling govern spindle dynamics.

Code ↔ Paper

18 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 18 matches
  1. [1] § Results › Sensitivity analysis ↔ offline-scripts.zip/offline-scripts/sensitivity_analysis/calb1_threshold_analysis.py, lines 96–218 · score 0.74 · error bars, Dice coefficient, VL regions, optimal, Calbindin, parcellations
  2. [2] § Methods › Neuronal placement ↔ thalamic-scaffold.zip/thalamic-scaffold/placement/segment_rt.py, lines 73–112 · score 0.69 · convex hull, volumetric mask, intersection, segmented, Allen, Atlas
  3. [3] § Results › Sensitivity analysis ↔ offline-scripts.zip/offline-scripts/sensitivity_analysis/calb1_threshold_analysis.py, lines 96–218 · score 0.62 · parcellation accuracy, Dice coefficient, Calb1, threshold, sensitivity, VL
  4. [4] § Methods › Network connectivity ↔ offline-scripts.zip/update_rtrt_connections.py, lines 212–262 · score 0.61 · electrical connectivity, gap junctions, chemical connections, ellipsoid, RT
  5. [5] § Methods › Network connectivity ↔ offline-scripts.zip/offline-scripts/sensitivity_analysis/rtrt_deg_dist_analysis.py, lines 217–261 · score 0.61 · electrical connectivity, gap junctions, chemical connections, ellipsoid, RT
  6. [6] § Results › Network connectivity ↔ offline-scripts.zip/offline-scripts/sensitivity_analysis/rt_r_analysis.py, lines 89–168 · score 0.59 · dorsal ventral, lateral medial, Pearson, correlations, scaffold, cells
  7. [7] § Results › Sensitivity analysis ↔ offline-scripts.zip/offline-scripts/sensitivity_analysis/rt_beta_dist.py, lines 95–156 · score 0.57 · degree KS, KS distances, rows, optimization, baseline, beta
  8. [8] § Results › Sensitivity analysis ↔ offline-scripts.zip/offline-scripts/sensitivity_analysis/rt_r_analysis.py, lines 89–168 · score 0.56 · dorsal ventral, lateral medial, correlations, Sensitivity
  9. [9] § Results ↔ thalamic-scaffold.zip/thalamic-scaffold/connectome/rt_synthetic_axons.py, lines 593–660 · score 0.55 · synthetic axon, algorithmically, tree, Gaussian, volumetric, geometrical
  10. [10] § Methods › Neuronal placement ↔ offline-scripts.zip/offline-scripts/sensitivity_analysis/calb1_threshold_analysis.py, lines 26–48 · score 0.54 · VL subdivisions, Calb1, classified, ISH, thresholding, VA
  11. [11] § Results › Neuronal placement ↔ thalamic-scaffold.zip/thalamic-scaffold/placement/segment_rt.py, lines 73–112 · score 0.53 · volumetric mask, VM voxels, intersected, segmentation, Allen, Atlas
  12. [12] § Methods › Network simulations ↔ offline-scripts.zip/update_rtrt_connections.py, lines 136–210 · score 0.52 · post synaptic, Chemical synapses, pre, distance, cell, connection
  13. [13] § Methods › Network simulations ↔ offline-scripts.zip/offline-scripts/sensitivity_analysis/rtrt_deg_dist_analysis.py, lines 142–215 · score 0.52 · post synaptic, Chemical synapses, pre, distance, cell, connection
  14. [14] § Methods › Network connectivity ↔ thalamic-scaffold.zip/thalamic-scaffold/connectome/tc_rt.py, lines 207–296 · score 0.52 · thalamocortical cell, sphere, uniform, collaterals, cylinder, radius
  15. [15] § Results ↔ thalamic-scaffold.zip/thalamic-scaffold/connectome/rt_tc.py, lines 365–466 · score 0.51 · RT TC, arbors, grown, algorithm, space, candidates
  16. [16] § Methods › Network connectivity ↔ thalamic-scaffold.zip/thalamic-scaffold/connectome/tc_rt.py, lines 207–296 · score 0.51 · 1–44, thalamocortical cell, collaterals, beta, connections
  17. [17] § Methods › Network connectivity ↔ thalamic-scaffold.zip/thalamic-scaffold/connectome/rt_tc.py, lines 365–466 · score 0.51 · contact, iteratively, grown, algorithm, Gaussian, filled
  18. [18] § Results › Sensitivity analysis ↔ thalamic-scaffold.zip/thalamic-scaffold/connectome/tc_rt.py, lines 18–31 · score 0.50 · cylinder height, thalamo reticular, collateral

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 · 432 lines · 13 KB · CC-BY-4.0 · 3 matches

  1. import nrrd
  2. import numpy as np
  3. import pickle
  4. import matplotlib.pyplot as plt
  5. import pandas as pd
  6. import seaborn as sns
  7. sns.set_theme(style="white")
  8. # Allen 25um dimensions
  9. # [528, 320, 456]
  10. M = 456
  11. N = 320
  12. # VAL volume starts from 240th voxel in x-direction in CCFv3.0
  13. MIN_X = 240
  14. with open("data/atlas/val_25_voxels.pickle", "rb") as file:
  15. VAL_VOXELS = pickle.load(file)
  16. FLIPPING = True
  17. VA_color = "#BFE052"
  18. VL_color = "#489339"
  19. def classify_voxels(ish_data, voxel_set=VAL_VOXELS, threshold=0.3):
  20. """
  21. Fuzzy classification of VAL subnuclei based on genetic information
  22. """
  23. # Define Calb1 with highest density voxels as secondary-type voxels
  24. is_secondary = ish_data > threshold * np.max(ish_data)
  25. secondary_voxels = np.transpose(np.where(is_secondary))
  26. # Remove the voxels that have been labelled as secondary
  27. secondary_voxel_set = set(map(tuple, secondary_voxels))
  28. # Classify remaining ones as primary
  29. primary_voxels = np.array(list(voxel_set - secondary_voxel_set))
  30. if FLIPPING:
  31. # Use the right hemisphere outcomes for the thalamic-scaffold (modelled as the left hemisphere).
  32. # The hemispheres appear to have different (asymmetrical) expressions, which is indeed weird.
  33. # Nonetheless, the right hemisphere is more coherent with the prediction and the expected VA-VL subdivison
  34. primary_voxels[:, 2] = 228 + (228 - primary_voxels[:, 2])
  35. secondary_voxels[:, 2] = 228 + (228 - secondary_voxels[:, 2])
  36. return (
  37. primary_voxels[primary_voxels[:, 2] < 228],
  38. secondary_voxels[secondary_voxels[:, 2] < 228],
  39. )
  40. def extract_2D_matrices(voxels, ap_indices, resolution=25, validation_map=None):
  41. """
  42. Converts a list of indices of a 3D array to a list of 2D boolean matrices
  43. """
  44. matrices = []
  45. index_type = 1
  46. if resolution == 10:
  47. index_type = 0
  48. for ap_id in ap_indices:
  49. if resolution == 10 and validation_map is not None:
  50. slice_id = validation_map[ap_id[index_type]]
  51. slice = voxels[voxels[:, 0] == slice_id][:, [1, 2]]
  52. slice = (slice * (10 / 25)).astype(int)
  53. else:
  54. slice = voxels[voxels[:, 0] == ap_id[index_type]][:, [1, 2]]
  55. matrix = np.zeros((N, M), dtype=bool)
  56. if len(slice > 0):
  57. matrix[tuple(zip(*slice))] = True
  58. matrices.append(matrix)
  59. return matrices
  60. def compute_dice_index(segmented_mask, validation_mask):
  61. """
  62. This function computes the Dice coefficient, defined ad 2|A∩B|/(|A|+|B|),
  63. between the segmented and validation masks.
  64. """
  65. # Calculate intersection and individual areas
  66. intersection = np.logical_and(segmented_mask, validation_mask).sum()
  67. a = segmented_mask.sum()
  68. b = validation_mask.sum()
  69. # Handle edge case where both masks are empty
  70. if a + b == 0:
  71. return 0.0 # Empty masks should not contribute positively
  72. # Calculate Dice coefficient
  73. dice = (2.0 * intersection) / (a + b)
  74. return dice
  75. def plot_threshold_sensitivity_summary(dice_data):
  76. # Restructure data for seaborn
  77. plot_data = []
  78. for threshold, regions in dice_data.items():
  79. # Add VA-VM data points
  80. for score in regions["va-vm"]:
  81. plot_data.append(
  82. {
  83. "threshold": threshold,
  84. "dice_coefficient": score,
  85. "region": "VA-VM",
  86. }
  87. )
  88. # Add VL data points
  89. for score in regions["vl"]:
  90. plot_data.append(
  91. {
  92. "threshold": threshold,
  93. "dice_coefficient": score,
  94. "region": "VL",
  95. }
  96. )
  97. df = pd.DataFrame(plot_data)
  98. # Calculate means and stds for error bars
  99. thresholds = list(dice_data.keys())
  100. va_vm_means = [np.mean(dice_data[t]["va-vm"]) for t in thresholds]
  101. va_vm_stds = [np.std(dice_data[t]["va-vm"]) for t in thresholds]
  102. vl_means = [np.mean(dice_data[t]["vl"]) for t in thresholds]
  103. vl_stds = [np.std(dice_data[t]["vl"]) for t in thresholds]
  104. # Create the plot
  105. fig, ax = plt.subplots(1, 2, figsize=(12, 5))
  106. # VA-VM region - bands first
  107. sns.lineplot(
  108. data=df[df["region"] == "VA-VM"],
  109. x="threshold",
  110. y="dice_coefficient",
  111. color=VA_color,
  112. err_style="band",
  113. errorbar="sd",
  114. alpha=0.7,
  115. ax=ax[0],
  116. )
  117. # Add error bars manually
  118. ax[0].errorbar(
  119. thresholds,
  120. va_vm_means,
  121. yerr=va_vm_stds,
  122. marker="o",
  123. linewidth=1,
  124. markersize=5,
  125. capsize=2,
  126. capthick=1,
  127. color=VA_color,
  128. label="VA-VM",
  129. )
  130. ax[0].set_xlabel("Calbindin Threshold")
  131. ax[0].set_ylabel("Dice Coefficient")
  132. ax[0].set_title("VA-VM Region Parcellation Accuracy")
  133. ax[0].set_ylim(0, 1)
  134. # Find and plot optimal threshold for VA-VM
  135. optimal_idx_va = np.argmax(va_vm_means)
  136. optimal_threshold_va = thresholds[optimal_idx_va]
  137. ax[0].axvline(
  138. optimal_threshold_va,
  139. color="red",
  140. linestyle="--",
  141. alpha=0.7,
  142. label=f"Optimal: {optimal_threshold_va}",
  143. )
  144. # VL region - bands first
  145. sns.lineplot(
  146. data=df[df["region"] == "VL"],
  147. x="threshold",
  148. y="dice_coefficient",
  149. color=VL_color,
  150. err_style="band",
  151. errorbar="sd",
  152. alpha=0.7,
  153. ax=ax[1],
  154. )
  155. # Add error bars manually
  156. ax[1].errorbar(
  157. thresholds,
  158. vl_means,
  159. yerr=vl_stds,
  160. marker="s",
  161. linewidth=1,
  162. markersize=5,
  163. capsize=2,
  164. capthick=1,
  165. color=VL_color,
  166. label="VL",
  167. )
  168. ax[1].set_xlabel("Calbindin Threshold")
  169. ax[1].set_ylabel("Dice Coefficient")
  170. ax[1].set_title("VL Region Parcellation Accuracy")
  171. ax[1].set_ylim(0, 1)
  172. # Find and plot optimal threshold for VL
  173. optimal_idx_vl = np.argmax(vl_means)
  174. optimal_threshold_vl = thresholds[optimal_idx_vl]
  175. ax[1].axvline(
  176. optimal_threshold_vl,
  177. color="red",
  178. linestyle="--",
  179. alpha=0.7,
  180. label=f"Optimal: {optimal_threshold_vl}",
  181. )
  182. plt.tight_layout()
  183. sns.despine(offset=5, trim=False)
  184. plt.show()
  185. def plot_threshold_heatmap(dice_data):
  186. """
  187. Heatmap showing Dice coefficients across thresholds and slices
  188. """
  189. thresholds = list(dice_data.keys())
  190. n_slices = len(dice_data[thresholds[0]]["va-vm"])
  191. # Prepare data matrices
  192. va_vm_matrix = np.array([dice_data[t]["va-vm"] for t in thresholds]).T
  193. vl_matrix = np.array([dice_data[t]["vl"] for t in thresholds]).T
  194. # Create subplots
  195. fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(15, 6))
  196. # VA-VM heatmap
  197. im1 = ax1.imshow(
  198. va_vm_matrix, aspect="auto", cmap="viridis", vmin=0, vmax=1
  199. )
  200. ax1.set_xlabel("Threshold")
  201. ax1.set_ylabel("Slice number")
  202. ax1.set_xticks(range(len(thresholds)))
  203. ax1.set_xticklabels([f"{t:.2f}" for t in thresholds])
  204. ax1.tick_params("x", rotation=45)
  205. ax1.set_title("VA-VM Dice Coefficients")
  206. plt.colorbar(im1, ax=ax1, fraction=0.046, pad=0.04)
  207. # VL heatmap
  208. im2 = ax2.imshow(vl_matrix, aspect="auto", cmap="viridis", vmin=0, vmax=1)
  209. ax2.set_xlabel("Threshold")
  210. ax2.set_ylabel("Slice number")
  211. ax2.set_xticks(range(len(thresholds)))
  212. ax2.set_xticklabels([f"{t:.2f}" for t in thresholds])
  213. ax2.tick_params("x", rotation=45)
  214. ax2.set_title("VL Dice Coefficients")
  215. plt.colorbar(im2, ax=ax2, fraction=0.046, pad=0.04)
  216. plt.tight_layout()
  217. plt.show()
  218. def sensitivity_analysis(dice_data):
  219. thresholds = list(dice_data.keys())
  220. baseline_threshold = 0.3 # Your current threshold
  221. results = {}
  222. for region in ["va-vm", "vl"]:
  223. region_results = {}
  224. # Calculate statistics for each threshold
  225. means = []
  226. stds = []
  227. for threshold in thresholds:
  228. scores = dice_data[threshold][region]
  229. means.append(np.mean(scores))
  230. stds.append(np.std(scores))
  231. # Find optimal threshold
  232. optimal_idx = np.argmax(means)
  233. optimal_threshold = thresholds[optimal_idx]
  234. optimal_score = means[optimal_idx]
  235. # Calculate baseline performance
  236. baseline_idx = thresholds.index(baseline_threshold)
  237. baseline_score = means[baseline_idx]
  238. # Calculate sensitivity metrics
  239. score_range = max(means) - min(means)
  240. coefficient_of_variation = np.std(means) / np.mean(means)
  241. # Improvement over baseline
  242. improvement = ((optimal_score - baseline_score) / baseline_score) * 100
  243. region_results = {
  244. "optimal_threshold": optimal_threshold,
  245. "optimal_score": optimal_score,
  246. "baseline_score": baseline_score,
  247. "improvement_percent": improvement,
  248. "score_range": score_range,
  249. "coefficient_of_variation": coefficient_of_variation,
  250. "all_means": means,
  251. "all_stds": stds,
  252. }
  253. results[region] = region_results
  254. # Print manuscript-ready summary
  255. print("=== SENSITIVITY ANALYSIS SUMMARY ===")
  256. print(f"Baseline threshold: {baseline_threshold}")
  257. print()
  258. for region in ["va-vm", "vl"]:
  259. r = results[region]
  260. print(f"{region.upper()} Region:")
  261. print(f" Optimal threshold: {r['optimal_threshold']}")
  262. print(f" Optimal Dice: {r['optimal_score']:.3f}")
  263. print(f" Baseline Dice: {r['baseline_score']:.3f}")
  264. print(f" Improvement: {r['improvement_percent']:+.1f}%")
  265. print(f" Sensitivity (CV): {r['coefficient_of_variation']:.3f}")
  266. print(f" Score range: {r['score_range']:.3f}")
  267. print()
  268. return results
  269. # Sanity check with plots
  270. def save_2d_slice_figures(
  271. coronal_va_segmentation,
  272. coronal_va_vm_validation,
  273. coronal_vm,
  274. coronal_vl_segmentation,
  275. coronal_vl_validation,
  276. threshold,
  277. ):
  278. fig, ax = plt.subplots(nrows=2, ncols=9, figsize=(15, 6))
  279. for i in range(9):
  280. ax[0, i].matshow(
  281. np.logical_or(coronal_va_segmentation[i], coronal_vm[i])
  282. )
  283. ax[0, i].matshow(coronal_va_vm_validation[i], alpha=0.15, cmap="Blues")
  284. ax[0, i].xaxis.set_inverted(True)
  285. ax[0, i].axes.get_xaxis().set_ticks([])
  286. ax[1, i].matshow(coronal_vl_segmentation[i])
  287. ax[1, i].matshow(coronal_vl_validation[i], alpha=0.15, cmap="Blues")
  288. ax[1, i].xaxis.set_inverted(True)
  289. ax[1, i].axes.get_yaxis().set_ticks([])
  290. plt.savefig(f"offline-scripts/calb1_slices/{threshold}.png")
  291. plt.tight_layout()
  292. # plt.show()
  293. # Load halved VM voxels (VM is included in Carmen's data)
  294. vm = nrrd.read("data/atlas/halved_vm.nrrd")[0]
  295. vm_voxels = np.vstack(np.where(vm > 0)).T
  296. # Load Carmen's validation data
  297. dict_file = "data/validation/reg_output.pickle"
  298. with open(dict_file, "rb") as f:
  299. d = pickle.load(f)
  300. # Ensure the slices are in the same hemisphere
  301. va_vm = d["VA-VM"]
  302. va_vm[va_vm[:, 2] > 570, 2] = 570 + (570 - va_vm[va_vm[:, 2] > 570, 2])
  303. vl = d["VL"]
  304. vl[vl[:, 2] > 570, 2] = 570 + (570 - vl[vl[:, 2] > 570, 2])
  305. # Extract the anterior-posterior position of the slices
  306. ap_validation_ids = np.unique(va_vm[:, 0])
  307. # Get the overlapping indices between Carmen's data and VAL mesh
  308. overlapping_ids = [
  309. (slice_num, x_id)
  310. for slice_num, x_id in enumerate(
  311. (ap_validation_ids * (10 / 25)).astype(int)
  312. )
  313. if x_id > MIN_X
  314. ]
  315. # Drop the last ID (it does not contain valid Allen data)
  316. overlapping_ids = overlapping_ids[:-1]
  317. # Prepare the data for Dice coefficient computation
  318. coronal_vm = extract_2D_matrices(vm_voxels, overlapping_ids)
  319. coronal_va_vm_validation = extract_2D_matrices(
  320. va_vm, overlapping_ids, 10, ap_validation_ids
  321. )
  322. coronal_vl_validation = extract_2D_matrices(
  323. vl, overlapping_ids, 10, ap_validation_ids
  324. )
  325. # Load raw Calb1 data in VAL
  326. upsampled_calb1_data = np.load("data/ish/upsampled_calb1_val.npy")
  327. # Use different threshold values iteratively, collect Dice coeffs for each
  328. threshold_dice = {}
  329. for threshold in np.linspace(0, 1, 21)[1:]:
  330. threshold = np.around(threshold, 2)
  331. print(f"Using threshold: {threshold}")
  332. # Primary type = VL, secondary type = VA
  333. pv, sv = classify_voxels(upsampled_calb1_data, threshold=threshold)
  334. coronal_va_segmentation = extract_2D_matrices(sv, overlapping_ids)
  335. coronal_vl_segmentation = extract_2D_matrices(pv, overlapping_ids)
  336. # Collect Dice coefficient across slices
  337. dice_coeffs = {"va-vm": [], "vl": []}
  338. for i in range(len(coronal_va_segmentation)):
  339. # Note that VA and VM need to be merged from Allen
  340. va_vm_dice = compute_dice_index(
  341. np.logical_or(coronal_va_segmentation[i], coronal_vm[i]),
  342. coronal_va_vm_validation[i],
  343. )
  344. dice_coeffs["va-vm"].append(va_vm_dice)
  345. vl_dice = compute_dice_index(
  346. coronal_vl_segmentation[i], coronal_vl_validation[i]
  347. )
  348. dice_coeffs["vl"].append(vl_dice)
  349. threshold_dice[threshold] = dice_coeffs
  350. plot_threshold_sensitivity_summary(threshold_dice)
  351. plot_threshold_heatmap(threshold_dice)
  352. summary_stats = sensitivity_analysis(threshold_dice)
  353. # From DOI: 10.1016/S1076-6332(03)00671-8
  354. # Good overlap is when Dice >0.7

calb1_threshold_analysis.py, under CC-BY-4.0 · at the source

Overview

  1. Department of Electronics, Information and Bioengineering, Politecnico di Milano, Milan, Italy
  2. Department of Brain and Behavioral Sciences, University of Pavia, Pavia, Italy
  3. Department of Anatomy, Histology and Neuroscience, Universidad Autónoma de Madrid, Madrid, Spain
Journal: Communications biology, volume 9, issue 1, article 836
Dates: received 16 April 2025; accepted 30 March 2026; published online 18 April 2026
Type: Research article · Language: English
License: CC BY-NC-ND
Identifiers: DOI 10.1038/s42003-026-10032-2 · PMID 42000901 · PMCID PMC13275909 · OpenAlex W7154827381
Open access: gold, a free copy (OpenAlex)
Status: code verified
Categories: computational modeling (no new data) (modality), mouse (organism), computational (subfield)
Methods: Spectral & time-frequency, Connectivity, Smoothing, state filtering, decompositions, Graphs, Single-unit activity, calcium imaging
Keywords: Network models, Computational models
MeSH: Models, Neurological*, Thalamus*, Animals, Computer Simulation, Mice (* major topic)
Topic: Neural Networks and Reservoir Computing (Artificial Intelligence, Computer Science), according to OpenAlex
Citations: cited by 1 paper (Europe PMC); 74 references in the paper

Abstract

The abstract is not reproduced here: the paper's license (CC BY-NC-ND) does not allow it. Read it in the paper, at the publisher or on Europe PMC.

Repositories

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

Zenodo 15198488

License: CC-BY-4.0
State: the link answers, verified on 29 September 2026
Evidence: files inventoried
Size: 9 files
Software Heritage: not checked
Found in: “Code availability”
Holds: README, environment (pyproject.toml)
Not found: license file, CITATION.cff, tests, continuous integration, documentation
Tools: NumPy (30 files), SciPy (14 files), scikit-learn (7 files), Matplotlib (6 files), pandas (3 files), seaborn (2 files), OpenCV (1 file)
Availability: 1 check, the latest on 29 September 2026: the link answers (HTTP 200)
  • 29 September 2026: the link answers (HTTP 200)
35 files
At the source:

Zenodo 15198487

License: CC-BY-4.0
State: the link answers, verified on 29 September 2026
Evidence: files inventoried
Size: 9 files
Software Heritage: not checked
Found in: the references
Holds: README, environment (pyproject.toml)
Not found: license file, CITATION.cff, tests, continuous integration, documentation
Tools: NumPy (27 files), SciPy (17 files), Matplotlib (12 files), seaborn (9 files), scikit-learn (7 files), pandas (5 files)
Availability: 1 check, the latest on 29 September 2026: the link answers (HTTP 200)
  • 29 September 2026: the link answers (HTTP 200)
31 files
At the source:

Code availability statement

The paper has a code availability statement. Its license (CC BY-NC-ND) does not allow reproducing it here; in short, from what the harvester recognized in it:

  • it points to the authors' code: Zenodo 15198488

Read it in the paper: doi.org/10.1038/s42003-026-10032-2.

Tracing map

Proposed by the machine: these links were found in the paper and verified at the source, without human review. The map will receive a Zenodo DOI once one of the paper's authors has validated it with their ORCID.

What the map holds:

  • 2 repositories of the authors' code, each at its verified commit, with its license and how the link was found in the paper;
  • 64 scripts, each with its path and the digest of its content;
  • 18 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 paper has a data availability statement. Its license (CC BY-NC-ND) does not allow reproducing it here; in short, from what the harvester recognized in it:

  • no repository, dataset or request procedure was recognized in it

Read it in the paper: doi.org/10.1038/s42003-026-10032-2.

Versions

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

Version 1, 29 September 2026: the first record

Recorded: type, language, journal, volume, issue, pages, dates, 9 authors, 2 keywords, 5 MeSH terms, 61 references.

Cite

This paper

Sheiban, F. J., Antonietti, A., Beyazyüz, M. F., De Schepper, R., Alonso-Martínez, C., Rubio-Teves, M., Clascá, F., D’Angelo, E., & Pedrocchi, A. (2026). Data-driven mouse motor thalamus model reveals topography and spatial weight scaling govern spindle dynamics. Communications biology, 9(1), 836. https://doi.org/10.1038/s42003-026-10032-2

BibTeX

@article{sheiban2026data,
author = {Sheiban, Francesco Jamal and Antonietti, Alberto and Beyazyüz, Muhammed Furkan and De Schepper, Robin and Alonso-Martínez, Carmen and Rubio-Teves, Mario and Clascá, Francisco and D’Angelo, Egidio and Pedrocchi, Alessandra},
title = {{Data-driven mouse motor thalamus model reveals topography and spatial weight scaling govern spindle dynamics}},
journal = {Communications biology},
year = {2026},
month = apr,
volume = {9},
number = {1},
pages = {836},
publisher = {Nature Publishing Group},
issn = {2399-3642},
doi = {10.1038/s42003-026-10032-2},
url = {https://doi.org/10.1038/s42003-026-10032-2},
pmid = {42000901},
pmcid = {PMC13275909}
}

RIS

TY - JOUR
AU - Sheiban, Francesco Jamal
AU - Antonietti, Alberto
AU - Beyazyüz, Muhammed Furkan
AU - De Schepper, Robin
AU - Alonso-Martínez, Carmen
AU - Rubio-Teves, Mario
AU - Clascá, Francisco
AU - D’Angelo, Egidio
AU - Pedrocchi, Alessandra
TI - Data-driven mouse motor thalamus model reveals topography and spatial weight scaling govern spindle dynamics
T2 - Communications biology
J2 - Commun Biol
PY - 2026
DA - 2026/04/18
VL - 9
IS - 1
SP - 836
SN - 2399-3642
PB - Nature Publishing Group
DO - 10.1038/s42003-026-10032-2
UR - https://doi.org/10.1038/s42003-026-10032-2
LA - en
ER -

CSL-JSON

{
"id": "10.1038/s42003-026-10032-2",
"type": "article-journal",
"title": "Data-driven mouse motor thalamus model reveals topography and spatial weight scaling govern spindle dynamics",
"container-title": "Communications biology",
"author": [
{
"family": "Sheiban",
"given": "Francesco Jamal"
},
{
"family": "Antonietti",
"given": "Alberto"
},
{
"family": "Beyazyüz",
"given": "Muhammed Furkan"
},
{
"family": "De Schepper",
"given": "Robin"
},
{
"family": "Alonso-Martínez",
"given": "Carmen"
},
{
"family": "Rubio-Teves",
"given": "Mario"
},
{
"family": "Clascá",
"given": "Francisco"
},
{
"family": "D’Angelo",
"given": "Egidio"
},
{
"family": "Pedrocchi",
"given": "Alessandra"
}
],
"container-title-short": "Commun Biol",
"volume": "9",
"issue": "1",
"page": "836",
"DOI": "10.1038/s42003-026-10032-2",
"PMID": "42000901",
"PMCID": "PMC13275909",
"ISSN": "2399-3642",
"publisher": "Nature Publishing Group",
"URL": "https://doi.org/10.1038/s42003-026-10032-2",
"language": "en",
"issued": {
"date-parts": [
[
2026,
4,
18
]
]
}
}

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.1371/journal.pbio.3003693 [code]
Thalamic reticular neurons provide cell type-specific modulation of sound processing in the auditory thalamus.
Journal: PLoS biology
In common: seaborn, scikit-learn, pandas, 3 other tools, mouse, 9 references
[2] doi:10.1523/eneuro.0029-26.2026 [code]
Electrical Coupling within Thalamocortical Networks Cumulatively Reduces Cortical Correlation to Sensory Inputs.
Journal: eNeuro
In common: 11 references
[3] doi:10.3389/fnsys.2026.1753562
When the gatekeeper falls: developmental vulnerability of the thalamic reticular nucleus in neonatal and pediatric hypoxic-ischemic brain injury.
Journal: Frontiers in systems neuroscience
In common: 7 references
[4] doi:10.1038/s41593-026-02376-z [code]
A framework for comparative analysis of human and mouse cortical neuron dendrites in corresponding brain regions.
Journal: Nature neuroscience
In common: OpenCV, seaborn, scikit-learn, 4 other tools, mouse, 3 references
[5] doi:10.1038/s41593-026-02253-9 [code]
Genoarchitecture and input-output organization of the mouse basal ganglia and thalamic parafascicular nucleus.
Journal: Nature neuroscience
In common: seaborn, scikit-learn, pandas, 3 other tools, mouse, 4 references
[6] doi:10.1371/journal.pcbi.1014460 [code]
Quantitative anatomy and biophysical modeling of ascending neuromodulatory systems in the developing rat neocortex.
Journal: PLoS computational biology
In common: pandas, Matplotlib, NumPy, 1 reference, author Alberto Antonietti
[7] doi:10.1038/s41592-026-03194-8 [code]
Beyond benchmarking: an expert-guided consensus approach to spatially aware clustering.
Journal: Nature methods
In common: seaborn, scikit-learn, pandas, 3 other tools, 3 references
[8] doi:10.1038/s41593-026-02205-3 [code]
Competitive interactions shape mammalian brain network dynamics and computation.
Journal: Nature neuroscience
In common: seaborn, scikit-learn, pandas, 3 other tools, computational modeling (no new data), mouse, 2 references
[9] doi:10.7554/elife.111876 [code]
Distinct sensorimotor encoding in tuft dendrites and somata associated with action, correction, and learning.
Journal: eLife
In common: seaborn, scikit-learn, pandas, 3 other tools, mouse, 2 references
[10] doi:10.7554/elife.109717 [code]
Retrosplenial cortex enables context-dependent goal-directed sensorimotor transformation.
Journal: eLife
In common: OpenCV, seaborn, scikit-learn, 4 other tools, mouse, 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.