03_RFD Profiles


Computing forks coverages and RFD

suppressMessages(library(rtracklayer))
suppressMessages(library(tidyverse))
suppressMessages(library(GenomicRanges))
`%+%` <- paste0
seqinfSY <- readRDS("Data/seqinfSY.rds")
seqinfBY <- readRDS("Data/seqinfBY.rds")

There are two pairs of diverging Ty element from the chrIII and chrXVI that generate basecalling/mapping artifacts. We will therefore remove the forks, initiations and terminations mapping on these genomic segments.

Ty_chrIII_SY <- GRanges("CP029160.1",IRanges(7409106,7421212),strand="*",seqinfo=seqinfSY)
Ty_chrIII_BY <- GRanges("CP026297.1",IRanges(174645,186751),strand="*",seqinfo=seqinfBY)
Ty_chrXVI_SY <- GRanges("CP029160.1",IRanges(851297,863439),strand="*",seqinfo=seqinfSY)
Ty_chrXVI_BY <- GRanges("CP026290.1",IRanges(844705,856847),strand="*",seqinfo=seqinfBY)
maskedTy_SY <- c(Ty_chrIII_SY,Ty_chrXVI_SY)
saveRDS(maskedTy_SY, file="Data/maskedTy_SY.rds")
maskedTy_BY <- c(Ty_chrIII_BY,Ty_chrXVI_BY)
saveRDS(maskedTy_BY, file="Data/maskedTy_BY.rds")

Importing forks and removing those mapping on the problematic Ty area.

forks_SYSY <- readRDS("Data/forks_SYSY.rds")
forks_SYSY.gr<- with(forks_SYSY, GRanges(seqnames=chrom,ranges=IRanges(pmin(X0,X1),pmax(X0,X1)),strand=case_when(direc=="R"~"+",T~"-"),seqinfo=seqinfSY))
forks_SYSY2 <- forks_SYSY %>% 
    mutate(Ty_filter=!overlapsAny(forks_SYSY.gr,maskedTy_SY)) %>%
    filter(Ty_filter)
forks_SYSY2.gr<- with(forks_SYSY2, GRanges(seqnames=chrom,ranges=IRanges(pmin(X0,X1),pmax(X0,X1)),strand=case_when(direc=="R"~"+",T~"-"),seqinfo=seqinfSY))

forks_BYSY <- readRDS("Data/forks_BYBYSY.rds")
forks_BYSY.gr<- with(forks_BYSY, GRanges(seqnames=chromSY,ranges=IRanges(pmin(X0nSY,X1nSY),pmax(X0nSY,X1nSY)),strand=case_when(direc=="R"~"+",T~"-"),seqinfo=seqinfSY))
forks_BYSY2 <- forks_BYSY %>% 
    mutate(Ty_filter=!overlapsAny(forks_BYSY.gr,maskedTy_SY)) %>%
    filter(Ty_filter)
forks_BYSY2.gr<- with(forks_BYSY2, GRanges(seqnames=chromSY,ranges=IRanges(pmin(X0nSY,X1nSY),pmax(X0nSY,X1nSY)),strand=case_when(direc=="R"~"+",T~"-"),seqinfo=seqinfSY))

forks_BYBY <- readRDS("Data/forks_BYBY.rds")
forks_BYBY.gr<- with(forks_BYBY, GRanges(seqnames=chrom,ranges=IRanges(pmin(X0,X1),pmax(X0,X1)),strand=case_when(direc=="R"~"+",T~"-"),seqinfo=seqinfBY))
forks_BYBY2 <- forks_BYBY %>% 
    mutate(Ty_filter=!overlapsAny(forks_BYBY.gr,maskedTy_BY)) %>%
    filter(Ty_filter)
forks_BYBY2.gr<- with(forks_BYBY2, GRanges(seqnames=chrom,ranges=IRanges(pmin(X0,X1),pmax(X0,X1)),strand=case_when(direc=="R"~"+",T~"-"),seqinfo=seqinfBY))

