Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
3d20af4
issue #5, Migrate to httr2 on function named request
danymukesha Aug 27, 2024
fd78bb3
issue #5, Put in evidence lines to be deprecated or removed
danymukesha Aug 28, 2024
034bed2
Add tmp dir
ramiromagno Sep 1, 2024
45fbe47
Merge from main
ramiromagno Sep 1, 2024
fc07cd5
Cleaning up
ramiromagno Sep 1, 2024
2947266
Add functions `req()` and `reqs()`
ramiromagno Sep 1, 2024
ff44795
Add basic tests
ramiromagno Sep 2, 2024
d2a1d61
add helper functions for http headers
danymukesha Sep 5, 2024
8eb4f53
integrate helper functions in req
danymukesha Sep 5, 2024
ccf2b52
rename user agent unit test and updated function from user_agent_id t…
danymukesha Sep 5, 2024
19fd463
add tests for req, http-headers, base-ulr functions
danymukesha Sep 5, 2024
e0de7d6
add testthat among the imports on DESCRIPTION
danymukesha Sep 5, 2024
b9bd4c2
add some more tests
danymukesha Sep 5, 2024
87c82da
Refactoring `req()` / `req_headers()`
ramiromagno Sep 8, 2024
42cb877
add tests for reqs, some updates on reqs, add `get` & `post` functions
danymukesha Sep 20, 2024
8f6875c
remove R/http_headers.R
danymukesha Sep 20, 2024
a6f3c6c
handle rate limits on number of requests
danymukesha Sep 24, 2024
1c6328c
add some error handling
danymukesha Sep 26, 2024
74af789
removed unnecessary break statements
danymukesha Sep 27, 2024
3ba5684
add low-level function for the endpoints for `Comparative Genomics` f…
danymukesha Oct 16, 2024
8834ca9
started `Cross References` and add some small updates
danymukesha Oct 18, 2024
788a4f2
add low-level functions for the endpoints for `Cross References` fro…
danymukesha Oct 18, 2024
33b1b23
Re-wrote the already existing functions from `versioning.R`
danymukesha Nov 20, 2024
501240d
correct some bugs
danymukesha Nov 20, 2024
6a81221
remove `glue::glue` from the end-points functions and passed all tests
danymukesha Dec 4, 2024
2997a3a
start adding and documenting the optional parameters to the endpoints…
danymukesha Dec 4, 2024
84e8c08
add endpoints from `Information`, here is the original list: https://…
danymukesha Dec 24, 2024
d4b134d
correct error in function: get_analysis_info("homo_sapiens")
danymukesha Dec 24, 2024
f751991
add functions and unit tests for endpoints from `Linkage Disequilibrium`
danymukesha Feb 14, 2025
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
1 change: 1 addition & 0 deletions .Rbuildignore
Original file line number Diff line number Diff line change
Expand Up @@ -9,3 +9,4 @@
^pkgdown$
^\.travis\.yml$
^\.github$
^tmp$
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -5,3 +5,4 @@
inst/doc
docs/
docs
tmp/
4 changes: 3 additions & 1 deletion DESCRIPTION
100644 → 100755
Original file line number Diff line number Diff line change
Expand Up @@ -49,11 +49,13 @@ Imports:
memoise,
httr2,
tidyjson,
tibblify
tibblify,
testthat
Suggests:
knitr,
rmarkdown
VignetteBuilder: knitr
URL: https://github.com/patterninstitute/ensemblr, https://www.pattern.institute/ensemblr/
BugReports: https://github.com/patterninstitute/ensemblr/issues
Config/Needs/website: patterninstitute/chic
Roxygen: list(markdown = TRUE)
46 changes: 45 additions & 1 deletion NAMESPACE
100644 → 100755
Original file line number Diff line number Diff line change
@@ -1,33 +1,77 @@
# Generated by roxygen2: do not edit by hand

