首页 > 解决方案 > 如何将值范围内的匹配分组并检查结果?

问题描述

我有一个基因数据集,我在其中对基因组中物理上靠近的基因变体进行分组。我对每条染色体与基因组中某些点有 500 +/- 距离的基因进行分组。

我为此编写了代码,但是,当我查看输出时,我新形成 group的列没有从数字 1 开始分组,编号最小的组是 5,我不知道为什么。

我的“点”数据集是变体需要在 500 +/- 范围内的位置,并且看起来像:

connected_spots     chrom          min          max      low       high
    1                1             1000         1200     500       1700
    2                1             20000        20100    19500     20600
    3                5             900          1000     400       1500

lowhigh是我希望收集变体的范围。它们是通过 +500 或 -500maxmin值创建的:

spots[, c("low", "high") := .(min - 500, max  + 500)]

然后,我比较我的第二个数据集 df 是否在基因组中的某个位置具有任何变体(行),并且如果变体在同一点的范围内,则将low它们high组合成一列:group

df$connected_spots <- seq.int(nrow(df))

#Find matches in df on matching chromosomes and position between low&high:

df <- df[spots, group := i.connected_spots, on = .(chrom, position > low, position < high ) ]

我正在寻找是否有任何基因变体适合斑点范围的 df 看起来像:

Gene   chrom position connected_spots
Gene1   1    1200           1
Gene2   1    10000          2
Gene3   5    500            3

我为 df 预先创建了一个connected_spots列,只是为了给每个变体/行提供一个 ID,以便在搜索位置匹配时使用 - 如果我最终connect_spots在我的第一个数据集中搜索哪个变体在范围内,这样做真的有问题吗?什么会导致我的真实数据最低group为 5?

所以我得到的输出(当我将组从最低到最高排序时)是:

Gene   chrom position     group
Gene4   1    1200           5
Gene8   1    10000          5
Gene9   5    500            6

为什么不group从第 1 组开始?

有没有另一种方法可以编码这一行:

df <- df[spots, group := i.connected_spots, on = .(chrom, position > low, position < high ) ]

潜在地避免我在使用真实数据时遇到的问题?

输入数据:

#Spots dataset:

structure(list(connected_spots = 1:3, chrom = c(1L, 1L, 5L), 
    min = c(1000L, 20000L, 900L), max = c(1200L, 20100L, 1000L
    ), low = c(500L, 19500L, 400L), high = c(1700L, 20600L, 1500L
    )), row.names = c(NA, -3L), class = c("data.table", "data.frame"))

#Variants to find in range of spots:

structure(list(Gene = c("Gene1", "Gene2", "Gene3"), chrom = c(1L, 
1L, 5L), position = c(1200L, 10000L, 500L), connected_spots = 1:3), row.names = c(NA, 
-3L), class = c("data.table", "data.frame"))

标签: rdata.tablebioinformatics

解决方案


推荐阅读