Spatial transcriptomics reveals microenvironmental heterogeneity in osteoarthritic subchondral bone
Although increasing evidence implicates subchondral bone alterations in osteoarthritis, the spatial organization of subchondral bone remodeling remains unclear. Applying spatial transcriptomics on human subchondral bone, we identify a spatially conserved osteogenic core-halo architecture that displays transcriptional reprogramming in sclerotic microenvironments. Spatial dependency and a customized cell-cell communication framework reveal disrupted osteoblast-osteoclast spatial coupling, enhanced osteoblast-mesenchymal interactions, and identify FN1-SDC2 and COL1A1-DDR2 as candidate stromal-osteogenic signaling axes that may contribute to aberrant bone remodeling. Additionally, we present the first in situ transcriptional landscape of osteocytes and reveal its potential regulatory role in aberrant bone remodeling. We further delineate a continuum of spatial ecotypes exhibiting distinct enrichment, spatial topology reorganization, and inter-ecotype communication rewiring across pathological states. Metabolic flux inference additionally reveals substrate-limited, stressed states across multiple ecotypes in sclerotic microenvironments. Collectively, our findings provide critical insights into aberrant subchondral bone remodeling in osteoarthritis and offer a valuable framework for future mechanistic studies and therapeutic exploration.
from sddb import Catalog
cohort = Catalog().collection("geo-gse342703")
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-gse342703")
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-gse342703 --dest data/ Licenses: 4 NCBI GEO policy
Cite this collection
No linked publication found — please cite the data source.