We can then compute the RFD for SY data mapped on SY genome,BY data mapped on BY genome and transposed to SY genome and BY data mapped on BY genome.

## on SY genome
forks_SYSY_R.gr<- forks_SYSY2.gr[strand(forks_SYSY2.gr)=="+"]
forks_SYSY_L.gr<- forks_SYSY2.gr[strand(forks_SYSY2.gr)=="-"]

covL_SY <- coverage(forks_SYSY_L.gr)
covR_SY <- coverage(forks_SYSY_R.gr)
cov_SY <- covR_SY+covL_SY
rfdSY <- (covR_SY-covL_SY)/(covR_SY+covL_SY)
export(covL_SY,con="BigWig/covL_SYSY_nt.bw")
export(covR_SY,con="BigWig/covR_SYSY_nt.bw")
export(cov_SY,con="BigWig/covtot_SYSY_nt.bw")
export(rfdSY,con="BigWig/rfd_SYSY_nt.bw")

# BY mapped on BY transposed to SY
forks_BYSY_R.gr<- forks_BYSY2.gr[strand(forks_BYSY2.gr)=="+"]
forks_BYSY_L.gr<- forks_BYSY2.gr[strand(forks_BYSY2.gr)=="-"]

covL_BY <- coverage(forks_BYSY_L.gr)
covR_BY <- coverage(forks_BYSY_R.gr)
cov_BY <- covR_BY+covL_BY
rfdBY <- (covR_BY-covL_BY)/(covR_BY+covL_BY)
export(covL_BY,con="BigWig/covL_BYBYSY_nt.bw")
export(covR_BY,con="BigWig/covR_BYBYSY_nt.bw")
export(cov_BY,con="BigWig/covtot_BYBYSY_nt.bw")
export(rfdBY,con="BigWig/rfd_BYBYSY_nt.bw")

## on BY genome
forks_BYBY_R.gr<- forks_BYBY2.gr[strand(forks_BYBY2.gr)=="+"]
forks_BYBY_L.gr<- forks_BYBY2.gr[strand(forks_BYBY2.gr)=="-"]

