R 提取与每个基因符号匹配的读取计数
我已经通过鲑鱼对基因表达进行了量化,这给了我Ensembl转录本,我将Ensembl转录本转换为基因符号,但对于某些基因,我有多个转录本;如何将读取计数折叠到基因,我尝试了R 提取与每个基因符号匹配的读取计数,r,loops,rna-seq,R,Loops,Rna Seq,我已经通过鲑鱼对基因表达进行了量化,这给了我Ensembl转录本,我将Ensembl转录本转换为基因符号,但对于某些基因,我有多个转录本;如何将读取计数折叠到基因,我尝试了tximportpackage,但我发现太难了,因为我的注释是不同的 Name NumReads ENST00000355520.5 407.186 ENST00000566753.1 268.879 ENST00000481617.2 242.25 ENST00000538183.2
tximport
package,但我发现太难了,因为我的注释是不同的
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
编辑
这是读取计数的输出
这就是我将鲑鱼输出中的转录本ID转换为基因名的时候
您可以使用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
只需按此处的转录本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),]
您没有提到如何处理NAs。在这个场景中,所有读取的基因名都是NA。这就是NA读取次数最多的原因。您能添加您期望的输出和已经失败的代码吗?一种可能的策略是按基因符号对基因表达进行分组,然后对同一基因符号的不同Ensembl转录本ID的平均表达值。如果您要提供具有代表性的样本数据(您当前的样本数据不包含来自具有相同基因符号的不同Ensembl ID的任何表达式值),其他人将更容易提供帮助。请不要使用链接(顺便说一句:链接不起作用)。而是在请求/问题中创建基础数据和预期输出。只要几行就可以了。让愿意帮助你的人对你的问题有一个确切的了解。谢谢你的帮助
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),]