bulk-seq分析,表達量你使用fpkm?還是tpm?

前言

關(guān)于bulk-seq分析,你是使用fpkm?還是tpm?

這個問題,可能對于初學者來說,很是糾結(jié)。因為,你在文章中有使用fpkm,也有使用tpm?也有使用count?我們在“一文了解Count、FPKM、RPKM、TPM”推文中也詳細介紹了各參數(shù)的表示的意義。以及在關(guān)于Count,F(xiàn)PKM,TPM,RPKM等表達量的計算及轉(zhuǎn)換中也介紹了它們之間的轉(zhuǎn)換。

但是,學習的一直是在不斷向前,以及不斷糾錯的過程。我們每個人都在經(jīng)歷此過程。

bulk-seq分析中,是什么標準進行后續(xù)的分析呢?

對于這個問題,我們“社群”也有在討論過?也有很多同學在咨詢這個問題。有同學認為FPKM并不是很準確,推薦使用tpm值。但是也有同學一直在使用FPKM值,或是其它值進行篩選,如count(最原始的表達量),RPM等。

對于,最生信的同學來說,無論是count,FPKM、TPM等值,都只是一個數(shù)字,僅僅只是一個數(shù)字,“不能表示任何意義”,我們只需要整體的趨勢一樣即。因此,無論是使用fpkm,或是tpm,都可以滿足我們的需求。

但是,使用不同的表達量,最大的區(qū)別在于篩選的基因數(shù)量,這個是無法避免的。

FPKM

FPKM: FPKM的全稱為Fragments Per Kilobase Million,F(xiàn)ragments Per Kilobase of exon model per Million mapped fragments(每千個堿基的轉(zhuǎn)錄每百萬映射讀取的fragments)。通俗講,把比對到的某個基因的Fragment數(shù)目,除以基因的長度,其比值再除以所有基因的總長度。注意,這里的基因長度是指基因外顯子的總長度。

RPKM

**RPKM: **Reads Per Kilobase of exon model per Million mapped reads (每千個堿基的轉(zhuǎn)錄每百萬映射讀取的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 (每千個堿基的轉(zhuǎn)錄每百萬映射讀取的Transcripts)


轉(zhuǎn)換或計算

我們都知道,無論是fpkm,tpm,rpm值都是基于每個基因的count值與Gene Length進行計算。

計算的方法也很多,但是或出現(xiàn):使用不同的計算方式,得到的結(jié)果并不一致。

這個問題,大家也會經(jīng)常遇到,包括我自己。到這一步,就會很糾結(jié),也會質(zhì)疑自己,然后會“卡”很久。

木知,大家知否是這樣的?

Code

我們也基于前期分享,在分享使用Count轉(zhuǎn)換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]

輸入數(shù)據(jù)

  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函數(shù)
calculate_tpm <- function(counts, lengths) {
  rpk <- counts / (lengths / 1000)  # RPK: count per kilobase
  scaling_factors <- colSums(rpk) / 1e6  # per million scaling factor
  tpm <- sweep(rpk, 2, scaling_factors, "/")  # divide each column by its scaling factor
  return(tpm)
}

# 準備數(shù)據(jù)
gene_lengths <- count_df$Length
count_matrix <- as.matrix(count_df[, -1])  # 排除長度列,僅保留 count 數(shù)據(jù)

# 計算 TPM
tpm_matrix <- calculate_tpm(count_matrix, gene_lengths)


# 查看結(jié)果
tpm_matrix[1:5,1:10]

關(guān)于Count值,直接使用featureCounts等軟件即可獲得。


OK,以上僅是自己的學習筆記,若是有不對的地方,請大家指出。

若是你有其他的方法,我們歡迎你的留言區(qū)進行留言討論!


若我們的教程對你有所幫助,請點贊+收藏+轉(zhuǎn)發(fā),大家的支持是我們更新的動力??!


2024已離你我而去,2025加油?。?/strong>

2024年推文匯總 (點擊后訪問)

2023年推文匯總 (點擊后訪問)

2022年推文匯總 (點擊后訪問)

往期部分文章

1. 最全WGCNA教程(替換數(shù)據(jù)即可出全部結(jié)果與圖形)

推薦大家購買最新的教程,若是已經(jīng)購買以前WGNCA教程的同學,可以在對應(yīng)教程留言,即可獲得最新的教程。(注:此教程也僅基于自己理解,不僅局限于此,難免有不恰當?shù)胤?,請結(jié)合自己需求,進行改動。)


2. 精美圖形繪制教程

3. 轉(zhuǎn)錄組分析教程

4. 轉(zhuǎn)錄組下游分析

小杜的生信筆記 ,主要發(fā)表或收錄生物信息學教程,以及基于R分析和可視化(包括數(shù)據(jù)分析,圖形繪制等);分享感興趣的文獻和學習資料!!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容