rnaseq_对表达矩阵进行标准化

本文详细描述了作者在转录组分析过程中对表达矩阵进行标准化的过程,包括将count值转换为TPM(TranscriptsPerKilobaseMillion)以及使用DESeq2的VST(方差稳定变换)进行标准化。这些步骤对于整理和理解复杂的数据至关重要。

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

从2022年十月份到现在,做了那么久的转录组分析,从来没有记录一点东西,导致脑子里面的东西越来越乱,所以我把我所做的工作记录一下,供自己以及同行参考。

上游分析做的比较久远,先把最近做的下游分析写一下。

表达矩阵的标准化

由上游分析得到了表达矩阵。

在后续分析中,要先把count值进行标准化,我是转换成tpm和用Deseq2进行VST标准化

count转换成tpm

###### counts转tpm  ################
counts <- rs[,7:ncol(rs)]
rownames(counts) <- rs$transcript_id
geneid_efflen <- subset(len2,select = c("X.ID","transcript_length"))
colnames(geneid_efflen) <- c("geneid","efflen")
geneid_efflen_fc <- geneid_efflen #用于之后比较
dim(geneid_efflen)
efflen <- geneid_efflen[match(rownames(counts),
                              geneid_efflen$geneid),
                        "efflen"]
TPM (Transcripts Per Kilobase Million)  每千个碱基的转录每百万映射读取的Transcripts
counts2TPM <- function(count=count, efflength=efflen){
  RPK <- count/(efflength/1000)       #每千碱基reads (“per million” scaling factor) 长度标准化
  PMSC_rpk <- sum(RPK)/1e6        #RPK的每百万缩放因子 (“per million” scaling factor ) 深度标准化
  RPK/PMSC_rpk                    
}  
tpm <- as.data.frame(apply(counts,2,counts2TPM))
rs <- tpm
q <- rs
transcript_id <- rownames(q)
rs <- cbind(transcript_id,q)
rownames(rs) <- NULL

VST标准化

########### VST标准化 ############
#导入counts数据矩阵
count <- read.csv("C:\\Users\\DI\\Desktop\\PRJNA516151_lnc\\lncRNA_Gastrocnemius_transcript_matrix.csv",header=T,row.names=1)
## 过滤在所有重复样本中小于1的基因
count <- count[rowMeans(count)>1,]
##载入样本信息
data <- read.table("C:\\Users\\DI\\Desktop\\PRJNA516151_lnc\\sample_data.txt",header = T,row.names = 1)
#变为因子数据
data[,1] <- as.factor(data$Type)
all(rownames(data) %in% colnames(count))
all(rownames(data) == colnames(count))
dds <-  DESeqDataSetFromMatrix(countData = count,colData = data,design = ~ Type)
dim(dds)
#过滤
dds <- dds[rowSums(counts(dds)) > 1,]
nrow(dds) 
#方差稳定变换
vsd <- vst(object=dds,blind=T) 
head(assay(vsd),3)
rs <- assay(vsd)
rs <- as.data.frame(rs)
q <- rs
transcript_id <- rownames(q)
rs = as.data.frame(lapply(rs,as.numeric))
rs <- cbind(transcript_id,q)
rownames(rs) <- NULL

到这里,标准化就基本完成,我后续分析用的是VST标准化。

### RNA-seq 表达谱数据分析的方法、工具与流程 #### 使用的编程环境和软件包 为了有效地进行RNA-seq表达谱的数据分析,通常会依赖于多种生物信息学工具以及统计计算平台如Python和R。这些环境中包含了专门设计用来处理高通量测序数据的各种库函数。 对于初步的质量控制(QC),可以采用FastQC这样的独立应用程序来评估原始读取质量,并通过Trimmomatic去除低质量序列片段[^1]。 #### 数据预处理阶段 在完成样本间的一致性和可重复性的确认之后,下一步是对reads映射至参考基因组上。STAR或Hisat2是两个广泛使用的短读长比对器选项;它们能够高效地将成千上万条来自不同物种的mRNA序列定位到对应的染色体位置[^3]。 一旦完成了read count计数,则进入到特征水平上的标准化过程——这一步骤旨在消除技术变异的影响并使得跨样品间的比较成为可能。常用的策略包括CPM(Counts Per Million)转换法、TMM(trimmed mean of M-values)加权平均校正因子等。 #### 基因表达定量及差异表达检测 当获得了经过适当调整后的counts矩阵后,就可以利用edgeR或者DESeq2这类专门为识别显著变化而优化过的算法来进行两组或多组之间的对比测试了。上述两种方法都基于负二项分布模型构建假设检验框架,从而估计出哪些基因表现出上调/下调趋势[^2]。 #### 功能富集分析 最后,在获得了一系列潜在的目标候选列表以后,还需要进一步探究其生物学意义所在。此时便可以通过KEGG Pathway mapping或是Gene Ontology (GO) terms enrichment等方式揭示背后隐藏着怎样的调控机制。特别是hallmarks-based gene set enrichment analysis(GSEA), 它可以帮助理解特定条件下细胞内发生的分子事件模式。 ```r library(limma) fit <- lmFit(counts_matrix, design_matrix) ebayes_fit <- eBayes(fit) topTable(ebayes_fit, adjust="fdr", number=Inf) library(fgsea) res <- fgsea(pathways=pathways_list, stats=logFC_vector) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值