gpt4 book ai didi

r - R中常见的基因组区间

转载 作者:行者123 更新时间:2023-12-01 08:29:35 24 4
gpt4 key购买 nike

我想推断不同样本之间共享的基因组间隔。

我的意见:

sample    chr start end
NE001 1 100 200
NE001 2 100 200
NE002 1 50 150
NE002 2 50 150
NE003 2 250 300

我的预期输出:

chr start end  freq
1 100 150 2
2 100 150 2

其中“频率”是有多少样本有助于推断共享区域。在上面的例子中,freq = 2(NE001 和 NE002)。

干杯!

最佳答案

如果您的数据在 data.frame 中(见下文),请使用 Bioconductor GenomicRanges包我创建了一个 Granges 实例,也保留了非范围列

library(GenomicRanges)
gr <- makeGRangesFromDataFrame(df, TRUE)

数据表示的离散范围由disjoin函数给出,不相交范围('query')和你原来的('subject')之间的重叠是

d <- disjoin(gr)
olaps <- findOverlaps(d, gr)

将与每个重叠主题关联的样本信息与对应的查询分开,并将其与不相交的GRanges关联为

mcols(d) <- splitAsList(gr$sample[subjectHits(olaps)], queryHits(olaps))

导致例如

> d[elementLengths(d$value) > 1]
GRanges with 2 ranges and 1 metadata column:
seqnames ranges strand | value
<Rle> <IRanges> <Rle> | <CharacterList>
[1] 1 [100, 150] * | NE001,NE002
[2] 2 [100, 150] * | NE001,NE002
---
seqlengths:
1 2
NA NA

我是这样输入您的数据的:

txt <- "sample    chr start end
NE001 1 100 200
NE001 2 100 200
NE002 1 50 150
NE002 2 50 150
NE003 2 250 300"
df <- read.table(textConnection(txt), header=TRUE, stringsAsFactors=FALSE)

关于r - R中常见的基因组区间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23084322/

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