【单细胞第二节:单细胞示例数据分析-GSE218208】

news/2025/1/30 7:20:17/

GSE218208

1.创建Seurat对象

#untar(“GSE218208_RAW.tar”)

rm(list = ls())
a = data.table::fread("GSM6736629_10x-PBMC-1_ds0.1974_CountMatrix.tsv.gz",data.table = F)
a[1:4,1:4]
library(tidyverse)
a$`alias:gene` = str_split(a$`alias:gene`,":",simplify = T)[,1]
#str_split_i(a$`alias:gene`,":",i = 1)
a = distinct(a,`alias:gene`,.keep_all = T) #从数据框a中去除alias:gene列中重复的值,同时保留所有列的信息。
a = column_to_rownames(a,var = "alias:gene") #将数据框a中的alias:gene列的值设置为行名(row names),并将alias:gene列从数据框中移除。
a[1:4,1:4]
library(Seurat)
pbmc <- CreateSeuratObject(counts = a, project = "a", min.cells = 3, min.features = 200)
#使用输入的基因表达矩阵a创建一个新的Seurat对象,并设置项目名称为"a",同时过滤掉表达在少于3个细胞中的基因,以及过滤掉表达基因数少于200的细胞。

2.质控

pbmc[["percent.mt"]] <- PercentageFeatureSet(pbmc, pattern = "^MT-")
head(pbmc@meta.data, 3)
VlnPlot(pbmc, features = c("nFeature_RNA","nCount_RNA", "percent.mt"), ncol = 3,pt.size = 0.5)
pbmc = subset(pbmc,nFeature_RNA < 4200 &nCount_RNA < 18000 &percent.mt < 18)

3.降维聚类分群

f = "obj.Rdata"
if(!file.exists(f)){pbmc = pbmc %>% NormalizeData() %>%  FindVariableFeatures() %>%  ScaleData(features = rownames(.)) %>%  RunPCA(pc.genes = pbmc@var.genes)  %>%FindNeighbors(dims = 1:15) %>% FindClusters(resolution = 0.5) %>% RunUMAP(dims = 1:15) %>% RunTSNE(dims = 1:15)save(pbmc,file = f)
}
load(f)
ElbowPlot(pbmc)
p1 <- DimPlot(pbmc, reduction = "umap",label = T)+NoLegend();p1

4.makergene

library(dplyr)
f = "markers.Rdata"
if(!file.exists(f)){pbmc.markers <- FindAllMarkers(pbmc, only.pos = TRUE,min.pct = 0.25)save(pbmc.markers,file = f)
}
load(f)
mks = pbmc.markers %>% group_by(cluster) %>% top_n(n = 2, wt = avg_log2FC)
g = unique(mks$gene)

5.makergene的可视化

DoHeatmap(pbmc, features = g) + NoLegend()+scale_fill_gradientn(colors = c("#2fa1dd", "white", "#f87669"))DotPlot(pbmc, features = g,cols = "RdYlBu") +RotatedAxis()VlnPlot(pbmc, features = g[1:3])FeaturePlot(pbmc, features = g[1:4])

6.注释亚群

手动注释

a = read.delim("../supp/markers.txt",header = F)
gt = split(a[,2],a[,1])DotPlot(pbmc, features = gt,cols = "RdYlBu") +RotatedAxis()

#利用writeLines(paste0(0:11,“,”)),自己手动写,打开一新的text file,将writeLines(paste0(0:11,“,”))的输出写在里边,然后保存在工作目录下,命名为xx.txt

writeLines(paste0(0:11,","))
celltype = read.table("anno.txt",header = F,sep = ",") #自己照着DotPlot图填的
celltype
new.cluster.ids <- celltype$V2
names(new.cluster.ids) <- levels(pbmc)
seu.obj <- RenameIdents(pbmc, new.cluster.ids)
save(seu.obj,file = "seu.obj.Rdata")
p1 <- DimPlot(seu.obj, reduction = "umap", label = TRUE, pt.size = 0.5) + NoLegend()
p1

自动注释

