我已经用Salmon量化了基因表达,这使我获得了Ensembl转录本,我将Ensembl转录本转化为基因符号,但对于某些基因,我却拥有多个转录本。我尝试使用tximport
程序包将读取的计数折叠成基因,但是由于注释不一样,我发现它太难了。
Name NumReads
ENST00000355520.5 407.186
ENST00000566753.1 268.879
ENST00000481617.2 242.25
ENST00000538183.2 226.576
ensembltranscript_id gene_name
ENST00000482226.2 FCGR2C
ENST00000508651.1 FCGR2C
ENST00000571914.1 TSPAN10
ENST00000571707.1 TSPAN10
ENST00000534817.1 OVCH2
ENST00000445557.1 OR52E1
ENST00000575319.1 CYP2D7
ENST00000576465.1 CYP2D7
编辑
这是鲑鱼读取计数的输出
https://www.dropbox.com/s/7bkril0v6sw7v9z/Salmon_output.txt?dl=0
这是我将鲑鱼输出中的笔录ID转换为基因名称的时候
https://www.dropbox.com/s/m1iybfbu2i4bb39/Converting_transcript_id_to_gene_id.txt?dl=0
答案 0 :(得分:1)
您可以使用软件包dplyr。
创建测试表:
names = c("ensembltranscript_id", "gene_name", "NumReads")
transcripts = c("ENST00000482226.2", "ENST00000508651.1", "ENST00000571914.1", "ENST00000571707.1", "ENST00000534817.1")
gene_names = c("FCGR2C", "FCGR2C", "TSPAN10", "TSPAN10", "OVCH2")
reads = c(205.56, 456.21, 123.3, 52.6, 268.45)
data = data.frame(transcripts, gene_names, reads)
names(data) = names
进行计算:
result = data %>%
group_by(gene_name) %>%
summarise(sum(NumReads)) %>%
mutate_if(is.numeric, format, 2)
打印结果:
# A tibble: 3 x 2
gene_name `sum(NumReads)`
<fct> <chr>
1 FCGR2C 661.77
2 OVCH2 268.45
3 TSPAN10 175.90
希望这会有所帮助。
编辑:
如《 OP》的评论所述,预期的输出将有所帮助。 抱歉,在这种情况下,我可能误解了“崩溃”。我的解释是将每个基因名称的读数相加。
编辑2:
如我的评论中所述,请尝试阻止提供链接。链接可能断开等。有关如何撰写好的帖子的完整说明,请参见:here。
但是,请根据您的真实数据执行以下操作:
加载数据:
salmon_reads = read.table(file = "/path/to/Salmon_output.txt", header = T, sep = "\t")
genes = read.table(file = "/path/to/Converting_transcript_id_to_gene_id.txt", header = T, sep = "\t")
仅通过transcript-id合并数据
merged_data = merge(x = salmon_reads, y = genes, by.x = colnames(salmon_reads)[1], by.y = colnames(genes)[1], all = T)
进行计算和减少读数的顺序:
result = merged_data %>%
group_by(external_gene_name) %>%
summarise(sum(NumReads)) %>%
mutate_if(is.numeric, format, 2)
result$`sum(NumReads)` = as.numeric(result$`sum(NumReads)`)
result = result[order(result$`sum(NumReads)`, decreasing = T),]
您没有提到如何处理NA。在这种情况下,对所有不适用的基因名的读数进行汇总。这就是为什么NA读取次数最多的原因。