OSCR

A biology-based quality-diversity algorithm for drug repurposing in Alzheimer's disease using automated machine learning.

Code ↔ Paper

7 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 7 matches
  1. [1] § Methods › Biologically-informed feature representation with GNNs ↔ 1_embeddings/example_train_drugs.py, lines 1 to 32 · score 0.71 · GraphSAGE, AlzKB, drug embeddings, gene embeddings, VGAE, modeling · Report a mismatch
  2. [2] § Methods › Biologically-informed feature representation with GNNs ↔ 1_embeddings/example_train_genes.py, lines 1 to 26 · score 0.69 · GraphSAGE, AlzKB, gene embeddings, drug embeddings, VGAE · Report a mismatch
  3. [3] § Methods › Biologically-informed feature representation with GNNs ↔ 4_analysis/validate_atc.py, lines 23 to 137 · score 0.65 · Euclidean distance, ATC, inter, embedding space, intra, validate · Report a mismatch
  4. [4] § Methods › Biologically-informed feature representation with GNNs ↔ 3_visualization/plot_figure1_umap.py, lines 41 to 98 · score 0.64 · UMAP visualization, AD genes, background, neighborhoods, topological, modules · Report a mismatch
  5. [5] § Methods › Biologically-informed feature representation with GNNs ↔ 1_embeddings/example_train_drugs.py, lines 203 to 236 · score 0.61 · clustering loss, AD drugs, encourages, pairwise, training, objective · Report a mismatch
  6. [6] § Methods › TPOT2 with MAP-Elites for AutoML-driven drug classification › Optimization-driven conditional data partitioning › Tree-structured parzen estimator (TPE) optimization ↔ 2_TPOT2+MapElites/run_XGBoost.py, lines 16 to 109 · score 0.57 · random seed, search space, hyperparameter, probability, objective, optimized · Report a mismatch
  7. [7] § Methods › TPOT2 with MAP-Elites for AutoML-driven drug classification ↔ 2_TPOT2+MapElites/run_MAP_Elites_Seed.py, lines 172 to 222 · score 0.53 · search space, MAP Elites, survival, TPOT2, parent, population · Report a mismatch

Paper

Loaded from Europe PMC by your browser; OSCR does not store it: doi.org · Europe PMC

The paper is loaded when this pane is shown.

The authors' code

