OSCR

PRISM: Prior-enhanced Inference for Spatial Transcriptomic Cell Type Mapping.

Code ↔ Paper

3 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 3 matches
  1. [1] § 3 Results › 3.2 Quantitative results for cell type mapping ↔ tutorial/HIP_github.ipynb, lines 274–321 · score 0.69 · CA3 Glut, DG Glut, HIP MERFISH, maps, PRISM, cell
  2. [2] § 2 Materials and methods › 2.3 Prior-enhanced inference network ↔ src/PRISM_model.py, lines 135–241 · score 0.60 · cross entropy loss, softmax, probabilities, model, class, trained
  3. [3] § 2 Materials and methods › 2.4 Multi-level ST refinement ↔ src/PRISM_eva.py, lines 29–101 · score 0.50 · metric rank, Pearson, cosine, KL, score

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

Jupyter notebook · 325 lines · 10 KB · no license · 1 match

  1. # %%
  2. # %%
  3. import sys
  4. import os
  5. # 👇 Change this path to the actual directory where PRISM_load.py and related files are stored
  6. code_path = "~/src/"
  7. # Check whether the path exists; if so, add it to the system path
  8. if os.path.exists(code_path):
  9. if code_path not in sys.path:
  10. sys.path.append(code_path)
  11. print(f"✅ Code path successfully added: {code_path}")
  12. else:
  13. print(f"❌ Path does not exist, please check: {code_path}")
  14. # %%
  15. import os
  16. import torch
  17. import scanpy as sc
  18. import pandas as pd
  19. import numpy as np
  20. import anndata as ad
  21. import scipy.sparse as sp
  22. import warnings
  23. # Import your custom modules
  24. # Make sure PRISM_load.py, PRISM_model.py, etc. are in the current directory
  25. from PRISM_load import *
  26. from PRISM_model import *
  27. from PRISM_eva import *
  28. from PRISM_st import *
  29. warnings.filterwarnings('ignore')
  30. # ==========================================
  31. # 1. Define all arguments here (replace argparse)
  32. # ==========================================
  33. # Create a simple class to simulate the args object,
  34. # allowing access via args.variable_name
  35. class Config:
  36. pass
  37. args = Config()
  38. # --- Required path parameters (replace with your actual paths) ---
  39. args.sc_data_path = "HIP_sc.h5ad" # scRNA-seq data path
  40. args.st_data_path = "HIP_st.h5ad" # spatial transcriptomics data path
  41. # --- Output directory settings ---
  42. # It is recommended to use relative or absolute paths
  43. base_dir = "~/HIP/"
  44. args.result_path = os.path.join(base_dir, "results")
  45. args.final_result_path = os.path.join(base_dir, "final_results")
  46. args.eval_path = os.path.join(base_dir, "evaluation")
  47. args.model_path = os.path.join(base_dir, "models")
  48. args.plot_path = os.path.join(base_dir, "plots")
  49. # --- Experiment parameters (following argparse default settings) ---
  50. args.dataset_name = "HIP_merfish"
  51. args.anno = "subclass" # Annotation column name
  52. args.gene_number = 30 # Number of markers per class
  53. # Automatically create all directories to avoid runtime errors
  54. for path in [
  55. args.result_path,
  56. args.final_result_path,
  57. args.eval_path,
  58. args.model_path,
  59. args.plot_path
  60. ]:
  61. os.makedirs(path, exist_ok=True)
  62. # Set device
  63. device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
  64. print(f"✅ Configuration completed. Device: {device}")
  65. print(f"📂 Output directory: {base_dir}")
  66. # %%
  67. # ==========================================
  68. # 2. Start main execution logic
  69. # ==========================================
  70. # Extract variables for convenience
  71. anno = args.anno
  72. gene_number = args.gene_number
  73. dataset_name_f = args.dataset_name
  74. result_save_prefix = f"{args.result_path}/init_{dataset_name_f}_{anno}_{gene_number}_"
  75. # --- Load scRNA data ---
  76. print("Loading scRNA data...")
  77. sc_obj = sc.read_h5ad(args.sc_data_path)
  78. sc_obj.var_names = sc_obj.var['gene_symbol'].astype(str)
  79. sc_obj.var_names_make_unique()
  80. # Filter rare categories
  81. counts = sc_obj.obs[anno].value_counts()
  82. sc_obj = sc_obj[sc_obj.obs[anno].isin(counts[counts > 5].index)].copy()
  83. # --- Load ST data ---
  84. print("Loading ST data...")
  85. st_obj = sc.read_h5ad(args.st_data_path)
  86. st_obj.var_names = st_obj.var['gene_symbol'].astype(str)
  87. st_obj.var_names_make_unique()
  88. # ST preprocessing
  89. print("Preprocessing ST data...")
  90. sc.pp.normalize_total(st_obj, target_sum=1e4)
  91. sc.pp.log1p(st_obj)
  92. sc.pp.filter_cells(st_obj, min_counts=20)
  93. sc.pp.filter_genes(st_obj, min_cells=20)
  94. # Load aligned data (fmap_load)
  95. sc_data, st_data = fmap_load(sc_obj, st_obj, anno, gene_number)
  96. # --- Prepare initial training mask ---
  97. print("Building initial marker mask...")
  98. num_classes = len(set(sc_data.obs[anno]))
  99. # Note: please confirm whether the key in .uns is 'csg' or 'cosg'
  100. markers_df = pd.DataFrame(sc_data.uns["csg"]["names"]).iloc[0:num_classes * gene_number, :]
  101. input_size = sc_data.X.shape[1]
  102. top_k = gene_number
  103. marker_mask = torch.zeros(num_classes, input_size)
  104. gene2idx = {g: i for i, g in enumerate(sc_data.var_names)}
  105. for ct_idx, ct in enumerate(markers_df.columns):
  106. genes_ct = markers_df[ct].head(top_k).dropna().tolist()
  107. idx = [gene2idx[g] for g in genes_ct if g in gene2idx]
  108. marker_mask[ct_idx, idx] = 1.0
  109. # --- Stage 1: Initial model training ---
  110. fmap_train_retrain_st1(
  111. sc_data,
  112. st_data,
  113. result_save_prefix,
  114. num_classes,
  115. anno,
  116. marker_mask,
  117. num_epochs=100
  118. )
  119. # --- Compute group means for evaluation ---
  120. print("Computing group means...")
  121. df_grouped_means = pd.DataFrame(index=sc_data.obs[anno].cat.categories,
  122. columns=sc_data.var_names)
  123. for annotation in sc_data.obs[anno].unique():
  124. subset = sc_data[sc_data.obs[anno] == annotation, :]
  125. # Handle sparse matrix case
  126. if sp.issparse(subset.X):
  127. mean_expression = subset.X.mean(axis=0).A1
  128. else:
  129. mean_expression = subset.X.mean(axis=0)
  130. df_grouped_means.loc[annotation] = mean_expression
  131. # --- Evaluate initial results for 10 runs ---
  132. print("Evaluating initial results...")
  133. for i in range(10):
  134. result_path = f"{args.result_path}/init_{dataset_name_f}_{anno}_{gene_number}_{i}.csv"
  135. output_path = f"{args.eval_path}/init_{dataset_name_f}_{gene_number}{i}_all_values{gene_number}.csv"
  136. if os.path.exists(result_path):
  137. evaluate_prediction_vs_reference(
  138. result_path,
  139. df_grouped_means,
  140. st_data,
  141. output_path,
  142. anno_col="annotation"
  143. )
  144. # --- Select Top 3 runs ---
  145. print("Selecting best Top 3 runs...")
  146. top3_rounds_vec = evaluate_and_rank_predictions(
  147. root_dir=args.eval_path,
  148. dataset_name="init_" + dataset_name_f,
  149. gene_number=gene_number,
  150. pattern=os.path.join(args.eval_path, f"*_average_values_{gene_number}.csv")
  151. )
  152. print(f"Top 3 rounds: {top3_rounds_vec}")
  153. # --- Build spatial neighborhood data ---
  154. print("Building spatial neighborhood data (concat_self_neighbor_expression)...")
  155. adata_new = concat_self_neighbor_expression(
  156. adata=st_data,
  157. x_key="x",
  158. y_key="y",
  159. k=15,
  160. include_self=False,
  161. layer=None,
  162. layer_key_for_raw="raw_counts"
  163. )
  164. # --- Fuse Top 3 results as pseudo-labels ---
  165. print("Fusing pseudo-labels...")
  166. sc_data_st_final = None
  167. for round_id in top3_rounds_vec:
  168. csv_path = f"{args.result_path}/init_{dataset_name_f}_{anno}_{gene_number}_{round_id}.csv"
  169. if not os.path.exists(csv_path):
  170. continue
  171. result = pd.read_csv(csv_path)
  172. conf = result.max(axis=1)
  173. predicted_labels = result.idxmax(axis=1)
  174. adata_new.obs[anno] = predicted_labels.values
  175. sc_data_st = adata_new[adata_new.obs[anno] != 'filter'].copy()
  176. if sc_data_st_final is None:
  177. sc_data_st_final = sc_data_st
  178. else:
  179. sc_data_st_final = ad.concat([sc_data_st_final, sc_data_st])
  180. print(f"Final training set size: {sc_data_st_final.shape}")
  181. # --- Prepare final masks (marker & anti-marker) ---
  182. print("Preparing final masks (marker & anti-marker)...")
  183. # Re-align markers
  184. markers_df = pd.DataFrame(sc_data.uns["csg"]["names"]).iloc[0:num_classes * gene_number, :]
  185. marker_genes = set(markers_df.values.flatten().tolist())
  186. valid_types = set(sc_data_st_final.obs[anno])
  187. markers_df = markers_df.loc[:, markers_df.columns.isin(valid_types)]
  188. num_classes = len(set(sc_data_st_final.obs[anno]))
  189. input_size = sc_data_st_final.X.shape[1]
  190. top_k = gene_number
  191. # Positive marker mask
  192. marker_mask = torch.zeros(num_classes, input_size) # (C, G)
  193. gene2idx = {g: i for i, g in enumerate(sc_data_st_final.var_names)}
  194. for ct_idx, ct in enumerate(markers_df.columns):
  195. genes_ct = markers_df[ct].head(top_k).dropna().tolist()
  196. idx = [gene2idx[g] for g in genes_ct if g in gene2idx]
  197. marker_mask[ct_idx, idx] = 1.0
  198. # Anti-marker mask (inverse CSG)
  199. print("Computing anti-markers...")
  200. inverse_csg(
  201. sc_data_st_final,
  202. groupby=anno
  203. )
  204. anti_df = pd.DataFrame(sc_data_st_final.uns["csg_inv"]["names"])
  205. anti_df = anti_df.loc[:, anti_df.columns.isin(set(sc_data_st_final.obs[anno]))]
  206. anti_mask = torch.zeros(num_classes, input_size)
  207. for ct_idx, ct in enumerate(anti_df.columns):
  208. genes_ct = anti_df[ct].head(top_k).dropna().tolist()
  209. idx = [gene2idx[g] for g in genes_ct if g in gene2idx]
  210. anti_mask[ct_idx, idx] = 1.0
  211. # --- Stage 2: Final training ---
  212. result_save = f"{args.final_result_path}/PRISM_{dataset_name_f}_{gene_number}_{anno}_"
  213. model_save = f"{args.model_path}/PRISM_{dataset_name_f}_{gene_number}_{anno}_"
  214. plot_save = f"{args.plot_path}/PRISM_{dataset_name_f}_{gene_number}_{anno}_"
  215. fmap_train_retrain_st2(
  216. sc_data_st_final,
  217. adata_new,
  218. result_save,
  219. model_save,
  220. plot_save,
  221. num_classes,
  222. anno,
  223. marker_mask,
  224. anti_mask,
  225. num_epochs=200
  226. )
  227. print("🎉 All tasks completed successfully!")
  228. # %%
  229. import matplotlib.pyplot as plt
  230. from matplotlib.lines import Line2D
  231. import matplotlib.colors as mcolors
  232. import numpy as np
  233. fp='~/HIP/final_results/PRISM_HIP_merfish_30_subclass_0.csv'
  234. df = pd.read_csv(fp)
  235. pred = df.idxmax(axis=1).astype(str)
  236. st_data.obs['predicted_classes'] = pred.values
  237. unique_clusters = np.unique(st_data.obs[anno])
  238. unique_predictions = np.unique(st_data.obs['predicted_classes'])
  239. cmap_clusters = plt.get_cmap('tab20', len(unique_clusters))
  240. cmap_predictions = plt.get_cmap('tab20b', len(unique_predictions))
  241. color_map = {label: cmap_clusters(i) for i, label in enumerate(unique_clusters)}
  242. color_map.update({label: cmap_predictions(i) for i, label in enumerate(unique_predictions) if label not in color_map})
  243. special_colors = {
  244. "017 CA3 Glut": "#1f77b4",
  245. '016 CA1-ProS Glut': '#ffbb78',
  246. '037 DG Glut': '#ff7f0e',
  247. '038 DG-PIR Ex IMN': '#c85e0b',
  248. "016 CA1-ProS Glut": "#2ca02c",
  249. "025 CA2-FC-IG Glut": "#ffff00",
  250. '023 SUB-ProS Glut': '#aec7e8'
  251. }
  252. color_map.update(special_colors)
  253. colors = [color_map[label] for label in st_data.obs['predicted_classes']]
  254. subset_color_map = {label: color_map[label] for label in unique_predictions if label in color_map}
  255. coor_x = st_data.obs['x']
  256. coor_y = st_data.obs['y']
  257. fig, ax = plt.subplots(figsize=(20, 15))
  258. scatter = ax.scatter(coor_x, coor_y, c=colors, s=10)
  259. legend_elements = [Line2D([0], [0], marker='o', color='w', label=cell_type,
  260. markerfacecolor=color, markersize=15)
  261. for cell_type, color in subset_color_map.items()]
  262. ax.legend(handles=legend_elements, title='Cell Types', bbox_to_anchor=(1.05, 1), loc='upper left')
  263. plt.tight_layout()
  264. save_path = plot_save + ".pdf"
  265. plt.savefig(save_path, format='pdf', bbox_inches='tight', dpi=300)
  266. plt.show()
  267. # %%

