单细胞测序流程(三)质控和数据过滤——Seurat包分析,小提琴图和基因离差散点图

本文介绍了使用R语言进行单细胞RNA测序数据分析的过程,包括数据读取、矩阵转换、Seurat对象创建、数据过滤、线粒体基因比例检查、测序深度相关性分析以及基因变异性筛选。通过小提琴图和散点图展示数据质量,并对高线粒体比例的细胞进行排除,确保后续分析的准确性。最后,进行了数据标准化和变量基因的识别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

质控和数据过滤

准备工具:R。
准备数据:上期经过整理的数据geneMatrix。
注意事项:R的安装目录和文件所在位置都不可有英文。
R 语言所需安装的包:

#if (!requireNamespace("BiocManager", quietly = TRUE))
#    install.packages("BiocManager")
#BiocManager::install("singscore")
#BiocManager::install("GSVA")
#BiocManager::install("GSEABase")
#BiocManager::install("limma")
#BiocManager的包安装命令可能会改变,需要去BiocManager官网查询最新安装方法,短时间内不会改变的。
#install.packages("devtools")
#library(devtools)
#devtools::install_github('dviraran/SingleR')
#这个包作用为对细胞的注释,对富集分析作用很关键,在这一篇章可以先不安装,在以后的go富集分析才需要。
正文代码开始:`#读取数据
library(limma)
library(Seurat)
library(dplyr)
library(magrittr)

setwd("数据所在目录")             #设置工作目录

#读取文件,并对重复基因取均值
rt=read.table("geneMatrix.txt",sep="\t",header=T,check.names=F)
rt=as.matrix(rt)
rownames(rt)=rt[,1]
exp=rt[,2:ncol(rt)]
dimnames=list(rownames(exp),colnames(exp))
data=matrix(as.numeric(as.matrix(exp)),nrow=nrow(exp),dimnames=dimnames)
data=avereps(data)#如果基因存在多行中,为了取得结果就会取均值

#将矩阵转换为Seurat对象,并对数据进行过滤
pbmc <- CreateSeuratObject(counts = data,project = "seurat", min.cells = 3, min.features = 50, names.delim = "_",)#min.cells为基因存在样本最小数,需要根据实际情况选择,min.features = 50基因最小存在细胞数
#使用PercentageFeatureSet函数计算线粒体基因的百分比
pbmc[["percent.mt"]] <- PercentageFeatureSet(object = pbmc, pattern = "^MT-")
pdf(file="04.featureViolin.pdf",width=10,height=6)           #保存对于基因特征的小提琴图
VlnPlot(object = pbmc, features = c("nFeature_RNA", "nCount_RNA", "percent.mt"), ncol = 3)
dev.off()
pbmc <- subset(x = pbmc, subset = nFeature_RNA > 50 & percent.mt < 7)    #对数据进行过滤,线粒体比例大于7%进行删掉,因为线粒体基因比例过高的细胞,会干扰细胞分群

#测序深度的相关性绘图
pdf(file="04.featureCor.pdf",width=10,height=6)              #保存基因特征相关性图
plot1 <- FeatureScatter(object = pbmc, feature1 = "nCount_RNA", feature2 = "percent.mt",pt.size=1.5)
plot2 <- FeatureScatter(object = pbmc, feature1 = "nCount_RNA", feature2 = "nFeature_RNA",,pt.size=1.5)
CombinePlots(plots = list(plot1, plot2))
dev.off()

#对数据进行标准化
pbmc <- NormalizeData(object = pbmc, normalization.method = "LogNormalize", scale.factor = 10000)
#提取那些在细胞间变异系数较大的基因
pbmc <- FindVariableFeatures(object = pbmc, selection.method = "vst", nfeatures = 1500)
#输出特征方差图
top10 <- head(x = VariableFeatures(object = pbmc), 10)
pdf(file="04.featureVar.pdf",width=10,height=6)              #保存基因特征方差图
plot1 <- VariableFeaturePlot(object = pbmc)
plot2 <- LabelPoints(plot = plot1, points = top10, repel = TRUE)#top10是对基因
CombinePlots(plots = list(plot1, plot2))
dev.off()`

结果
在这里插入图片描述
这是小提琴图,第一个图是在样品中对所有细胞检测到的基因数量小提琴图,横坐标为样品名,纵坐标为每个细胞中包含的基因数量;第二个图为样品所有细胞的中基因序列数量小提琴图,横坐标为样品名,纵坐标为每个细胞基因的数量。第三个图为样品所有细胞的线粒体比例小提琴图,横坐标为样品名,纵坐标为每个细胞线粒体比例。小提琴图展示了任意位置的密度,可以知道哪些位置的密度较高。
在这里插入图片描述
随着测序数量的增加,单细胞所检测到的基因数量也在增加,其中,这两个是有一定关联性的,在作图之前需要对含有线粒体基因的细胞进行筛选,因为过高会干扰细胞分群,我所选择的是高于7%的进行筛选,第一个图是对于线粒体比例于测序数据的关系的散点图即测序深度和线粒体基因含量的关系,第二个是对基因于测序数据序列的关系的散点图,即测序深度于基因数量的关系。
在这里插入图片描述
基因离差散点图,第一个图,是进行筛选,是筛选基因表达最高的前1500个(表达量要根据实际情况进行更改),在这个图中横坐标是对于基因在所有细胞的平均表达值,纵坐标是对于基因的离差值,离差值值越大表示基因的可变性越大。
第二个图是对表达最显著的前十个基因进行标注。

