R client for interacting with the bioRxiv API
Install from CRAN:
# Install package install.packages("rbiorxiv") # Load package library(rbiorxiv)
Or install the development version from Github (using the devtools package):
# Install package install.packages("devtools") devtools::install_github("nicholasmfraser/rbiorxiv") # Load package library(rbiorxiv)
The main functions in rbiorxiv
generally conform to the API endpoints outlined in the API documentation (see here).
Retrieve details of either a set of preprints deposited between two dates, or lookup a single preprint by DOI:
# Get details of preprints deposited between 2018-01-01 and 2018-01-10# By default, only the first 100 records are returned biorxiv_content(from="2018-01-01", to="2018-01-10") # Set a limit to return more than 100 records biorxiv_content(from="2018-01-01", to="2018-01-10", limit=200) # Or set limit as "*" to return all records biorxiv_content(from="2018-01-01", to="2018-01-10", limit="*") # Skip the first 100 records biorxiv_content(from="2018-01-01", to="2018-01-10", limit=200, skip=100) # By default, data is returned in a list. Use the "format" argument to specify# that data should be returned in "json" format or as a data frame ("df"). biorxiv_content(from="2018-01-01", to="2018-01-10", format="df") # Lookup a preprint by DOI biorxiv_content(doi="10.1101/833400")
The bioRxiv API also allows querying of details of medRxiv preprints, by supplying a “server” parameter. This can be specified as follows:
# Get details of medRxiv preprints deposited between 2020-01-01 and 2020-01-02 biorxiv_content(server="medrxiv", from="2020-01-01", to="2020-01-02")
The default server parameter is always “biorxiv”. Note that the following functions documented below are limited to bioRxiv only (at the time of writing).
Retrieve details of published articles associated with bioRxiv preprints that were published between two dates:
# Get details of all articles published between 2018-01-01 and 2018-01-10 biorxiv_published(from="2018-01-01", to="2018-01-10", limit="*", format="df")
Retrieve details of articles published by a specific publisher (specified by their doi prefix) between two dates:
# Get details of all articles published by eLife (prefix = 10.7554) between 2018-01-01 and 2018-01-10 biorxiv_publisher(prefix="10.7554", from="2018-01-01", to="2018-01-10", limit="*", format="df")
Retrieve summary statistics for bioRxiv content (e.g. number of preprints deposited):
# Get summary statistics at a montly level biorxiv_summary(interval="m") # Get summary statistics at a yearly level biorxiv_summary(interval="y")
Retrieve summary statistics for usage of bioRxiv content (e.g. number of pdf downloads):
# Get usage statistics at a montly level biorxiv_usage(interval="m") # Get usage statistics at a yearly level biorxiv_usage(interval="y")
No rate or usage limits are currently specified for the bioRxiv API, however all functions in this package enforce a 1-second timeout per API call when iterating through multiple pages of results (a single API call currently returns a maximum of 100 results per page).
library(tidyverse) # Plot the cumulative number of new preprints deposited per month# Note that month dates are returned in YYYY-MM format - here we convert# month dates to YYYY-MM-DD format to make plotting easier biorxiv_summary(interval="m", format="df") %>% mutate(month= as.Date(paste0(month, "-01"), format="%Y-%m-%d")) %>% ggplot() + geom_bar(aes(x=month, y=new_papers_cumulative), fill="#cccccc", stat="identity") + labs(x="", y="Submissions", title="Cumulative new bioRxiv submissions") + scale_x_date(date_breaks="3 months", date_minor_breaks="3 months", date_labels="%b-%y", expand= c(0,0)) + scale_y_continuous(labels=scales::comma) + theme_minimal() + theme( axis.text.x= element_text(angle=90, vjust=0.5), axis.title.y= element_text(margin= margin(t=0, r=10, b=0, l=0)), plot.title= element_text(face="bold") )
library(tidyverse) # Plot the cumulative number of PDF downloads per month# Here month dates are returned already in YYYY-MM-DD format biorxiv_usage(interval="m", format="df") %>% mutate(month= as.Date(month)) %>% ggplot() + geom_bar(aes(x=month, y=pdf_cumulative), fill="#cccccc", stat="identity") + labs(x="", y="PDF downloads (cumulative)", title="Number of bioRxiv PDF downloads over time") + scale_x_date(date_breaks="3 months", date_minor_breaks="3 months", date_labels="%b-%y", expand= c(0,0)) + scale_y_continuous(labels=scales::comma) + theme_minimal() + theme( axis.text.x= element_text(angle=90, vjust=0.5), axis.title.y= element_text(margin= margin(t=0, r=10, b=0, l=0)), plot.title= element_text(face="bold") )
library(tidyverse) # Calculate the number of days between preprint deposition and # journal publication. Plot results as a histogram. biorxiv_published(from="2013-11-01", to="2018-12-31", limit="*", format="df") %>% mutate(days= as.Date(published_date) - as.Date(preprint_date)) %>% ggplot() + geom_histogram(aes(as.numeric(days)), binwidth=1, fill="#cccccc") + labs(x="Days between preprint deposition and journal publication", y="Number of articles", title="Time to publication") + coord_cartesian(xlim= c(-100, 1000)) + theme_minimal() + theme( axis.title.y= element_text(margin= margin(t=0, r=10, b=0, l=0)), plot.title= element_text(face="bold") )
rbiorxiv
aims to provide a simple wrapper around the main endpoints of the bioRxiv API, and return data for further analysis/manipulation by the R user. Below are some additional packages that provide distinct but related functionality when working with bioRxiv and medRxiv data:
medrxivr
, developed by Luke McGuiness and part of the ROpenSci ecosystem, provides users with more powerful tools to download bioRxiv and medRxiv data, and search downloaded preprint records using regular expressions and Boolean login.medrxivr
also allows users to export their search results to a .BIB file for easy import to a reference manager, and to download the full-text PDFs of preprints matching their search criteria.