HIP_github.ipynb at commit 1632f47, no license · at the source

Overview

Authors: Yiheng Xu1,2,3, Xuehao Wang3, Shuqi Liu1,4,2, Congcong Ge5, Xiang Chen3, Yueming Wang4,3, Bin Yu6, Xiao-Ming Li1,4,2
ORCID iDs: Xiao-Ming Li
  1. Department of Psychiatry of the Second Affiliated Hospital, Zhejiang University School of Medicine, Hangzhou, 310009, China
  2. NHC and CAMS Key Laboratory of Medical Neurobiology, MOE Frontier Center of Brain Science and Brain-Machine Integration, School of Brain Science and Brain Medicine, Liangzhu Laboratory, Zhejiang University, Hangzhou, 310058, China
  3. College of Computer Science and Technology, Zhejiang University, Hangzhou, 310027, China
  4. Nanhu Brain-Computer Interface Institute, Hangzhou, 311100, China
  5. School of Software Technology, Zhejiang University, Hangzhou, 310027, China
  6. Institute of Brain and Cognitive Science, School of Medicine, Hangzhou City University, Hangzhou, 310015, China
Journal: Bioinformatics (Oxford, England), volume 42, issue 8, article btag515
Dates: received 10 April 2026; accepted 8 July 2026; published online 23 July 2026; in print August 2026
Type: Research article · Language: English
License: CC BY
Identifiers: DOI 10.1093/bioinformatics/btag515 · PMID 42490201 · PMCID PMC13430658 · OpenAlex W7170189813
Open access: gold, a free copy (OpenAlex)
Status: code verified
Categories: genetics / omics (modality)
Methods: Connectivity, Machine learning
MeSH: Computational Biology*, Gene Expression Profiling*, Software*, Transcriptome*, Algorithms, Animals, Single-Cell Gene Expression Analysis, Spatial Transcriptomics (* major topic)
Journal subjects: Gene Expression
Topic: Single-cell and spatial transcriptomics (Molecular Biology, Biochemistry, Genetics and Molecular Biology), according to OpenAlex
Funding: Brain Science and Brain-like Intelligence Technology-National Science and Technology Major (2021ZD0202700); National Natural Science Foundation of China (82288101, 82090031, 82371525); Non-profit Central Research Institute Fund of Chinese Academy of Medical Sciences (2023-PT310-01); Nanhu Brain-computer Interface Institute (04202601013); Fundamental Research Funds for the Central Universities (2025ZFJH01-01); Fundamental and Interdisciplinary Disciplines Breakthrough Plan of the Ministry of Education of China (JYB2025XDXM605); ZJU Kunpeng & Ascend Center of Excellence
Citations: not cited yet (Europe PMC); 42 references in the paper