library(celldex)
library(SingleR)
ls("package:celldex")
f = "../supp/single_ref/ref_BlueprintEncode.RData"
if(!file.exists(f)){ref <- celldex::BlueprintEncodeData()save(ref,file = f)
}
ref <- get(load(f))
library(BiocParallel)
scRNA = pbmc
test = scRNA@assays$RNA@layers$data
rownames(test) = Features(scRNA)
colnames(test) = Cells(scRNA)
pred.scRNA <- SingleR(test = test, ref = ref,labels = ref$label.main, clusters = scRNA@active.ident)
pred.scRNA$pruned.labels
#查看注释准确性 
plotScoreHeatmap(pred.scRNA, clusters=pred.scRNA@rownames, fontsize.row = 9,show_colnames = T)
new.cluster.ids <- pred.scRNA$pruned.labels
names(new.cluster.ids) <- levels(scRNA)
levels(scRNA)
scRNA <- RenameIdents(scRNA,new.cluster.ids)
levels(scRNA)
p2 <- DimPlot(scRNA, reduction = "umap",label = T,pt.size = 0.5) + NoLegend()
p1+p2

在这里插入图片描述
可选的celldex包:
在这里插入图片描述

a = 1
save(a,file = "a.Rdata")b = load("a.Rdata")b = get(load("a.Rdata")) #load可将a的数值赋值给b

http://www.ppmy.cn/news/1567828.html

相关文章

【电工基础】2.低压带电作业定义,范围,工作要求,电工基本工具

一。低压带电作业 1.低压带电作业定义 低压带电作业是指在不停电的低压设备或低压线路上的工作。对于一些可以不停电的工作&#xff0c;没有偶然触及带电部分的危险工作&#xff0c;或作业人员使用绝缘辅助安全用具直接接触带电体及在带电设备外壳上的工作&#xff0c;均可进行…

【BUUCTF】[HITCON 2017]SSRFme1

打开题目页面直接给了PHP源码 进行代码审计 <?php // 这里的 192.168.122.15 可能是一个误写或者调试遗留的内容&#xff0c;它不属于有效的 PHP 代码部分 // 以下开始是正常的 PHP 代码// 检查是否存在 HTTP_X_FORWARDED_FOR 头信息// HTTP_X_FORWARDED_FOR 头通常用于代…

Spring Boot - 数据库集成05 - 集成MongoDB

Spring Boot集成MongoDB 文章目录 Spring Boot集成MongoDB一&#xff1a;使用前的准备1&#xff1a;依赖导入 & 配置2&#xff1a;实体类创建 二&#xff1a;核心 - MongoRepository三&#xff1a;核心 - MongoTemplate1&#xff1a;集合操作2&#xff1a;文档操作(重点)3&…

RabbitMQ 分布式高可用

文章目录 前言一、持久化与内存管理1、持久化机制2、内存控制1、命令行2、配置文件 3、内存换页4、磁盘控制 二、集群1、Erlang的分布式特性2、RabbitMQ的节点类型2.1、磁盘节点 (Disk Node)2.2、内存节点 (RAM Node) 3、构建集群3.1 普通集群3.2 镜像队列3.3、高可用实现方案3…

人工智能丨Midscene:让UI自动化测试变得更简单

在这个数字化时代&#xff0c;每一个细节的优化都可能成为产品脱颖而出的关键。而对于测试人员来说&#xff0c;确保产品界面的稳定性和用户体验的流畅性至关重要。今天&#xff0c;我要向大家介绍一款名为Midscene的工具&#xff0c;它利用自然语言处理&#xff08;NLP&#x…

家居 EDI:Haverty‘s EDI 需求分析

Havertys 成立于 1885 年&#xff0c;是一家历史悠久的美国家具零售商。公司致力于为客户提供高品质的家具和家居饰品&#xff0c;其产品线涵盖客厅、卧室、餐厅及办公家具等多个领域。 电子数据交换&#xff08;EDI&#xff09;是一种通过标准化电子格式在商业伙伴之间进行数据…

性能优化案例:通过合理设置spark.storage.memoryFraction参数的值来优化PySpark程序的性能

优化PySpark程序的性能时&#xff0c;合理设置spark.storage.memoryFraction&#xff08;或相关内存参数&#xff09;是关键。 合理设置spark.storage.memoryFraction需结合任务类型和内存使用监控。对于缓存密集型任务&#xff0c;适当提高存储内存比例&#xff1b;对于Shuffl…

【Linux权限】—— 于虚拟殿堂,轻拨密钥启华章

欢迎来到ZyyOvO的博客✨&#xff0c;一个关于探索技术的角落&#xff0c;记录学习的点滴&#x1f4d6;&#xff0c;分享实用的技巧&#x1f6e0;️&#xff0c;偶尔还有一些奇思妙想&#x1f4a1; 本文由ZyyOvO原创✍️&#xff0c;感谢支持❤️&#xff01;请尊重原创&#x1…