Удачи в году Дракона! Я очень рад встретиться со всеми вами в первый день первого лунного месяца.
В этой статье в основном тестируются: пять методов интеграции отдельных ячеек в среде seuratv5.
Доктор Шэнсинь
[Биоинформатика] Язык R, изучение биоинформатики, серат, секвенирование одиночных клеток, пространственный транскриптом. Python, scanpy, cell2location, обмен данными
2 #https://satijalab.org/seurat/articles/install_v5.html#2Install v5---.libPaths( в папке seurat_v5 c( '/home/rootyll/seurat_v5/', "/usr/local/lib/R/site-library", "/usr/lib/R/site-library", "/usr/lib/R/library" ))
library(Seurat)pbmc = readRDS('~/gzh/pbmc3k_final.rds')
DimPlot(pbmc)
pbmc[["RNA5"]] <- as(object = pbmc[["RNA"]], Class = "Assay5")
DefaultAssay(pbmc)Assays(pbmc)
pbmc[["RNA_seuratv4"]] <- pbmc[['RNA']]
pbmc[['RNA']]=pbmc[['RNA5']]
#3 Стандартный процесс объекта v5 ----#Добавьте столбец данных процентов.mt в pbmc
pbmc[["percent.mt"]] <- PercentageFeatureSet(pbmc, pattern = "^MT-")
#Визуализируйте показатели контроля качества с помощью скрипичных графиков
VlnPlot(pbmc, features = c("nFeature_RNA", "nCount_RNA", "percent.mt"), ncol = 3)
#FeatureScatter часто используется для визуализации. feature-feature Актуальность, #nCount_RNA Соответствие проценту.mt
plot1 <- FeatureScatter(pbmc, feature1 = "nCount_RNA", feature2 = "percent.mt")
Корреляция между #nCount_RNA и nFeature_RNA
plot2 <- FeatureScatter(pbmc, feature1 = "nCount_RNA", feature2 = "nFeature_RNA")
plot1 + plot2 #Объединить два изображения
pbmc <- subset(pbmc, subset = nFeature_RNA > 200 & nFeature_RNA < 2500 & percent.mt < 5)
#выбирать 2500 > nFeature_RNA >200 и процент.мт < 5 данных
pbmc <- NormalizeData(object = pbmc)pbmc <- FindVariableFeatures(object = pbmc)
pbmc <- ScaleData(object = pbmc)
pbmc <- RunPCA(object = pbmc)
pbmc <- FindNeighbors(object = pbmc, dims = 1:30)
pbmc <- FindClusters(object = pbmc)
pbmc <- RunUMAP(object = pbmc, dims = 1:30)
DimPlot(object = pbmc, reduction = "umap")
Результаты следующие:
#для демонстрации,Делим объект pbmc на 2 набора данных,Выполните комплексный анализ
dim(pbmc)#13714 2638
pbmc$group= ifelse(pbmc$nCount_RNA>2200,yes = "CTRL",no = 'STIM')
table(pbmc$group)4##4 # In line with prior workflows, you can also into split your object into a list of multiple objects based on a metadata# column creates a list of two objects
ifnb_list <- SplitObject(pbmc, split.by = "group")
ifnb_list$CTRLifnb_list$STIM
#4 У нас есть два объекта seuratv5 для комплексного анализа ------merged_obj <- merge(x = ifnb_list$CTRL, y = ifnb_list$STIM)merged_obj <- NormalizeData(merged_obj)merged_obj <- FindVariableFeatures(merged_obj)merged_obj <- ScaleData(merged_obj)merged_obj <- RunPCA(merged_obj)obj=merged_obj#rpcaobj <- IntegrateLayers(object = obj, method = RPCAIntegration, orig.reduction = "pca", new.reduction = "integrated.rpca", verbose = FALSE)#ccaobj <- IntegrateLayers( object = obj, method = CCAIntegration, orig.reduction = "pca", new.reduction = "integrated.cca", verbose = FALSE)#remotes::install_github("satijalab/seurat-wrappers")#BiocManager::install('batchelor')#BiocManager::install('SeuratData',force = TRUE)# obj <- IntegrateLayers(# object = obj, method = FastMNNIntegration,# new.reduction = "integrated.mnn",# verbose = FALSE# )# # SeuratWrappers::RunFastMNN(object.list = obj,reduction.name = 'mnn')#harmonyobj <- IntegrateLayers( object = obj, method = HarmonyIntegration, orig.reduction = "pca", new.reduction = "harmony", verbose = FALSE)
obj <- FindNeighbors(obj, reduction = "integrated.cca", dims = 1:30)
obj <- FindClusters(obj, resolution = 2, cluster.name = "cca_clusters")
obj <- RunUMAP(obj, reduction = "integrated.cca", dims = 1:30, reduction.name = "umap.cca")
p1 <- DimPlot( obj, reduction = "umap.cca", group.by = c("Method", "predicted.celltype.l2", "cca_clusters"), combine = FALSE, label.size = 2)
obj <- FindNeighbors(obj, reduction = "harmony", dims = 1:30)obj <- FindClusters(obj, resolution = 2, cluster.name = "harmony_clusters")
obj <- RunUMAP(obj, reduction = "harmony", dims = 1:30, reduction.name = "harmony")
p2 <- DimPlot( obj, reduction = "harmony", group.by = c("Method", "cell.type", "harmony_clusters"), combine = FALSE, label.size = 2)
library(patchwork)
wrap_plots(c(p1, p2), ncol = 2, byrow = F)
Кажется, с согласованностью все в порядке, но в будущем есть 5 способов транслировать этот твит в прямом эфире, чтобы увидеть, какой метод быстрее и лучше.
ссылка: