09_nanoT test


suppressMessages(library(GenomicRanges))
suppressMessages(library(tidyverse))
suppressMessages(library(rtracklayer))
`%+%`<-paste0
seqinfSY <- readRDS("Data/seqinfSY.rds")
rDNA_SY <- GRanges("CP029160.1",IRanges(3879940,3934000),strand="*",seqinfo=seqinfSY)
 source("Helper_function.r")

We use the same approach than for the initiation. We affected a nanotiming value for each selected active ori and then used MANorm2 to evaluate differences.

Import nanoT data

BY_rep1 <- readRDS("Data/nanoT_BYBYSY_rep1.rds")
BYrep1.gr <- with(BY_rep1,GRanges(seqnames=chromSY,ranges=IRanges(start=startnSY,end=endnSY),strand="*",seqinfo=seqinfSY,nanoT=nanoTsc99))
cov2exp <- coverage(BYrep1.gr,weight=BYrep1.gr$nanoT)
cov2exp[cov2exp<0.1] <- NA
cov2exp_BY1 <- cov2exp
BY_rep2 <- readRDS("Data/nanoT_BYBYSY_rep2.rds")
BYrep2.gr <- with(BY_rep2,GRanges(seqnames=chromSY,ranges=IRanges(start=startnSY,end=endnSY),strand="*",seqinfo=seqinfSY,nanoT=nanoTsc99))
cov2exp <- coverage(BYrep2.gr,weight=BYrep2.gr$nanoT)
cov2exp[cov2exp<0.1] <- NA
cov2exp_BY2 <- cov2exp
BY_rep3 <- readRDS("Data/nanoT_BYBYSY_rep3.rds")
BYrep3.gr <- with(BY_rep3,GRanges(seqnames=chromSY,ranges=IRanges(start=startnSY,end=endnSY),strand="*",seqinfo=seqinfSY,nanoT=nanoTsc99))
cov2exp <- coverage(BYrep3.gr,weight=BYrep3.gr$nanoT)
cov2exp[cov2exp<0.1] <- NA
cov2exp_BY3 <- cov2exp

SY_rep1 <- readRDS("Data/nanoT_SYSY_rep1.rds")
SYrep1.gr <- with(SY_rep1,GRanges(seqnames=chromSY,ranges=IRanges(start=positions,end=positions+999),strand="*",seqinfo=seqinfSY,nanoT=nanoTsc99))
cov2exp <- coverage(SYrep1.gr,weight=SYrep1.gr$nanoT)
cov2exp[cov2exp<0.1] <- NA
cov2exp_SY1 <- cov2exp
SY_rep2 <- readRDS("Data/nanoT_SYSY_rep2.rds")
SYrep2.gr <- with(SY_rep2,GRanges(seqnames=chromSY,ranges=IRanges(start=positions,end=positions+999),strand="*",seqinfo=seqinfSY,nanoT=nanoTsc99))
cov2exp <- coverage(SYrep2.gr,weight=SYrep2.gr$nanoT)
cov2exp[cov2exp<0.1] <- NA
cov2exp_SY2 <- cov2exp
SY_rep3 <- readRDS("Data/nanoT_SYSY_rep3.rds")
SYrep3.gr <- with(SY_rep3,GRanges(seqnames=chromSY,ranges=IRanges(start=positions,end=positions+999),strand="*",seqinfo=seqinfSY,nanoT=nanoTsc99))
cov2exp <- coverage(SYrep3.gr,weight=SYrep3.gr$nanoT)
cov2exp[cov2exp<0.1] <- NA
cov2exp_SY3 <- cov2exp

Importing Ori dataset

ars2keep <- import("Data/ars2keep_lim10k_cl1500_2_dtac1500.bed") %>% sort
ars2keep$score <- NULL

Affecting nanoT to Ori

ars2 <- ars2keep

ars2$SY_rep1 <- sapply(cov2exp_SY1[ars2],function(x) mean(x,na.rm=T))
ars2$SY_rep2 <- sapply(cov2exp_SY2[ars2],function(x) mean(x,na.rm=T))
ars2$SY_rep3 <- sapply(cov2exp_SY3[ars2],function(x) mean(x,na.rm=T))
ars2$BY_rep1 <- sapply(cov2exp_BY1[ars2],function(x) mean(x,na.rm=T))
ars2$BY_rep2 <- sapply(cov2exp_BY2[ars2],function(x) mean(x,na.rm=T))
ars2$BY_rep3 <- sapply(cov2exp_BY3[ars2],function(x) mean(x,na.rm=T))

Testing with MANorm2

