单细胞测序流程(四)主成分分析——PCA

本文介绍了PCA(主成分分析)在单细胞测序数据预处理中的重要步骤,包括数据过滤、标准化、变量基因选择以及PCA分析。通过PCA降维,识别关键基因并绘制散点图和热图,展示细胞间的相关性和基因表达模式。此外,还展示了JackStraw测试用于评估PCA成分的有效性。这些分析为后续的t-SNE聚类和标记基因筛选奠定了基础。

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

PCA

PCA:线性降维,主要用于数据少的时候使用。看结果的时候,看打分的绝对值大小,而不是单独的看数据的大小,PCA 是最常用的降维方法,通过某种线性投影,将高维的数据映射到低维的空间中表示,并期望在所投影的维度上数据的方差最大,以此使用较少的数据维度,同时保留住较多的原数据点的特性。

准备

之前所使用的数据
R的IDE

分析目的

为以后的细胞分群做准备,以及t-sne聚类分析。

结果

在这里插入图片描述
散点图,横坐标为打分的值,打分的值的绝对值越大,代表相关性越大,每个pc,选取的是前20个基因,根据系数可以绘制后面的图形。
在这里插入图片描述
根据上图得出的数据绘制的图形,这幅图意思是每个细胞在的位置,点的颜色是细胞来自哪一个样品,聚集在一起的点代表有一定的相关性,距离越近代表相关程度越高。
在这里插入图片描述
基因表达热图,作用与散点图相似,可以看出每个基因的表达程度,表达程度高颜色就越深。
在这里插入图片描述
根据这个图形可以判断出选取哪一个作为后续分析的数据,主要看右边的p-value,是实际基因与理论基因的差值,越小越好,涉及到后续分析的参数。
r语言代码:

#if (!requireNamespace("BiocManager", quietly = TRUE))
#    install.packages("BiocManager")
#BiocManager::install("singscore")
#BiocManager::install("GSVA")
#BiocManager::install("GSEABase")
#BiocManager::install("limma")

#install.packages("devtools")
#library(devtools)
#devtools::install_github('dviraran/SingleR')
library(limma)
library(Seurat)
library(dplyr)
library(magrittr)
setwd("C:\\Users\\lexb4\\Desktop\\scRNA\\04-07.Seurat")             #设置工作目录

#读取文件,并对重复基因取均值
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 = "_",)
#使用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 < 5)    #对数据进行过滤

#测序深度的相关性绘图
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)
CombinePlots(plots = list(plot1, plot2))
dev.off()
#
#
#
#
#这一章的代码从这里开始
##PCA分析
pbmc=ScaleData(pbmc)                     #PCA降维之前的标准预处理步骤
pbmc=RunPCA(object= pbmc,npcs = 20,pc.genes=VariableFeatures(object = pbmc))     #PCA分析

#绘制每个PCA成分的相关基因
pdf(file="05.pcaGene.pdf",width=10,height=8)
VizDimLoadings(object = pbmc, dims = 1:4, reduction = "pca",nfeatures = 20)
dev.off()

#主成分分析图形
pdf(file="05.PCA.pdf",width=6.5,height=6)
DimPlot(object = pbmc, reduction = "pca")
dev.off()

#主成分分析热图
pdf(file="05.pcaHeatmap.pdf",width=10,height=8)
DimHeatmap(object = pbmc, dims = 1:4, cells = 500, balanced = TRUE,nfeatures = 30,ncol=2)#1:4是热图分成几个,ncol是分为几列。
dev.off()

#每个PC的p值分布和均匀分布
pbmc <- JackStraw(object = pbmc, num.replicate = 100)
pbmc <- ScoreJackStraw(object = pbmc, dims = 1:20)
pdf(file="05.pcaJackStraw.pdf",width=8,height=6)
JackStrawPlot(object = pbmc, dims = 1:20)
dev.off()


因为这次的结果很多取决于之前的数据,所以必须要把上一届的内容也要用到,我已放进代码块中,如果之前内容已经取得,不想重复获取,只需将之前代码中的PDF开头的代码行到dev.off()代码行全部删掉,就不会将上一张的图形再绘制出来。
单细胞测序流程(四)主成分分析——PCA到这里就结束了
下一章会讲解单细胞的t-sne聚类分析和寻找marker基因
我所做的所有分析与教程的代码都会在我的个人公众号中,请打开微信搜索“生信学徒”进行关注,欢迎生信的研究人员和同学前来讨论分析。
ps:公众号刚刚建立比较简陋,但是该有的内容都不会少。

### 使用R绘制单细胞转录组PCA主成分分析的热图 为了使用R绘制单细胞转录组数据的PCA主成分分析热图,可以采用Seurat包中的`DimHeatmap`函数。此方法适用于展示特定维度下的基因表达模式。 对于具体操作,在加载并处理好所需的数据集之后,比如名为`pbmc`的对象,通过指定参数来调用该绘图功能: ```r library(Seurat) # 假设已经有一个经过预处理的Seurat对象 pbmc DimHeatmap(pbmc, dims = 1:6, cells = 500, balanced = TRUE)[^1] ``` 这段代码会生成一个基于前六个主成分(PC1至PC6)以及随机选取的五百个细胞所构成的热图,其中`balanced=TRUE`选项确保了正负载荷之间的平衡显示。 ### 使用Python绘制单细胞转录组PCA主成分分析的热图 当偏好于Python环境时,则可借助Scanpy库完成相似的任务。下面是一个简单的例子说明如何实现这一点: 首先安装必要的软件包: ```bash pip install scanpy anndata pandas matplotlib seaborn scikit-learn ``` 接着编写如下脚本执行数据分析与可视化工作流的一部分: ```python import numpy as np import pandas as pd import scanpy.api as sc from sklearn.decomposition import PCA import seaborn as sns import matplotlib.pyplot as plt from matplotlib.colors import ListedColormap adata = ... # 加载你的AnnData格式单细胞RNA测序数据到变量 adata 中 sc.pp.normalize_per_cell(adata) sc.pp.log1p(adata) sc.pp.scale(adata) pca_result = PCA(n_components=6).fit_transform(adata.X) df_pca = pd.DataFrame(pca_result[:, :6], index=adata.obs_names, columns=['PC{}'.format(i + 1) for i in range(6)]) top_n_cells = df_pca.sample(n=500, random_state=42) plt.figure(figsize=(10, 7)) sns.heatmap(top_n_cells.T.corr(), cmap=ListedColormap(['#14a312', '#616161', '#a8208d']), center=0, annot=True, fmt='.2f') plt.title('Top 500 Cells Correlation Heatmap on First Six PCs') plt.show() ``` 上述代码片段展示了怎样利用Python及其生态系统的工具链来进行单细胞转录组学研究中的PCA降维,并进一步制作出具有代表性的热图。这里特别指定了三种自定义的颜色方案用于区分不同的相关程度区间[^3]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值