前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >一行命令将count转为CPM/TPM/FPKM

一行命令将count转为CPM/TPM/FPKM

作者头像
生信技能树
发布2023-02-27 21:42:22
3K0
发布2023-02-27 21:42:22
举报
文章被收录于专栏:生信技能树生信技能树
实现代码

一行命令将count转为CPM/TPM/FPKM 的软件为rnanorm,是一个基于Python开发的命令行工具。安装可以通过命令安装:

代码语言:javascript
复制
pip install rnanorm

我以featureCounts的输出文件进行举例,用featureCounts对进行基因count计数

代码语言:javascript
复制
featureCounts -T 10 -t exon -g gene_id -Q 10 --primary -p \
    -a gencode.vM25.annotation.gtf -F GTF -o sample.count \
    mapping/*.fil.bam 

得到的gene count在sample.count文件里

代码语言:javascript
复制
# tail -n +2 sample.count 是排除第一行
$ tail -n +2 sample.count | sed '1s/Geneid/FEATURE_ID/g' | cut -f 1,7- > sample.count.tsv
$ head sample.count.tsv
FEATURE_ID      mapping/RNA.fb.e11.5.rep1.fil.bam       mapping/RNA.fb.e11.5.rep2.fil.bam       mapping/RNA.fb.e16.5.rep1.fil.bam       mapping/RNA.fb.e16.5.rep2.fil.bam
ENSMUSG00000102693.1    1       0       0       0
ENSMUSG00000064842.1    1       0       0       0
ENSMUSG00000051951.5    6       11      16      16
ENSMUSG00000102851.1    2       0       0       0
ENSMUSG00000103377.1    1       2       3       0
ENSMUSG00000104017.1    1       1       0       0
ENSMUSG00000103025.1    0       3       2       2
ENSMUSG00000089699.1    0       0       0       0
ENSMUSG00000103201.1    0       1       2       1

用cut将基因ID一列,和count数值的列提取出来。用sed将Geneid换成FEATURE_ID,因为当前版本rnanorm( 1.5.1)要求第一列的基因ID列名必须为FEATURE_ID

然后就是一行代码将count转为CPM/TPM/FPKM。

代码语言:javascript
复制
rnanorm sample.count.tsv --annotation gencode.vM25.annotation.gtf \
    --cpm-output sample.count.cpm.tsv
    --tpm-output sample.count.tpm.tsv \
    --fpkm-output sample.count.fpkm.tsv \
  • 位置参数为基因count文件
  • --annotation 基因组注释GTF文件
  • --cpm-output CPM输出文件
  • --tpm-output TPM输出文件
  • --fpkm-output FPKM输出文件

后面的前面

RNA-Seq测序得到的fastq数据比对至参考基因组,得到SAM/BAM文件,然后进行read count计数,得到基因表达信息。然而由于不同基因长度不同,基因长,自然容易获得更read count;不同批次数据测序量不同,数据测序量多,自然read count就会高了。所以不同基因表达量不能直接进行比较,需要进行标准化。

要对基因长度进行矫正,就除以基因长度:

  • 1000bp长度基因A count=1000, 矫正后1000/1000=1
  • 5000bp长度的基因B count=5000, 矫正后5000/5000=1

要对测序深度进行矫正,就除以总测序量:

  • 总read count=100000, 基因A read count 1000, 矫正后1000/100000
  • 总read count=200000, 基因B read count 2000, 矫正后2000/200000

CPM

CPM (count per million),对测序深度做了一个矫正。

CPM = (gene_read_count / total_count ) * 10^6

至于为啥乘一个million(10^6),我猜大概是因为gene_read_count / total_count数值太小了,不方便人查看,又英文中计数单位有个,十,百,千,百万,十亿。十亿(billion)较大了, 千(thousand)又太小了, million这个数量级刚好差不多,就乘这么个数值,在百万层级看基因表达量。

RPKM

RPKM(reads per kilobase per million),对测序深度和长度做了一个矫正。用于单端测序数据。

RPKM = (gene_read_count / (total_count*gene_length) * 10^6 * 10^3

基因count除以总read count,除以gene长度。然后避免数值太小,根据测序深度大小乘10^6, 基因长度就乘以一个10^3。

FPKM

RPKM(fragments per kilobase per million) 用于双端数据,一个fragment是一对reads。故FPKM = RPKM / 2

TPM

TPM(transcript per million), 基因FPKM 占总的FPKM的比例, TPM衡量基因在样本中的相对表达量,对同一个基因不同样本,其FPKM可能相同,但相对所有基因而言,其在不同样本中可能所占比例不同。

TPM = gene_fpkm / total_fpkm * 10^6

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2023-01-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 生信技能树 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 后面的前面
  • CPM
  • RPKM
  • FPKM
  • TPM
相关产品与服务
命令行工具
腾讯云命令行工具 TCCLI 是管理腾讯云资源的统一工具。使用腾讯云命令行工具,您可以快速调用腾讯云 API 来管理您的腾讯云资源。此外,您还可以基于腾讯云的命令行工具来做自动化和脚本处理,以更多样的方式进行组合和重用。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档