Collections / The Dichotomy of Tumor Control by Recruited and Resident Tumor-Associated Macrophages

The Dichotomy of Tumor Control by Recruited and Resident Tumor-Associated Macrophages

Macrophages are among the most abundant immune cells in solid tumors, yet how their diverse origins and spatial organization shape anti-tumor immunity remains unclear. Here, we uncover a fundamental division of labor between tissue-resident interstitial macrophage (IM) subsets and recruited macrophages (recMacs) in lung cancer. Using single-cell and spatial transcriptomics, we identify chemokine-defined IM subsets with opposing functions: Cxcl13-, Cxcl9-, and Cxcl10-producing CD206hi IMs positioned along bronchovascular regions drive tertiary lymphoid structure formation, lymphocyte recruitment, and tumor control, whereas Ccl2-expressing IMs localize within tumor regions and recruit pro-tumorigenic recMacs. We further show that recMac-derived moDCs function as immunosuppressive antigen-presenting cells in draining lymph nodes. During neoantigen vaccination, CCR5 inhibition with Maraviroc selectively blocks antigen-bearing monocyte but not dendritic cell migration, thereby enhancing dendritic cell-mediated tumor immunity. These findings reveal how macrophage ontogeny and spatial compartmentalization govern tumor immunity and point to therapeutic strategies that preserve protective IM functions while disrupting recMac-driven immunosuppression.

Datasets4
Size~24.7 GB
Assay10x Xenium
Samplemouse · lung
KindComparison
Flag a data issue
Python · sddb client
from sddb import Catalog

cohort = Catalog().collection("geo-gse313081")
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/")
Python · lamindb

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-gse313081")
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()]
Shell
# sddb client: download every member .zarr into data/
sddb-cli download --collection geo-gse313081 --dest data/

Licenses: 4 NCBI GEO policy

Open in Vitessce
10x Xenium
Mouse lung
GSM9360616
mouse lung lung cancer 5.3 GB 678,432 cells silver NCBI GEO policy
Technology10x Xenium
Organismmouse
Tissuelung
Conditionlung cancer
Size5.3 GB
Cells678,432
silver NCBI GEO policy Open in Vitessce
Open in Vitessce
10x Xenium
Mouse lung
GSM9360613
mouse lung lung cancer 6.0 GB 426,641 cells silver NCBI GEO policy
Technology10x Xenium
Organismmouse
Tissuelung
Conditionlung cancer
Size6.0 GB
Cells426,641
silver NCBI GEO policy Open in Vitessce
Open in Vitessce
10x Xenium
Mouse lung
GSM9360615
mouse lung lung cancer 6.7 GB 876,258 cells silver NCBI GEO policy
Technology10x Xenium
Organismmouse
Tissuelung
Conditionlung cancer
Size6.7 GB
Cells876,258
silver NCBI GEO policy Open in Vitessce
Open in Vitessce
10x Xenium
Mouse lung
GSM9360614
mouse lung lung cancer 6.7 GB 517,413 cells silver NCBI GEO policy
Technology10x Xenium
Organismmouse
Tissuelung
Conditionlung cancer
Size6.7 GB
Cells517,413
silver NCBI GEO policy Open in Vitessce