← All .science files
pmid:40713795
Spatial mutual nearest neighbors for spatial transcriptomics data.
Haowen Zhou · Pratibha Panwar · Boyi Guo · Caleb Hallinan · Shila Ghazanfar · Stephanie C Hicks
Bioinformatics (Oxford, England) · 2025 doi:10.1093/bioinformatics/btaf403
Paper
complete
Experiment
partial
Data
partial
Analysis
partial
Execution
absent
Execution evidence has not yet been added to this .science file. Explore its methods, data and open questions to plan the next step.
Record details sci_version · id · kind · revision · content_hash · schema · created_at · updated_at · generator
paper object · 10 fields
authors array · 6 items
claims array · 2 items
[0] object · 6 fields
evidence array · 1 item
[0] object · 3 fields
[1] object · 6 fields
evidence array · 2 items
[0] object · 3 fields
gaps array · 0 items
experiment object · 8 fields
steps array · 3 items
[0] object · 13 fields
parameters object · 0 fields
inputs array · 1 item
outputs array · 1 item
instruments array · 0 items
reagents array · 0 items
[1] object · 13 fields
parameters object · 0 fields
inputs array · 0 items
outputs array · 1 item
instruments array · 0 items
reagents array · 0 items
[2] object · 13 fields
parameters object · 0 fields
inputs array · 0 items
outputs array · 1 item
instruments array · 0 items
reagents array · 0 items
materials array · 0 items
instruments array · 0 items
reagents array · 0 items
conditions object · 0 fields
gaps array · 1 item
data object · 3 fields
assets array · 1 item
[0] object · 15 fields
structure object · 4 fields
gaps array · 0 items
analysis object · 4 fields
methods array · 2 items
[0] object · 10 fields
dsl_operations array · 1 item
missing_operations array · 0 items
parameters object · 0 fields
data_shapes array · 1 item
[1] object · 10 fields
dsl_operations array · 0 items
missing_operations array · 0 items
parameters object · 0 fields
data_shapes array · 0 items
evidence object · 3 fields
targets array · 0 items
gaps array · 1 item
capability object · 3 fields
requirements array · 1 item
[0] object · 6 fields
assay_families array · 9 items
gaps array · 0 items
readiness object · 8 fields
axes object · 3 fields
method object · 5 fields
required_operations array · 1 item
missing_operations array · 0 items
capability object · 4 fields
data object · 6 fields
accessions array · 0 items
resolved_accessions array · 0 items
statements array · 1 item
can_run object · 3 fields
dsl_operations array · 1 item
assets array · 1 item
steps array · 1 item
must_build object · 5 fields
dsl_operations array · 0 items
converters array · 0 items
readers array · 0 items
capabilities array · 0 items
data_gaps array · 1 item
gaps array · 1 item
review object · 5 fields
machine_critique object · 5 fields
reader object · 5 fields
evidence_check object · 2 fields
usage object · 3 fields
stages array · 1 item
[0] object · 4 fields
gaps array · 3 items
provenance object · 7 fields
entities array · 3 items
activities array · 3 items
[0] object · 4 fields
used array · 3 items
[0] object · 3 fields
[1] object · 3 fields
[2] object · 3 fields
[1] object · 4 fields
agents array · 2 items
lineage object · 4 fields
gaps array · 6 items
assays array · 2 items
[0] object · 11 fields
required_operations array · 0 items
source_hashes object · 1 field
evidence array · 3 items
[1] object · 11 fields
required_operations array · 1 item
source_hashes object · 1 field
evidence array · 1 item
Complete file
{"sci_version": "1.2", "schema": "https://corpus.bntrg.co.uk/sci/1.0/sci.schema.json", "id": "pmid:40713795", "kind": "science-record", "revision": 2, "content_hash": "sha256:32c080d7345309979da9c73b1177414126cf391db885d37e151b90d2f1969de5", "created_at": "2026-11-01T20:30:48Z", "updated_at": "2026-11-01T21:35:31Z", "generator": {"name": "corpus-assay-engine", "run_id": "reading-sci-2026-11-01"}, "paper": {"state": "complete", "title": "Spatial mutual nearest neighbors for spatial transcriptomics data.", "doi": "10.1093/bioinformatics/btaf403", "pmid": "40713795", "authors": ["Haowen Zhou", "Pratibha Panwar", "Boyi Guo", "Caleb Hallinan", "Shila Ghazanfar", "Stephanie C Hicks"], "journal": "Bioinformatics (Oxford, England)", "year": 2025, "abstract": "MOTIVATION: Mutual nearest neighbors (MNN) is a widely used computational tool to perform batch correction for single-cell RNA-sequencing data. However, in applications such as spatial transcriptomics, it fails to take into account the 2D spatial information.\nRESULTS: Here, we present spatialMNN, an algorithm that integrates multiple spatial transcriptomic samples and identifies spatial domains. Our approach begins by building a k-nearest neighbors (kNN) graph based on the spatial coordinates, prunes noisy edges, and identifies niches to act as anchor points for each sample. Next, we construct a MNN graph across the samples to identify similar niches. Finally, the spatialMNN graph can be partitioned using existing algorithms, such as the Louvain algorithm to predict spatial domains across the tissue samples. We demonstrate the performance of spatialMNN using large datasets, including one with N = 31 10x Genomics Visium samples. We also evaluate the computing performance of spatialMNN to other popular spatial clustering methods.\nAVAILABILITY AND IMPLEMENTATION: Our software package is available on GitHub (https://github.com/Pixel-Dream/spatialMNN). The code is available on Zenodo (https://doi.org/10.5281/zenodo.15073963).", "claims": [{"id": "claim-method", "statement": "We used the ARI to compare the overlap of the manual annotations at a spot/cell resolution to a predicted cell type or spatial domain. An ARI of 0 corresponds to random labeling, and an ARI of 1 corresponds to perfect agreement. We used the adjustedRandIndex() function in the mclust R package (Scrucca et al. 2023) (version 6.0.0). We also used NMI to evaluate the accuracy using our simulated SRT samples. An NMI of 0 corresponds to no mutual information and 1 corresponds to perfect correlation. We used the NMI() function in the aricode R package (Chiquet et al. 2023) (version 1.0.3).", "kind": "methodological", "target": null, "evidence": [{"asset": "source:pmid:40713795", "locator": "sections[14] \"2.4.1 Performance metrics\" paragraph 2", "quote": "We used the ARI to compare the overlap of the manual annotations at a spot/cell resolution to a predicted cell type or spatial domain. An ARI of 0 corresponds to random labeling, and an ARI of 1 corresponds to perfect agreement. We used the adjustedRandIndex() function in the mclust R package (Scrucca et al. 2023) (version 6.0.0). We also used NMI to evaluate the accuracy using our simulated SRT samples. An NMI of 0 corresponds to no mutual information and 1 corresponds to perfect correlation. We used the NMI() function in the aricode R package (Chiquet et al. 2023) (version 1.0.3)."}], "state": "complete"}, {"id": "claim-data-access", "statement": "The complete code and data required to reproduce the analysis are available on Zenodo with the doi: 10.5281/zenodo.15073963. Supplementary data are available at Bioinformatics online.", "kind": "methodological", "target": null, "evidence": [{"asset": "source:pmid:40713795", "locator": "sections[17] \"2.5 Software availability\" paragraph 2", "quote": "The complete code and data required to reproduce the analysis are available on Zenodo with the doi: 10.5281/zenodo.15073963."}, {"asset": "source:pmid:40713795", "locator": "sections[30] \"Supplementary data\" paragraph 2", "quote": "Supplementary data are available at Bioinformatics online."}], "state": "complete"}], "gaps": []}, "experiment": {"state": "partial", "objective": "", "steps": [{"id": "read_published_estimate", "order": 1, "name": "Read the published estimate from the source", "kind": "other", "state": "complete", "blocked_on": null, "description": "The claim, method and evidence span published with the source article.", "duration_hours": null, "parameters": {}, "inputs": ["source:pmid:40713795"], "outputs": ["the published estimate and its evidence"], "instruments": [], "reagents": []}, {"id": "obtain_source_data", "order": 2, "name": "Obtain the source data from the named repository", "kind": "data-preparation", "state": "blocked", "blocked_on": "data:accession_absent", "description": "The GEO series accession resolves and its sample accessions are listed. This lane did not download the dataset or read its licence.", "duration_hours": null, "parameters": {}, "inputs": [], "outputs": ["the source data with its repository provenance"], "instruments": [], "reagents": []}, {"id": "run_analysis", "order": 3, "name": "Run the published analysis", "kind": "analysis", "state": "complete", "blocked_on": null, "description": "Apply the paper's statistical method to the resolved series and compare the result with the published target.", "duration_hours": null, "parameters": {}, "inputs": [], "outputs": ["the replicated result and its comparison"], "instruments": [], "reagents": []}], "materials": [], "instruments": [], "reagents": [], "conditions": {}, "gaps": ["step:obtain_source_data blocked on data:accession_absent"]}, "data": {"state": "partial", "assets": [{"id": "source:pmid:40713795", "role": "manuscript", "format": "xml", "media_type": "application/xml", "uri": "https://doi.org/10.1093/bioinformatics/btaf403", "sha256": "sha256:39dab853ce48719d64cc45336caf842b651a43f5e195abba09a4db6e28b8b815", "bytes": 54275, "access": "open", "state": "resolved", "reader": null, "reader_status": "reader_required", "identifier": "10.1093/bioinformatics/btaf403", "version": null, "note": "Full article fetched from PMC; the checksum covers the rendered section body, not the original XML bytes.", "structure": {"pmcid": "PMC12317746", "source": "europe_pmc_fulltext", "coverage": "whole_body", "text_hash_scope": "rendered_section_body"}}], "gaps": []}, "analysis": {"state": "partial", "methods": [{"id": "method-1", "family": "principal_component_analysis", "specific": "pca", "label": "Principal component analysis", "dsl_operations": ["pca_fit"], "missing_operations": [], "expressible": true, "parameters": {}, "data_shapes": ["wide_numeric_matrix"], "evidence": {"score": 0.8, "band": "high", "quote": "PCA"}}, {"id": "method-2", "family": null, "specific": null, "label": "Adjusted Rand Index (ARI) and Normalized Mutual Information (NMI)", "dsl_operations": [], "missing_operations": [], "expressible": null, "parameters": {}, "data_shapes": [], "evidence": {"score": 1.0, "band": "verbatim", "quote": "We used the ARI to compare the overlap of the manual annotations at a spot/cell resolution to a predicted cell type or spatial domain. An ARI of 0 corresponds to random labeling, and an ARI of 1 corresponds to perfect agreement. We used the adjustedRandIndex() function in the mclust R package (Scrucca et al. 2023) (version 6.0.0). We also used NMI to evaluate the accuracy using our simulated SRT samples. An NMI of 0 corresponds to no mutual information and 1 corresponds to perfect correlation. We used the NMI() function in the aricode R package (Chiquet et al. 2023) (version 1.0.3)."}}], "targets": [], "gaps": ["method.reader_named_unmapped"]}, "capability": {"state": "complete", "requirements": [{"capability_id": "capability:computational_analysis", "label": "Computational analysis platform", "assay_families": ["meta_analysis", "machine_learning", "survival_analysis", "statistical_regression", "pca", "molecular_docking", "network_analysis", "differential_expression", "gwas"], "availability_state": "owned", "tier_unlocked": "R1", "candidate": "Automated Assays Laravel application and simulated adapters"}], "gaps": []}, "readiness": {"state": "blocked", "tier": "R4", "blocking_axis": "data", "blocked_on": "data:accession_absent", "axes": {"method": {"tier": "R1", "expressible": true, "required_operations": ["pca_fit"], "missing_operations": [], "basis": "The paper names the method it used and the corpus's method extractor maps it onto the DSL catalogue: pca."}, "capability": {"tier": "R1", "capability_id": "capability:computational_analysis", "availability_state": "owned", "basis": "The computational analysis is owned. The physical bench the paper used is not, so a physical validation cannot be run here."}, "data": {"tier": "R4", "reachable": false, "accessions": [], "resolved_accessions": [], "statements": ["The complete code and data required to reproduce the analysis are available on Zenodo with the doi: 10.5281/zenodo.15073963. Supplementary data are available at Bioinformatics online."], "basis": "The paper names no accession to its source data, so the data has to come from the authors."}}, "can_run": {"dsl_operations": ["pca_fit"], "assets": ["source:pmid:40713795"], "steps": ["run_analysis"]}, "must_build": {"dsl_operations": [], "converters": [], "readers": [], "capabilities": [], "data_gaps": ["data:geo:None"]}, "gaps": ["data:accession_absent"]}, "review": {"state": "partial", "machine_critique": {"kind": "extraction_review", "reader": {"model": "MiniMax-M3.1-Flash", "provider": "minimax", "provider_family": "minimax", "read_at": "2026-11-01T19:57:49Z", "independence": "single_reader"}, "evidence_check": {"method": "verbatim", "availability": "reordered"}, "calls": 5, "usage": {"prompt_tokens": 15007, "completion_tokens": 1303, "cached_tokens": 256}}, "human_critique": null, "stages": [{"id": "extraction", "state": "complete", "reader": "MiniMax-M3.1-Flash", "provider": "minimax"}], "gaps": ["review.independent_reader", "review.machine_critique", "review.human_critique"]}, "execution": {"state": "absent", "status": "not_run", "mode": null, "runs": [], "gaps": ["execution.not_run"]}, "provenance": {"entities": [{"id": "pmid:40713795", "type": "paper", "label": "pmid:40713795"}, {"id": "source:pmid:40713795", "type": "manuscript", "label": "PMID 40713795 full text"}, {"id": "data:geo:None", "type": "dataset", "label": "GEO None"}], "activities": [{"id": "activity-reading-sci-2026-11-01", "type": "classification", "used": [{"id": "pmid:40713795", "type": "paper", "label": "pmid:40713795"}, {"id": "source:pmid:40713795", "type": "manuscript", "label": "PMID 40713795 full text"}, {"id": "data:geo:None", "type": "dataset", "label": "GEO None"}], "agent": "agent:corpus-assay-engine"}, {"id": "activity-read-40713795", "type": "extraction", "used": ["source:pmid:40713795"], "agent": "agent:minimax-reader"}, {"id": "activity-resolve-None", "type": "accession_resolution", "used": ["data:geo:None"], "agent": "agent:corpus-assay-engine"}], "agents": [{"id": "agent:corpus-assay-engine", "type": "software", "label": "Corpus assay engine"}, {"id": "agent:minimax-reader", "type": "software", "label": "MiniMax literature reader"}], "source_run_id": "reading-sci-2026-11-01", "dsl_catalogue_fingerprint": "343fb30756ba6ec3", "capability_table_fingerprint": "2cb3e42f047d2ecf", "snapshot_id": "ba34b49490d9bfaf"}, "lineage": {"parent_id": "pmid:40713795", "parent_hash": "sha256:a08ff92f8df596249c17ca5e0e7c3025c15b8b02466ccf5c38f32dea9fc57905", "fork_of": null, "generation": 1}, "gaps": ["execution.not_run", "method.reader_named_unmapped", "review.human_critique", "review.independent_reader", "review.machine_critique", "step:obtain_source_data blocked on data:accession_absent"], "assays": [{"role": "data_generation", "definition_id": "animal_model", "definition_version": "99e1195c7d6f", "definition_digest": null, "required_operations": [], "support_state": "partial", "source_hashes": {"assay_lexicon": "99e1195c7d6f"}, "confidence": 0.99, "evidence": ["ARmap platform to profile the prelimbic area in the mouse brain across three tissue sections, 166 gene", "latform to profile the prelimbic area in the mouse brain across three tissue sections, 166 gene", "ors used the MERFISH platform to profile the mouse frontal cortex and striatum across 31 tissue"], "order_basis": "paper_text_order:7468", "id": "assay:1"}, {"role": "analysis", "definition_id": "principal_component_analysis", "definition_version": "f2132e96ae6c7a4e", "definition_digest": null, "required_operations": ["pca_fit"], "support_state": "supported", "source_hashes": {"dsl_catalogue": "f2132e96ae6c7a4e"}, "confidence": 0.8, "evidence": ["PCA"], "order_basis": "consumes_earlier_output", "id": "assay:2"}]}