Skip to content

Commit

Permalink
fix typos
Browse files Browse the repository at this point in the history
  • Loading branch information
josschavezf committed Jul 30, 2023
1 parent 41a322d commit b552bc1
Showing 1 changed file with 59 additions and 59 deletions.
118 changes: 59 additions & 59 deletions 02_sesion2.Rmd
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,11 @@ Contenido adaptado de: [aquí](https://docs.google.com/presentation/d/12CjvQ1beZ

## Motivación

El siguiente paso en el análisis de scRNA-seq usualmente consiste en identificar grupos de células "similares"
El siguiente paso en el análisis de scRNA-seq usualmente consiste en identificar grupos de células "similares".

Por ejemplo: un análisis de clustering busca identificar células con un perfil transcriptómico similar al calcular distancias entre ellas
Por ejemplo: un análisis de clustering busca identificar células con un perfil transcriptómico similar al calcular distancias entre ellas.

Si tuviéramos un dataset con dos genes podríamos hacer una gráfica de dos dimensiones para identificar clusters de células
Si tuviéramos un dataset con dos genes podríamos hacer una gráfica de dos dimensiones para identificar clusters de células.

<div>
<p style = 'text-align:center;'>
Expand All @@ -31,9 +31,9 @@ Por lo tanto, no necesitamos almacenar información independiente para genes ind

**Ventajas:**

- Reduce trabajo computacional en análisis posteriores
- Reduce el ruido al "promediar" mútiples genes obteniendo una representación más precisa de los patrones en los datos
- Permite una graficación efectiva en dos dimensiones
- Reduce trabajo computacional en análisis posteriores.
- Reduce el ruido al "promediar" mútiples genes obteniendo una representación más precisa de los patrones en los datos.
- Permite una graficación efectiva en dos dimensiones.

## Dataset ilustrativo: Zeisel

Expand Down Expand Up @@ -169,25 +169,25 @@ top.pbmc <- getTopHVGs(dec.pbmc, prop = 0.1)

## Análisis de Componentes Principales

PCA es el arma principal de la reducción de dimensionalidad
PCA es el arma principal de la reducción de dimensionalidad.

**PCA descubre las combinaciones (lineales) de "features" que capturan la cantidad más grande de variación**

En un PCA, la primer combinación lineal (componente principal) se elige tal que permite capturar la mayor varianza a través de las células. El siguiente PC se elige tal que es "ortogonal" al primero y captura la cantidad más grande de la variación restante, y así sucesivamente...

### PCA aplicado a datos de scRNA-seq

Podemos realizar reducción de dimensionalidad al aplicar PCA en la matriz de cuentas transformadas (log-counts matrix) y restringiendo los análisis posteriores a los primeros PCs **(top PCs)**
Podemos realizar reducción de dimensionalidad al aplicar PCA en la matriz de cuentas transformadas (log-counts matrix) y restringiendo los análisis posteriores a los primeros PCs **(top PCs)**.

* Esto puede reducir nuestro dataset de 20,000 dimensiones a, digamos, 10, sin perder demasiada información
* Esto puede reducir nuestro dataset de 20,000 dimensiones a, digamos, 10, sin perder demasiada información.
* La técnica de PCA tiene muchas propiedades teóricas bien estudiadas.
* Hay varias formas rápidas de realizar PCA en datasets grandes.

### Suposiciones de PCA aplicadas a los datos de scRNA-seq

* Los procesos biológicos afectan múltiples genes en una manera coordinada
* Los primeros PCs probablemente representan la estructura biológica dado que más variación puede ser capturada considerando el comportamiento correlacionado de muchos genes
* Se espera que el ruido técnico azaroso afecte cada gen independientemente
* Los procesos biológicos afectan múltiples genes en una manera coordinada.
* Los primeros PCs probablemente representan la estructura biológica dado que más variación puede ser capturada considerando el comportamiento correlacionado de muchos genes.
* Se espera que el ruido técnico azaroso afecte cada gen independientemente.

**Consideración: Los primeros PCs capturarón "batch effects" (efectos de lote) que afectan muchos genes en una manera coordinada**

Expand All @@ -205,15 +205,15 @@ sce.zeisel <- runPCA(sce.zeisel,

**¿Estamos corriendo el análisis sobre todos los genes de nuestro dataset?**

Por default, **runPCA()** usa un método rápido aproximado que realiza simulaciones, por lo tanto, es necesario *'configurar la semilla'* para obtener resultados reproducibles
Por default, **runPCA()** usa un método rápido aproximado que realiza simulaciones, por lo tanto, es necesario *'configurar la semilla'* para obtener resultados reproducibles.

### Eligiendo el número de PCs

**Esta elección en análoga a la elección del número de highly variable genes (HGV). Elegir más PCs evitará descartar señal biológica a expensas de retener más ruido**

* Es común seleccionar un número de PCs "razonable" pero **arbitrario** (10-50), continuar con el análisis y regresar para checar la robustez de los resultados en cierto rango de valores
* Es común seleccionar un número de PCs "razonable" pero **arbitrario** (10-50), continuar con el análisis y regresar para checar la robustez de los resultados en cierto rango de valores.

Ahora exploraremos algunas estrategias guiadas por los datos (*data-driven*) para hacer esta selección
Ahora exploraremos algunas estrategias guiadas por los datos (*data-driven*) para hacer esta selección.

#### Usando el punto del codo

Expand All @@ -225,11 +225,11 @@ plot(percent.var, xlab = "PC", ylab = "Variance explained (%)")
abline(v = chosen.elbow, col = "red")
```

Una heurística simple es elegir el número de PCs basado en el **porcentaje de varianza explicado** por PCs sucesivos
Una heurística simple es elegir el número de PCs basado en el **porcentaje de varianza explicado** por PCs sucesivos.

#### Basados en la estructura de la población

Esta es una aproximación heurística más sofisticada que usa el número de clusters como un *proxy* del número de subpoblaciones
Esta es una aproximación heurística más sofisticada que usa el número de clusters como un *proxy* del número de subpoblaciones.

```{r }
choices <- getClusteredPCs(reducedDim(sce.zeisel))
Expand All @@ -243,17 +243,17 @@ abline(v = chosen.clusters, col = "grey80", lty = 2)
```


Supongamos que esperamos *d* subpoblaciones de células, en ese caso, necesitamos *d-1* dimensiones para garantizar la separación de todas las subpoblaciones
Supongamos que esperamos *d* subpoblaciones de células, en ese caso, necesitamos *d-1* dimensiones para garantizar la separación de todas las subpoblaciones.

Pero... en un escenario real realmente no sabes cuántas poblaciones hay...

- Intenta con un rango para *d* y únicamente considera valores que produzcan a lo más *d+1* clusters
- Cuando se seleccionan más clusters con menos dimensiones se produce 'overclustering'
- Elige una *d* que maximice el número de clusters sin caer en 'overclustering'
- Cuando se seleccionan más clusters con menos dimensiones se produce 'overclustering'.
- Elige una *d* que maximice el número de clusters sin caer en 'overclustering'.

**Ventaja**: Es una solución pragmática que soluciona el equilibrio sesgo-varianza en los análisis posteriores (especialmente en el análisis de clustering)
**Ventaja**: Es una solución pragmática que soluciona el equilibrio sesgo-varianza en los análisis posteriores (especialmente en el análisis de clustering).

**Desventaja**: Hace suposiciones fuertes sobre la naturaleza de las diferencias biológicas entre los clusters, y de hecho supone la existencia de clusters, los cuales podrían no existir en algunos procesos biológicos como la diferenciación
**Desventaja**: Hace suposiciones fuertes sobre la naturaleza de las diferencias biológicas entre los clusters, y de hecho supone la existencia de clusters, los cuales podrían no existir en algunos procesos biológicos como la diferenciación.

### Juntando todo

Expand All @@ -276,20 +276,20 @@ reducedDim(sce.zeisel, "PCA_clusters") <- reducedDim(
### EJERCICIO

1. Realiza un PCA para los datos **sce.pbmc**.
2. Elige el número de PCs a conservar utilizando el método del codo
3. Elige el número de PCs a conservar utilizando la estructura de la población
4. Agrega esta información al objeto sce.pbmc
2. Elige el número de PCs a conservar utilizando el método del codo.
3. Elige el número de PCs a conservar utilizando la estructura de la población.
4. Agrega esta información al objeto sce.pbmc.




### Usando el ruido técnico

Otra ténica de reducción de dimensionalidades consiste en **conservar todos los PCs hasta que el % de variación explicado alcance algun límite** (por ejemplo, basado en la estimación de la variación técnica)
Otra técnica de reducción de dimensiones consiste en **conservar todos los PCs hasta que el % de variación explicado alcance algun límite** (por ejemplo, basado en la estimación de la variación técnica).

**denoisePCA()** automáticamente selecciona el número de PCs
**denoisePCA()** automáticamente selecciona el número de PCs.

Por default, denoisePCA() realiza algunas simulaciones, por lo tanto necesitamos *'configurar la semilla'* para obtener resultados reproducibles
Por default, denoisePCA() realiza algunas simulaciones, por lo tanto necesitamos *'configurar la semilla'* para obtener resultados reproducibles.

```{r, warning=FALSE, message=FALSE }
library(scran)
Expand All @@ -304,13 +304,13 @@ denoised.pbmc <- denoisePCA(sce.pbmc,
dim(reducedDim(denoised.pbmc, "PCA"))
```

La dimensionalidad del output es el límite inferior para el número de PCs requeridos para explicar toda la variación biológica. Lo que significa que cualquier número menor de PCs definitivamente descartará algún aspecto de la señal biológica
La dimensionalidad del output es el límite inferior para el número de PCs requeridos para explicar toda la variación biológica. Lo que significa que cualquier número menor de PCs definitivamente descartará algún aspecto de la señal biológica.

**Esto no grantiza que los PCs retenidos capturen toda la señal biológica**

**Esta técnica usualmente retiene más PCs que el método del punto del codo**

**scran::denoisePCA()** internamente limita el numero de PCs, por default 5-50, para evitar la selección de excesivamente pocos PCs (cuando el ruido técnico es alto relativo al ruido biológico) o excesivamente muchos PCs (cuando el ruido técnico es demasiado bajo)
**scran::denoisePCA()** internamente limita el numero de PCs, por default 5-50, para evitar la selección de excesivamente pocos PCs (cuando el ruido técnico es alto relativo al ruido biológico) o excesivamente muchos PCs (cuando el ruido técnico es demasiado bajo).

#### ¿Qué pasa si calculamos la relación media-varianza con la función modelGeneVar para el dataset sce.pbmc (anteriormente usamos la función modelGeneVarByPoisson para este propósito)?

Expand All @@ -322,9 +322,9 @@ denoised.pbmc2 <- denoisePCA(sce.pbmc,
dim(reducedDim(denoised.pbmc2))
```

**scran::denoisePCA()** tiende a funcionar mejor cuando la relación media-varianza refleja el ruido técnico verdadero, *i.e* estimado por **scran::modelGeneVarByPoisson()** o **scran::modelGeneVarWithSpikes()** en vez de **scran::modelGeneVar()**
**scran::denoisePCA()** tiende a funcionar mejor cuando la relación media-varianza refleja el ruido técnico verdadero, *i.e* estimado por **scran::modelGeneVarByPoisson()** o **scran::modelGeneVarWithSpikes()** en vez de **scran::modelGeneVar()**.

*El dataset PBMC está cerca de este límite inferior: el ruido técnico es alto relativo al ruido biológico*
*El dataset PBMC está cerca de este límite inferior: el ruido técnico es alto relativo al ruido biológico*.



Expand All @@ -351,9 +351,9 @@ dim(reducedDim(denoised.zeisel, "PCA_clusters"))

### Motivación

Los algoritmos de clustering, así como la mayoría de los algoritmos, operan fácilmente sobre 10-50 (a lo más) PCs, pero ese número es aún demasiado para la visualización
Los algoritmos de clustering, así como la mayoría de los algoritmos, operan fácilmente sobre 10-50 (a lo más) PCs, pero ese número es aún demasiado para la visualización.

Por lo tanto, necesitamos estrategias adicionales para la reducción de dimensionalidad si queremos visualizar los datos
Por lo tanto, necesitamos estrategias adicionales para la reducción de dimensionalidad si queremos visualizar los datos.

### Visualizando con PCA

Expand All @@ -368,7 +368,7 @@ plotReducedDim(sce.zeisel,
)
```

PCA es una técnica lineal, por lo tanto, no es eficiente para comprimir diferencias en más de 2 dimensiones en los primeros 2 PCs
PCA es una técnica lineal, por lo tanto, no es eficiente para comprimir diferencias en más de 2 dimensiones en los primeros 2 PCs.

### Retos y resumen de la visualización con PCA

Expand All @@ -381,12 +381,12 @@ plotReducedDim(sce.zeisel,

**Ventajas:**

- PCA es predecible y no introducirá estructura aritficial en los datos
- Es determínistico y robusto a cambios pequeños en los valores de entrada
- PCA es predecible y no introducirá estructura artificial en los datos.
- Es determínistico y robusto a cambios pequeños en los valores de entrada.

**Desventajas:**

- Usualmente la visualización no es suficiente para visualizar la naturaleza compleja de los datos de scRNA-seq
- Usualmente la visualización no es suficiente para visualizar la naturaleza compleja de los datos de scRNA-seq.

### Visualización con t-SNE

Expand Down Expand Up @@ -422,7 +422,7 @@ plotReducedDim(sce.zeisel,
#### Continuando


- Baja perplejidad favorece la resolución de la estructura fina, posiblemente al grado de que la visualización parece rudio random.
- Baja perplejidad favorece la resolución de la estructura fina, posiblemente al grado de que la visualización parece ruido random.


```{r, fig.width = 21 }
Expand All @@ -443,24 +443,24 @@ p1 + p2 + p3



El siguiente [foro](http://distill.pub/2016/misread-tsne/) discute la selección de parámetros para t-SNE con cierta profundidad
El siguiente [foro](http://distill.pub/2016/misread-tsne/) discute la selección de parámetros para t-SNE con cierta profundidad.


- No sobreinterpretes los resultados de t-SNE como un 'mapa' de las identidades de las células individuales
- Algunos componentes aleatorios y la selección de parámetros cambiarán la visualización
- La interpretación puede ser engañada por el tamaño y posición de los clusters
- t-SNE infla clusters densos y comprime clusters escasos
- t-SNE no está obligado a preservar las localizaciones relativas de clusters no-vecinos (no puedes interpretar distancias no locales)
- No sobreinterpretes los resultados de t-SNE como un 'mapa' de las identidades de las células individuales.
- Algunos componentes aleatorios y la selección de parámetros cambiarán la visualización.
- La interpretación puede ser engañada por el tamaño y posición de los clusters.
- t-SNE infla clusters densos y comprime clusters escasos.
- t-SNE no está obligado a preservar las localizaciones relativas de clusters no-vecinos (no puedes interpretar distancias no locales).

**Aún así: t-SNE es una herramienta probada para visualización general de datos de scRNA-seq y sigue siendo muy popular**

### Visualización con UMAP

*Uniform manifold approximation and project (UMAP)* es una alternativa a t-SNE
*Uniform manifold approximation and project (UMAP)* es una alternativa a t-SNE.

Así como t-SNE, UMAP **intenta encontrar una representación (no lineal) de pocas dimensiones de los datos que preserve las distancias entre cada punto y sus vecinos en el espacio multi-dimensional**
Así como t-SNE, UMAP **intenta encontrar una representación (no lineal) de pocas dimensiones de los datos que preserve las distancias entre cada punto y sus vecinos en el espacio multi-dimensional**.

t-SNE y UMAP están basados en diferentes teorías matemáticas
t-SNE y UMAP están basados en diferentes teorías matemáticas.

```{r, fig.dim = c(6, 4) }
set.seed(1100101001)
Expand All @@ -473,9 +473,9 @@ plotReducedDim(sce.zeisel,

Comparado con t-SNE:

- UMAP tiende a encontrar clusters visualmente más compactos
- Intenta preservar más de la estructura global que t-SNE
- Tiende a ser más rápido que t-SNE, lo cual puede ser importante para datasets grandes. La diferencia desaparece cuando se aplican sobre los primeros PCs
- UMAP tiende a encontrar clusters visualmente más compactos.
- Intenta preservar más de la estructura global que t-SNE.
- Tiende a ser más rápido que t-SNE, lo cual puede ser importante para datasets grandes. La diferencia desaparece cuando se aplican sobre los primeros PCs.


#### Preguntas
Expand All @@ -492,9 +492,9 @@ Comparado con t-SNE:
</p>
</div>

- Igual que para t-SNE, es necesario configurar una semilla y diferentes valores para los parámetros cambiarón la visualización
- Igual que para t-SNE, es necesario configurar una semilla y diferentes valores para los parámetros cambiaron la visualización.

- Si el valor para los parámetros *n_neighbors* o *min_dist* es demasiado bajo entonces el ruido aleatorio se interpretará como estructura de alta-resolución, si son demasiado altos entonces se perderá la estructura fina
- Si el valor para los parámetros *n_neighbors* o *min_dist* es demasiado bajo entonces el ruido aleatorio se interpretará como estructura de alta-resolución, si son demasiado altos entonces se perderá la estructura fina.

**TIP: Trata un rango de valores para cada parámetro para asegurarte de que no comprometen ninguna de las conclusiones derivadas de la gráfica UMAP o t-SNE**

Expand All @@ -503,19 +503,19 @@ Comparado con t-SNE:
**Recuerda:**


- Reducción de dimensionalidad para la visualización de los datos necesariamente involucra descartar información y distorsionar las distancias entre las células
- Reducción de dimensionalidad para la visualización de los datos necesariamente involucra descartar información y distorsionar las distancias entre las células.

- No sobre interpretes las gráficas bonitas
- No sobre interpretes las gráficas bonitas.

### Resumen y recomendaciones

- Las gráficas de t-SNE y UMAP son herramientas diagnóstico importantes, por ejemplo: para checar si dos clusters son realmente subclusters vecinos o si un cluster puede ser dividido en más de un cluster
- Las gráficas de t-SNE y UMAP son herramientas diagnóstico importantes, por ejemplo: para checar si dos clusters son realmente subclusters vecinos o si un cluster puede ser dividido en más de un cluster.

- Es debatible cual visualización, t-SNE o UMAP, es más útil o estáticamente agradable.
- Es debatible cuál visualización, t-SNE o UMAP, es más útil o estéticamente agradable.

- Está bien elegir aquella que funcione mejor para tu análisis (tomando en cuenta que tratarás la gráfica únicamente como una herramienta de visualización/diagnóstico y que no llegarás a ninguna conclusión fuerte basado únicamente en la gráfica )
- Está bien elegir aquella que funcione mejor para tu análisis (tomando en cuenta que tratarás la gráfica únicamente como una herramienta de visualización/diagnóstico y que no llegarás a ninguna conclusión fuerte basado únicamente en la gráfica).

## Donde estamos
## Dónde estamos


<div>
Expand Down

0 comments on commit b552bc1

Please sign in to comment.