Abstract

Motivation: Cell type annotation in spatial transcriptomics (ST) is fundamental for deciphering complex tissue organization and spatially resolved biological processes. Most existing methods perform ST cell type annotation by transferring labels from single-cell RNA-seq (scRNA) data to ST data, but typically rely on weakly constrained representations that neglect structured spatial dependencies and treat marker gene selection as an isolated preprocessing step. This renders them vulnerable to substantial domain gaps as well as platform-specific noise, resulting in unstable predictions and limited biological interpretability.

Results: To address these issues, we propose Prior-enhanced Inference for Spatial Transcriptomic Cell Type Mapping (PRISM), a novel three-stage framework integrating biological prior construction, pseudo-label generation, and multi-level ST refinement. First, PRISM constructs a cross-domain biological prior to explicitly extract marker genes to enforce positive biological discriminability. Next, it adopts a prior-enhanced self-training strategy, where scRNA-trained ensembles generate reliable pseudo-label candidates for ST data, serving as a robust anchor for cross-domain adaptation. Finally, the framework consolidates high-quality ensemble predictions selected via metric-guided evaluation, encodes spatial information, and optimizes the model under dual-directional biological constraints. Extensive experiments on eleven ST datasets across six platforms, two species, and multiple tissue contexts validate PRISM. Specifically, on the five labeled benchmarks, PRISM shows strong overall performance under both Accuracy and Macro-F1 evaluation across brain and non-brain tissues. Moreover, under fully label-free settings, PRISM achieves the best overall composite rank across all datasets, demonstrating strong robustness to domain shift and platform heterogeneity.

