繁体   English   中英

根据重叠的基因组范围合并数据框

[英]Merge dataframes based on overlapping genomic ranges

我有两个文件:

安诺

  chromosome position functionGVS
1      chr22 16050036  intergenic
2      chr22 16050039  intergenic
3      chr22 16050094  intergenic
4      chr22 16050097  intergenic
5      chr22 16050109  intergenic
6      chr22 16050115  intergenic

胡韦克

    chr    start      end function
1 chr22 16050000 16051244  R
2 chr22 16051244 16051521  T
3 chr22 16051521 16060433  R
4 chr22 16060433 16060582  T
5 chr22 16060582 16080564  R
6 chr22 16080564 16082420  T

我试图找到重叠的区域,使anno $位置应落在huvec $ start和huvec $ end的范围内。 这是我的代码:

gr.huvec = with(huvec, GRanges(V1, IRanges(start=V2,end=V3)))

gr.anno <- GRanges(seqnames=anno$chromosome, ranges=IRanges(start=anno$position, width=1))

hits = findOverlaps(gr.huvec,gr.anno)

我的问题是,现在,在获得查询命中和主题命中之后,如何基于重叠区域将huvec $ function分配给anno。 所以在我的情况下,anno $ position中的每个位置都与huvec的第一个开始和结束值重叠,因此我想将相关的huvec $ function即“ R”分配给anno中的新列。 有什么建议么?

您关于anno样本数据全部在第一个间隔中,但是我认为这应该是技巧:

anno$function <- huvec$function[cut(anno$position, huvec$start, labels=FALSE)]

一个问题是,它将在最后一个间隔返回NA ,因此您可以将huvec$start替换huvec$start unique(huvec$start, huvec$end)

我想出了另一种方法,认为它也可能对其他人有所帮助:

anno[subjectHits(hits),4]<-huvec[queryHits(hits),4]

我检查了解决方案,结果正确。 但说实话,我不确定这是如何工作的,即如何找到相应的匹配?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM