Análisis de datos basados en imágenes para células espaciales individuales

Tejido pulmonar humano: Nanostring CosMx Spatial Molecular Imager

Este conjunto de datos fue generado mediante el Spatial Molecular Imager (SMI) de Nanostring CosMx, una tecnología que permite el análisis multiplexado de moléculas individuales, detectando tanto ARN como proteínas directamente en tejidos fijados e incluidos en parfaina (FFPE). Incluye ocho muestras FFPE de cinco pacientes con cáncer de pulmón no microcítico (NSCLC) y está disponible públicamente. El panel de genes cubre 960 transcritos diferentes.

Para este estudio de caso, se seleccionó una muestra (pulmón5, réplica1) y se cargó utilizando la función LoadNanostring(). En lugar de un análisis no supervisado, se compararon los resultados de Nanostring con la base de datos de referencia Azimuth para pulmón humano sano, construida mediante secuenciación de ARN de célula única (scRNA-seq). Se empleó la versión 0.4.3 de Azimuth y la versión 1.0.0 de la referencia pulmonar. Se pueden descargar resultados precomputados que incluyen anotaciones, puntuaciones de predicción y visualziaciones UMAP. El promedio de transcritos detectados por célula fue de 249, lo que introduce cierta incertidumbre en la anotación celular.

datos_espaciales <- LoadNanostring(dir_datos = "/ruta/ejemplo/datos_nanostring/pulmon5_rep1", fov = "pulmon5.rep1")

# Incorporar anotaciones precalculadas de Azimuth
info_azimuth <- readRDS("/ruta/ejemplo/datos_nanostring_precomputados.Rds")
datos_espaciales <- AddMetaData(datos_espaciales, metadata = info_azimuth$anotaciones)
datos_espaciales[["umap_proyeccion"]] <- info_azimuth$umap
Idents(datos_espaciales) <- datos_espaciales$anotacion_predicha_nivel1

# Ajustar límite de tamaño global para evitar errores
options(future.globals.maxSize = 8000 * 1024^2)
datos_espaciales <- SCTransform(datos_espaciales, assay = "Nanostring", clip.range = c(-10, 10), verbose = FALSE)

# Visualizar anotaciones y puntuaciones de predicción
head(slot(object = datos_espaciales, name = "meta.data")[2:5])

##     nCount_Nanostring nFeature_Nanostring anotacion_predicha_nivel1
## 1_1                23                  19                 Dendrítica
## 2_1                26                  23                Macrófago
## 3_1                74                  51            Neuroendocrino
## 4_1                60                  48                Macrófago
## 5_1                52                  39                Macrófago
## 6_1                 5                   5                   CD4 T
##     puntuacion.anotacion_predicha_nivel1
## 1_1                            0.5884506
## 2_1                            0.5707920
## 3_1                            0.5449661
## 4_1                            0.6951970
## 5_1                            0.8155319
## 6_1                            0.5677324

Se pueden visualizar las células de Nanostring y sus anotaciones proyectadas en el UMAP definido por la referencia. Para esta muestra NSCLC, las células tumorales se anotaron como "Basal", la coincidencia más cercana en la referencia sana.

DimPlot(datos_espaciales)

Visualización de tipos celulares y patrones de expresión

La función ImageDimPlot() representa las células según su distribución espacial, coloreadas por tipo celular asignado. Se observa que las células basales (tumorales) están espacialmente agrupadas de manera compacta, como se esperaba.

ImageDimPlot(datos_espaciales, fov = "pulmon5.rep1", axes = TRUE, cols = "glasbey")

Dada la diversidad de tipos celulares, es posible resaltar la localización de grupos seleccionados.

ImageDimPlot(datos_espaciales, fov = "pulmon5.rep1", cells = WhichCells(datos_espaciales, idents = c("Basal", "Macrófago",
    "Músculo Liso", "CD4 T")), cols = c("rojo", "verde", "azul", "naranja"), size = 0.6)

La expresión génica puede visualizarse de varias maneras:

VlnPlot(datos_espaciales, features = "KRT17", assay = "Nanostring", layer = "counts", pt.size = 0.1, y.max = 30) +
    NoLegend()

FeaturePlot(datos_espaciales, features = "KRT17", max.cutoff = "q95")

grafico1 <- ImageFeaturePlot(datos_espaciales, fov = "pulmon5.rep1", features = "KRT17", max.cutoff = "q95")
grafico2 <- ImageDimPlot(datos_espaciales, fov = "pulmon5.rep1", alpha = 0.3, molecules = "KRT17", nmols = 10000) +
    NoLegend()
grafico1 + grafico2

Se pueden crear diagramas moleculares para co-visualizar múltiples marcadores, como KRT17 (células basales), C1QA (macrófagos), IL7R (células T) y TAGLN (músculo liso).

# Visualizar moléculas con correlación espacial aparente
ImageDimPlot(datos_espaciales, fov = "pulmon5.rep1", group.by = NA, alpha = 0.3, molecules = c("KRT17", "C1QA",
    "IL7R", "TAGLN"), nmols = 20000)

Se utiliza la función Crop() para ampliar una región rica en células basales. Posteriormente, se pueden visualizar límites celulares individuales en todas las vistas.

recorte_basal <- Crop(datos_espaciales[["pulmon5.rep1"]], x = c(159500, 164000), y = c(8700, 10500))
datos_espaciales[["zoom1"]] <- recorte_basal
DefaultBoundary(datos_espaciales[["zoom1"]]) <- "segmentacion"

ImageDimPlot(datos_espaciales, fov = "zoom1", cols = "polychrome", coord.fixed = FALSE)

# Notar nubes de moléculas TPSAB1 que indican células cebadas
ImageDimPlot(datos_espaciales, fov = "zoom1", cols = "polychrome", alpha = 0.3, molecules = c("KRT17", "IL7R",
    "TPSAB1"), mols.size = 0.3, nmols = 20000, border.color = "negro", coord.fixed = FALSE)

Etiquetas: Seurat Nanostring CosMx transcriptómica espacial

Publicado el 5-30 10:14