Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 15 additions & 0 deletions .Rbuildignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
^LICENSE\.md$
^README\.Rmd$
^_pkgdown\.yml$
^docs$
^pkgdown$
^\.github$
^doc$
^Meta$
(^|/)\._
(^|/)\.DS_Store$
^\.Rhistory$
^\.RData$
^\.Ruserdata$
^\.Rproj\.user$
^\.github
2 changes: 1 addition & 1 deletion .github/.gitignore
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
*.html
/icbb/projects/igunduz/methylTFR/.github/workflows/check-bioc.yml
/icbb/projects/igunduz/methylTFRAnnotationMm10/.github/workflows/check-bioc.yml
2 changes: 1 addition & 1 deletion DESCRIPTION
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ Authors@R: person(
comment = c(ORCID = "0000-0003-2641-0916"))
License: Artistic-2.0
Encoding: UTF-8
Version: 0.99.4
Version: 0.99.6
Depends: R (>= 4.3.0)
Imports: AnnotationHub, GenomicRanges, utils
Suggests: knitr, rmarkdown, testthat (>= 3.0.0), BiocStyle
Expand Down
19 changes: 17 additions & 2 deletions NEWS.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,18 @@
# methylTFRAnnotationsMm10 0.99.4
# methylTFRAnnotationMm10 0.99.6

- Fix some notes found in bioccheck
* Initial submission to Bioconductor.

* Provides transcription factor binding sites, motif GC frequency
tables and a genome-wide GC distribution for hg38, for the
jaspar2020, cisbpv2 and altius motif sets GC frequency tables.

* Resources are hosted on AnnotationHub and downloaded on first use.

* The genome-wide GC table uses non-overlapping 30 nt windows binned
into five genome-wide GC quintiles. Bin boundaries are recorded with
the object so that the motif frequency tables and the genome table
are always binned on the same scale.

* Fixes on NOTES from biocchecks

* Added 4 spaces as suggested
72 changes: 34 additions & 38 deletions R/aaa-utils.R
Original file line number Diff line number Diff line change
@@ -1,18 +1,14 @@
#' @noRd
.local_dir <- function() {
...
}
.PKG_NAME <- "methylTFRAnnotationMm10"
.MOTIF_SETS <- c("altius", "cisbpv2", "jaspar2020")
.ASSEMBLY <- "Mm10"

#' @keywords internal
.local_dir <- function() {
d <- getOption(
"methylTFRAnnotationMm10.datadir",
Sys.getenv("METHYL_TFRANNOTATION_Mm10_DIR", "")
)
if (nzchar(d)) d else NULL
d <- getOption(
"methylTFRAnnotationMm10.datadir",
Sys.getenv("METHYL_TFRANNOTATION_Mm10_DIR", "")
)
if (nzchar(d)) d else NULL
}

