【问题标题】:Finding sub intervals from interval data frames从区间数据帧中查找子区间
【发布时间】:2017-08-02 05:57:15
【问题描述】:

我有两个data.frames,其坐标为线性区间,对应于 id。每个 id 有几个线性区间。其中一个data.frames 被称为exon.df:

exon.df <- data.frame(id=c(rep("id1",4),rep("id2",3),rep("id3",5)),
                      start=c(10,20,30,40,100,200,300,1000,2000,3000,4000,5000),
                      end=c(15,25,35,45,150,250,350,1500,2500,3500,4500,5500))

还有一个cds.df:

cds.df <- data.frame(id=c(rep("id1",3),rep("id2",3),rep("id3",3)),
                      start=c(20,30,40,125,200,300,2250,3000,4000),
                      end=c(25,35,45,150,250,325,2500,3500,4250))

它们都具有相同的 id,但 cds.df 的区间包含在 exon.df 的区间内。 exons.df 中的间隔是基因的外显子(基因组的一部分被复制并缝合在一起以形成基因的转录本),cds.df 中的间隔是这些外显子中将被翻译成蛋白质的部分,因为外显子基因转录本还包含不会被翻译的部分(未翻译区域 - utr)。这些 utr 只能位于基因转录本的开头和结尾。开头的utr称为5'utr,结尾的utr称为3'utr。 utr 可能根本不存在,也可能跨越基因两端的单个或多个外显子的一部分。

这意味着一个id的5'utr从它在exon.df的第一个区间的第一个位置开始到它在cds.df的第一个区间之前的一个位置,并包括exon.df之间的所有外显子如果存在的话。类似地,id 的 3'utr 从cds.df 的最后一个间隔之后的一个位置开始到exon.df 的最后一个间隔的最后一个位置,并包括exons.df 中的所有外显子(如果存在)。 如果 id 在cds.df 中的第一个间隔的第一个位置是它在exon.df 中的第一个间隔的第一个位置,并且类似地如果它在@ 中的最后一个间隔的最后一个位置,则 id 也可能没有一个或两个 utr 987654339@ 是它在exon.df 中最后一个区间的最后一个位置。

我正在寻找一种快速的方法来检索这些 5'utr 和 3'utr 间隔给 exon.df 和 cds.df。

这个例子的结果应该是这样的:

utr5.df <- data.frame(id=c("id1","id2","id3","id3"),
                     start=c(10,100,1000,2000),
                     end=c(15,124,1500,2249))

utr3.df <- data.frame(id=c("id2","id3","id3"),
                     start=c(326,4251,5000),
                     end=c(350,4500,5500))

【问题讨论】:

    标签: r dataframe intervals intersection


    【解决方案1】:

    你知道Bioconductor吗?它是 R 的一个附加组件,特别适用于生物科学。它有一个名为GenomicRanges 的包,您可以使用它创建一个包含所有外显子的GRanges 对象,以及另一个包含所有CDS 的对象。

    然后您可以对这两个对象进行 设置差异 以获取 UTR。检查“setops-methods”部分here。你想要'setdiff'函数。

    所以:将你的 data.frames 转换为 GRange 对象,然后发出类似utrs &lt;- setdiff(exons, cds)

    【讨论】:

    • 谢谢。 setdiff 是获取 UTR 的正确函数
    • 哦,对了,你需要 setdiff,抱歉。我说'相交'。我更新了我的答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-11-24
    • 2020-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-05
    相关资源
    最近更新 更多