-1

我正在处理 4C 数据,其中我有一个 .txt 文件,其中包含染色体、开始、结束、nReads、RPM、p.value、q.value,我只对 chr15 中的重要交互感兴趣,后来想过滤那些交互远大于 100kb,接近 3kb。

library(r3Cseq)
library(BSgenome.Hsapiens.UCSC.hg19.masked)
library(GenomicRanges)
library(Homo.sapiens)

kura.int <- read.table("KURA_DpnII.interaction.txt", header = T)
kura_data <- kura.int[kura.int$chromosome == "chr15" & kura.int$q.value > 0.1, ]
kura.int.gr <- makeGRangesFromDataFrame(kura_data, keep.extra.columns = T)

id <- "91433"
rccdGene <- genes(TxDb.Hsapiens.UCSC.hg19.knownGene,
                  filter=list(gene_id=id))

rccdPromoter <- start(rccdGene)
kura_end <- ((rccdPromoter+kura_data$end)/2)

kura <- cbind(rccdPromoter, kura_end)
kura_2 <- cbind(kura, kura_data$chromosome)
colnames(kura_2) <- c("start", "end", "chr")

kura_3 <- kura_2[distance(kura_2$start, kura_2$end)<=100000]

在“kura_2”矩阵中,我有 3 列,即“chr”、“start”和“end”,其中我有一个新的开始作为基因的启动子和不同的结尾。所以我尝试编写上面的代码块,但是当我来到过滤步骤使用函数“距离”时,我收到了这个错误

Error in (function (classes, fdef, mtable)  : 
  unable to find an inherited method for function ‘distance’ for signature ‘&quot;character", "character"’

现在我有一个 kura_2 矩阵,其中包含 3 列,即“chr”“start”“end”

     start        end   chr
1 91498106   86026693 chr15
2 91498106   91466684 chr15
3 91498106   88330238 chr15
4 91498106 91488399.5 chr15
5 91498106 91491012.5 chr15
6 91498106   91768848 chr15

现在,如何过滤开始和结束之间大于 100kb 且小于 3kb 的基因组相互作用?

新的开始是基因的启动子,新的结束是 ((start+end)/2) 这就是我有浮点值的原因,因为这样很容易绘制出我的启动子(诱饵)的相互作用。有没有更好的方法来过滤掉交互?先感谢您

4

1 回答 1

0

大概是这样的:


your.data <- cbind.data.frame(
    start = c(91498106, 91498106, 91498106, 91498106, 91498106,
              91498106, 91498106),
    end = c(55757151, 55757918, 55758715.5, 55776189, 55779372.5,
            55781096.5, 55791947),
    chr = c("chr15", "chr15", "chr15", "chr15", "chr15", "chr15", "chr15")
)

library(dplyr)
good.data <- your.data %>% filter( (start-end) %between% c(3e3, 100e3) )

我认为这些行都不应该保留,因为它们从头到尾变化超过 100kb?

于 2021-03-22T22:50:20.980 回答