缺少部分基因长度 counts 还可以转换为 tpm 吗?
引言
在转录组学的机器学习任务中,counts 值(即原始读取数)通常不适合作为输入数据,而每百万缩放因子长度(TPM, Transcripts Per Million)更适合作为特征。
而我们在实际使用的时候,很多 geo 的数据并不会提供 tpm 数据或原始 fastq 数据,因此,弄清楚 geo 数据集的 counts 转换为 tpm 的方法是有必要的。
事实上,互联网上有很多人提供了 counts 转换为 tpm 的教程[1-3], 一般的流程是:
- 通过 GTF 文件或基因长度文件获取外显子长度文件
- 构建带有对应基因长度的表达矩阵
- 计算 TPM
- 目标基因的外显子长度之和除以 1000
- 基于 counts 计算每千碱基 reads 长度标准化 (RPK, Reads Per Kilobase)
- 基于 RPK 计算 TPM
但是按照这个流程会出现一个问题,那就是计算 RPK 的过程中需要使用 Ensembl ID, 而 TPM 的过程中需要计算一次单样本所有表达量之和,所以如果按照这个流程就会造成两种可能:
- 无法计算 (无法 ID 转换或无法获得基因长度)
- 数据失真 (只计算部分基因之和或获得了错误的基因长度)
一开始我打算借助 CPM(Counts Per Million) 进行计算,但是发现 tpm 是有本质区别的还是算了。因为 counts 本质是 fragments 或 reads, 所以没办法在不借助基因长度的情况下转换。
过程
从 counts 直接计算 TPM(Transcripts Per Million)需要考虑基因的表达量和基因长度。具体公式如下:
公式步骤
计算 RPK(Reads Per Kilobase):
对于每个基因,先计算每个基因的 RPK 值。RPK 是指每千碱基的 reads 数:
[
\text{RPK}{i} = \frac{\text{counts}{i}}{\text{efflen}_{i} / 1000}
]
其中:- ( \text{counts}_{i} ):基因 ( i ) 的原始 counts 值
- ( \text{efflen}_{i} ):基因 ( i ) 的有效长度,以碱基数为单位
- ( 1000 ) 将基因长度转化为千碱基单位
计算每个样本中所有基因的 RPK 总和:
对于每个样本,计算所有基因的 RPK 总和:
[
\text{sum_RPK} = \sum_{i} \text{RPK}_{i}
]计算每个基因的 TPM:
最后,将每个基因的 RPK 除以总 RPK 并乘以 1,000,000,标准化得到 TPM:
[
\text{TPM}{i} = \frac{\text{RPK}{i}}{\text{sum_RPK}} \times 10^6
]
总结的公式
[
\text{TPM}{i} = \frac{\left( \frac{\text{counts}{i}}{\text{efflen}{i} / 1000} \right)}{\sum{j} \frac{\text{counts}{j}}{\text{efflen}{j} / 1000}} \times 10^6
]
R 代码示例
1 | # counts_matrix 是你的表达矩阵,行是基因,列是样本 |
结论
篇外
转录组学的机器学习任务中选择 tpm 值原因
在转录组学的机器学习任务中,counts 值(即原始读取数)通常不适合作为输入数据,而 TPM(Transcripts Per Million) 更适合作为特征,主要有以下几个原因:
测序深度和基因长度的影响:
- Counts 值直接反映了测序获得的某个基因的原始读数数量,但这个数量会受到测序深度(即测序的总读取数)和基因长度的影响。即使是同一基因在不同的样本中表达水平相同,测序深度不同的样本中的 counts 值可能会有显著差异。
- TPM 是一种标准化的表达量,考虑了基因长度和测序深度的差异,消除了这些因素对表达量的影响,使得不同样本之间的基因表达量可以更好地进行比较。
数据的可比性:
- 由于 counts 值在不同的样本中没有标准化,直接使用它们会导致样本之间的数据不具有可比性,尤其是当测序深度不同的情况下。
- TPM 标准化了每个样本的基因表达量,将基因表达水平表示为每百万个转录本中某个基因的转录本数量,从而在不同样本之间具有可比性。
机器学习模型的输入要求:
- 机器学习算法通常假设输入数据在不同特征之间是可比的、归一化的,以避免某些特征因为数值范围过大或过小对模型产生不平衡的影响。
- TPM 通过标准化 counts 值,缩小了数值范围,并使数据分布更加符合模型的要求,从而提高模型的稳定性和性能。
避免稀疏性和噪声问题:
- 原始的 counts 值在很多基因上会非常稀疏,尤其是低表达基因的 counts 值可能为零或非常低,这些零值或极小的值会在机器学习模型中引入不必要的噪声。
- TPM 通过标准化表达数据,可以减小这些稀疏性问题,使得表达值更平滑、更连续,有助于模型更好地提取特征。
因此,TPM 更适合作为转录组学机器学习的输入数据,因为它通过标准化表达量,提升了数据的可比性、模型的性能以及分析的准确性。