gpt4 book ai didi

r - 将个体基因组间隔连接到种群区域

转载 作者:行者123 更新时间:2023-12-01 12:31:40 25 4
gpt4 key购买 nike

我想将各个基因组间隔连接到公共(public)区域。

我的输入:

dfin <- "chr start end sample type
1 10 20 NE1 loss
1 5 15 NE2 gain
1 25 30 NE1 gain
2 40 50 NE1 loss
2 40 60 NE2 loss
3 20 30 NE1 gain"
dfin <- read.table(text=dfin, header=T)

我的预期输出:

dfout <- "chr start end samples type
1 5 20 NE1-NE2 both
1 25 30 NE1 gain
2 40 60 NE1-NE2 loss
3 20 30 NE1 gain"
dfout <- read.table(text=dfout, header=T)

dfin 中的区间永远不会在同一动物身上重叠,只是在动物之间重叠(分别为 samplesamples 列)。 type 列在 dfin 中有两个因子(lossgain),预计在 中有三个因子code>dfout(lossgainboth,当 dfout 中的连接区域发生时是基于lossgain)。

有什么办法解决这个问题吗?

*为@David Arenburg 更新

最佳答案

这里尝试使用 data.table::foverlaps 对间隔进行分组,然后计算所有其余部分

library(data.table)
setkey(setDT(dfin), chr, start, end)
res <- foverlaps(dfin, dfin, which = TRUE)[, toString(xid), by = yid
][, indx := .GRP, by = V1]$indx
dfin[, .(
chr = chr[1L],
start = min(start),
end = max(end),
samples = paste(unique(sample), collapse = "-"),
type = if(uniqueN(type) > 1L) "both" else as.character(type[1L])
),
by = res]

# res chr start end samples type
# 1: 1 1 5 20 NE2-NE1 both
# 2: 2 1 25 30 NE1 gain
# 3: 3 2 40 60 NE1-NE2 loss
# 4: 4 3 20 30 NE1 gain

关于r - 将个体基因组间隔连接到种群区域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33738538/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com