您的位置:首页 > 游戏 > 游戏 > 施工企业_今日国内新闻大事件_百度信息流_电商广告网络推广

施工企业_今日国内新闻大事件_百度信息流_电商广告网络推广

2025/4/25 2:21:20 来源:https://blog.csdn.net/kanghua_du/article/details/147333962  浏览:    关键词:施工企业_今日国内新闻大事件_百度信息流_电商广告网络推广
施工企业_今日国内新闻大事件_百度信息流_电商广告网络推广

前言

关于bulk-seq分析,你是使用fpkm?还是tpm?

这个问题,可能对于初学者来说,很是纠结。因为,你在文章中有使用fpkm,也有使用tpm?也有使用count?我们在“一文了解Count、FPKM、RPKM、TPM”推文中也详细介绍了各参数的表示的意义。以及在关于Count,FPKM,TPM,RPKM等表达量的计算及转换中也介绍了它们之间的转换。

但是,**学习的一直是在不断向前,以及不断纠错的过程。**我们每个人都在经历此过程。

bulk-seq分析中,是什么标准进行后续的分析呢?

对于这个问题,我们“社群”也有在讨论过?也有很多同学在咨询这个问题。有同学认为FPKM并不是很准确,推荐使用tpm值。但是也有同学一直在使用FPKM值,或是其它值进行筛选,如count(最原始的表达量),RPM等。

对于,最生信的同学来说,无论是countFPKMTPM等值,都只是一个数字,仅仅只是一个数字,“不能表示任何意义”,我们只需要整体的趋势一样即。因此,无论是使用fpkm,或是tpm,都可以满足我们的需求。

但是,使用不同的表达量,最大的区别在于筛选的基因数量,这个是无法避免的。

FPKM

FPKM: FPKM的全称为Fragments Per Kilobase Million,Fragments Per Kilobase of exon model per Million mapped fragments(每千个碱基的转录每百万映射读取的fragments)。通俗讲,把比对到的某个基因的Fragment数目,除以基因的长度,其比值再除以所有基因的总长度。注意,这里的基因长度是指基因外显子的总长度。

RPKM

**RPKM: **Reads Per Kilobase of exon model per Million mapped reads (每千个碱基的转录每百万映射读取的reads);

RPM

RPM: RPM/CPM: Reads/Counts of exon model per Million mapped reads (每百万映射读取的reads)

公式:RPM = ExonMappedReads * 10^6 /TotalMappedReads

TPM

**TPM:**TPM的全称为Transcripts per million,Transcripts Per Kilobase of exon model per Million mapped reads (每千个碱基的转录每百万映射读取的Transcripts)


转换或计算

我们都知道,无论是fpkm,tpm,rpm值都是基于每个基因的count值与Gene Length进行计算。

计算的方法也很多,但是或出现:使用不同的计算方式,得到的结果并不一致。

这个问题,大家也会经常遇到,包括我自己。到这一步,就会很纠结,也会质疑自己,然后会“卡”很久。

木知,大家知否是这样的?

Code

我们也基于前期分享,在分享使用Count转换FPKM或是TPM值的代码。

我们的代码仅提供给大家参考。

Count To FPKM

  1. R语言Code
##'@计算FPKM
data <- read.table("./01.cucumber.mRNA.gene.count.txt",header = T, sep = "\t", row.names = 1)
head(data)
gene_length_kb <- data$Length /1000
expression_matrix <- data[, 2:ncol(data)]
head(expression_matrix)
# # 计算每列总Counts
total_counts <- colSums(expression_matrix)# 计算FPKM值
fpkm_matrix <- sweep(expression_matrix, 2, total_counts / 1e6, "/") # 除以总Reads
fpkm_matrix <- sweep(fpkm_matrix, 1, gene_length_kb, "/") # 除以基因长度
fpkm_matrix[1:5,1:10]

输入数据

  1. perl脚本
use strict;open A,"$ARGV[0]";<A>;
my @colsum;
while(<A>){chomp;my @line=split;shift @line;shift @line;for(0..$#line){$colsum[$_]+=$line[$_];}
}open B,"$ARGV[0]";
my $head=<B>;
chomp($head);
print "$head\n";
while(<B>){chomp;my @line=split;my $gene=shift @line;my $length=shift @line;print "$gene\t";for(my $i=0;$i<@line;$i++){my $fpkm=$line[$i]*1000000*1000/($colsum[$i]*$length);print "$fpkm\t";}print "\n";
}

运行

perl CountToFPKM.pl Input_count.txt > OutPut_FPKM.txt 

Count To TPM

##'@使用count计算tpm
count_df <- read.table("./01.cucumber.mRNA.gene.count.txt",header = T, sep = "\t", row.names = 1)
head(count_df)# TPM函数
calculate_tpm <- function(counts, lengths) {rpk <- counts / (lengths / 1000)  # RPK: count per kilobasescaling_factors <- colSums(rpk) / 1e6  # per million scaling factortpm <- sweep(rpk, 2, scaling_factors, "/")  # divide each column by its scaling factorreturn(tpm)
}# 准备数据
gene_lengths <- count_df$Length
count_matrix <- as.matrix(count_df[, -1])  # 排除长度列,仅保留 count 数据# 计算 TPM
tpm_matrix <- calculate_tpm(count_matrix, gene_lengths)# 查看结果
tpm_matrix[1:5,1:10]

关于Count值,直接使用featureCounts等软件即可获得。


OK,以上仅是自己的学习笔记,若是有不对的地方,请大家指出。

若是你有其他的方法,我们欢迎你的留言区进行留言讨论!


若我们的教程对你有所帮助,请点赞+收藏+转发,大家的支持是我们更新的动力!!


2024已离你我而去,2025加油!!

2024年推文汇总 (点击后访问)

2023年推文汇总 (点击后访问)

2022年推文汇总 (点击后访问)

往期部分文章

1. 最全WGCNA教程(替换数据即可出全部结果与图形)

  • WGCNA分析代码六

推荐大家购买最新的教程,若是已经购买以前WGNCA教程的同学,可以在对应教程留言,即可获得最新的教程。(注:此教程也仅基于自己理解,不仅局限于此,难免有不恰当地方,请结合自己需求,进行改动。)


2. 精美图形绘制教程

  • 精美图形绘制教程
  • 《R语言绘图专栏–50+图形绘制教程》

3. 转录组分析教程

  • 转录组上游分析教程[零基础]

  • 一个转录组上游分析流程 | Hisat2-Stringtie

  • Samll RNA上游分析

4. 转录组下游分析

  • 批量做差异分析及图形绘制 | 基于DESeq2差异分析

  • GO和KEGG富集分析

  • 单基因GSEA富集分析

  • 全基因集GSEA富集分析

小杜的生信筆記 ,主要发表或收录生物信息学教程,以及基于R分析和可视化(包括数据分析,图形绘制等);分享感兴趣的文献和学习资料!!

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com