#' @keywords internal
Expand All @@ -24,39 +20,39 @@
#' on the hub, and so users who have downloaded the files by hand
#' can point at them.
.resolve_resource <- function(file) {
dir <- .local_dir()
if (!is.null(dir)) {
path <- file.path(dir, file)
if (!file.exists(path)) {
stop(
"Annotation file not found: ", path,
"\n(reading from a local directory because ",
.PKG_NAME, ".datadir is set)"
)
dir <- .local_dir()
if (!is.null(dir)) {
path <- file.path(dir, file)
if (!file.exists(path)) {
stop(
"Annotation file not found: ", path,
"\n(reading from a local directory because ",
.PKG_NAME, ".datadir is set)"
)
}
return(readRDS(path))
}
return(readRDS(path))
}
hub <- AnnotationHub::AnnotationHub()
hits <- AnnotationHub::query(hub, .PKG_NAME)
idx <- match(file, hits$title)
if (is.na(idx)) {
stop(
"Resource not found on AnnotationHub: ", file,
"\nAvailable: ", paste(hits$title, collapse = ", ")
)
}
hits[[names(hits)[idx]]]
hub <- AnnotationHub::AnnotationHub()
hits <- AnnotationHub::query(hub, .PKG_NAME)
idx <- match(file, hits$title)
if (is.na(idx)) {
stop(
"Resource not found on AnnotationHub: ", file,
"\nAvailable: ", paste(hits$title, collapse = ", ")
)
}
hits[[names(hits)[idx]]]
}

#' @keywords internal
#' @noRd
.check_motif_set <- function(motifSet) {
motifSet <- tolower(motifSet)
if (length(motifSet) != 1 || !motifSet %in% .MOTIF_SETS) {
stop(
"Invalid motif set. Available: ",
paste(.MOTIF_SETS, collapse = ", ")
)
}
motifSet
motifSet <- tolower(motifSet)
if (length(motifSet) != 1 || !motifSet %in% .MOTIF_SETS) {
stop(
"Invalid motif set. Available: ",
paste(.MOTIF_SETS, collapse = ", ")
)
}
motifSet
}
4 changes: 2 additions & 2 deletions R/getGCfreq.R
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,6 @@
#'
#' @export
getGCfreq <- function(motifSet = "altius") {
motifSet <- .check_motif_set(motifSet)
.resolve_resource(paste0(motifSet, "_motif_gcfreq.rds"))
motifSet <- .check_motif_set(motifSet)
.resolve_resource(paste0(motifSet, "_motif_gcfreq.rds"))
}
4 changes: 2 additions & 2 deletions R/getGenomeGC.R
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,6 @@
#'
#' @export
getGenomeGC <- function(assembly = .ASSEMBLY) {
assembly <- tolower(assembly)
.resolve_resource(paste0("genomewide_GC_", assembly, ".rds"))
assembly <- tolower(assembly)
.resolve_resource(paste0("genomewide_GC_", assembly, ".rds"))
}
6 changes: 3 additions & 3 deletions R/getTFbindsites.R
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
#'
#' # Mocking a GRangesList as expected by the function output
#' mock_grl <- GenomicRanges::GRangesList(
#' mock_motif_1 = GenomicRanges::GRanges("chr1:100-200")
#' mock_motif_1 = GenomicRanges::GRanges("chr1:100-200")
#' )
#' saveRDS(mock_grl, mock_file)
#'
Expand All @@ -30,6 +30,6 @@
#'
#' @export
getTFbindsites <- function(motifSet = "altius") {
motifSet <- .check_motif_set(motifSet)
.resolve_resource(paste0(motifSet, "_tf_bindsites.rds"))
motifSet <- .check_motif_set(motifSet)
.resolve_resource(paste0(motifSet, "_tf_bindsites.rds"))
}
2 changes: 1 addition & 1 deletion man/getTFbindsites.Rd

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

18 changes: 9 additions & 9 deletions tests/testthat/test-accessors.R
Original file line number Diff line number Diff line change
@@ -1,17 +1,17 @@
test_that("motif set validation rejects unknown sets", {
expect_error(getGCfreq("not_a_motif_set"), "Invalid motif set")
expect_error(getGCfreq(c("a", "b")), "Invalid motif set")
expect_error(getGCfreq("not_a_motif_set"), "Invalid motif set")
expect_error(getGCfreq(c("a", "b")), "Invalid motif set")
})

test_that("motif set validation is case insensitive", {
expect_identical(methylTFRAnnotationMm10:::.check_motif_set("ALTIUS"), "altius")
expect_identical(methylTFRAnnotationMm10:::.check_motif_set("ALTIUS"), "altius")
})

test_that("metadata.csv covers every declared motif set", {
md <- utils::read.csv(system.file("extdata", "metadata.csv", package = "methylTFRAnnotationMm10"))
for (s in methylTFRAnnotationMm10:::.MOTIF_SETS) {
expect_true(any(grepl(paste0("^", s, "_"), md$Title)),
info = s
)
}
md <- utils::read.csv(system.file("extdata", "metadata.csv", package = "methylTFRAnnotationMm10"))
for (s in methylTFRAnnotationMm10:::.MOTIF_SETS) {
expect_true(any(grepl(paste0("^", s, "_"), md$Title)),
info = s
)
}
})
6 changes: 3 additions & 3 deletions vignettes/methylTFRAnnotationMm10.Rmd
Original file line number Diff line number Diff line change
Expand Up @@ -30,8 +30,8 @@ hypomethylated; without the correction that difference in sequence
composition would read as a difference in factor activity.

The data are too large to ship inside the package, so they are
hosted on `AnnotationHub` and downloaded on first use. Subsequent
calls are served from the local `AnnotationHub` cache.
hosted on AnnotationHub and downloaded on first use. Subsequent
calls are served from the local AnnotationHub cache.


```{r dummy, include = FALSE}
Expand All @@ -40,7 +40,7 @@ mock_dir <- tempdir()

# 1. Mock TF bindsites
mock_grl <- GenomicRanges::GRangesList(
mock_motif_1 = GenomicRanges::GRanges("chr1:100-200")
mock_motif_1 = GenomicRanges::GRanges("chr1:100-200")
)
saveRDS(mock_grl, file.path(mock_dir, "altius_tf_bindsites.rds"))

Expand Down