Python · 260 lines · 8.4 KB · no license · 2 matches

  1. #!/usr/bin/env python3
  2. # -*- coding: utf-8 -*-
  3. """
  4. Script: example_train_drugs.py
  5. Author: Sisi Shao
  6. [NOTE FOR REPRODUCIBILITY]
  7. This script demonstrates the drug embedding training pipeline used in the study.
  8. It builds a Drug–Gene bipartite subgraph and trains a VGAE model to obtain node
  9. embeddings. The exported embeddings are restricted to Drug nodes.
  10. As described in the manuscript:
  11. - Gene embeddings are derived from GraphSAGE in a separate script.
  12. - Drug embeddings are derived from VGAE (this script).
  13. [DATABASE NOTE]
  14. The original study used Neo4j. The current AlzKB backend has migrated to Memgraph.
  15. This script uses the standard Bolt protocol and is compatible with both.
  16. [SCALABILITY NOTE]
  17. This is an example script. It intentionally uses identity features (one-hot) and
  18. simple edge reconstruction. For large graphs, consider using real node features
  19. and/or negative sampling / minibatch training.
  20. """
  21. import sys
  22. import torch
  23. import pandas as pd
  24. import torch.nn.functional as F
  25. from torch_geometric.data import Data
  26. from torch_geometric.nn import VGAE, GCNConv
  27. from neo4j import GraphDatabase
  28. # ============================
  29. # 1. CONFIGURATION
  30. # ============================
  31. NEO4J_URI = "neo4j+s://neo4j.alzkb.ai:7687"
  32. # Demo subset for speed. Replace with your full list if you want the full demo.
  33. TARGET_AD_GENE_IDS = [
  34. 1, 9, 15, 19, 20, 28, 42, 45, 46, 47, 48, 49,
  35. 32764, 32765
  36. ]
  37. OUT_CHANNELS = 16
  38. EPOCHS = 50
  39. LR = 0.01
  40. BETA_KL = 1.0 # weight on KL term (kept standard)
  41. BETA_CLUSTER = 1.0 # weight on clustering term
  42. OUT_CSV = "embeddings_drug_vgae_ADcluster.csv"
  43. # ============================
  44. # 2. DATABASE CONNECTION
  45. # ============================
  46. class LoadGraph:
  47. def __init__(self, uri: str):
  48. try:
  49. self.driver = GraphDatabase.driver(uri, auth=None)
  50. self.driver.verify_connectivity()
  51. print("Connected to Graph Database.")
  52. except Exception as e:
  53. print(f"Database connection failed: {e}")
  54. self.driver = None
  55. def close(self):
  56. if self.driver:
  57. self.driver.close()
  58. def run_cypher(self, query: str):
  59. if not self.driver:
  60. return None
  61. with self.driver.session() as session:
  62. try:
  63. return session.run(query).data()
  64. except Exception as e:
  65. print(f"Query error: {e}")
  66. return None
  67. # ============================
  68. # 3. LOAD DRUG–GENE GRAPH
  69. # ============================
  70. alzkb = LoadGraph(NEO4J_URI)
  71. # Drug–Gene edges restricted to (protein-coding) genes in the target list (demo-style).
  72. drug_gene_query = f"""
  73. MATCH (a:Drug)--(g:Gene)
  74. WHERE g.typeOfGene = 'protein-coding' AND ID(g) IN {TARGET_AD_GENE_IDS}
  75. RETURN DISTINCT ID(a) AS drug_id, ID(g) AS gene_id, a.commonName AS drug_name
  76. """
  77. # Drugs directly connected to Alzheimer's Disease concept node (used for clustering target).
  78. alz_drug_query = """
  79. MATCH (a:Drug)-[]-(b {commonName:"Alzheimer's Disease"})
  80. RETURN DISTINCT ID(a) AS drug_id, a.commonName AS drug_name, a.xrefDrugbank AS drugbank
  81. """
  82. drug_gene_data = alzkb.run_cypher(drug_gene_query)
  83. alz_drug_data = alzkb.run_cypher(alz_drug_query)
  84. alzkb.close()
  85. if not drug_gene_data:
  86. print("No Drug–Gene edges found for the given target genes. Exiting.")
  87. sys.exit(0)
  88. # Collect node IDs (original DB IDs)
  89. drug_ids = sorted({row["drug_id"] for row in drug_gene_data if row.get("drug_id") is not None})
  90. gene_ids = sorted({row["gene_id"] for row in drug_gene_data if row.get("gene_id") is not None})
  91. if len(drug_ids) == 0 or len(gene_ids) == 0:
  92. print("Insufficient nodes (no drugs or no genes) after filtering. Exiting.")
  93. sys.exit(0)
  94. # Build a unified node index mapping (drugs + genes)
  95. all_node_ids = drug_ids + gene_ids
  96. node_id_to_idx = {nid: i for i, nid in enumerate(all_node_ids)}
  97. idx_to_node_id = {i: nid for nid, i in node_id_to_idx.items()}
  98. # Drug names map (best-effort, may have duplicates; we keep first)
  99. drug_name_map = {}
  100. for row in drug_gene_data:
  101. did = row.get("drug_id")
  102. dname = row.get("drug_name")
  103. if did is not None and did not in drug_name_map and dname is not None:
  104. drug_name_map[did] = dname
  105. # Build edges (Drug -> Gene) as an undirected set for VGAE reconstruction stability
  106. # (You can keep directed if desired, but undirected is common for VGAE demos.)
  107. edges = []
  108. for row in drug_gene_data:
  109. did = row["drug_id"]
  110. gid = row["gene_id"]
  111. if did in node_id_to_idx and gid in node_id_to_idx:
  112. u = node_id_to_idx[did]
  113. v = node_id_to_idx[gid]
  114. edges.append((u, v))
  115. edges.append((v, u)) # make symmetric
  116. edge_index = torch.tensor(edges, dtype=torch.long).t().contiguous()
  117. if edge_index.numel() == 0:
  118. print("No edges found after processing. Exiting.")
  119. sys.exit(0)
  120. num_nodes = len(all_node_ids)
  121. # Identity features (demo). For large graphs, replace with meaningful features.
  122. x = torch.eye(num_nodes, dtype=torch.float32)
  123. data = Data(x=x, edge_index=edge_index)
  124. # Identify which indices correspond to drugs
  125. is_drug = torch.zeros(num_nodes, dtype=torch.bool)
  126. for did in drug_ids:
  127. is_drug[node_id_to_idx[did]] = True
  128. # AD-drug indices for clustering target (best-effort intersection)
  129. alz_drug_ids = []
  130. alz_drug_name_map = {}
  131. if alz_drug_data:
  132. for row in alz_drug_data:
  133. did = row.get("drug_id")
  134. if did is not None:
  135. alz_drug_ids.append(did)
  136. dname = row.get("drug_name")
  137. if did is not None and dname is not None:
  138. alz_drug_name_map[did] = dname
  139. alz_drug_ids = sorted(set(alz_drug_ids))
  140. alz_drug_idx = [node_id_to_idx[did] for did in alz_drug_ids if did in node_id_to_idx]
  141. alz_drug_idx_tensor = torch.tensor(alz_drug_idx, dtype=torch.long)
  142. print(f"Loaded nodes: {num_nodes} (drugs={len(drug_ids)}, genes={len(gene_ids)})")
  143. print(f"Loaded edges (symmetrized): {data.edge_index.size(1)}")
  144. print(f"AD drugs (for clustering): {len(alz_drug_idx)}")
  145. # ============================
  146. # 4. VGAE MODEL
  147. # ============================
  148. class Encoder(torch.nn.Module):
  149. def __init__(self, in_channels: int, out_channels: int):
  150. super().__init__()
  151. self.conv1 = GCNConv(in_channels, 2 * out_channels, cached=True)
  152. self.conv_mu = GCNConv(2 * out_channels, out_channels, cached=True)
  153. self.conv_logstd = GCNConv(2 * out_channels, out_channels, cached=True)
  154. def forward(self, x, edge_index):
  155. h = torch.relu(self.conv1(x, edge_index))
  156. return self.conv_mu(h, edge_index), self.conv_logstd(h, edge_index)
  157. encoder = Encoder(data.num_node_features, OUT_CHANNELS)
  158. model = VGAE(encoder)
  159. optimizer = torch.optim.Adam(model.parameters(), lr=LR)
  160. # ============================
  161. # 5. TRAINING LOOP
  162. # ============================
  163. model.train()
  164. print("Starting Drug VGAE training...")
  165. for epoch in range(EPOCHS):
  166. optimizer.zero_grad()
  167. z = model.encode(data.x, data.edge_index)
  168. # Standard VGAE objective
  169. loss_recon = model.recon_loss(z, data.edge_index)
  170. loss_kl = (1.0 / data.num_nodes) * model.kl_loss()
  171. # Clustering loss: encourage AD drugs to be close (if we have enough)
  172. if len(alz_drug_idx) > 1:
  173. alz_emb = z[alz_drug_idx_tensor]
  174. pairwise_dist = F.pairwise_distance(
  175. alz_emb.unsqueeze(1),
  176. alz_emb.unsqueeze(0),
  177. p=2
  178. )
  179. loss_cluster = torch.mean(torch.max(pairwise_dist, dim=1)[0])
  180. else:
  181. loss_cluster = torch.tensor(0.0)
  182. loss = loss_recon + (BETA_KL * loss_kl) + (BETA_CLUSTER * loss_cluster)
  183. loss.backward()
  184. optimizer.step()
  185. if epoch % 10 == 0 or epoch == EPOCHS - 1:
  186. print(
  187. f"Epoch {epoch:03d} | "
  188. f"recon={loss_recon.item():.4f} | kl={loss_kl.item():.4f} | "
  189. f"cluster={float(loss_cluster):.4f} | total={loss.item():.4f}"
  190. )
  191. # ============================
  192. # 6. EXPORT DRUG EMBEDDINGS
  193. # ============================
  194. model.eval()
  195. with torch.no_grad():
  196. z = model.encode(data.x, data.edge_index)
  197. # Export only drug nodes, in strict index order
  198. drug_rows = []
  199. for idx in range(num_nodes):
  200. if not bool(is_drug[idx]):
  201. continue
  202. node_id = idx_to_node_id[idx] # original DB ID
  203. name = drug_name_map.get(node_id) or alz_drug_name_map.get(node_id) or ""
  204. emb = z[idx].cpu().numpy().tolist()
  205. drug_rows.append([node_id, name] + emb)
  206. cols = ["node_id", "drug"] + [f"embedding_{i}" for i in range(OUT_CHANNELS)]
  207. embeddings_df = pd.DataFrame(drug_rows, columns=cols)
  208. embeddings_df.to_csv(OUT_CSV, index=False)
  209. print(f"Saved drug embeddings to {OUT_CSV}")