ars2test2 <- as_tibble(mcols(ars2)) %>% mutate(uid=1:nrow(.) %>% as.character)
require(MAnorm2)
eff.mat <- ars2test2[2:7]
occ.mat <- eff.mat>0
test.mat <- cbind(eff.mat,occ.mat)
norm <- normalize(test.mat,count=c(1:3),occupancy=c(7:9))
norm <- normalize(norm,count=c(4:6),occupancy=c(10:12))

conds <- list(  SY= bioCond(norm[c(1:3)],norm[c(7:9)],name="SY"),
                BY=bioCond(norm[c(4:6)],norm[c(10:12)],name="BY"))
conds <- normBioCond(conds)
conds <- fitMeanVarCurve(conds, method = "parametric", occupy.only = TRUE,init.coef = c(0.1, 10))
During the parametric fit procedure:
After iteration 1: coef = (0.00991569, -0.0139563); 0 (0.00%) outlier(s) detected
Converged.
res <- diffTest(conds[[1]], conds[[2]])
ars.res <- bind_cols(ars2test2,res)
min(ars.res$padj)
[1] 3.436511e-13
# 6.226335e-11
ars.res %>% filter(padj<=0.01) %>% nrow
[1] 29
# 25 
ars2$padjMA2 <- ars.res$padj
ars2MA_gr <- ars2[ars2$padjMA2<=0.01]
export(ars2MA_gr,con="Data/ARS_nanotiming_MApadj0.01.bed")
saveRDS(ars.res,file="Data/ARS_nanotiming_MApadj.rds")
LS0tCnRpdGxlOiAiQllTWSBwcm9qZWN0IE5vdGVib29rIgpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sKLS0tICAKIyAwOV9uYW5vVCB0ZXN0ICAKCioqKiAgCgpgYGB7ciBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFfQpzdXBwcmVzc01lc3NhZ2VzKGxpYnJhcnkoR2Vub21pY1JhbmdlcykpCnN1cHByZXNzTWVzc2FnZXMobGlicmFyeSh0aWR5dmVyc2UpKQpzdXBwcmVzc01lc3NhZ2VzKGxpYnJhcnkocnRyYWNrbGF5ZXIpKQpgJSslYDwtcGFzdGUwCnNlcWluZlNZIDwtIHJlYWRSRFMoIkRhdGEvc2VxaW5mU1kucmRzIikKckROQV9TWSA8LSBHUmFuZ2VzKCJDUDAyOTE2MC4xIixJUmFuZ2VzKDM4Nzk5NDAsMzkzNDAwMCksc3RyYW5kPSIqIixzZXFpbmZvPXNlcWluZlNZKQogc291cmNlKCJIZWxwZXJfZnVuY3Rpb24uciIpCmBgYAoKV2UgdXNlIHRoZSBzYW1lIGFwcHJvYWNoIHRoYW4gZm9yIHRoZSBpbml0aWF0aW9uLiBXZSBhZmZlY3RlZCBhIG5hbm90aW1pbmcgdmFsdWUgZm9yIGVhY2ggc2VsZWN0ZWQgYWN0aXZlIG9yaSBhbmQgdGhlbiB1c2VkIE1BTm9ybTIgdG8gZXZhbHVhdGUgZGlmZmVyZW5jZXMuCgojIyMgSW1wb3J0IG5hbm9UIGRhdGEKYGBge3IgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRX0KQllfcmVwMSA8LSByZWFkUkRTKCJEYXRhL25hbm9UX0JZQllTWV9yZXAxLnJkcyIpCkJZcmVwMS5nciA8LSB3aXRoKEJZX3JlcDEsR1JhbmdlcyhzZXFuYW1lcz1jaHJvbVNZLHJhbmdlcz1JUmFuZ2VzKHN0YXJ0PXN0YXJ0blNZLGVuZD1lbmRuU1kpLHN0cmFuZD0iKiIsc2VxaW5mbz1zZXFpbmZTWSxuYW5vVD1uYW5vVHNjOTkpKQpjb3YyZXhwIDwtIGNvdmVyYWdlKEJZcmVwMS5ncix3ZWlnaHQ9QllyZXAxLmdyJG5hbm9UKQpjb3YyZXhwW2NvdjJleHA8MC4xXSA8LSBOQQpjb3YyZXhwX0JZMSA8LSBjb3YyZXhwCkJZX3JlcDIgPC0gcmVhZFJEUygiRGF0YS9uYW5vVF9CWUJZU1lfcmVwMi5yZHMiKQpCWXJlcDIuZ3IgPC0gd2l0aChCWV9yZXAyLEdSYW5nZXMoc2VxbmFtZXM9Y2hyb21TWSxyYW5nZXM9SVJhbmdlcyhzdGFydD1zdGFydG5TWSxlbmQ9ZW5kblNZKSxzdHJhbmQ9IioiLHNlcWluZm89c2VxaW5mU1ksbmFub1Q9bmFub1RzYzk5KSkKY292MmV4cCA8LSBjb3ZlcmFnZShCWXJlcDIuZ3Isd2VpZ2h0PUJZcmVwMi5nciRuYW5vVCkKY292MmV4cFtjb3YyZXhwPDAuMV0gPC0gTkEKY292MmV4cF9CWTIgPC0gY292MmV4cApCWV9yZXAzIDwtIHJlYWRSRFMoIkRhdGEvbmFub1RfQllCWVNZX3JlcDMucmRzIikKQllyZXAzLmdyIDwtIHdpdGgoQllfcmVwMyxHUmFuZ2VzKHNlcW5hbWVzPWNocm9tU1kscmFuZ2VzPUlSYW5nZXMoc3RhcnQ9c3RhcnRuU1ksZW5kPWVuZG5TWSksc3RyYW5kPSIqIixzZXFpbmZvPXNlcWluZlNZLG5hbm9UPW5hbm9Uc2M5OSkpCmNvdjJleHAgPC0gY292ZXJhZ2UoQllyZXAzLmdyLHdlaWdodD1CWXJlcDMuZ3IkbmFub1QpCmNvdjJleHBbY292MmV4cDwwLjFdIDwtIE5BCmNvdjJleHBfQlkzIDwtIGNvdjJleHAKClNZX3JlcDEgPC0gcmVhZFJEUygiRGF0YS9uYW5vVF9TWVNZX3JlcDEucmRzIikKU1lyZXAxLmdyIDwtIHdpdGgoU1lfcmVwMSxHUmFuZ2VzKHNlcW5hbWVzPWNocm9tU1kscmFuZ2VzPUlSYW5nZXMoc3RhcnQ9cG9zaXRpb25zLGVuZD1wb3NpdGlvbnMrOTk5KSxzdHJhbmQ9IioiLHNlcWluZm89c2VxaW5mU1ksbmFub1Q9bmFub1RzYzk5KSkKY292MmV4cCA8LSBjb3ZlcmFnZShTWXJlcDEuZ3Isd2VpZ2h0PVNZcmVwMS5nciRuYW5vVCkKY292MmV4cFtjb3YyZXhwPDAuMV0gPC0gTkEKY292MmV4cF9TWTEgPC0gY292MmV4cApTWV9yZXAyIDwtIHJlYWRSRFMoIkRhdGEvbmFub1RfU1lTWV9yZXAyLnJkcyIpClNZcmVwMi5nciA8LSB3aXRoKFNZX3JlcDIsR1JhbmdlcyhzZXFuYW1lcz1jaHJvbVNZLHJhbmdlcz1JUmFuZ2VzKHN0YXJ0PXBvc2l0aW9ucyxlbmQ9cG9zaXRpb25zKzk5OSksc3RyYW5kPSIqIixzZXFpbmZvPXNlcWluZlNZLG5hbm9UPW5hbm9Uc2M5OSkpCmNvdjJleHAgPC0gY292ZXJhZ2UoU1lyZXAyLmdyLHdlaWdodD1TWXJlcDIuZ3IkbmFub1QpCmNvdjJleHBbY292MmV4cDwwLjFdIDwtIE5BCmNvdjJleHBfU1kyIDwtIGNvdjJleHAKU1lfcmVwMyA8LSByZWFkUkRTKCJEYXRhL25hbm9UX1NZU1lfcmVwMy5yZHMiKQpTWXJlcDMuZ3IgPC0gd2l0aChTWV9yZXAzLEdSYW5nZXMoc2VxbmFtZXM9Y2hyb21TWSxyYW5nZXM9SVJhbmdlcyhzdGFydD1wb3NpdGlvbnMsZW5kPXBvc2l0aW9ucys5OTkpLHN0cmFuZD0iKiIsc2VxaW5mbz1zZXFpbmZTWSxuYW5vVD1uYW5vVHNjOTkpKQpjb3YyZXhwIDwtIGNvdmVyYWdlKFNZcmVwMy5ncix3ZWlnaHQ9U1lyZXAzLmdyJG5hbm9UKQpjb3YyZXhwW2NvdjJleHA8MC4xXSA8LSBOQQpjb3YyZXhwX1NZMyA8LSBjb3YyZXhwCmBgYAoKIyMjIEltcG9ydGluZyBPcmkgZGF0YXNldApgYGB7ciBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFfQphcnMya2VlcCA8LSBpbXBvcnQoIkRhdGEvYXJzMmtlZXBfbGltMTBrX2NsMTUwMF8yX2R0YWMxNTAwLmJlZCIpICU+JSBzb3J0CmFyczJrZWVwJHNjb3JlIDwtIE5VTEwKYGBgCgojIyMgQWZmZWN0aW5nIG5hbm9UIHRvIE9yaQoKYGBge3IgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRX0KYXJzMiA8LSBhcnMya2VlcAoKYXJzMiRTWV9yZXAxIDwtIHNhcHBseShjb3YyZXhwX1NZMVthcnMyXSxmdW5jdGlvbih4KSBtZWFuKHgsbmEucm09VCkpCmFyczIkU1lfcmVwMiA8LSBzYXBwbHkoY292MmV4cF9TWTJbYXJzMl0sZnVuY3Rpb24oeCkgbWVhbih4LG5hLnJtPVQpKQphcnMyJFNZX3JlcDMgPC0gc2FwcGx5KGNvdjJleHBfU1kzW2FyczJdLGZ1bmN0aW9uKHgpIG1lYW4oeCxuYS5ybT1UKSkKYXJzMiRCWV9yZXAxIDwtIHNhcHBseShjb3YyZXhwX0JZMVthcnMyXSxmdW5jdGlvbih4KSBtZWFuKHgsbmEucm09VCkpCmFyczIkQllfcmVwMiA8LSBzYXBwbHkoY292MmV4cF9CWTJbYXJzMl0sZnVuY3Rpb24oeCkgbWVhbih4LG5hLnJtPVQpKQphcnMyJEJZX3JlcDMgPC0gc2FwcGx5KGNvdjJleHBfQlkzW2FyczJdLGZ1bmN0aW9uKHgpIG1lYW4oeCxuYS5ybT1UKSkKYGBgCgojIyMgVGVzdGluZyB3aXRoIE1BTm9ybTIKCmBgYHtyIG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0V9CmFyczJ0ZXN0MiA8LSBhc190aWJibGUobWNvbHMoYXJzMikpICU+JSBtdXRhdGUodWlkPTE6bnJvdyguKSAlPiUgYXMuY2hhcmFjdGVyKQpyZXF1aXJlKE1Bbm9ybTIpCmVmZi5tYXQgPC0gYXJzMnRlc3QyWzI6N10Kb2NjLm1hdCA8LSBlZmYubWF0PjAKdGVzdC5tYXQgPC0gY2JpbmQoZWZmLm1hdCxvY2MubWF0KQpub3JtIDwtIG5vcm1hbGl6ZSh0ZXN0Lm1hdCxjb3VudD1jKDE6Myksb2NjdXBhbmN5PWMoNzo5KSkKbm9ybSA8LSBub3JtYWxpemUobm9ybSxjb3VudD1jKDQ6Niksb2NjdXBhbmN5PWMoMTA6MTIpKQoKY29uZHMgPC0gbGlzdCgJU1k9IGJpb0NvbmQobm9ybVtjKDE6MyldLG5vcm1bYyg3OjkpXSxuYW1lPSJTWSIpLAoJCQkJQlk9YmlvQ29uZChub3JtW2MoNDo2KV0sbm9ybVtjKDEwOjEyKV0sbmFtZT0iQlkiKSkKY29uZHMgPC0gbm9ybUJpb0NvbmQoY29uZHMpCmNvbmRzIDwtIGZpdE1lYW5WYXJDdXJ2ZShjb25kcywgbWV0aG9kID0gInBhcmFtZXRyaWMiLCBvY2N1cHkub25seSA9IFRSVUUsaW5pdC5jb2VmID0gYygwLjEsIDEwKSkKcmVzIDwtIGRpZmZUZXN0KGNvbmRzW1sxXV0sIGNvbmRzW1syXV0pCmFycy5yZXMgPC0gYmluZF9jb2xzKGFyczJ0ZXN0MixyZXMpCm1pbihhcnMucmVzJHBhZGopCiMgMy40MzY1MTFlLTEzCmFycy5yZXMgJT4lIGZpbHRlcihwYWRqPD0wLjAxKSAlPiUgbnJvdwojIDI5IAphcnMyJHBhZGpNQTIgPC0gYXJzLnJlcyRwYWRqCmFyczJNQV9nciA8LSBhcnMyW2FyczIkcGFkak1BMjw9MC4wMV0KZXhwb3J0KGFyczJNQV9ncixjb249IkRhdGEvQVJTX25hbm90aW1pbmdfTUFwYWRqMC4wMS5iZWQiKQpzYXZlUkRTKGFycy5yZXMsZmlsZT0iRGF0YS9BUlNfbmFub3RpbWluZ19NQXBhZGoucmRzIikKYGBgCg==