18 API Users’ Guide
18.1 ACCEPT API
Cloud Access through R
Users can access models on the Peer Models Network using the peermodels R package, available on GitHub. The following code snippet illustrates how you can run the model for example patients provided in the accept package:
remotes::install_github (resplab/peermodels)
library(peermodels)
input <- get_default_input("accept", api_key = YOUR_API_KEY)
results <- model_run(input)
Cloud Access through Python
import json
import requests
url = 'https://prism.peermodelsnetwork.com/route/accept/run'
headers = {'x-prism-auth-user': YOUR_API_KEY}
model_run = requests.post(url, headers=headers,
json = {"func":["prism_model_run"],"model_input":[{"ID": "10001","male": 1,"age": 57,"smoker": 0,"oxygen": 0,"statin": 0,"LAMA": 1,"LABA": 1,"ICS": 1,"FEV1": 51,"BMI": 18,"SGRQ": 63,"LastYrExacCount": 2,"LastYrSevExacCount": 1,"randomized_azithromycin": 0,"randomized_statin": 0,"randomized_LAMA": 0,"randomized_LABA": 0,"randomized_ICS": 0, "random_sampling_N" : 1000, "random_distribution_iteration" : 20000, "calculate_CIs" : "TRUE"}]})
print(model_run)
results = json.loads(model_run.text)
print(results)
Cloud Access through Linux Bash
In Ubuntu, you can call the API with curl:
curl \
-X POST \
-H "x-prism-auth-user: REPLACE_WITH_API_KEY" \
-H "Content-Type: application/json" \
-d '{"func":["prism_model_run"],"model_input":[{"ID": "10001","male": 1,"age": 57,"smoker": 0,"oxygen": 0,"statin": 0,"LAMA": 1,"LABA": 1,"ICS": 1,"FEV1": 51,"BMI": 18,"SGRQ": 63,"LastYrExacCount": 2,"LastYrSevExacCount": 1,"randomized_azithromycin": 0,"randomized_statin": 0,"randomized_LAMA": 0,"randomized_LABA": 0,"randomized_ICS": 0, "random_sampling_N" : 1000, "random_distribution_iteration" : 20000, "calculate_CIs" : "TRUE"}]}' \
https://prism.peermodelsnetwork.com/route/accept/run
18.2 BODE API
Cloud Access through R
Users can access models on the Peer Models Network using the peermodels R package, available on GitHub. The following code snippet illustrates how you can run the model for example patient provided in the bode package:
remotes::install_github (resplab/peermodels)
library(peermodels)
input <- get_default_input("bode", api_key = YOUR_API_KEY)
results <- model_run(input)
Cloud Access through Linux Bash
In Ubuntu, you can call the API with curl:
curl \
-X POST \
-H "x-prism-auth-user: REPLACE_WITH_API_KEY" \
-H "Content-Type: application/json" \
-d '{"func":["prism_model_run"],"model_input":[{"FEV1": 40,"mMRC": 3,"BMI": 22,"walk": 100}]}' \
https://prism.peermodelsnetwork.com/route/bode/run
18.3 EPIC API
Cloud Access through R
Users can access models on the Peer Models Network using the peermodels R package, available on GitHub. The following code snippet illustrates how you can run the model for example patient provided in the epicR package:
remotes::install_github (resplab/peermodels)
library(peermodels)
input <- get_default_input("epic", api_key = YOUR_API_KEY)
results <- model_run(input)
18.4 FEV1 API
Cloud Access through R
Users can access models on the Peer Models Network using the peermodels R package, available on GitHub. The following code snippet illustrates how you can run the model for example patient provided in the fev1 package:
remotes::install_github (resplab/peermodels)
library(peermodels)
input <- get_default_input("fev1", api_key = YOUR_API_KEY)
results <- model_run(input)
Cloud Access through Linux Bash
In Ubuntu, you can call the API with curl:
curl \
-X POST \
-H "x-prism-auth-user: REPLACE_WITH_API_KEY" \
-H "Content-Type: application/json" \
-d '{"func":["prism_model_run"],"model_input":[{"male":1,"age":70,"smoker":1,"FEV1":2.5,"height":1.68,"weight":65}]}' \
https://prism.peermodelsnetwork.com/route/fev1/run
18.5 CVDAnderson API
Cloud Access through R
Users can access models on the Peer Models Network using the peermodels R package, available on GitHub. The following code snippet illustrates how you can run the model for example patient provided in the cvdanderson package:
remotes::install_github (resplab/peermodels)
library(peermodels)
input <- get_default_input("cvdanderson", api_key = YOUR_API_KEY)
results <- model_run(input)
Cloud Access through Linux Bash
In Ubuntu, you can call the API with curl:
curl \
-X POST \
-H "x-prism-auth-user: REPLACE_WITH_API_KEY" \
-H "Content-Type: application/json" \
-d '{"func":["prism_model_run"],"model_input":[{"age": 33,"gender": 1,"Tchol": 230,"ECG_LVH": 0,"HDLchol": 48, "SBP": 135, "DBP": 88, "diabetes": 1, "smoker": 1, "t": 10}]}' \
https://prism.peermodelsnetwork.com/route/cvdanderson/run
18.6 CHDWilson API
Cloud Access through R
Users can access models on the Peer Models Network using the peermodels R package, available on GitHub. The following code snippet illustrates how you can run the model for example patient provided in the chdwilson package:
remotes::install_github (resplab/peermodels)
library(peermodels)
input <- get_default_input("chdwilson", api_key = YOUR_API_KEY)
results <- model_run(input)
Cloud Access through Linux Bash
In Ubuntu, you can call the API with curl:
curl \
-X POST \
-H "x-prism-auth-user: REPLACE_WITH_API_KEY" \
-H "Content-Type: application/json" \
-d '{"func":["prism_model_run"],"model_input":[{"age": 55,"gender": 1,"TChol": 250,"LDL": 120,"HDL": 39, "SBP": 146, "DBP": 88, "diabetes": 0, "smoker": 1}]}' \
https://prism.peermodelsnetwork.com/route/chdwilson/run
18.7 CFMortality API
Cloud Access through R
Users can access models on the Peer Models Network using the peermodels R package, available on GitHub. The following code snippet illustrates how you can run the model for example patient provided in the chdwilson package:
remotes::install_github (resplab/peermodels)
library(peermodels)
input <- get_default_input("cfmortality", api_key = YOUR_API_KEY)
results <- model_run(input)
Cloud Access through Linux Bash
In Ubuntu, you can call the API with curl:
curl \
-X POST \
-H "x-prism-auth-user: REPLACE_WITH_API_KEY" \
-H "Content-Type: application/json" \
-d '{"func":["prism_model_run"],"model_input":[{"male": 0,"age": 57,"fvc": 66.7,"fev1": 47.4,"fev1LastYear": 80.5,"bcepacia": 0,"underweight": 0,"nHosp": 0,"pancreaticInsufficient": 1,"CFRelatedDiabetes": 0,"ageAtDiagnosis": 0.9}]}' \
https://prism.peermodelsnetwork.com/route/cfmortality/run
18.8 QRISK3 API
Cloud Access through R
Users can access models on the Peer Models Network using the peermodels R package, available on GitHub. The following code snippet illustrates how you can run the model for example patient provided in the QRISK3 package:
remotes::install_github (resplab/peermodels)
library(peermodels)
input <- get_default_input("qrisk3", api_key = YOUR_API_KEY)
results <- model_run(input)
18.9 CODEXCOPD API
Cloud Access through R
Users can access models on the Peer Models Network using the peermodels R package, available on GitHub. The following code snippet illustrates how you can run the model for example patient provided in the codexcopd package:
remotes::install_github (resplab/peermodels)
library(peermodels)
input <- get_default_input("codexcopd", api_key = YOUR_API_KEY)
results <- model_run(input)
Cloud Access through Linux Bash
In Ubuntu, you can call the API with curl:
curl \
-X POST \
-H "x-prism-auth-user: REPLACE_WITH_API_KEY" \
-H "Content-Type: application/json" \
-d '{"func":["prism_model_run"],"model_input":[{"age":40,"charlson":8,"FEV1":40,"mMRC":3,"exacerbation":2}]}' \
https://prism.peermodelsnetwork.com/route/codexcopd/run
18.10 MMRCEA API
Cloud Access through R
Users can access models on the Peer Models Network using the peermodels R package, available on GitHub. The following code snippet illustrates how you can run the model for example inputs provided by the modelling team:
library(peermodels)
input <- get_default_input("mmrcea", api_key = YOUR_API_KEY)
input$timeHorizon <- 5
input$discountRate <- 0.015
input$averageFamilyReferred <- 2
input$familyReferredHCP <- 1
input$adherenceIntensiveScreening <- 0.9
input$crcmmrDefReferredHCPIntArm <- 0.3
input$crcmmrDefReferredHCPmmrbrafCompArmVCHA <- 0.3
input$crcmmrDefReferredHCPmmrCompArmVCHA <- 0.08
input$crcmmrDefReferredHCPmmrbrafCompArmVIHA <- 0.08
input$crcmmrDefReferredHCPmmrCompArmOtherHA <- 0.08
input$ecmmrDefReferredHCPIntArm <- 0.8
model_run(input)
18.11 COVIDSEIR API (experimental)
We have recently deployed the Bayesian SEIR model to estimate physical-distancing effects developed by Anderson et al to our cloud infrastructure. The current version of the R package deployed to the PRISM server is covidseir v0.0.0.9006.
The current implementation of the covidseir package is experimental and has some limitations, given the computational intensity of the model. Depending on the number of chains and iterations, the html connection might be dropped for calls that more than a dozen minutes.
Currently, fitting the model with default parameters takes about 5 minutes. We are actively working to implement asynchronous support which would email the results back to the user when hours long model runs are requested.
Cloud Access through R
Users can access models on the Peer Models Network using the peermodels R package, available on GitHub. The following code snippet illustrates how you can run the model for example patient provided in the covidseir package:
library(peermodels)
input <- get_default_input("covidseir", api_key = YOUR_API_KEY, bypass_router = T)
names(input)
input$daily_cases
results <- model_run(input)
names(results)
draw_plots()
The same workflow can be used to fit and run the model based on custom data. For example, the code snippet below, automatically downloads latest COVID-19 case numbers for British Columbia, and reruns the simulation using different assumptions.
library(stringr)
library(dplyr)
library(tidyr)
library(readr)
library(lubridate)
library(peermodels)
url <- "https://docs.google.com/spreadsheets/d/1ad7-09_Jn6AxsdkVPE33T-iLfGpPRmd3piXQqFiVeas/export?&format=csv"
CanadaCases <- read_csv(url)
covidCases <- CanadaCases %>% rename (name = "prname") %>% rename (Cases = "numconf") %>% mutate(date=dmy(date)) %>%
filter (name!="Canada") %>% filter (date!=today())
bcCases <- covidCases %>% filter (name == "British Columbia")
connect_to_model("covidseir", api_key = "YDbxcnNHmf4XoteSmCFHKx", bypass_router = T)
input <- get_default_input()
first <- length(bcCases$numtoday)-42+1
last <- length(bcCases$numtoday)
input$daily_cases <- bcCases$numtoday[first:last]
# Example assumed sampling fractions of positive cases:
s1 <- c(rep(0.1, 13), rep(0.2, length(input$daily_cases) - 13))
samp_frac_seg <- c(rep(1, 13), rep(2, length(input$daily_cases) - 13))
s2 <- rep(0.07, length(input$daily_cases)) # Assuming 7\% of positive individuals are hospitalized
input$samp_frac_fixed <- rep(0.1, length(input$daily_cases))
input$fit_iter <- 100
input$chains <- 1
input$f_fixed <- rep(0.1, 90)
results <- model_run(input)
draw_plots()
Cloud Access through Python
Users can use Python to access covidseir model on the cloud. The simple code snippet below runs the model with default inputs.
import json
import requests
url = 'http://model-covidseir.cp.prism-ubc.linaralabs.com/ocpu/library/covidseirPrism/R/gateway/json'
headers = {'x-prism-auth-user': 'YOUR_API_KEY'}
default_input = requests.post(url, headers=headers,json = {"func":["get_default_input"]})
# json_default_input = json.loads(default_input.json()[0]) # OR:
json_default_input = json.loads(json.loads(default_input.text)[0])
response = requests.post(url, headers=headers,json = {"func":["prism_model_run"], "model_input":json_default_input})
results = json.loads(response.text)
Cloud Access through Linux Bash
In Ubuntu, you can call the API with curl:
curl \
-X POST \
-H "x-prism-auth-user: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"func":["prism_model_run"],"model_input":{"daily_cases":[0,0,1,3,1,8,0,6,5,0,7,7,18,9,22,38,53,45,40,77,76,48,67,78,42,66,67,92,16,70,43,53,55,53,29,26,37,25,45,34,40,35],"obs_model":["NB2","Poisson"],"fit_forecast_days":[0],"time_increment":[0.25],"samp_frac_fixed":[0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2],"samp_frac_type":["fixed","estimated","rw","segmented"],"samp_frac_seg":{},"days_back":[45],"R0_prior":[0.9555,0.2],"phi_prior":[1],"f_prior":[0.4,0.2],"e_prior":[0.8,0.05],"samp_frac_prior":[0.4,0.2],"start_decline_prior":[2.7081,0.05],"end_decline_prior":[3.091,0.05],"f_ramp_rate":[0],"rw_sigma":[0.1],"seed":[42],"chains":[1],"fit_iter":[100],"N_pop":[5100000],"pars":{"D":[5],"k1":[0.2],"k2":[1],"q":[0.05],"ud":[0.1],"ur":[0.02],"f0":[1]},"i0_prior":[2.0794,1],"state_0":{"E1_frac":[0.4],"E2_frac":[0.1],"I_frac":[0.5],"Q_num":[0],"R_num":[0],"E1d_frac":[0.4],"E2d_frac":[0.1],"Id_frac":[0.5],"Qd_num":[0],"Rd_num":[0]},"save_state_predictions":[false],"delay_scale":[9.85],"delay_shape":[1.73],"ode_control":[1e-07,1e-06,1000000],"project_forecast_days":[100],"f_fixed_start":[53],"f_fixed":[0.7,0.7,0.7,0.7,0.7,0.7,0.7,0.7,0.7,0.7,0.7,0.7,0.7,0.7,0.7,0.7,0.7,0.7,0.7,0.7,0.7,0.7,0.7,0.7,0.7,0.7,0.7,0.7,0.7,0.7,0.7,0.7,0.7,0.7,0.7,0.7,0.7,0.7,0.7,0.7,0.7,0.7,0.7,0.7,0.7,0.7,0.7,0.7,0.7,0.7,0.7,0.7,0.7,0.7,0.7,0.7,0.7,0.7,0.7,0.7,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2],"forecast_iter":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25],"return_states":[false],"imported_cases":[0],"imported_window":[1],"f_seg":[0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]}
} ' \
http://model-covidseir.cp.prism-ubc.linaralabs.com/ocpu/library/covidseirPrism/R/gateway/json
18.12 PLCOM2012 API
Cloud Access through R
Users can access models on the Peer Models Network using the peermodels R package, available on GitHub. The following code snippet illustrates how you can run the model for example patient provided in the PLCOM2012 package:
remotes::install_github (resplab/peermodels)
library(peermodels)
input <- get_default_input("PLCOm2012", api_key = YOUR_API_KEY)
results <- model_run(input)
Cloud Access through Linux Bash
In Ubuntu, you can call the API with curl:
curl \
-X POST \
-H "x-prism-auth-user: REPLACE_WITH_API_KEY" \
-H "Content-Type: application/json" \
-d '{"func":["prism_model_run"],"model_input":[{"age"=62, "race"="White", "education"=4, "bmi"=27, "copd"=0, "cancer_hist"=0, "family_hist_lung_cancer"=0, "smoking_status"=0, "smoking_intensity"=80, "duration_smoking"=27, "smoking_quit_time"=10}]}' \
https://prism.peermodelsnetwork.com/route/plcom2012/run
18.13 ADO API
Cloud Access through R
Users can access models on the Peer Models Network using the peermodels R package, available on GitHub. The following code snippet illustrates how you can run the model for example patient provided in the ADO package:
remotes::install_github (resplab/peermodels)
library(peermodels)
input <- get_default_input("ado", api_key = YOUR_API_KEY)
results <- model_run(input)
Cloud Access through Linux Bash
In Ubuntu, you can call the API with curl:
curl \
-X POST \
-H "x-prism-auth-user: REPLACE_WITH_API_KEY" \
-H "Content-Type: application/json" \
-d '{"func":["prism_model_run"],"model_input":[{"fev":65, "mmrc":1, "age":41 }]}' \
http://model-ado.cp.prism-ubc.linaralabs.com/ocpu/library/adoPrism/R/gateway/json
18.14 DOSE API
Cloud Access through R
Users can access models on the Peer Models Network using the peermodels R package, available on GitHub. The following code snippet illustrates how you can run the model for example patient provided in the DOSE package:
remotes::install_github (resplab/peermodels)
library(peermodels)
input <- get_default_input("dose", api_key = YOUR_API_KEY)
results <- model_run(input)
Cloud Access through Linux Bash
In Ubuntu, you can call the API with curl:
curl \
-X POST \
-H "x-prism-auth-user: REPLACE_WITH_API_KEY" \
-H "Content-Type: application/json" \
-d '{"func":["prism_model_run"],"model_input":[{"mmrc":1, "fev":55, "smoking_status":1, "exacerbation":2}]}' \
http://model-dose.cp.prism-ubc.linaralabs.com/ocpu/library/dosePrism/R/gateway/json
18.15 ISARIC4C API
Cloud Access through R
Users can access models on the Peer Models Network using the peermodels R package, available on GitHub. The following code snippet illustrates how you can run the model for example patient provided in the ISARIC4C package:
remotes::install_github (resplab/peermodels)
library(peermodels)
input <- get_default_input("isaric4c", api_key = YOUR_API_KEY)
results <- model_run(input)
Cloud Access through Linux Bash
In Ubuntu, you can call the API with curl:
curl \
-X POST \
-H "x-prism-auth-user: REPLACE_WITH_API_KEY" \
-H "Content-Type: application/json" \
-d '{"func":["prism_model_run"],"model_input":[{"age":69, "sex":1, "num_comorbidities":1, "respiratory_rate":25, "admission_oxygen_saturation": 90, "glasgow_coma_scale": 10, "urea": 10, "crp": 70, "func": 0}]}' \
http://model-dose.cp.prism-ubc.linaralabs.com/ocpu/library/isaric4cPrism/R/gateway/json