Pre-Processing Seurat

Download the HTML Pre-Processing Seurat .

R Markdown

Primer de tot, carreguem les dades. Del SCC

Squamos cell carcionma


#setwd("C:/Users/Roger Casals/OneDrive/Escriptori/UOC ROGER/2n semestre/TFM/Final 5_5")
setwd("C:/Users/Natàlia/Desktop/UOC ROGER/2n semestre/TFM/Primera prova")
metadata2 <- data.table::fread("GSE123813_scc_metadata.txt.gz")
expression_data <- read.table("GSE123813_scc_scRNA_counts.txt.gz", header=TRUE, row.names=1, sep="\t", check.names=FALSE)

Càrrega de llibreries

Carreguem les diferents llibreries

library(Seurat)
library(SeuratWrappers)
library(monocle3)
#library(slingshot)
library(ggplot2)
library(tidyr)
library(dplyr)
library(dyno)
library(tidyverse)
library(dynwrap)
#library(celldex)
library(SingleCellExperiment)
#library(SingleR)
library(dyneval)

Preprocessament amb Seurat

Objecte Seurat



aa <- CreateSeuratObject(counts=expression_data, project="GSE123813", metadata=metadata2)

bbb <- aa



#Ordenem les dades per tal d'obtenir les identificacions correctes.

metadata2 <- metadata2[order(metadata2$cell.id),]
aa <- aa[, order(colnames(aa))]
aa@meta.data <- aa@meta.data[order(row.names(aa@meta.data)), ]

Afegim metadata a Seurat


aa@meta.data$cluster <- metadata2$cluster
aa@meta.data$treatment <- metadata2$treatment


table(aa@meta.data$cluster)

ENS CENTRAREM AMB LES CD4 perquè hem vist a la teoria que les “naive” es poden diferenciar en Treg o Th17 o Tfh

Passos preprocessament amb Seurat

Control de qualitat


#Obtenim els percentatges de gens mitocontrials i ribosòmics, per saber si les cèl·lules estan estressades.
aa <- PercentageFeatureSet(aa, "^MT-", col.name="percent_mito")
aa <- PercentageFeatureSet(aa, "^RP[SL]", col.name = "percent_ribo")
aa <- PercentageFeatureSet(aa, "^HB[^(P)]", col.name = "percent_hb")

feats <- c("nFeature_RNA", "nCount_RNA", "percent_mito", "percent_ribo", "percent_hb")

VlnPlot(aa, group.by = "orig.ident", features = feats, pt.size = 0.1, ncol = 3) +
    NoLegend()

FeatureScatter(aa, "nCount_RNA", "nFeature_RNA", group.by = "orig.ident", pt.size = 0.5)


CD4tots <- aa

pre.markers <- FindAllMarkers(CD8tots ,only.pos = TRUE, min.pct = 0.25, logfc.threshold = 0.25)


pre.markers %>%
    group_by(cluster) %>%
    top_n(n = 3, wt = avg_log2FC) -> top15
DoHeatmap(CD8tots, features = top15$gene, size=2)



unique(aa@meta.data$cluster)

CD8tots <- subset(aa, cluster %in% c("CD8_ex", "CD8_mem", "CD8_eff", "CD8_naive", "CD8_ex_act", "CD8_act"))

CD4tots <- CD8tots

CD4tots <- subset(CD4tots, subset=nFeature_RNA < 4000 & percent_mito < 8 )

table(CD4tots@meta.data$cluster)


#Normalitzem les dades
CD4tots <- NormalizeData(CD4tots)

#Busquem els gens que contribueixen més significativament a la variabilitat d'una matriu d'expressió gènica.
#En seleccionem 2000 per defecte.
CD4tots <- FindVariableFeatures(CD4tots, selection.method = "vst", nfeatures = 2000)


#Escalem les dades mitjançant les funció que ens proporciona Seurat.
CD4tots <- ScaleData(CD4tots)

#Reduïm dimensió amb el RunPCA  (Utilitzem el número 16 ja que l'utilitzen al experiment.)
CD4tots <- RunPCA(CD4tots, npcs = 16)

                  #features = VariableFeatures(object = CD4tots))
#Utilitzem aquesta funció per trobar veïns propers mitjançant l'expressió gènica
CD4tots <- FindNeighbors(CD4tots, dims = 1:16)



#Ens quedem amb el cluster 0.3, ja que és el que millor s'adapta als subgrups que tenimm.


CD4tots <- FindClusters(CD4tots, resolution = c(0.7))


CD4tots <- RunUMAP(CD4tots, dims=1:16)



#Realitzem un DimPlot mitjançant per tal de que sigui etiquetat de diverses formes.
DimPlot(CD4tots, reduction = "umap", group.by = "treatment")

#Realitzem el plot per veure com estan ubicades les cèl·lules anotades en l'espai.
DimPlot(CD4tots, reduction="umap", group.by="cluster", label=T)


#Escollim quin serà el millor cluster.
#DimPlot(CD4tots, reduction = "umap", group.by = "RNA_snn_res.0.9", label = TRUE)
#DimPlot(CD4tots, reduction = "umap", group.by = "RNA_snn_res.0.7", label = TRUE)
#DimPlot(CD4tots, reduction = "umap", group.by = "RNA_snn_res.0.5", label = TRUE)
DimPlot(CD4tots, reduction = "umap", group.by = "RNA_snn_res.0.7", label = TRUE)
#DimPlot(CD4tots, reduction = "umap", group.by = "RNA_snn_res.0.1", label = TRUE)

S’ha escollit el cluster 0.3, ja que és el mateix que utilitzen a l’article, i el que engloba millor els diferents subtipus que tenim.