example_train_drugs.py at commit ecc88ce, no license · at the source

Overview

Authors: Sisi Shao1, Pedro Henrique Ribeiro2, Alena Orlenko2, Katie M. Cardone3, Christina M. Ramirez1, Li Shen4,5, Marylyn D. Ritchie3,4,5, Jason H. Moore1,2
  1. Department of Biostatistics, Fielding School of Public Health, University of California,Los Angeles, CA USA
  2. Department of Computational Biomedicine, Cedars-Sinai Medical Center,Los Angeles, CA USA
  3. Department of Genetics, University of Pennsylvania,Philadelphia, PA USA
  4. Institute for Biomedical Informatics, University of Pennsylvania,Philadelphia, PA USA
  5. Division of Informatics, Department of Biostatistics, Epidemiology and Informatics, University of Pennsylvania,Philadelphia, PA USA
Institutions: University of California, Los Angeles (United States); Cedars-Sinai Medical Center (United States); University of Pennsylvania (United States)
Journal: BioData mining, volume 19, issue 1, article 34
Dates: received 26 October 2025; accepted 17 March 2026; published online 30 March 2026
Type: Research article · Language: English
License: CC BY
Identifiers: DOI 10.1186/s13040-026-00550-4 · PMID 41913218 · PMCID PMC13159293 · OpenAlex W7143293243
Open access: gold, a free copy (OpenAlex)
Status: code verified (how the code is found and verified)
Categories: Alzheimer's / dementia (population)
Methods: Spectral & time-frequency, Statistics, Smoothing, state filtering, decompositions, Machine learning, Connectivity, Graphs
Keywords: Alzheimer’s disease, Drug repurposing, Graph neural networks, Automated machine learning, MAP-elites, Novelty search
Journal subjects: Methodology
Topic: Bioinformatics and Genomic Networks (Molecular Biology, Biochemistry, Genetics and Molecular Biology), according to OpenAlex
Funding: National Institutes of Health (U01HG008685, U01-AG066833, U01-HG008680, U01HG008657, U01HG006379, U01-HG008666, U01HG008701, U01HG008672, U54MD007593, U01HG008676); National Institute on Minority Health and Health Disparities (U54 MD-007593)
Citations: not cited yet (Europe PMC); 32 references in the paper

