PRISM: Prior-enhanced Inference for Spatial Transcriptomic Cell Type Mapping.
The 3 matches
- [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 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] § 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
- # %%
- # %%
- import sys
- import os
- # 👇 Change this path to the actual directory where PRISM_load.py and related files are stored
- code_path = "~/src/"
- # Check whether the path exists; if so, add it to the system path
- if os.path.exists(code_path):
- if code_path not in sys.path:
- sys.path.append(code_path)
- print(f"✅ Code path successfully added: {code_path}")
- else:
- print(f"❌ Path does not exist, please check: {code_path}")
- # %%
- import os
- import torch
- import scanpy as sc
- import pandas as pd
- import numpy as np
- import anndata as ad
- import scipy.sparse as sp
- import warnings
- # Import your custom modules
- # Make sure PRISM_load.py, PRISM_model.py, etc. are in the current directory
- from PRISM_load import *
- from PRISM_model import *
- from PRISM_eva import *
- from PRISM_st import *
- warnings.filterwarnings('ignore')
- # ==========================================
- # 1. Define all arguments here (replace argparse)
- # ==========================================
- # Create a simple class to simulate the args object,
- # allowing access via args.variable_name
- class Config:
- pass
- args = Config()
- # --- Required path parameters (replace with your actual paths) ---
- args.sc_data_path = "HIP_sc.h5ad" # scRNA-seq data path
- args.st_data_path = "HIP_st.h5ad" # spatial transcriptomics data path
- # --- Output directory settings ---
- # It is recommended to use relative or absolute paths
- base_dir = "~/HIP/"
- args.result_path = os.path.join(base_dir, "results")
- args.final_result_path = os.path.join(base_dir, "final_results")
- args.eval_path = os.path.join(base_dir, "evaluation")
- args.model_path = os.path.join(base_dir, "models")
- args.plot_path = os.path.join(base_dir, "plots")
- # --- Experiment parameters (following argparse default settings) ---
- args.dataset_name = "HIP_merfish"
- args.anno = "subclass" # Annotation column name
- args.gene_number = 30 # Number of markers per class
- # Automatically create all directories to avoid runtime errors
- for path in [
- args.result_path,
- args.final_result_path,
- args.eval_path,
- args.model_path,
- args.plot_path
- ]:
- os.makedirs(path, exist_ok=True)
- # Set device
- device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
- print(f"✅ Configuration completed. Device: {device}")
- print(f"📂 Output directory: {base_dir}")
- # %%
- # ==========================================
- # 2. Start main execution logic
- # ==========================================
- # Extract variables for convenience
- anno = args.anno
- gene_number = args.gene_number
- dataset_name_f = args.dataset_name
- result_save_prefix = f"{args.result_path}/init_{dataset_name_f}_{anno}_{gene_number}_"
- # --- Load scRNA data ---
- print("Loading scRNA data...")
- sc_obj = sc.read_h5ad(args.sc_data_path)
- sc_obj.var_names = sc_obj.var['gene_symbol'].astype(str)
- sc_obj.var_names_make_unique()
- # Filter rare categories
- counts = sc_obj.obs[anno].value_counts()
- sc_obj = sc_obj[sc_obj.obs[anno].isin(counts[counts > 5].index)].copy()
- # --- Load ST data ---
- print("Loading ST data...")
- st_obj = sc.read_h5ad(args.st_data_path)
- st_obj.var_names = st_obj.var['gene_symbol'].astype(str)
- st_obj.var_names_make_unique()
- # ST preprocessing
- print("Preprocessing ST data...")
- sc.pp.normalize_total(st_obj, target_sum=1e4)
- sc.pp.log1p(st_obj)
- sc.pp.filter_cells(st_obj, min_counts=20)
- sc.pp.filter_genes(st_obj, min_cells=20)
- # Load aligned data (fmap_load)
- sc_data, st_data = fmap_load(sc_obj, st_obj, anno, gene_number)
- # --- Prepare initial training mask ---
- print("Building initial marker mask...")
- num_classes = len(set(sc_data.obs[anno]))
- # Note: please confirm whether the key in .uns is 'csg' or 'cosg'
- markers_df = pd.DataFrame(sc_data.uns["csg"]["names"]).iloc[0:num_classes * gene_number, :]
- input_size = sc_data.X.shape[1]
- top_k = gene_number
- marker_mask = torch.zeros(num_classes, input_size)
- gene2idx = {g: i for i, g in enumerate(sc_data.var_names)}
- for ct_idx, ct in enumerate(markers_df.columns):
- genes_ct = markers_df[ct].head(top_k).dropna().tolist()
- idx = [gene2idx[g] for g in genes_ct if g in gene2idx]
- marker_mask[ct_idx, idx] = 1.0
- # --- Stage 1: Initial model training ---
- fmap_train_retrain_st1(
- sc_data,
- st_data,
- result_save_prefix,
- num_classes,
- anno,
- marker_mask,
- num_epochs=100
- )
- # --- Compute group means for evaluation ---
- print("Computing group means...")
- df_grouped_means = pd.DataFrame(index=sc_data.obs[anno].cat.categories,
- columns=sc_data.var_names)
- for annotation in sc_data.obs[anno].unique():
- subset = sc_data[sc_data.obs[anno] == annotation, :]
- # Handle sparse matrix case
- if sp.issparse(subset.X):
- mean_expression = subset.X.mean(axis=0).A1
- else:
- mean_expression = subset.X.mean(axis=0)
- df_grouped_means.loc[annotation] = mean_expression
- # --- Evaluate initial results for 10 runs ---
- print("Evaluating initial results...")
- for i in range(10):
- result_path = f"{args.result_path}/init_{dataset_name_f}_{anno}_{gene_number}_{i}.csv"
- output_path = f"{args.eval_path}/init_{dataset_name_f}_{gene_number}{i}_all_values{gene_number}.csv"
- if os.path.exists(result_path):
- evaluate_prediction_vs_reference(
- result_path,
- df_grouped_means,
- st_data,
- output_path,
- anno_col="annotation"
- )
- # --- Select Top 3 runs ---
- print("Selecting best Top 3 runs...")
- top3_rounds_vec = evaluate_and_rank_predictions(
- root_dir=args.eval_path,
- dataset_name="init_" + dataset_name_f,
- gene_number=gene_number,
- pattern=os.path.join(args.eval_path, f"*_average_values_{gene_number}.csv")
- )
- print(f"Top 3 rounds: {top3_rounds_vec}")
- # --- Build spatial neighborhood data ---
- print("Building spatial neighborhood data (concat_self_neighbor_expression)...")
- adata_new = concat_self_neighbor_expression(
- adata=st_data,
- x_key="x",
- y_key="y",
- k=15,
- include_self=False,
- layer=None,
- layer_key_for_raw="raw_counts"
- )
- # --- Fuse Top 3 results as pseudo-labels ---
- print("Fusing pseudo-labels...")
- sc_data_st_final = None
- for round_id in top3_rounds_vec:
- csv_path = f"{args.result_path}/init_{dataset_name_f}_{anno}_{gene_number}_{round_id}.csv"
- if not os.path.exists(csv_path):
- continue
- result = pd.read_csv(csv_path)
- conf = result.max(axis=1)
- predicted_labels = result.idxmax(axis=1)
- adata_new.obs[anno] = predicted_labels.values
- sc_data_st = adata_new[adata_new.obs[anno] != 'filter'].copy()
- if sc_data_st_final is None:
- sc_data_st_final = sc_data_st
- else:
- sc_data_st_final = ad.concat([sc_data_st_final, sc_data_st])
- print(f"Final training set size: {sc_data_st_final.shape}")
- # --- Prepare final masks (marker & anti-marker) ---
- print("Preparing final masks (marker & anti-marker)...")
- # Re-align markers
- markers_df = pd.DataFrame(sc_data.uns["csg"]["names"]).iloc[0:num_classes * gene_number, :]
- marker_genes = set(markers_df.values.flatten().tolist())
- valid_types = set(sc_data_st_final.obs[anno])
- markers_df = markers_df.loc[:, markers_df.columns.isin(valid_types)]
- num_classes = len(set(sc_data_st_final.obs[anno]))
- input_size = sc_data_st_final.X.shape[1]
- top_k = gene_number
- # Positive marker mask
- marker_mask = torch.zeros(num_classes, input_size) # (C, G)
- gene2idx = {g: i for i, g in enumerate(sc_data_st_final.var_names)}
- for ct_idx, ct in enumerate(markers_df.columns):
- genes_ct = markers_df[ct].head(top_k).dropna().tolist()
- idx = [gene2idx[g] for g in genes_ct if g in gene2idx]
- marker_mask[ct_idx, idx] = 1.0
- # Anti-marker mask (inverse CSG)
- print("Computing anti-markers...")
- inverse_csg(
- sc_data_st_final,
- groupby=anno
- )
- anti_df = pd.DataFrame(sc_data_st_final.uns["csg_inv"]["names"])
- anti_df = anti_df.loc[:, anti_df.columns.isin(set(sc_data_st_final.obs[anno]))]
- anti_mask = torch.zeros(num_classes, input_size)
- for ct_idx, ct in enumerate(anti_df.columns):
- genes_ct = anti_df[ct].head(top_k).dropna().tolist()
- idx = [gene2idx[g] for g in genes_ct if g in gene2idx]
- anti_mask[ct_idx, idx] = 1.0
- # --- Stage 2: Final training ---
- result_save = f"{args.final_result_path}/PRISM_{dataset_name_f}_{gene_number}_{anno}_"
- model_save = f"{args.model_path}/PRISM_{dataset_name_f}_{gene_number}_{anno}_"
- plot_save = f"{args.plot_path}/PRISM_{dataset_name_f}_{gene_number}_{anno}_"
- fmap_train_retrain_st2(
- sc_data_st_final,
- adata_new,
- result_save,
- model_save,
- plot_save,
- num_classes,
- anno,
- marker_mask,
- anti_mask,
- num_epochs=200
- )
- print("🎉 All tasks completed successfully!")
- # %%
- import matplotlib.pyplot as plt
- from matplotlib.lines import Line2D
- import matplotlib.colors as mcolors
- import numpy as np
- fp='~/HIP/final_results/PRISM_HIP_merfish_30_subclass_0.csv'
- df = pd.read_csv(fp)
- pred = df.idxmax(axis=1).astype(str)
- st_data.obs['predicted_classes'] = pred.values
- unique_clusters = np.unique(st_data.obs[anno])
- unique_predictions = np.unique(st_data.obs['predicted_classes'])
- cmap_clusters = plt.get_cmap('tab20', len(unique_clusters))
- cmap_predictions = plt.get_cmap('tab20b', len(unique_predictions))
- color_map = {label: cmap_clusters(i) for i, label in enumerate(unique_clusters)}
- color_map.update({label: cmap_predictions(i) for i, label in enumerate(unique_predictions) if label not in color_map})
- special_colors = {
- "017 CA3 Glut": "#1f77b4",
- '016 CA1-ProS Glut': '#ffbb78',
- '037 DG Glut': '#ff7f0e',
- '038 DG-PIR Ex IMN': '#c85e0b',
- "016 CA1-ProS Glut": "#2ca02c",
- "025 CA2-FC-IG Glut": "#ffff00",
- '023 SUB-ProS Glut': '#aec7e8'
- }
- color_map.update(special_colors)
- colors = [color_map[label] for label in st_data.obs['predicted_classes']]
- subset_color_map = {label: color_map[label] for label in unique_predictions if label in color_map}
- coor_x = st_data.obs['x']
- coor_y = st_data.obs['y']
- fig, ax = plt.subplots(figsize=(20, 15))
- scatter = ax.scatter(coor_x, coor_y, c=colors, s=10)
- legend_elements = [Line2D([0], [0], marker='o', color='w', label=cell_type,
- markerfacecolor=color, markersize=15)
- for cell_type, color in subset_color_map.items()]
- ax.legend(handles=legend_elements, title='Cell Types', bbox_to_anchor=(1.05, 1), loc='upper left')
- plt.tight_layout()
- save_path = plot_save + ".pdf"
- plt.savefig(save_path, format='pdf', bbox_inches='tight', dpi=300)
- plt.show()
- # %%
HIP_github.ipynb at commit 1632f47, no license · at the source
Overview
- Department of Psychiatry of the Second Affiliated Hospital, Zhejiang University School of Medicine, Hangzhou, 310009, China
- 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
- College of Computer Science and Technology, Zhejiang University, Hangzhou, 310027, China
- Nanhu Brain-Computer Interface Institute, Hangzhou, 311100, China
- School of Software Technology, Zhejiang University, Hangzhou, 310027, China
- Institute of Brain and Cognitive Science, School of Medicine, Hangzhou City University, Hangzhou, 310015, China
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://
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
1632f47e8c937f9fd61e84405d63571ab11b9d17, 13 July 2026Availability: 1 check, the latest on 26 September 2026: the link answers
- 26 September 2026: the link answers
17 files
- benchmarks/
datasets.py , Python, 309 lines - benchmarks/
evaluate.py , Python, 191 lines - benchmarks/
prepare_for_R.py , Python, 80 lines - benchmarks/
run_cell2location.py , Python, 100 lines - benchmarks/
run_dwls.R , R, 84 lines - benchmarks/
run_rctd.R , R, 75 lines - benchmarks/
run_tangram.py , Python, 82 lines - benchmarks/
templates/ , Python, 81 linesdsct_template.py - benchmarks/
templates/ , Python, 79 linesspatial_id_template.py - src/
PRISM_eva.py , Python, 208 lines, 1 match - src/
PRISM_load.py , Python, 315 lines - src/
PRISM_model.py , Python, 394 lines, 1 match - src/
PRISM_st.py , Python, 54 lines - tutorial/
CTX_mouse_github.ipynb , Jupyter, 327 lines - tutorial/
HIP_github.ipynb , Jupyter, 325 lines, 1 match - tutorial/
OB_github.ipynb , Jupyter, 341 lines - readme.md, Text, 24 lines
Zenodo 20529683
Availability: 1 check, the latest on 26 September 2026: the link answers (HTTP 200)
- 26 September 2026: the link answers (HTTP 200)
8 files
- src/
PRISM_eva.py , Python, 208 lines - src/
PRISM_load.py , Python, 315 lines - src/
PRISM_model.py , Python, 394 lines - src/
PRISM_st.py , Python, 54 lines - tutorial/
CTX_mouse_github.ipynb , Jupyter, 327 lines - tutorial/
HIP_github.ipynb , Jupyter, 325 lines - tutorial/
OB_github.ipynb , Jupyter, 341 lines - readme.md, Text, 22 lines
Availability and implementation
PRISM is available at https://
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://
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://
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/
url = {https://
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/
VL - 42
IS - 8
SP - btag515
SN - 1367-4803
PB - Oxford University Press
DO - 10.1093/
UR - https://
LA - en
ER -
CSL-JSON
{
"id": "10.1093/
"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":
"volume": "42",
"issue": "8",
"page": "btag515",
"DOI": "10.1093/
"PMID": "42490201",
"PMCID": "PMC13430658",
"ISSN": "1367-4803",
"publisher": "Oxford University Press",
"URL": "https://
"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: iScienceIn 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 TechnologiesJournal: 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 researchIn 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 medicineIn 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 bioinformaticsIn 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 neuroscienceIn 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 methodsIn 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 biologyIn 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.
Claim this paper
Correct its record
Say what each link of this record is, remove the ones that are not the paper's, add the ones that are missing. The correction becomes a new version of the record, in its Versions section.
Validate its tracing map
You validate the map as this page shows it: 2 repositories of the authors' code, each at its verified commit and with its license, 23 scripts, and 3 matches between paragraphs and code (see the Code and Map sections). It then receives a DOI on Zenodo, with you (your ORCID iD) and OSCR as its creators; the code itself is not deposited.
The map's fingerprint: sha256:9504bdbda45d1b44…
Add the badge to its README
The badge links the code to this page. Copy one of these into the README of the paper's code: only you decide where it goes, and nothing is changed for you.
Markdown
[, paste the snippet at the top, then “Commit changes…” and, to review it first, “Create a new branch and start a pull request”. You open the pull request; OSCR asks for no permission.
Request its removal
To ask OSCR to remove this record, the copies of its authors' scripts or its tracing map, use the removal request page: signed in, you say who you are, what to remove and why, then review and confirm the request. Published rules decide every request (how).
Discussion, reproductions, activity
Discussion: questions and error reports about this paper and its code, from signed-in readers and its authors. It opens with sign-in.
Reproductions: reports from readers who ran the authors' code: what they reproduced, with which environment, commit and data. It opens with sign-in.
Activity: what happens around this paper: new versions of its record, its map's validation, discussions and reproductions. It opens with sign-in.
