Tutorial de muestra de Seurat 3.0
Tutorial de agrupación guiado por Seurat
Consulte el tutorial del sitio web oficial y utilice un lote de mis propios datos reales, con un total de **** 7038 celdas. Los siguientes son resultados estándar de una ejecución de conteo de Cellranger.
Empecemos leyendo los datos. La función Read10X lee la salida del proceso cellranger de 10X y devuelve una matriz de recuento UMI. Los valores de la matriz representan cada característica (es decir, gen) detectada en cada celda (columna).
A continuación, creamos un objeto Seurat usando la matriz de conteo. Este objeto sirve como contenedor que contiene los datos (como una matriz de recuento) y el análisis (como PCA o resultados de agrupación) de un conjunto de datos de una sola celda.
Leer datos:
El parámetro data.dir contiene el directorio de la matriz. Contiene Matrix.mtx, gene.tsv (o características.tsv) y códigos de barras.tsv. Para cargar varios directorios de datos, se puede proporcionar un vector o un vector con nombre. Si se proporciona un vector con nombre, el nombre del código de barras de la celda tendrá como prefijo ese nombre.
El parámetro gene.column especifica en qué columna se encuentra el gen. características.tsv o gene.tsv para el nombre del gen tsv; el valor predeterminado es 2, es decir, la segunda columna es el nombre del gen, veamos características.tsv, contiene 3 columnas: características.tsv, características.tsv, características. .tsv, características.tsv.
El parámetro Unique.features tiene por defecto "true", lo que significa que los nombres de las funciones son únicos.
Si características.csv indica que los datos tienen más de un tipo de datos, devolverá una lista de matriz dispersa que contiene cada tipo de datos. De lo contrario, se devuelve una matriz dispersa que contiene los datos de la expresión.
Inicializa un objeto Seurat utilizando datos sin procesar (no normalizados).
NOTA: En versiones anteriores (lt; 3.0), esta función también contenía un parámetro que establecía el umbral de expresión para las características (genes) "detectadas". Para simplificar el proceso/suposiciones de inicialización, se ha eliminado esta función. Si aún desea establecer este umbral para un conjunto de datos específico, simplemente filtre la matriz de expresión de entrada antes de llamar a la función.
Puede ver que 7038 muestras son consistentes con el informe de la versión web y 33538 características son consistentes con el recuento de características.csv.
¿Cómo se ven los datos de la matriz de conteo?
Por ejemplo, la matriz de recuento se almacena en G48E2L1[["RNA"]]@counts.
Solo mira algunos genes:
Puntos. Los valores en la matriz representan 0 (no se detecta ninguna molécula). Dado que la mayoría de los valores en las matrices scRNA-seq son 0, Seurat utiliza una representación de matriz dispersa siempre que sea posible. Esto ahorra mucha memoria y mejora la velocidad de los datos Drop-seq/inDrop/10x.
Si necesita ver el tamaño del espacio de la matriz dispersa, puede ignorar estos valores (comprensión personal).
Los siguientes pasos contienen un flujo de trabajo de preprocesamiento estándar para datos scRNA-seq en Seurat. Estos pasos incluyen la selección y el filtrado de celdas basados en métricas de control de calidad, la normalización y escalado de datos y la detección de características altamente variables.
Control de calidad y selección de celdas para análisis adicionales
Seurat le permite explorar fácilmente métricas de control de calidad y filtrar celdas según cualquier criterio definido por el usuario.
Algunas métricas de control de calidad que la gente usa comúnmente incluyen
¿Dónde se almacenan las métricas de control de calidad?
Visualiza métricas de control de calidad en muestras oficiales mediante filtrado de celdas.
Comencemos con la visualización:
VlnPlot() es la función de gráfico de violín en Seurat, que se utiliza para dibujar gráficos de violín de datos unicelulares (expresión genética, indicadores, puntuaciones de PC). , etc.) Se utiliza para mostrar la distribución de datos y su densidad de probabilidad.
FeatureScatter se usa normalmente para visualizar relaciones entre características, pero también se puede usar para calcular cualquier cosa sobre un objeto, es decir, columnas en los datos del objeto, puntuaciones de PC, etc. Comprensión personal: es un diagrama de puntos que se utiliza para ver la correlación entre dos datos.
El tutorial oficial aquí filtra los datos de 2500 gt; nFeature_RNA gt; 200 y percent.mt < 5:
Pero no quiero filtrar, y los datos en este artículo no está filtrado. ¡Jajaja!
Después de eliminar las celdas innecesarias del conjunto de datos, el siguiente paso es normalizar los datos. De forma predeterminada, utilizamos el método de normalización de escala global "LogNormalize", que normaliza la medición de la expresión de características de cada celda a la expresión total y luego multiplica el logaritmo del resultado por un factor de escala (el valor predeterminado es 10,000). Los valores normalizados se almacenan en pbmc[["RNA"]]@data.
A continuación, calculamos el subconjunto de características en el conjunto de datos que mostraban una alta variación entre células (es decir, alta expresión en algunas células y baja expresión en otras). Nosotros y otros hemos descubierto que centrarse en estos genes en análisis posteriores ayuda a resaltar características biológicas en conjuntos de datos unicelulares.
El proceso de procesamiento de Seurat3 se describe en detalle aquí. Se ha mejorado sobre la base de la versión anterior y modela directamente la relación media-varianza inherente de los datos de una sola celda y se implementa en la función FindVariableFeatures. . De forma predeterminada, devolvemos 2000 funciones para cada conjunto de datos. Estas características se utilizarán para análisis posteriores como PCA.
Encontrar características de variables
Identificar valores atípicos en el gráfico de variación media.
FindVariableFeatures(objeto, ...)
Cómo elegir ****selection.method:
vst: primero, compare log (varianza) y log (media) realiza un ajuste de regresión polinómica local (loess). Luego, los valores de las características se normalizan utilizando la media observada y la varianza esperada (dada por la línea ajustada). Luego, la variación de la característica se calcula en función del valor normalizado después de cortar al valor máximo (ver corte).
mean.var.plot (mvp): Primero, use la función para calcular la expresión media (mean.function) y la dispersión (diffusion.function) de cada característica. A continuación, las características se dividen en varias particiones (el valor predeterminado es 20) según la expresión promedio de cada partición, y se calcula la puntuación z discretizada dentro de cada partición. El objetivo es identificar características variables mientras se controla la estrecha relación entre la variabilidad y la expresión media.
dispersión(disp): Selecciona el gen con el mayor valor de dispersión
Encuentra los 10 genes con la mayor varianza:
A continuación, aplicamos una transformación lineal ("escalado" "), que es un paso de preprocesamiento estándar y es más importante que las técnicas de reducción de dimensionalidad como PCA.
Función ScaleData Función:
A continuación, realizaremos PCA en los datos escalados.
De forma predeterminada, solo se utilizarán como entrada características variables previamente determinadas, pero si desea seleccionar un subconjunto diferente, esto se puede definir usando parámetros de características.
Seurat proporciona varias formas útiles de visualizar celdas y definir funciones de PCA, incluidas VizDimReduction, DimPlot y DimHeatmap.
Varias formas diferentes de inspeccionar y visualizar resultados de PCA
DimHeatmap, en particular, facilita la exploración de las principales fuentes de heterogeneidad en un conjunto de datos y ayuda a decidir qué PC se pueden utilizar para análisis posteriores posteriores. Las celdas y las características se ordenan según las puntuaciones de PCA. Configurar una celda con un número le permite trazar celdas "extremos" en cualquier extremo del espectro, lo que acelera enormemente el trazado de grandes conjuntos de datos. Si bien se trata claramente de un análisis supervisado, hemos descubierto que es una herramienta importante para explorar conjuntos de características relevantes.
Para superar la gran cantidad de ruido técnico de las características individuales en los datos de scRNA-seq, Seurat agrupa las células según su puntuación PCA, y cada PC representa esencialmente una "metacaracterística" que combina una colección de características relacionadas de información. Por lo tanto, el componente más dominante representa una compresión robusta del conjunto de datos. Pero, ¿cuántos componentes principales deberíamos elegir incluir? 10?20?100?
En el artículo de Macosko et al., implementamos una prueba de remuestreo inspirada en el programa JackStraw. Aleatorizamos un subconjunto de datos (el valor predeterminado es 1) y volvimos a ejecutar PCA para crear una "distribución nula" de puntuaciones de características, luego repetimos el proceso. Las PC que consideramos más "importantes" son aquellas enriquecidas con características con valores p bajos.
La función JackStrawPlot proporciona una herramienta visual para comparar la distribución de los valores p para cada PC con la distribución uniforme (línea discontinua). Una PC "significativa" mostrará fuertes características de enriquecimiento con valores p bajos (línea continua sobre la línea discontinua). En este caso, la importancia parece disminuir drásticamente después de los primeros 10-12 PC.
Otra heurística consiste en generar un "Elbow plot": clasificar los componentes principales según el porcentaje de varianza explicada por cada componente (función ElbowPlot). En este caso, podemos observar un punto de inflexión ("codo") cerca de PC9-10, lo que indica que la mayor parte de la señal real se captura en las primeras 10 PC.
Determinar las verdaderas dimensiones de un conjunto de datos es una tarea desafiante/incierta para el usuario. Por lo tanto, recomendamos considerar los siguientes tres enfoques. El primer enfoque es más supervisado, identifica fuentes relevantes de heterogeneidad mediante la exploración de PC y puede usarse junto con GSEA. El segundo enfoque implementa pruebas estadísticas basadas en un modelo estocástico nulo, pero requiere mucho tiempo para grandes conjuntos de datos y es posible que no arroje un límite de PC inequívoco. El tercero es un algoritmo heurístico de uso común que se puede calcular inmediatamente. En este caso, los tres métodos dan resultados similares, pero está justificado elegir cualquier PC entre 7 y 12 como valor de corte.
Elegimos 10 aquí, pero se anima a los usuarios a considerar lo siguiente:
Seurat v3 aplica un enfoque de agrupación basado en gráficos basado en la estrategia inicial de (Macosko et al.). Es importante destacar que la medida de distancia que impulsa el análisis de conglomerados (basado en PC previamente identificadas) permanece sin cambios. Sin embargo, nuestro método de dividir la matriz de distancias de celdas en grupos ha mejorado mucho. Nuestro enfoque está fuertemente inspirado en manuscritos recientes que aplican métodos de agrupamiento basados en gráficos a datos de scRNA-seq [SNN-Cliq, Xu y Su, Bioinformatics, 2015] y datos de CyTOF [PhenoGraph, Levine et al.].
Brevemente, estos métodos integran celdas en una estructura gráfica, como un gráfico de k-vecino más cercano (KNN), dibujan bordes entre celdas con patrones de expresión de características similares y luego intentan dividir el gráfico en cuasi-grupos o comunidades altamente interconectados.
De manera similar a la expresión, primero construimos un gráfico KNN basado en la distancia euclidiana en el espacio PCA y luego lo calculamos en función de la superposición saludable máxima (similitud de Jaccard) de las dos celdas en el área local. los pesos del borde entre ellos. Este paso se realiza utilizando la función FindNeighbors y toma como entrada las dimensiones del conjunto de datos previamente definidas (las primeras 10 piezas).
Para agrupar celdas, a continuación aplicaremos una técnica de optimización modular como el algoritmo de Louvain (predeterminado) o SLM [SLM, Blondel et al., Journal of Statistical Mechanics], agrupando de forma iterativa células con el objetivo de optimizar Funciones del módulo estándar. La función FindClusters implementa este proceso y contiene un parámetro de resolución para establecer la granularidad de la agrupación en clústeres posteriores. Cuanto mayor sea el valor, más clústeres habrá. Descubrimos que establecer este parámetro entre 0,4 y 1,2 generalmente proporciona buenos resultados para conjuntos de datos de una sola celda de alrededor de 3K. Para conjuntos de datos más grandes, la resolución óptima suele aumentar. Los clústeres se pueden encontrar utilizando la función Idents.
Vea los ID de clúster de las 5 celdas principales
Seurat proporciona varias técnicas de reducción de dimensionalidad no lineal (como tSNE y UMAP) para visualizar y explorar estos conjuntos de datos. El objetivo de estos algoritmos es aprender la variedad subyacente de los datos para poder colocar unidades similares juntas en un espacio de baja dimensión. Las unidades en la agrupación basada en gráficos anterior deben ubicarse conjuntamente en estos gráficos de dimensiones reducidas. Como entrada para UMAP y tSNE, recomendamos utilizar las mismas PC que la entrada para el análisis de conglomerados.
En este punto, puede guardar el objeto para poder volver a cargarlo fácilmente sin volver a ejecutar los pasos computacionalmente intensivos anteriores, o trabajar fácilmente con colaboradores.
Seurat te ayuda a encontrar marcadores que definen clusters mediante expresiones diferenciales. De forma predeterminada, identifica marcadores positivos y negativos de un único grupo (especificado en ident.1) en comparación con todas las demás células. Findallmarkers maneja todos los grupos automáticamente, pero también puede probar las relaciones entre los grupos de grupos o probar todas las celdas.
El parámetro min.pct requiere que se pruebe al menos una característica en cualquiera de los dos conjuntos de unidades, mientras que el parámetro Fresh.test requiere que haya una cierta diferencia (promedio) en una característica entre los dos conjuntos de unidades. Podrías establecer ambos valores en 0, pero esto aumentaría significativamente el tiempo ya que estarías probando una gran cantidad de características que probablemente no sean altamente discriminativas. Otra forma de acelerar los cálculos es configurar max.cell.per.ident. Esto tomará una muestra de cada clase de identidad para que su número de celdas no exceda un valor establecido. Aunque suele haber una pérdida en la potencia computacional, la ganancia de velocidad puede ser significativa y las características expresadas de manera más diferencial aún pueden llegar a la cima.
Encuentre todos los marcadores que distinguen el grupo 5 del grupo 0 y 3
Encuentre marcadores para cada grupo en comparación con todas las células restantes e informe solo las células positivas
Seurat tiene varias pruebas de expresión diferencial que se pueden parametrizar utilizando esta prueba (consulte nuestra viñeta DE para obtener más detalles). Por ejemplo, la prueba ROC devuelve la capacidad de clasificar cualquier marcador (de 0 - aleatorio a 1 - perfecto).
Ofrecemos muchas herramientas para visualizar expresiones de marcado. VlnPlot (para mostrar la distribución de probabilidad de la expresión entre poblaciones) y FeaturePlot (para visualizar la expresión de características en gráficos tSNE o PCA) son nuestros métodos de visualización más utilizados.
También recomendamos utilizar RidgePlot, CellScatter y DotPlot como formas adicionales de ver conjuntos de datos.
DoHeatmap genera un mapa de calor de expresión para una celda y característica determinadas. En este ejemplo, trazamos los primeros 20 marcadores para cada grupo (o todos los marcadores si hay menos de 20 marcadores).
Afortunadamente, en este conjunto de datos podemos usar marcadores canónicos para hacer coincidir fácilmente cohortes imparciales con tipos de células conocidos:
En este conjunto de datos, podemos usar marcadores canónicos para hacer coincidir fácilmente cohortes imparciales con tipos de células conocidos.