Abstract

Background: Alzheimer’s disease (AD) remains a major therapeutic challenge, characterized by high clinical trial failure rates and limited efficacy of current treatments. Drug repurposing offers a faster, lower-risk route to new therapies; however, existing computational approaches often prioritize predictive accuracy over mechanistic novelty and interpretability, both of which are critical for clinical translation.

Results: We introduce a quality-diversity Automated Machine Learning (AutoML) framework that integrates biologically informed graph neural network (GNN) embeddings with a MAP-Elites-guided search to discover predictive yet mechanistically distinct therapeutic hypotheses. Drugs and genes are embedded using GraphSAGE and variational graph autoencoders trained on the Alzheimer’s Knowledge Base (AlzKB), with a clustering loss used to anchor known AD entities and define dimensions of biological novelty. In an AD case study using matched ADSP GWAS-derived features, our framework successfully recovered known drug–gene relationships and identified robust consensus candidates across independent validation runs. Most notably, the search consistently prioritized Triclosan—a recently identified environmental risk factor for AD neuroinflammation—and the Ketamine/Quazepam pair, suggesting a model-driven preference for restoring synaptic E/I balance. Furthermore, exploratory leads such as Exemestane and Felodipine were identified in underrepresented biological niches, supported by enrichment in oxidative stress and autophagy pathways. The framework demonstrated high stability across multiple random seeds and a 48% reduction in computational cost compared to standard multi-objective evolutionary baselines.

Conclusions: Beyond AD, this framework offers a generalizable strategy for integrating biomedical knowledge graphs with diversity-enhancing AutoML to accelerate the discovery of mechanistically novel drug candidates across complex polygenic diseases.

Supplementary information: The online version contains supplementary material available at 10.1186/s13040-026-00550-4.

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

Repository

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

SisiShao/Alzheimer-Drug-Repurposing-MAP-Elites