covL_BY <- coverage(forks_BYBY_L.gr)
covR_BY <- coverage(forks_BYBY_R.gr)
rfdBY <- (covR_BY-covL_BY)/(covR_BY+covL_BY)
export(rfdBY,con="BigWig/rfd_BYBY_nt.bw")
LS0tCnRpdGxlOiAiQllTWSBwcm9qZWN0IE5vdGVib29rIgpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sKLS0tICAKIyAwM19SRkQgUHJvZmlsZXMgIAoKKioqICAKIyMgQ29tcHV0aW5nIGZvcmtzIGNvdmVyYWdlcyBhbmQgUkZECgpgYGB7cn0Kc3VwcHJlc3NNZXNzYWdlcyhsaWJyYXJ5KHJ0cmFja2xheWVyKSkKc3VwcHJlc3NNZXNzYWdlcyhsaWJyYXJ5KHRpZHl2ZXJzZSkpCnN1cHByZXNzTWVzc2FnZXMobGlicmFyeShHZW5vbWljUmFuZ2VzKSkKYCUrJWAgPC0gcGFzdGUwCnNlcWluZlNZIDwtIHJlYWRSRFMoIkRhdGEvc2VxaW5mU1kucmRzIikKc2VxaW5mQlkgPC0gcmVhZFJEUygiRGF0YS9zZXFpbmZCWS5yZHMiKQpgYGAKClRoZXJlIGFyZSB0d28gcGFpcnMgb2YgZGl2ZXJnaW5nIFR5IGVsZW1lbnQgZnJvbSB0aGUgY2hySUlJIGFuZCBjaHJYVkkgdGhhdCBnZW5lcmF0ZSBiYXNlY2FsbGluZy9tYXBwaW5nIGFydGlmYWN0cy4gV2Ugd2lsbCB0aGVyZWZvcmUgcmVtb3ZlIHRoZSBmb3JrcywgaW5pdGlhdGlvbnMgYW5kIHRlcm1pbmF0aW9ucyBtYXBwaW5nIG9uIHRoZXNlIGdlbm9taWMgc2VnbWVudHMuICAKYGBge3J9ClR5X2NocklJSV9TWSA8LSBHUmFuZ2VzKCJDUDAyOTE2MC4xIixJUmFuZ2VzKDc0MDkxMDYsNzQyMTIxMiksc3RyYW5kPSIqIixzZXFpbmZvPXNlcWluZlNZKQpUeV9jaHJJSUlfQlkgPC0gR1JhbmdlcygiQ1AwMjYyOTcuMSIsSVJhbmdlcygxNzQ2NDUsMTg2NzUxKSxzdHJhbmQ9IioiLHNlcWluZm89c2VxaW5mQlkpClR5X2NoclhWSV9TWSA8LSBHUmFuZ2VzKCJDUDAyOTE2MC4xIixJUmFuZ2VzKDg1MTI5Nyw4NjM0MzkpLHN0cmFuZD0iKiIsc2VxaW5mbz1zZXFpbmZTWSkKVHlfY2hyWFZJX0JZIDwtIEdSYW5nZXMoIkNQMDI2MjkwLjEiLElSYW5nZXMoODQ0NzA1LDg1Njg0Nyksc3RyYW5kPSIqIixzZXFpbmZvPXNlcWluZkJZKQptYXNrZWRUeV9TWSA8LSBjKFR5X2NocklJSV9TWSxUeV9jaHJYVklfU1kpCnNhdmVSRFMobWFza2VkVHlfU1ksIGZpbGU9IkRhdGEvbWFza2VkVHlfU1kucmRzIikKbWFza2VkVHlfQlkgPC0gYyhUeV9jaHJJSUlfQlksVHlfY2hyWFZJX0JZKQpzYXZlUkRTKG1hc2tlZFR5X0JZLCBmaWxlPSJEYXRhL21hc2tlZFR5X0JZLnJkcyIpCmBgYAoKIyMjIEltcG9ydGluZyBmb3JrcyBhbmQgcmVtb3ZpbmcgdGhvc2UgbWFwcGluZyBvbiB0aGUgcHJvYmxlbWF0aWMgVHkgYXJlYS4KYGBge3J9CmZvcmtzX1NZU1kgPC0gcmVhZFJEUygiRGF0YS9mb3Jrc19TWVNZLnJkcyIpCmZvcmtzX1NZU1kuZ3I8LSB3aXRoKGZvcmtzX1NZU1ksIEdSYW5nZXMoc2VxbmFtZXM9Y2hyb20scmFuZ2VzPUlSYW5nZXMocG1pbihYMCxYMSkscG1heChYMCxYMSkpLHN0cmFuZD1jYXNlX3doZW4oZGlyZWM9PSJSIn4iKyIsVH4iLSIpLHNlcWluZm89c2VxaW5mU1kpKQpmb3Jrc19TWVNZMiA8LSBmb3Jrc19TWVNZICU+JSAKCW11dGF0ZShUeV9maWx0ZXI9IW92ZXJsYXBzQW55KGZvcmtzX1NZU1kuZ3IsbWFza2VkVHlfU1kpKSAlPiUKCWZpbHRlcihUeV9maWx0ZXIpCmZvcmtzX1NZU1kyLmdyPC0gd2l0aChmb3Jrc19TWVNZMiwgR1JhbmdlcyhzZXFuYW1lcz1jaHJvbSxyYW5nZXM9SVJhbmdlcyhwbWluKFgwLFgxKSxwbWF4KFgwLFgxKSksc3RyYW5kPWNhc2Vfd2hlbihkaXJlYz09IlIifiIrIixUfiItIiksc2VxaW5mbz1zZXFpbmZTWSkpCgpmb3Jrc19CWVNZIDwtIHJlYWRSRFMoIkRhdGEvZm9ya3NfQllCWVNZLnJkcyIpCmZvcmtzX0JZU1kuZ3I8LSB3aXRoKGZvcmtzX0JZU1ksIEdSYW5nZXMoc2VxbmFtZXM9Y2hyb21TWSxyYW5nZXM9SVJhbmdlcyhwbWluKFgwblNZLFgxblNZKSxwbWF4KFgwblNZLFgxblNZKSksc3RyYW5kPWNhc2Vfd2hlbihkaXJlYz09IlIifiIrIixUfiItIiksc2VxaW5mbz1zZXFpbmZTWSkpCmZvcmtzX0JZU1kyIDwtIGZvcmtzX0JZU1kgJT4lIAoJbXV0YXRlKFR5X2ZpbHRlcj0hb3ZlcmxhcHNBbnkoZm9ya3NfQllTWS5ncixtYXNrZWRUeV9TWSkpICU+JQoJZmlsdGVyKFR5X2ZpbHRlcikKZm9ya3NfQllTWTIuZ3I8LSB3aXRoKGZvcmtzX0JZU1kyLCBHUmFuZ2VzKHNlcW5hbWVzPWNocm9tU1kscmFuZ2VzPUlSYW5nZXMocG1pbihYMG5TWSxYMW5TWSkscG1heChYMG5TWSxYMW5TWSkpLHN0cmFuZD1jYXNlX3doZW4oZGlyZWM9PSJSIn4iKyIsVH4iLSIpLHNlcWluZm89c2VxaW5mU1kpKQoKZm9ya3NfQllCWSA8LSByZWFkUkRTKCJEYXRhL2ZvcmtzX0JZQlkucmRzIikKZm9ya3NfQllCWS5ncjwtIHdpdGgoZm9ya3NfQllCWSwgR1JhbmdlcyhzZXFuYW1lcz1jaHJvbSxyYW5nZXM9SVJhbmdlcyhwbWluKFgwLFgxKSxwbWF4KFgwLFgxKSksc3RyYW5kPWNhc2Vfd2hlbihkaXJlYz09IlIifiIrIixUfiItIiksc2VxaW5mbz1zZXFpbmZCWSkpCmZvcmtzX0JZQlkyIDwtIGZvcmtzX0JZQlkgJT4lIAoJbXV0YXRlKFR5X2ZpbHRlcj0hb3ZlcmxhcHNBbnkoZm9ya3NfQllCWS5ncixtYXNrZWRUeV9CWSkpICU+JQoJZmlsdGVyKFR5X2ZpbHRlcikKZm9ya3NfQllCWTIuZ3I8LSB3aXRoKGZvcmtzX0JZQlkyLCBHUmFuZ2VzKHNlcW5hbWVzPWNocm9tLHJhbmdlcz1JUmFuZ2VzKHBtaW4oWDAsWDEpLHBtYXgoWDAsWDEpKSxzdHJhbmQ9Y2FzZV93aGVuKGRpcmVjPT0iUiJ+IisiLFR+Ii0iKSxzZXFpbmZvPXNlcWluZkJZKSkKYGBgCgpXZSBjYW4gdGhlbiBjb21wdXRlIHRoZSBSRkQgZm9yIFNZIGRhdGEgbWFwcGVkIG9uIFNZIGdlbm9tZSxCWSBkYXRhIG1hcHBlZCBvbiBCWSBnZW5vbWUgYW5kIHRyYW5zcG9zZWQgdG8gU1kgZ2Vub21lIGFuZCBCWSBkYXRhIG1hcHBlZCBvbiBCWSBnZW5vbWUuICAKYGBge3J9CiMjIG9uIFNZIGdlbm9tZQpmb3Jrc19TWVNZX1IuZ3I8LSBmb3Jrc19TWVNZMi5ncltzdHJhbmQoZm9ya3NfU1lTWTIuZ3IpPT0iKyJdCmZvcmtzX1NZU1lfTC5ncjwtIGZvcmtzX1NZU1kyLmdyW3N0cmFuZChmb3Jrc19TWVNZMi5ncik9PSItIl0KCmNvdkxfU1kgPC0gY292ZXJhZ2UoZm9ya3NfU1lTWV9MLmdyKQpjb3ZSX1NZIDwtIGNvdmVyYWdlKGZvcmtzX1NZU1lfUi5ncikKY292X1NZIDwtIGNvdlJfU1krY292TF9TWQpyZmRTWSA8LSAoY292Ul9TWS1jb3ZMX1NZKS8oY292Ul9TWStjb3ZMX1NZKQpleHBvcnQoY292TF9TWSxjb249IkJpZ1dpZy9jb3ZMX1NZU1lfbnQuYnciKQpleHBvcnQoY292Ul9TWSxjb249IkJpZ1dpZy9jb3ZSX1NZU1lfbnQuYnciKQpleHBvcnQoY292X1NZLGNvbj0iQmlnV2lnL2NvdnRvdF9TWVNZX250LmJ3IikKZXhwb3J0KHJmZFNZLGNvbj0iQmlnV2lnL3JmZF9TWVNZX250LmJ3IikKCiMgQlkgbWFwcGVkIG9uIEJZIHRyYW5zcG9zZWQgdG8gU1kKZm9ya3NfQllTWV9SLmdyPC0gZm9ya3NfQllTWTIuZ3Jbc3RyYW5kKGZvcmtzX0JZU1kyLmdyKT09IisiXQpmb3Jrc19CWVNZX0wuZ3I8LSBmb3Jrc19CWVNZMi5ncltzdHJhbmQoZm9ya3NfQllTWTIuZ3IpPT0iLSJdCgpjb3ZMX0JZIDwtIGNvdmVyYWdlKGZvcmtzX0JZU1lfTC5ncikKY292Ul9CWSA8LSBjb3ZlcmFnZShmb3Jrc19CWVNZX1IuZ3IpCmNvdl9CWSA8LSBjb3ZSX0JZK2NvdkxfQlkKcmZkQlkgPC0gKGNvdlJfQlktY292TF9CWSkvKGNvdlJfQlkrY292TF9CWSkKZXhwb3J0KGNvdkxfQlksY29uPSJCaWdXaWcvY292TF9CWUJZU1lfbnQuYnciKQpleHBvcnQoY292Ul9CWSxjb249IkJpZ1dpZy9jb3ZSX0JZQllTWV9udC5idyIpCmV4cG9ydChjb3ZfQlksY29uPSJCaWdXaWcvY292dG90X0JZQllTWV9udC5idyIpCmV4cG9ydChyZmRCWSxjb249IkJpZ1dpZy9yZmRfQllCWVNZX250LmJ3IikKCiMjIG9uIEJZIGdlbm9tZQpmb3Jrc19CWUJZX1IuZ3I8LSBmb3Jrc19CWUJZMi5ncltzdHJhbmQoZm9ya3NfQllCWTIuZ3IpPT0iKyJdCmZvcmtzX0JZQllfTC5ncjwtIGZvcmtzX0JZQlkyLmdyW3N0cmFuZChmb3Jrc19CWUJZMi5ncik9PSItIl0KCmNvdkxfQlkgPC0gY292ZXJhZ2UoZm9ya3NfQllCWV9MLmdyKQpjb3ZSX0JZIDwtIGNvdmVyYWdlKGZvcmtzX0JZQllfUi5ncikKcmZkQlkgPC0gKGNvdlJfQlktY292TF9CWSkvKGNvdlJfQlkrY292TF9CWSkKZXhwb3J0KHJmZEJZLGNvbj0iQmlnV2lnL3JmZF9CWUJZX250LmJ3IikKYGBgCg==