Rename idents


CD4tots <- RenameIdents(CD4tots, "2" = "CD8_Naive")
CD4tots <- RenameIdents(CD4tots, "7" = "CD8_Naive")


CD4tots <- RenameIdents(CD4tots, "0" = "CD8_mem")
CD4tots <- RenameIdents(CD4tots, "3" = "CD8_mem")


CD4tots <- RenameIdents(CD4tots, "1" = "CD8_ex")
CD4tots <- RenameIdents(CD4tots, "8" = "CD8_ex")
CD4tots <- RenameIdents(CD4tots, "4" = "CD8_ex")

CD4tots <- RenameIdents(CD4tots, "5" = "CD8_act")
CD4tots <- RenameIdents(CD4tots, "11" = "CD8_act")

CD4tots <- RenameIdents(CD4tots, "9" = "CD8_ex_act")

CD4tots <- RenameIdents(CD4tots, "6" = "CD8_eff")

#El 10 no el posem

CD4tots <- RenameIdents(CD4tots, "5" = "CD8_Naive")
CD4tots <- RenameIdents(CD4tots, "14" = "CD8_Naive")


CD4tots <- RenameIdents(CD4tots, "0" = "CD8_mem")
CD4tots <- RenameIdents(CD4tots, "8" = "CD8_mem")


CD4tots <- RenameIdents(CD4tots, "1" = "Naive")
CD4tots <- RenameIdents(CD4tots, "3" = "CD8_ex")
CD4tots <- RenameIdents(CD4tots, "9" = "CD8_ex")
CD4tots <- RenameIdents(CD4tots, "13" = "CD8_ex")

CD4tots <- RenameIdents(CD4tots, "7" = "CD8_act")
#CD4tots <- RenameIdents(CD4tots, "11" = "CD8_act")

CD4tots <- RenameIdents(CD4tots, "15" = "CD8_ex_act")

CD4tots <- RenameIdents(CD4tots, "12" = "CD8_eff")

CD4tots <- RenameIdents(CD4tots, "2" = "Tfh")
CD4tots <- RenameIdents(CD4tots, "16" = "Tfh")


CD4tots <- RenameIdents(CD4tots, "4" = "Treg")
CD4tots <- RenameIdents(CD4tots, "10" = "Treg")
CD4tots <- RenameIdents(CD4tots, "17" = "Treg")

CD4tots <- RenameIdents(CD4tots, "6" = "Th17")

Creem una nova columna a la metadata amb els “idents” d’aquests clusters

CD4tots@meta.data$idents <- Idents(CD4tots)

Només grups interessants

Realitzem un subset, identificant només els grups que hem pogut nombrar amb els clusters, i els representem per a veure’ls.

CD8tots <- subset(CD4tots, idents %in% c("CD8_ex", "CD8_mem", "CD8_eff", "CD8_Naive", "CD8_ex_act", "CD8_act", "Naive", "Treg", "Th17", "Tfh"))
CD8tots <- subset(CD4tots, cluster %in% c("CD8_ex", "CD8_mem", "CD8_eff", "CD8_naive", "CD8_ex_act", "CD8_act"))

CD4totssubset <- CD8tots
CD4totssubset <- subset(CD4totssubset, idents %in% c("CD8_ex", "CD8_mem", "CD8_eff", "CD8_Naive", "CD8_ex_act", "CD8_act"))

plot1 <- DimPlot(CD4totssubset, reduction = "umap", group.by="treatment")

plot2 <- DimPlot(CD4totssubset, reduction = "umap", group.by="idents", label=T)


plot1 | plot2

Identificats segons condició

Identifiquem els nous grups segons la seva condició de tractament, és a dir, si són “pre” o “post”, els separem mitjançant un guió baix.


CD4totssubset$celltype.cnd <- paste0(CD4totssubset$treatment, "_", CD4totssubset$idents)

DimPlot(CD4totssubset, reduction = "umap", group.by="celltype.cnd", label=T)

Identifiquem els Idents del cluster, com al que hem definit.


Idents(CD4totssubset) <- CD4totssubset$celltype.cnd

Proporcions cel·lulars

Calculem el percentatge de cada cèl·lula


prop.table(table(CD4totssubset@meta.data$celltype.cnd))*100


table(CD4totssubset@meta.data$celltype.cnd)


CD4totssubset@meta.data$cluster_redefined <- CD4totssubset@meta.data$cluster

CD8totssubset <- CD4totssubset


CD8totssubsetpre <- subset(CD8totssubset, celltype.cnd %in% c("pre_CD8_act", "pre_CD8_eff", "pre_CD8_ex", "pre_CD8_ex_act", "pre_CD8_mem", "pre_CD8_Naive"))
CD8totssubsetpost <- subset(CD8totssubset, celltype.cnd %in% c("post_CD8_act", "post_CD8_eff", "post_CD8_ex", "post_CD8_ex_act", "post_CD8_mem", "post_CD8_Naive"))




library(Seurat)


library(SeuratDisk)
library(SeuratData)

#SaveH5Seurat(CD8totssubset, "totscd8", overwrite=FALSE, verbose=TRUE)
#SaveH5Seurat(CD8totssubsetpre, "precd8", overwrite=FALSE, verbose=TRUE)
#SaveH5Seurat(CD8totssubsetpost, "postcd8", overwrite=FALSE, verbose=TRUE)
IRIS-CC omics
IRIS-CC omics
Technologist for the Bioinformatics and Bioimaging Research Group of the IRIS-CC (UVic-UCC) - Ph.D. in Bioinformatics (UVic-UCC)

matter.