export("%>%")
export(._get_divisions)
export(._get_rest_version)
export(._get_software_version)
export(._get_variation_sources)
export(genomic_range)
export(get_alignment_by_region)
export(get_analyses)
export(get_analysis_info)
export(get_assemblies)
export(get_assembly_info)
export(get_biotypes)
export(get_biotypes_by_name)
export(get_biotypes_groups)
export(get_cafe_genetree_by_id)
export(get_cafe_genetree_by_species_id)
export(get_cafe_genetree_by_symbol)
export(get_compara_methods)
export(get_compara_species_sets)
export(get_comparas)
export(get_consequence_types)
export(get_cytogenetic_bands)
export(get_data)
export(get_data_version2)
export(get_data_versions)
export(get_divisions)
export(get_eg_version)
export(get_ensembl_genomes_version)
export(get_external_dbs)
export(get_genetree_by_id)
export(get_genetree_by_species_id)
export(get_genetree_by_symbol)
export(get_genome_info)
export(get_genome_info_by_accession)
export(get_genome_info_by_assembly)
export(get_genome_info_by_division)
export(get_genome_info_by_taxonomy)
export(get_homology_by_species_id)
export(get_homology_by_symbol)
export(get_id)
export(get_individuals)
export(get_karyotypes)
export(get_ld_by_variant)
export(get_ld_values_by_region)
export(get_ld_variants_by_pair)
export(get_ld_variants_by_pair_combn)
export(get_ld_variants_by_range)
export(get_ld_variants_by_window)
export(get_pairwise_ld_values)
export(get_population_individuals)
export(get_populations)
export(get_region_info)
export(get_rest_version)
export(get_rest_version2)
export(get_software_version)
export(get_software_version2)
export(get_species)
export(get_species_info)
export(get_species_populations)
export(get_toplevel_sequence_info)
export(get_toplevel_sequences)
export(get_variant_consequences)
export(get_variation_sources)
export(get_versioning)
export(get_versioning2)
export(get_xrefs_by_ensembl_id)
export(get_xrefs_by_gene)
export(get_xrefs_by_id)
export(get_xrefs_by_name)
export(get_xrefs_by_symbol)
export(is_ensembl_reachable)
export(ping_service)
importFrom(magrittr,"%>%")
importFrom(memoise,memoise)
importFrom(rlang,.data)
importFrom(tibble,tibble)
28 changes: 14 additions & 14 deletions R/analysis.R
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
analysis_tbl <- function(
species_name = character(),
database = character(),
analysis = character()) {
species_name = character(),
database = character(),
analysis = character()
) {
tbl <- tibble::tibble(
species_name = species_name,
database = database,
Expand All @@ -11,14 +12,13 @@ analysis_tbl <- function(
}

json_list_to_analysis_tbl <- function(species_name, json_list) {

tbl <- purrr::imap_dfr(
json_list,
.f = ~ analysis_tbl(
species_name = species_name,
database = .x,
analysis = .y
.f = ~ analysis_tbl(species_name = species_name,
database = .x,
analysis = .y)
)
)

# Drop rows if all columns except species_name are NA
return(tidyr::drop_na(tbl, -species_name))
Expand Down Expand Up @@ -54,6 +54,7 @@ get_analyses <- function(species_name,
verbose = FALSE,
warnings = TRUE,
progress_bar = TRUE) {

# Assert species_name argument.
assert_species_name(species_name)
# Assert verbose argument.
Expand All @@ -67,8 +68,8 @@ get_analyses <- function(species_name,
e <- urltools::url_encode

resource_urls <- glue::glue(
"/info/analysis/",
"{e(species_name)}?"
'/info/analysis/',
'{e(species_name)}?'
)

# Usually we'd use purrr::map here but we opted for plyr::llply
Expand All @@ -89,13 +90,11 @@ get_analyses <- function(species_name,
)

# Only keep those responses that responded successfully, i.e. with status == "OK".
responses_ok <- purrr::keep(responses, ~ identical(.x$status, "OK"))
responses_ok <- purrr::keep(responses, ~ identical(.x$status, 'OK'))

# If none of the responses were successful then return an empty linkage
# disequilibrium tibble.
if (rlang::is_empty(responses_ok)) {
return(analysis_tbl())
}
if (rlang::is_empty(responses_ok)) return(analysis_tbl())

tbl <- purrr::imap_dfr(
.x = responses_ok,
Expand All @@ -106,4 +105,5 @@ get_analyses <- function(species_name,
analysis <- rlang::expr(analysis)

return(dplyr::arrange(tbl, species_name, !!database, !!analysis))

}
90 changes: 90 additions & 0 deletions R/api-versioning.R
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
##----Re-wrote the already existing functions from `versioning.R`----

#' Get REST API version
#'
#' Retrieve the version of the Ensembl REST API currently in use.
#' The version format is `major.minor.point`.
#' @return A numeric value representing the REST API version components:
#' `major`, `minor`, and `point`.
#' @source \url{https://github.com/Ensembl/ensembl-rest/wiki/API-Versioning}
#' @examples
#' \dontrun{
#' rest_version <- get_rest_version()
#' print(rest_version)
#' }
#' @export
get_rest_version2 <- function() {
res <- "info/rest"
version <- ensemblr:::get(res)[[1]] |>
httr2::resp_body_json()
version$release
}

#' Get data version
#'
#' Retreive the version(s) of the Ensembl data that the REST API is accessing.
#' @return A numeric value representing of data release version.
#' @source \url{https://github.com/Ensembl/ensembl-rest/wiki/API-Versioning}
#' @examples
#' \dontrun{
#' data_version <- get_data_version()
#' print(data_version)
#' }
#' @export
get_data_version2 <- function() {
res <- "info/data"
version <- ensemblr:::get(res)[[1]] |>
httr2::resp_body_json()
version$release |> as.numeric()
}

#' Get API software version
#'
#' Retreive the version of the Ensembl software the REST API is using.
#' @return A numeric value representing the software version.
#' @source \url{https://github.com/Ensembl/ensembl-rest/wiki/API-Versioning}
#' @examples
#' \dontrun{
#' software_version <- get_software_version()
#' print(software_version)
#' }
#' @export
get_software_version2 <- function() {
res <- "info/software"
version <- ensemblr:::get(res)[[1]] |>
httr2::resp_body_json()
version$release |> as.numeric()
}

#' Get Ensembl REST versions
#'
#' Retreive the versions of the different entities involved in the
#' REST API requests. When accessing the Ensembl REST API, you are actually
#' accessing three interconnected entities:
#' \itemize{
#' \item Ensembl databases (\code{data}).
#' \item Perl API (\code{software}).
#' \item REST API (\code{rest}).
#' }
#' \figure{ensembl_api_versioning_wo_fonts.svg}
#'
#' @return A named list of three elements: \code{data}, \code{software} and
#' \code{rest}.
#'
#' @examples
#' # Get the versions of the different entities involved in the REST API
#' # requests.
#' get_versioning()
#'
#' @export
get_versioning2 <- function() {
data_version <- get_data_version2()
software_version <- get_software_version2()
rest_version <- get_rest_version2()

api_versions <- list(data = data_version,
software = software_version,
rest = rest_version)

return(api_versions)
}
52 changes: 27 additions & 25 deletions R/archive.R
Original file line number Diff line number Diff line change
@@ -1,13 +1,14 @@
id_tbl <- function(
id = character(),
id_latest = character(),
type = character(),
id_version = integer(),
release = integer(),
is_current = logical(),
genome_assembly_name = character(),
peptide = character(),
possible_replacement = list()) {
id = character(),
id_latest = character(),
type = character(),
id_version = integer(),
release = integer(),
is_current = logical(),
genome_assembly_name = character(),
peptide = character(),
possible_replacement = list()
) {
tbl <- tibble::tibble(
id = id,
id_latest = id_latest,
Expand All @@ -24,16 +25,17 @@ id_tbl <- function(
}

json_list_to_id_tbl <- function(json_list) {

tbl <- id_tbl(
id = purrr::pluck(json_list, "id", .default = NA_character_),
id_latest = purrr::pluck(json_list, "latest", .default = NA_character_),
type = purrr::pluck(json_list, "type", .default = NA_character_),
id_version = as.integer(purrr::pluck(json_list, "version", .default = NA_integer_)),
release = as.integer(purrr::pluck(json_list, "release", .default = NA_integer_)),
is_current = purrr::pluck(json_list, "is_current", .default = NA) == "1",
genome_assembly_name = purrr::pluck(json_list, "assembly", .default = NA_character_),
peptide = purrr::pluck(json_list, "peptide", .default = NA_character_),
possible_replacement = purrr::pluck(json_list, "possible_replacement", .default = list(character()))
id = purrr::pluck(json_list, 'id', .default = NA_character_),
id_latest = purrr::pluck(json_list, 'latest', .default = NA_character_),
type = purrr::pluck(json_list, 'type', .default = NA_character_),
id_version = as.integer(purrr::pluck(json_list, 'version', .default = NA_integer_)),
release = as.integer(purrr::pluck(json_list, 'release', .default = NA_integer_)),
is_current = purrr::pluck(json_list, 'is_current', .default = NA) == '1',
genome_assembly_name = purrr::pluck(json_list, 'assembly', .default = NA_character_),
peptide = purrr::pluck(json_list, 'peptide', .default = NA_character_),
possible_replacement = purrr::pluck(json_list, 'possible_replacement', .default = list(character()))
)

return(tbl)
Expand Down Expand Up @@ -71,13 +73,15 @@ json_list_to_id_tbl <- function(json_list) {
#' }
#'
#' @examples
#' get_id(c("ENSDARE00000830915", "ENSG00000248378", "ENSDART00000033574", "ENSP00000000233"))
#' get_id(c('ENSDARE00000830915', 'ENSG00000248378', 'ENSDART00000033574', 'ENSP00000000233'))
#'
#' @export
get_id <- function(id,
verbose = FALSE,
warnings = TRUE,
progress_bar = TRUE) {


# Assert verbose argument.
assertthat::assert_that(assertthat::is.flag(verbose))
# Assert warnings argument.
Expand All @@ -89,8 +93,8 @@ get_id <- function(id,
e <- urltools::url_encode

resource_urls <- glue::glue(
"/archive/id/",
"{e(id)}?"
'/archive/id/',
'{e(id)}?'
)

# Usually we'd use purrr::map here but we opted for plyr::llply
Expand All @@ -111,13 +115,11 @@ get_id <- function(id,
)

# Only keep those responses that responded successfully, i.e. with status == "OK".
responses_ok <- purrr::keep(responses, ~ identical(.x$status, "OK"))
responses_ok <- purrr::keep(responses, ~ identical(.x$status, 'OK'))

# If none of the responses were successful then return an empty linkage
# disequilibrium tibble.
if (rlang::is_empty(responses_ok)) {
return(id_tbl())
}
if (rlang::is_empty(responses_ok)) return(id_tbl())

return(
purrr::imap_dfr(
Expand Down
Loading