单细胞测序流程(三)质控和数据过滤到这里就结束了
 下一章会讲解单细胞的PCA主成分分析
 我所做的所有分析与教程的代码都会在我的个人公众号中,请打开微信搜索“生信学徒”进行关注,欢迎生信的研究人员和同学前来讨论分析。

ps:公众号刚刚建立比较简陋,但是该有的内容都不会少。

### 使用R语言Seurat读取单细胞测序数据的代码示例 在单细胞数据分析中,Seurat是一个强大的工具,用于处理分析单细胞RNA测序数据。以下是一个完整的代码示例,展示如何使用Seurat读取单细胞数据并创建Seurat对象。 #### 1. 安装加载必要的R 首先需要确保安装了`Seurat`其他相关的R。 ```r # 如果尚未安装Seurat,请运行以下命令进行安装 if (!requireNamespace("BiocManager", quietly = TRUE)) { install.packages("BiocManager") } BiocManager::install("Seurat") # 加载Seurat library(Seurat) ``` #### 2. 读取单细胞数据 假设我们有一个标准的10X Genomics输出文件夹结构(含`barcodes.tsv.gz`、`features.tsv.gz``matrix.mtx.gz`文件),可以使用`Read10X()`函数读取这些文件,并通过`CreateSeuratObject()`函数创建Seurat对象。 ```r # 设置工作目录 setwd("D:/project/scRNA") # 替换为实际路径 # 读取10X Genomics格式的数据 data.dir <- "./filtered_gene_bc_matrices/hg19" # 数据目录 pbmc.data <- Read10X(data.dir = data.dir) # 查看部分数据 print(pbmc.data[1:5, 1:3]) # 创建Seurat对象 pbmc.obj <- CreateSeuratObject( counts = pbmc.data, project = "pbmc3k", min.cells = 3, min.features = 200 ) # 每个基因至少在3个细胞中表达,每个细胞至少检测到200个基因[^3] # 查看Seurat对象的基本信息 print(pbmc.obj) ``` #### 3. 处理其他格式的数据 如果数据不是10X Genomics格式,而是其他常见格式(如`.h5ad`或`.RDS`文件),可以使用以下方法加载数据。 ##### (1) 从`.h5ad`文件加载数据 ```r # 安装SeuratDisk以支持.h5ad文件转换 if (!requireNamespace("remotes", quietly = TRUE)) { install.packages("remotes") } remotes::install_github("mojaveazure/seurat-disk") library(SeuratDisk) # 将.h5ad文件转换为.h5seurat格式 Convert("./data/pbmc/pbmc3k.h5ad", "h5seurat", overwrite = TRUE, assay = "RNA") # 加载.h5seurat文件并创建Seurat对象 seurat_pbmc <- LoadH5Seurat("./data/pbmc/pbmc3k.h5seurat") ``` ##### (2) 从`.RDS`文件加载数据 ```r # 使用readRDS()函数加载.RDS文件 my_data <- readRDS("path/to/your/file.rds") # 创建Seurat对象 seurat_obj <- CreateSeuratObject(counts = my_data, project = "custom_project") ``` #### 4. 数据预处理与质量控制 在创建Seurat对象后,通常需要进行数据预处理质量控制。以下是质控的一些常用步骤。 ```r # 添加线粒体比例信息 mito.genes <- grep(pattern = "^MT-", x = rownames(pbmc.obj), value = TRUE) pbmc.obj[["percent.mt"]] <- PercentageFeatureSet(pbmc.obj, pattern = "^MT-") # 绘制小提琴图 VlnPlot(pbmc.obj, features = c("nFeature_RNA", "nCount_RNA", "percent.mt"), ncol = 3) # 绘制基因离差散点图 FeatureScatter(pbmc.obj, feature1 = "nCount_RNA", feature2 = "percent.mt") FeatureScatter(pbmc.obj, feature1 = "nCount_RNA", feature2 = "nFeature_RNA") # 筛选细胞 pbmc.obj <- subset( pbmc.obj, subset = nFeature_RNA > 200 & nFeature_RNA < 2500 & percent.mt < 5 ) ``` ### 总结 上述代码展示了如何使用Seurat读取单细胞数据并进行初步的质量控制。具体步骤括:安装加载必要、读取不同格式的数据、创建Seurat对象以及进行基本的质控分析
评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值