Nothing
#' GET features of protein(s) from UniProt API
#'
#' This function creates the URL required to query the UniProt API and returns
#' the features of the protein or proteins in JSON format. It uses the GET()
#' function from the httr package.
#'
#' @param proteins_acc A vector of length 1 with one or more UniProt accession
#' numbers separated by spaces.
#'
#' @return If there is internet access and the UniProt accession numbers are
#' good, the function will return a list of lists. The list will be of length
#' equivalent to the number of Uniprot accession numbers supplied. The lists
#' inside will be of length 6 and will contain information about the proteins
#' and the features.
#'
#' @examples
#' # Requires internet access
#' prot_data <- get_features("Q04206 Q01201 Q04864 P19838 Q00653")
#'
#' @import httr
#'
#' @export
# get_features function to GET protein data from Uniprot
get_features <- function(proteins_acc){
# accession numbers need to be combined with "%2C" for Uniprot API
proteins_acc_url <- gsub(" ", "%2C", proteins_acc)
# this is the baseurl for a multiple features query
baseurl<-
"https://www.ebi.ac.uk/proteins/api/features?offset=0&size=100&accession="
# make url to GET features for multiple accession numbers
url <- paste0(baseurl, proteins_acc_url)
# basic function is GET() which accesses the API
# accept_json() argument gives a JSON object
prots_feat <- httr::GET(url, httr::accept_json())
code <- httr::status_code(prots_feat) # if it returns a 200 - that's good
if(code == 200){
print("Download has worked")
} else {print(paste("An error has occured. Code:", code))}
# extract content() - gives a list with length = number of acc no
prots_feat_red <- httr::content(prots_feat)
return(prots_feat_red)
}
### error handling required:
# no internet connection
# one or more accession numbers not in uniprot - warning
### enhanced functionality for future:
# R object with accession numbers
# other separation options
# import file (csv, tsv, excel)
# import from other Bioconductor packages
# formats other than accession numbers?
# - other databases...
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.