Availability and implementation: PRISM is available at https://github.com/lilab-ai4s/PRISM and https://doi.org/10.5281/zenodo.20529683.

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

lilab-ai4s/PRISM

License: none: the authors keep all their rights
State: the link answers, verified on 26 September 2026
Evidence: files inventoried
Commit: 1632f47e8c937f9fd61e84405d63571ab11b9d17, 13 July 2026
Languages: Python (11), Jupyter (3), R (2)
Size: 25 files, 16 scripts
Software Heritage: not archived
Found in: “Data availability”
Holds: README, environment (environment.yml), 3 notebooks
Not found: license file, CITATION.cff, tests, continuous integration, documentation
Tools: NumPy (14 files), pandas (14 files), Scanpy (12 files), PyTorch (10 files), SciPy (9 files), anndata (6 files), Matplotlib (6 files), scikit-learn (2 files)
Availability: 1 check, the latest on 26 September 2026: the link answers
  • 26 September 2026: the link answers
17 files

Zenodo 20529683

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 availability”
Not found: README, license file, CITATION.cff, environment file, tests, continuous integration, documentation
Tools: NumPy (7 files), pandas (7 files), Scanpy (7 files), SciPy (7 files), anndata (6 files), Matplotlib (6 files), PyTorch (6 files), 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)
8 files

