Skip to content
Open
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
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -5,3 +5,5 @@ BEDbaseR.Rproj
.httr-oauth
/doc/
/Meta/

.DS_Store
18 changes: 12 additions & 6 deletions R/bedbaser.R
Original file line number Diff line number Diff line change
Expand Up @@ -292,6 +292,7 @@ bb_example <- function(bedbase, rec_type = c("bed", "bedset")) {
#' @param id integer(1) record or object identifier
#' @param full logical(1) (default \code{FALSE}) include full record with
#' stats, files, and metadata
#' @param test_request boolean() (default \code{FALSE}) internal parameter for testing purposes
#'
#' @return list() metadata
#'
Expand All @@ -305,15 +306,16 @@ bb_example <- function(bedbase, rec_type = c("bed", "bedset")) {
#' bb_metadata(bedbase, ex_bedset$id)
#'
#' @export
bb_metadata <- function(bedbase, id, full = FALSE) {
bb_metadata <- function(bedbase, id, full = FALSE, test_request = FALSE) {
rsp <- bedbase$get_bed_metadata_v1_bed__bed_id__metadata_get(
bed_id = id,
full = full
)
if (rsp$status_code != 200) {
rsp <- bedbase$get_bedset_metadata_v1_bedset__bedset_id__metadata_get(
bedset_id = id,
full = full
full = full,
test_request = test_request,
)
}
result <- httr::content(rsp)
Expand Down Expand Up @@ -379,6 +381,7 @@ bb_list_beds <- function(bedbase, genome = NULL, bed_compliance = NULL,
#' @param query character() (default \code{""}) keyword
#' @param limit integer(1) (default \code{1000}) maximum records
#' @param offset integer(1) (default \code{0}) page token of records
#' @param test_request boolean() (default \code{FALSE}) internal parameter for testing purposes
#'
#' @return [tibble][tibble::tibble] of BEDset records
#'
Expand All @@ -387,11 +390,12 @@ bb_list_beds <- function(bedbase, genome = NULL, bed_compliance = NULL,
#' bb_list_bedsets(bedbase)
#'
#' @export
bb_list_bedsets <- function(bedbase, query = "", limit = 1000, offset = 0) {
bb_list_bedsets <- function(bedbase, query = "", limit = 1000, offset = 0, test_request = FALSE) {
rsp <- bedbase$list_bedsets_v1_bedset_list_get(
query = query,
limit = limit,
offset = offset
offset = offset,
test_request = test_request
)
recs <- httr::content(rsp)
results <- tibble::tibble()
Expand Down Expand Up @@ -460,6 +464,7 @@ bb_beds_in_bedset <- function(bedbase, bedset_id) {
#' @param assay character() (default NULL) assay to search
#' @param limit integer(1) (default \code{10}) maximum number of results
#' @param offset integer(1) (default \code{0}) page offset of results
#' @param test_request boolean() (default \code{FALSE}) internal parameter for testing purposes
#'
#' @return [tibble][tibble::tibble] of results
#'
Expand All @@ -469,7 +474,7 @@ bb_beds_in_bedset <- function(bedbase, bedset_id) {
#'
#' @export
bb_bed_text_search <- function(bedbase, query, genome = NULL, assay = NULL,
limit = 10, offset = 0) {
limit = 10, offset = 0, test_request = FALSE) {
query <- utils::URLencode(query, reserved = TRUE)
if (!is.null(genome))
genome <- utils::URLencode(genome, reserved = TRUE)
Expand All @@ -480,7 +485,8 @@ bb_bed_text_search <- function(bedbase, query, genome = NULL, assay = NULL,
genome = genome,
assay = assay,
limit = limit,
offset = offset
offset = offset,
test_request = test_request
)
recs <- httr::content(rsp)
results <- tibble::tibble()
Expand Down
12 changes: 12 additions & 0 deletions inst/service/bedbase/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,3 +26,15 @@ Convert openapi.json from OpenAPI 3.1 to 3.0:
Convert from OpenAPI 3.0 to Swagger 2.0:

api-spec-converter -f openapi_3 -t swagger_2 openapi_3_0.json > api.yaml

### Development Note:

The following endpoints take a hidden parameter `test_request` for internal testing purposes:

- bed_metadata
- bed_text_to_bed_search
- bedset_metadata
- bed_set_search
- downloading files

The `test_request` is TRUE, the request will not be counted in statistics.
35 changes: 35 additions & 0 deletions inst/service/bedbase/api.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -369,6 +369,13 @@
"name": "offset",
"required": false,
"type": "integer"
},
{
"default": false,
"in": "query",
"name": "test_request",
"required": false,
"type": "boolean"
}
],
"responses": {
Expand Down Expand Up @@ -532,6 +539,13 @@
"in": "query",
"name": "full",
"required": false
},
{
"default": false,
"in": "query",
"name": "test_request",
"required": false,
"type": "boolean"
}
],
"responses": {
Expand Down Expand Up @@ -1031,6 +1045,13 @@
"name": "offset",
"required": false,
"type": "integer"
},
{
"default": false,
"in": "query",
"name": "test_request",
"required": false,
"type": "boolean"
}
],
"responses": {
Expand Down Expand Up @@ -1109,6 +1130,13 @@
"name": "full",
"required": false,
"type": "boolean"
},
{
"default": false,
"in": "query",
"name": "test_request",
"required": false,
"type": "boolean"
}
],
"responses": {
Expand Down Expand Up @@ -1390,6 +1418,13 @@
"name": "file_path",
"required": true,
"type": "string"
},
{
"default": false,
"in": "query",
"name": "test_request",
"required": false,
"type": "boolean"
}
],
"responses": {
Expand Down
5 changes: 4 additions & 1 deletion man/bb_bed_text_search.Rd

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

10 changes: 9 additions & 1 deletion man/bb_list_bedsets.Rd

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

4 changes: 3 additions & 1 deletion man/bb_metadata.Rd

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

2 changes: 1 addition & 1 deletion man/bedbaser-package.Rd

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

18 changes: 10 additions & 8 deletions tests/testthat/test-bedbaser.R
Original file line number Diff line number Diff line change
Expand Up @@ -18,14 +18,14 @@ test_that("bb_example has 'bed_ids' given rec_type 'bedset'", {
})

test_that("bb_metadata returns metadata for BEDs", {
ex_metadata <- httr::content(bedbase$get_bed_metadata_v1_bed__bed_id__metadata_get(ex_bed$id, TRUE))
bed_metadata <- bb_metadata(bedbase, ex_bed$id, TRUE)
ex_metadata <- httr::content(bedbase$get_bed_metadata_v1_bed__bed_id__metadata_get(ex_bed$id, TRUE, test_request = TRUE))
bed_metadata <- bb_metadata(bedbase, ex_bed$id, TRUE, test_request = TRUE)
expect_identical(ex_metadata, bed_metadata)
})

test_that("bb_metadata returns metadata for BEDsets", {
ex_bedset_metadata <- httr::content(bedbase$get_bedset_metadata_v1_bedset__bedset_id__metadata_get(ex_bedset$id, TRUE))
bedset_metadata <- bb_metadata(bedbase, ex_bedset$id, TRUE)
ex_bedset_metadata <- httr::content(bedbase$get_bedset_metadata_v1_bedset__bedset_id__metadata_get(ex_bedset$id, TRUE, test_request = TRUE))
bedset_metadata <- bb_metadata(bedbase, ex_bedset$id, TRUE, test_request = TRUE)
expect_identical(ex_bedset_metadata, bedset_metadata)
})

Expand All @@ -49,13 +49,14 @@ test_that("bb_list_beds returns same number of results for the mm39 genome", {
test_that("bb_list_bedsets returns same number for query 'alzheimer'", {
bedsets_raw <- httr::content(bedbase$list_bedsets_v1_bedset_list_get(
query = "alzheimer",
limit = 5000
limit = 5000,
test_request = TRUE
))
bedsets_names_bed_ids_list <- lapply(bedsets_raw$results, `[`, c("id", "bed_ids"))
bedsets_from_raw <- dplyr::bind_rows(bedsets_names_bed_ids_list) |>
tidyr::unnest(cols = c(bed_ids))
bedset_ids <- bedsets_from_raw$id |> unique()
bedsets <- bb_list_bedsets(bedbase, query = "alzheimer", limit = 5000)
bedsets <- bb_list_bedsets(bedbase, query = "alzheimer", limit = 5000, test_request = TRUE)
expect_equal(bedset_ids, bedsets$id)
})

Expand All @@ -82,14 +83,15 @@ test_that("bb_beds_in_bedset returns expected bed_ids", {
})

test_that("bb_bed_text_search returns results scored against the query", {
beds <- bb_bed_text_search(bedbase, "hg38") |>
beds <- bb_bed_text_search(bedbase, "hg38", test_request = TRUE) |>
dplyr::arrange(id)
ex_beds <- httr::content(bedbase$text_to_bed_search_v1_bed_search_text_get(
query = "hg38",
genome = NULL,
assay = NULL,
limit = 10,
offset = 0
offset = 0,
test_request = TRUE
))
ex_beds <- purrr::map_depth(.x = ex_beds$results, 1, \(y) unlist(y)) |>
dplyr::bind_rows() |>
Expand Down