Spatial tumour-immune ecosystems shape the efficacy of anti-PD1 immunotherapy in primary cutaneous melanoma [Spatial Transcriptomics]
Intra-tumoral heterogeneity in melanoma arises from dynamic cancer cell plasticity and underlies various mechanisms of immune escape. Here, we combined high-plex immunofluorescence imaging with spatially resolved transcriptomics to map the architecture of melanoma cell states and their interactions with the immune microenvironment in primary cutaneous tumours prior to adjuvant anti-PD1 immune checkpoint inhibitor (ICI) treatment. Computational analyses showed that melanoma cells organise into spatially restricted patches, with a preferential organisation of undifferentiated cells associated with poor ICI efficacy. Neighbouring immune cell composition varied according to cancer cell states, with a crucial involvement of specific subsets of tumour-associated macrophages, driven by signalling pathways involving tumour-derived and microenvironmental cues such as IFN-γ and hypoxia. Integrated spatial analyses further revealed tumour-immune ecosystems that stratify patient outcomes, delineating configurations either associated with ICI efficacy or metastatic relapse. These results uncover the spatial landscape of tumour ecosystems and identify signalling pathways as potential targets for improving the efficacy of ICI in melanoma.
from sddb import Catalog
cohort = Catalog().collection("geo-gse300445")
cohort.members # the 4 datasets as a table
print(cohort.licenses()) # check the terms before you download
sdatas = cohort.to_dict() # {uid: SpatialData}, cached locally
# or keep the .zarr files in a folder of your choice:
# sdatas = cohort.to_dict(dest="data/") Needs pip install lamindb and network access to the Lamin database, which is limited during the alpha. If it fails, use the Client tab.
import lamindb as ln
db = ln.DB("scverse/spatialdata-db")
coll = db.Collection.get(key="geo-gse300445")
coll.ordered_artifacts.to_dataframe() # the 4 members, ordered
# download every member .zarr to the local cache:
paths = [a.cache() for a in coll.ordered_artifacts.all()] # sddb client: download every member .zarr into data/
sddb-cli download --collection geo-gse300445 --dest data/ Licenses: 4 NCBI GEO policy
Cite this collection
doi.org/10.1136/jitc-2025-014030 ↗@article{Pham_2026,
title = {Melanoma cell states shape spatial tumor-immune ecosystems to dictate the efficacy of anti-PD1 immunotherapy},
volume = {14},
ISSN = {2051-1426},
url = {http://dx.doi.org/10.1136/jitc-2025-014030},
DOI = {10.1136/jitc-2025-014030},
number = {6},
journal = {Journal for ImmunoTherapy of Cancer},
publisher = {BMJ},
author = {Pham, Félix K and Dufeu, Marion and Benboubker, Valentin and Grimont, Maxime and Lhorisson, Amélie and Berthet, Justine and Donzel, Marie and Schneider, Raphaël and Tonon, Laurie and Doffin, Anne-Claire and Boivin, Félix and Durand, Simon and Dubois, Bertrand and Lopez, Jonathan and Caux, Christophe and Valladeau-Guilemond, Jenny and Eberhardt, Anaïs and Dalle, Stéphane and Caramel, Julie},
year = {2026},
month = June,
pages = {e014030}
}