Availability and implementation

PRISM is available at https://github.com/lilab-ai4s/PRISM and https://doi.org/10.5281/zenodo.20529683.

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

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;
  • 23 scripts, each with its path and the digest of its content;
  • 3 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

No new primary sequencing data were generated in this study. All datasets analysed in this study are publicly available from the sources described and cited in Supplementary Section S10. The PRISM source code, benchmarking scripts, and supporting materials are available at https://github.com/lilab-ai4s/PRISM and are archived at Zenodo at https://doi.org/10.5281/zenodo.20529683.

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, 27 September 2026: the first record

Recorded: type, language, journal, volume, issue, pages, dates, 8 authors, 8 MeSH terms, 7 funders, 42 references.

Cite

This paper

Xu, Y., Wang, X., Liu, S., Ge, C., Chen, X., Wang, Y., Yu, B., & Li, X.-M. (2026). PRISM: Prior-enhanced Inference for Spatial Transcriptomic Cell Type Mapping. Bioinformatics (Oxford, England), 42(8), btag515. https://doi.org/10.1093/bioinformatics/btag515

BibTeX

@article{xu2026prism,
author = {Xu, Yiheng and Wang, Xuehao and Liu, Shuqi and Ge, Congcong and Chen, Xiang and Wang, Yueming and Yu, Bin and Li, Xiao-Ming},
title = {{PRISM: Prior-enhanced Inference for Spatial Transcriptomic Cell Type Mapping}},
journal = {Bioinformatics (Oxford, England)},
year = {2026},
month = aug,
volume = {42},
number = {8},
pages = {btag515},
publisher = {Oxford University Press},
issn = {1367-4803},
doi = {10.1093/bioinformatics/btag515},
url = {https://doi.org/10.1093/bioinformatics/btag515},
pmid = {42490201},
pmcid = {PMC13430658}
}

RIS

TY - JOUR
AU - Xu, Yiheng
AU - Wang, Xuehao
AU - Liu, Shuqi
AU - Ge, Congcong
AU - Chen, Xiang
AU - Wang, Yueming
AU - Yu, Bin
AU - Li, Xiao-Ming
TI - PRISM: Prior-enhanced Inference for Spatial Transcriptomic Cell Type Mapping
T2 - Bioinformatics (Oxford, England)
J2 - Bioinformatics
PY - 2026
DA - 2026/08/01
VL - 42
IS - 8
SP - btag515
SN - 1367-4803
PB - Oxford University Press
DO - 10.1093/bioinformatics/btag515
UR - https://doi.org/10.1093/bioinformatics/btag515
LA - en
ER -

CSL-JSON

{
"id": "10.1093/bioinformatics/btag515",
"type": "article-journal",
"title": "PRISM: Prior-enhanced Inference for Spatial Transcriptomic Cell Type Mapping",
"container-title": "Bioinformatics (Oxford, England)",
"author": [
{
"family": "Xu",
"given": "Yiheng"
},
{
"family": "Wang",
"given": "Xuehao"
},
{
"family": "Liu",
"given": "Shuqi"
},
{
"family": "Ge",
"given": "Congcong"
},
{
"family": "Chen",
"given": "Xiang"
},
{
"family": "Wang",
"given": "Yueming"
},
{
"family": "Yu",
"given": "Bin"
},
{
"family": "Li",
"given": "Xiao-Ming"
}
],
"container-title-short": "Bioinformatics",
"volume": "42",
"issue": "8",
"page": "btag515",
"DOI": "10.1093/bioinformatics/btag515",
"PMID": "42490201",
"PMCID": "PMC13430658",
"ISSN": "1367-4803",
"publisher": "Oxford University Press",
"URL": "https://doi.org/10.1093/bioinformatics/btag515",
"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.1093/bioinformatics/btag578 [code]
NicheDeSig: niche-aware deconvolution and adaptive signature analysis for spatial transcriptomics.
Journal: Bioinformatics (Oxford, England)
In common: anndata, Scanpy, PyTorch, 4 other tools, genetics / omics, 10 references
[2] doi:10.1016/j.isci.2026.117206 [code]
ReliST: A model-agnostic risk layer for spatial transcriptomics deconvolution.
Journal: iScience
In common: anndata, Scanpy, PyTorch, 5 other tools, genetics / omics, 8 references
[3] doi:10.21203/rs.3.rs-9676637/v1 [code]
A Comprehensive Benchmarking of Spatial Deconvolution and Domain Detection Methods across Diverse Tissues and Spatial Transcriptomic Technologies
Journal: Research Square (preprint)
In common: anndata, Scanpy, PyTorch, 5 other tools, genetics / omics, 7 references
[4] doi:10.1093/nar/gkag706 [code]
scDifformer: diffusion-based post-training for virtual cell modeling across large-scale single-cell data.
Journal: Nucleic acids research
In common: anndata, Scanpy, PyTorch, 5 other tools, 7 references
[5] doi:10.1186/s13073-026-01704-z [code]
Gene expression profiling enables refined parcellation of cortical layers in the heterogeneous human cerebral cortex.
Journal: Genome medicine
In common: anndata, Scanpy, PyTorch, 5 other tools, genetics / omics, 6 references
[6] doi:10.1093/bib/bbag404 [code]
Navigating cell maps by deep learning integration of single-cell and spatially resolved transcriptomics.
Journal: Briefings in bioinformatics
In common: anndata, Scanpy, PyTorch, 5 other tools, genetics / omics, 6 references
[7] doi:10.1002/advs.77003 [code]
SemanticST: A Scalable Multi-Contextual Graph Learning Framework for Uncovering Spatial Niches and Robust Multi-Sample Integration in Spatial Transcriptomics.
Journal: Advanced science (Weinheim, Baden-Wurttemberg, Germany)
In common: anndata, Scanpy, PyTorch, 5 other tools, genetics / omics, 6 references
[8] doi:10.1038/s41593-026-02293-1 [code]
Optics-free spatial genomics for mapping mammalian brain aging by IRISeq.
Journal: Nature neuroscience
In common: Scanpy, scikit-learn, pandas, 3 other tools, genetics / omics, 8 references
[9] doi:10.1038/s41592-026-03211-w [code]
Spatial isoform sequencing at single-cell resolution reveals cell-type-specific spatial isoform variability in multiple brain cell types.
Journal: Nature methods
In common: Scanpy, scikit-learn, pandas, 3 other tools, genetics / omics, 7 references
[10] doi:10.1038/s42003-026-10259-z [code]
Spatial transcriptomic profiling of developing mouse hearts reveals a spatially patterned signaling environment.
Journal: Communications biology
In common: anndata, Scanpy, PyTorch, 5 other tools, genetics / omics, 5 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.