License: none: the authors keep all their rights
State: the link answers, verified on 30 September 2026
Evidence: files inventoried
Commit: ecc88ce824c3b4b966d2b0781a0f8565527d454b, 11 January 2026
Languages: Python (11)
Size: 41 files, 11 scripts
Software Heritage: not archived
Found in: “Data availability”
Holds: README
Not found: license file, CITATION.cff, environment file, tests, continuous integration, documentation
Tools: NumPy (10 files), pandas (10 files), Matplotlib (4 files), scikit-learn (3 files), PyTorch Geometric (2 files), PyTorch (2 files), SciPy (1 file), seaborn (1 file), UMAP (1 file), XGBoost (1 file)
Availability: 1 check, the latest on 30 September 2026: the link answers
  • 30 September 2026: the link answers
12 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:

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

The genomic datasets supporting the conclusions of this article are available in the NIAGADS repository under controlled access (Alzheimer's Disease Sequencing Project; NG00067, Version 18; http://doi.org/10.60859/Z6Z9-9692). All source code, pre-trained embeddings, and processed intermediate files required to reproduce the findings of this study are available in the GitHub repository: https://github.com/SisiShao/Alzheimer-Drug-Repurposing-MAP-Elites.

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, 8 authors, 6 keywords, 2 funders, 22 references.

Cite

This paper

Shao, S., Ribeiro, P. H., Orlenko, A., Cardone, K. M., Ramirez, C. M., Shen, L., Ritchie, M. D., & Moore, J. H. (2026). A biology-based quality-diversity algorithm for drug repurposing in Alzheimer's disease using automated machine learning. BioData mining, 19(1), 34. https://doi.org/10.1186/s13040-026-00550-4

BibTeX

@article{shao2026biology,
author = {Shao, Sisi and Ribeiro, Pedro Henrique and Orlenko, Alena and Cardone, Katie M. and Ramirez, Christina M. and Shen, Li and Ritchie, Marylyn D. and Moore, Jason H.},
title = {{A biology-based quality-diversity algorithm for drug repurposing in Alzheimer's disease using automated machine learning}},
journal = {BioData mining},
year = {2026},
month = mar,
volume = {19},
number = {1},
pages = {34},
publisher = {BMC},
issn = {1756-0381},
doi = {10.1186/s13040-026-00550-4},
url = {https://doi.org/10.1186/s13040-026-00550-4},
pmid = {41913218},
pmcid = {PMC13159293}
}

RIS

TY - JOUR
AU - Shao, Sisi
AU - Ribeiro, Pedro Henrique
AU - Orlenko, Alena
AU - Cardone, Katie M.
AU - Ramirez, Christina M.
AU - Shen, Li
AU - Ritchie, Marylyn D.
AU - Moore, Jason H.
TI - A biology-based quality-diversity algorithm for drug repurposing in Alzheimer's disease using automated machine learning
T2 - BioData mining
J2 - BioData Min
PY - 2026
DA - 2026/03/30
VL - 19
IS - 1
SP - 34
SN - 1756-0381
PB - BMC
DO - 10.1186/s13040-026-00550-4
UR - https://doi.org/10.1186/s13040-026-00550-4
LA - en
ER -

CSL-JSON

{
"id": "10.1186/s13040-026-00550-4",
"type": "article-journal",
"title": "A biology-based quality-diversity algorithm for drug repurposing in Alzheimer's disease using automated machine learning",
"container-title": "BioData mining",
"author": [
{
"family": "Shao",
"given": "Sisi"
},
{
"family": "Ribeiro",
"given": "Pedro Henrique"
},
{
"family": "Orlenko",
"given": "Alena"
},
{
"family": "Cardone",
"given": "Katie M."
},
{
"family": "Ramirez",
"given": "Christina M."
},
{
"family": "Shen",
"given": "Li"
},
{
"family": "Ritchie",
"given": "Marylyn D."
},
{
"family": "Moore",
"given": "Jason H."
}
],
"container-title-short": "BioData Min",
"volume": "19",
"issue": "1",
"page": "34",
"DOI": "10.1186/s13040-026-00550-4",
"PMID": "41913218",
"PMCID": "PMC13159293",
"ISSN": "1756-0381",
"publisher": "BMC",
"URL": "https://doi.org/10.1186/s13040-026-00550-4",
"language": "en",
"issued": {
"date-parts": [
[
2026,
3,
30
]
]
}
}

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

Similar papers

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

[1] doi:10.1038/s41467-025-57027-x [code]
Topological identification and interpretation for single-cell epigenetic regulation elucidation in multi-tasks using scAGDE.
Journal: Nature communications
In common: PyTorch Geometric, XGBoost, UMAP, 7 other tools
[2] doi:10.1186/s12864-025-11946-7 [code]
GNODEVAE: a graph-based ODE-VAE enhances clustering for single-cell data.
Journal: BMC genomics
In common: PyTorch Geometric, UMAP, PyTorch, 6 other tools, 1 reference
[3] doi:10.1126/sciadv.adz9283 [code]
AI-driven discovery of dual antiaging and anti-AD therapeutics via PROTAC target deconvolution of a super-enhancer-regulated axis.
Journal: Science advances
In common: PyTorch Geometric, XGBoost, PyTorch, 6 other tools, Alzheimer's / dementia
[4] doi:10.1093/bib/bbag118 [code]
Drug screening for α-synuclein aggregation inhibitors via multimodal graph neural network.
Journal: Briefings in bioinformatics
In common: PyTorch Geometric, XGBoost, PyTorch, 6 other tools
[5] doi:10.1038/s41597-025-06474-8 [code]
Fatigue Characterization Multimodal Datasets for Stereo Vision in Mixed Reality.
Journal: Scientific data
In common: PyTorch Geometric, XGBoost, PyTorch, 6 other tools
[6] doi:10.1186/s12916-025-04405-3 [code]
Exploring synthetic controls in rare diseases with a proof of concept in spinal cord injury.
Journal: BMC medicine
In common: PyTorch Geometric, XGBoost, PyTorch, 6 other tools
[7] doi:10.1007/s13534-025-00462-y [code]
Automatic prediction of stroke treatment outcomes: latest advances and perspectives.
Journal: Biomedical engineering letters
In common: PyTorch Geometric, XGBoost, PyTorch, 6 other tools
[8] 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: PyTorch Geometric, UMAP, PyTorch, 6 other tools
[9] 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: PyTorch Geometric, UMAP, PyTorch, 6 other tools
[10] doi:10.1016/j.isci.2026.116055 [code]
Mapping the transcriptional diversity of calcium signaling in the mouse and human brain.
Journal: iScience
In common: PyTorch Geometric, UMAP, PyTorch, 6 other tools

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.

Add the badge to the code's README

OSCR: the badge of this paper

If you are an author or a maintainer of this paper's code, you can add this badge. It says what OSCR knows of the paper (its code, its validated tracing map) and links the code to this page. Paste one of these snippets under the README's title. Keep the two marks around it, so that the badge can be replaced in place and is never added twice. OSCR changes nothing in your repository.

Markdown
<!-- oscr-badge:start -->
[![OSCR](https://openscicode.org/badge/doi/10.1186/s13040-026-00550-4.svg)](https://openscicode.org/badge/doi/10.1186/s13040-026-00550-4)
<!-- oscr-badge:end -->
reStructuredText
.. oscr-badge:start

.. image:: https://openscicode.org/badge/doi/10.1186/s13040-026-00550-4.svg
   :target: https://openscicode.org/badge/doi/10.1186/s13040-026-00550-4
   :alt: OSCR

.. oscr-badge:end
HTML
<!-- oscr-badge:start -->
<a href="https://openscicode.org/badge/doi/10.1186/s13040-026-00550-4"><img src="https://openscicode.org/badge/doi/10.1186/s13040-026-00550-4.svg" alt="OSCR"></a>
<!-- oscr-badge:end -->

On GitHub, open the README, choose Edit (the pencil), paste the snippet under the title, then "Commit changes".

If you choose to, you can have the badge kept up to date for you, with oscr badge --write from the command line or with the GitHub Action in your repository's workflows. Every other form and option (a card, AsciiDoc, LaTeX, shields.io) is on the badge 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: code errors and mismatches between the code and the paper about this paper and its code, from readers and its authors, beside the paper and its tracing map.

Report a mismatch between the code and the paper · Report a code error (signed in)

Reproductions: reports from readers who ran the authors' code and did not get the paper's result, what they ran, with which environment, commit and data.

Report a reproduction failure (signed in)

Versions of its code: the releases of its code tied to a version of this paper (the preprint, the accepted manuscript, the version of record…), each with the tracing map versioned with it.

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