count转化为TPM

library(biomaRt)
#查看基因组参数
mart = useMart('ensembl')
listDatasets(mart)

#你需要哪个基因组,就复制它在dataset列里的词,放在下面这行的`dataset = `参数里
#此处以人类为例,植物参考注一
bmart <- biomaRt::useMart(biomart = "ENSEMBL_MART_ENSEMBL", 
                          dataset = "hsapiens_gene_ensembl",
                          host = "www.ensembl.org")

# 从输入数据里提取基因名
feature_ids <- rownames(expMatrix)##就是你需要ENSEMBL的例如ENSG00000000003


attributes = c(
  "ensembl_gene_id",
  #"hgnc_symbol",
  "chromosome_name",
  "start_position",
  "end_position"
)
filters = "ensembl_gene_id"

feature_info <- biomaRt::getBM(attributes = attributes, 
                               filters = filters, 
                               values = feature_ids, mart = bmart)
mm <- match(feature_ids, feature_info[[filters]])
feature_info_full <- feature_info[mm, ]
rownames(feature_info_full) <- feature_ids

# 计算基因的有效长度
eff_length <- abs(feature_info_full$end_position - feature_info_full$start_position)
feature_info_full <- cbind(feature_info_full,eff_length)

eff_length2 <- feature_info_full[,c(1,5)]

x <- expMatrix / eff_length2$eff_length

tpm = t( t(x) / colSums(x) ) * 1e6 

  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
FP (Fragments Per Kilobase of transcript per Million mapped reads) 和 TPM (Transcripts Per Million) 都是常见的基因表达量计算方法。FPKM 是一种相对表达量的度量,而 TPM 是一种归一化表达量的度量。 要将 FPKM 转换TPM,需要进行以下步骤: 1. 计算每个基因的长度(单位为 kb)。 2. 计算每个基因的表达量(TPM)。 TPM 的计算公式为: TPM = (FPKM * 10^6) / (total mapped reads * gene length in kb) 其中,total mapped reads 是所有样本的总 mapped reads 数量,gene length in kb 是基因的长度(即步骤 1 中计算出的)。 3. 对于每个样本,将所有基因TPM 相加,得到该样本的总 TPM。 4. 将每个样本的总 TPM 进行归一化,即将每个样本的总 TPM 除以 1,000,000。 下面是一个 Python 实现的示例代码: ```python import pandas as pd # 读取 FPKM 表达矩阵 df = pd.read_csv('fpkm_matrix.csv', index_col=0) # 计算基因长度 gene_length = pd.read_csv('gene_length.csv', index_col=0) # 计算每个基因的表达量(TPM) total_mapped_reads = df.sum() tpm = df.mul(10**6).div(total_mapped_reads).div(gene_length['length'], axis=0) # 计算每个样本的总 TPM total_tpm = tpm.sum(axis=0) # 归一化 TPM tpm_norm = tpm.div(total_tpm, axis=1).mul(10**6) # 输出 TPM 表达矩阵 tpm_norm.to_csv('tpm_matrix.csv') ``` 其中,`fpkm_matrix.csv` 是 FPKM 表达矩阵,`gene_length.csv` 是基因长度信息表。输出的 `tpm_matrix.csv` 就是 TPM 表达矩阵。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值