## ----include=FALSE------------------------------------------------------- knitr::opts_chunk$set(eval = FALSE) ## ------------------------------------------------------------------------ # library(sevenbridges) # a <- Auth(token = "8c3329a4de664c35bb657499bb2f335c", url = "https://api.sbgenomics.com/1.1/") # ## Get projects: GET /1.1/project # a$api(path = "project") # ## higher level doesn't work for v1 # ## a$project() won't work ## ------------------------------------------------------------------------ # source("http://bioconductor.org/biocLite.R") # useDevel(devel = TRUE) # biocLite("sevenbridges") ## ------------------------------------------------------------------------ # # install.packages("devtools") if devtools was not installed # ## Install from github for development version # source("http://bioconductor.org/biocLite.R") # # install.packages("devtools") if devtools was not installed # library(devtools) # install_github("sbg/sevenbridges-r", build_vignettes=TRUE, # repos=BiocInstaller::biocinstallRepos(), # dependencies=TRUE) ## ------------------------------------------------------------------------ # system.file("docker", "sevenbridges/Dockerfile", package = "sevenbridges") ## ------------------------------------------------------------------------ # library(sevenbridges) # ## direct setup # a <- Auth(token = "", # url = "https://cgc-api.sbgenomics.com/v2/") # ## or load default from config file (autoloaded into options) # library(sevenbridges) # a <- Auth(platform = "us", username = "tengfei") ## ------------------------------------------------------------------------ # a$user() ## ------------------------------------------------------------------------ # a$user(username = "tengfei") ## ------------------------------------------------------------------------ # a$rate_limit() ## ------------------------------------------------------------------------ # ## check your billing info # a$billing() # a$invoice() ## ------------------------------------------------------------------------ # a$billing(id = "your_billing_id", breakdown = TRUE) ## ------------------------------------------------------------------------ # ## get billing group id # bid <- a$billing()$id # ## create new project # (p <- a$project_new(name = "api testing", bid, description = "Just a testing")) ## ---- eval = TRUE-------------------------------------------------------- ## Add an CWL file to your project fl.runif <- system.file("docker", "sevenbridges/rabix/runif.json", package = "sevenbridges") ## ----comment='', eval = TRUE--------------------------------------------- cat(readLines(fl.runif), sep = '\n') ## ------------------------------------------------------------------------ # ## name your app # (aid <- p$app_add("runif", fl.runif)$id) ## ----comment='', eval = TRUE--------------------------------------------- fl <- system.file("docker", "sevenbridges/rabix/generator.R", package = "sevenbridges") cat(readLines(fl), sep = '\n') ## ------------------------------------------------------------------------ # ## rbx is the object returned by Tool function # (aid <- p$app_add("runif", rbx)$id) ## ------------------------------------------------------------------------ # (tsk <- p$task_add(name = "randome number 5", # description = "Generate some random number", # app = aid, # inputs = list(min = 1, max = 10, number = 1, seed = 4))) # # ## confirm, show all task status is draft # p$task(status = "draft") # # ## or just list the task # tsk$update() ## ------------------------------------------------------------------------ # ## not run # ## tsk$delete() ## ------------------------------------------------------------------------ # tsk$getInputs() # ## missing number input, only update number # tsk$update(inputs = list(number = 500, seed = 1)) # ## double check # tsk$getInputs() ## ------------------------------------------------------------------------ # ## Run your task # tsk$run() ## ------------------------------------------------------------------------ # tsk$update() ## ------------------------------------------------------------------------ # ## Monitor your task (skip this part) # ## tsk$monitor() ## ------------------------------------------------------------------------ # tsk$download("~/Downloads") ## ------------------------------------------------------------------------ # setTaskHook("completed", function(){ # tsk$download("~/Downloads") # }) # tsk$monitor() ## ------------------------------------------------------------------------ # ## Create Auth object from config file # a <- Auth(username = "yintengfei", platform = "us") # ## show all # getToken() # ## show all pre-set user token for platform # getToken("cgc") # ## show individual token for a user # getToken(platform = "cgc", username = "tengfei") ## ------------------------------------------------------------------------ # library(sevenbridges) # ## direct setup # a <- Auth(token = "1c0e6e202b544030870ccc147092c257", # url = "https://cgc-api.sbgenomics.com/v2/") ## ------------------------------------------------------------------------ # a$api() ## ------------------------------------------------------------------------ # getOption("sevenbridges")$offset # getOption("sevenbridges")$limit ## ------------------------------------------------------------------------ # ## first, search by id is fast # x <- a$app(visibility = "public", id = "djordje_klisic/public-apps-by-seven-bridges/sbg-ucsc-b37-bed-converter/0") # # ## show 100 items from public # x <- a$app(visibility = "public") # length(x) ## 100 # # # x <- a$app(visibility = "public", complete = TRUE) # length(x) ## 211 by March, 2016 # ## this return nothing, because it's not in the first 100 # a$app(visibility = "public", name = "bed converter") # ## this return an app, because it pulls all apps and did serach. # a$app(visibility = "public", name = "bed converter", complete = TRUE) ## ------------------------------------------------------------------------ # a$rate_limit() ## ------------------------------------------------------------------------ # ## return your information # a$user() # ## return user 'tengfei''s information # a$user("tengfei") ## ------------------------------------------------------------------------ # ## return a BillingList object # (b <- a$billing()) # a$billing(id = b$id, breakdown = TRUE) ## ------------------------------------------------------------------------ # a$invoice() # a$invoice(id = "fake_id") ## ------------------------------------------------------------------------ # a$project() ## ------------------------------------------------------------------------ # a$project(owner = "tengfei") # a$project(owner = "yintengfei") ## ------------------------------------------------------------------------ # a$project(detail = TRUE) ## ------------------------------------------------------------------------ # ## want to return a project called # a$project("hello") ## ------------------------------------------------------------------------ # a$project_new("api_testing_tcga", b$id, # description = "Test for API") ## ------------------------------------------------------------------------ # a$project_new("controlled_project", b$id, # description = "Test for API", tags = list("tcga")) ## ------------------------------------------------------------------------ # ## remove it, not run # a$project("api_testing")$delete() # ## check # ## will delete all projects matcht the name # delete(a$project("api_testing_donnot_delete_me")) ## ------------------------------------------------------------------------ # a$project(id = "tengfei/helloworld") # a$project(id = "tengfei/helloworld")$update(name = "Hello World Update", # description = "Update description") # ## ------------------------------------------------------------------------ # a$project(id = "tengfei/demo-project")$member() ## ------------------------------------------------------------------------ # m <- a$project(id = "tengfei/demo-project")$member_add(username = "yintengfei") ## ------------------------------------------------------------------------ # m <- a$project(id = "tengfei/demo-project")$ # member(username = "yintengfei") # m$update(copy = TRUE) ## ------------------------------------------------------------------------ # m$delete() # ## confirm # a$project(id = "tengfei/demo-project")$member() ## ------------------------------------------------------------------------ # p <- a$project(id = "tengfei/demo-project") # p$file() ## ------------------------------------------------------------------------ # a$file(project = p$id) # a$file("omni", project = p$id, detail = TRUE) ## ------------------------------------------------------------------------ # p$file() ## ------------------------------------------------------------------------ # ## need to check # p$file(detail = TRUE) ## ------------------------------------------------------------------------ # ## 1000G_omni2.5.b37.vcf # fid <- "561e1b33e4b0aa6ec48167d7" # fid2 <- "561e1b33e4b0aa6ec48167d3" # pid <- a$project("demo")$id # a$copyFile(c(fid, fid2), project = pid) # a$project(id = pid)$file() ## ------------------------------------------------------------------------ # a$project("hello")$file(id = fid)$copyTo(pid) ## ------------------------------------------------------------------------ # a$project("demo")$file()[[1]]$delete() # ## confirm the deletion # a$project("demo")$file() ## ------------------------------------------------------------------------ # ## return 5 files # a$project("demo")$file("phase1") # ## delete all of them # delete(a$project("demo")$file("phase1")) # a$project("demo")$file("phase1") ## ------------------------------------------------------------------------ # a$project("demo")$file()[[1]]$download_url() ## ------------------------------------------------------------------------ # fid <- a$project("demo")$file()[[1]]$id # a$project("demo")$file(id = fid3)$download("~/Downloads/") ## ------------------------------------------------------------------------ # fls <- a$project("demo")$file() # download(fls, "~/Downloads/") ## ------------------------------------------------------------------------ # a$project("demo")$download("~/Downloads") ## ------------------------------------------------------------------------ # a <- Auth(username = "tengfei", platform = "cgc") # fl <- system.file("extdata", "sample1.fastq", package = "sevenbridges") # # (p <- a$project(id = "tengfei/quickstart")) # # ## by default load .meta for the file # p$upload(fl, overwrite = TRUE) # ## pass metadata # p$upload(fl, overwrite = TRUE, metadata = list(library_id = "testid2", platform = "Illumina x11")) # ## rename # p$upload(fl, overwrite = TRUE, name = "sample_new_name.fastq", # metadata = list(library_id = "new_id")) # # ## ------------------------------------------------------------------------ # dir.ext <- system.file("extdata", package = "sevenbridges") # list.files(dir.ext) # p$upload(dir.ext, overwrite = TRUE) ## ------------------------------------------------------------------------ # dir.ext <- system.file("extdata", package = "sevenbridges") # ## enable full name # fls <- list.files(dir.ext, recursive = TRUE, full.names = TRUE) # p$upload(fls, overwrite = TRUE) # p$upload("~/Documents/Data/sbgtest/1000G_phase1.snps.high_confidence.b37.vcf") ## ------------------------------------------------------------------------ # ## list all outputs file from a task id # a$task(id = "53020538-6936-422f-80de-02fa65ae4b39")$file() # # ## alternative way to list files under specific project # a$file(project = "tengfei/re", # origin.task = "53020538-6936-422f-80de-02fa65ae4b39") # # # ## you can filter by metadata as well # a$file(project = "tengfei/re", # origin.task = "53020538-6936-422f-80de-02fa65ae4b39", # metadata = list(experimental_strategy = "RNA-Seq")) ## ------------------------------------------------------------------------ # a$file(project = "admin/sbg-public-data") ## ------------------------------------------------------------------------ # (fl <- a$project(id = "tengfei/demo-project")$file(name = "sample.fastq")) ## ------------------------------------------------------------------------ # ## show metadata # fl$meta() ## ------------------------------------------------------------------------ # fl$update(name = "sample.fastq", metadata = list(new_item1 = "item1", new_item2 = "item2", file_extension = "fastq")) # ## check it out # fl$meta() ## ------------------------------------------------------------------------ # ## meta is pulling the latest information via API # fl$meta() # ## field meta data saved the previous saved one # fl$metadata ## ------------------------------------------------------------------------ # fl$setMeta(new_item3 = "item3") # fl # ## oops it removed rest of the meta # fl$setMeta(new_item4 = "item4", overwrite = TRUE) # fl ## ------------------------------------------------------------------------ # ## check which schema we have # Metadata()$show(full = TRUE) # ## check details for each, play with it # platform() # paired_end() # quality_scale() ## ------------------------------------------------------------------------ # Metadata(platform = "Affymetrix SNP Array 6.0", # paired_end = 1, # quality_scale = "sanger", # new_item = "new test") ## ------------------------------------------------------------------------ # a$app() # ## or show details # a$app(detail = TRUE) ## ------------------------------------------------------------------------ # ## pattern match # a$app(name = "STAR") # ## unique id # aid <- a$app()[[1]]$id # aid # a$app(id = aid) # ## get a specific revision from an app # a$app(id = aid, revision = 0) ## ------------------------------------------------------------------------ # ## my favorite, always # a$project("demo")$app() # # ## or alternatviely # pid <- a$project("demo")$id # a$app(project = pid) ## ------------------------------------------------------------------------ # ## show 100 items from public # x = a$app(visibility = "public") # length(x) # x = a$app(visibility = "public", complete = TRUE) # length(x) # x = a$app(project = "tengfei/helloworld", complete = TRUE) # length(x) # a$app(visibility = "public", limit = 5, offset = 150) ## ------------------------------------------------------------------------ # a$app("STAR", visibility = "public", complete = TRUE) ## ------------------------------------------------------------------------ # aid <- a$app(visibility = "public")[[1]]$id # a$copyApp(aid, project = pid, name = "copy-rename-test") # ## check it is copied # a$app(project = pid) ## ------------------------------------------------------------------------ # ap <- a$app(visibility = "public")[[1]] # a$project("demo")$app("index") # ## get a specific revision # a$project("demo")$app("index", revision = 0) # ## ------------------------------------------------------------------------ # cwl.fl <- system.file("extdata", "bam_index.json", package = "sevenbridges") # a$project("demo")$app_add(short_name = "new_bam_index_app", filename = cwl.fl) # a$project("demo")$app_add(short_name = "new_bam_index_app", revision = 2, filename = cwl.fl) ## ------------------------------------------------------------------------ # ## all tasks # a$task() # ## filter # a$task(status = "completed") # a$task(status = "running") ## ------------------------------------------------------------------------ # ## better way # a$project("demo")$task() # # ## alternatively # pid <- a$project("demo")$id # pid # a$task(project = pid) ## ------------------------------------------------------------------------ # ## push an app first # fl.runif <- system.file("extdata", "runif.json", package = "sbgr") # a$project("demo")$app_add("runif_draft", fl.runif) # runif_id <- "tengfei/demo-project/runif_draft" # ## create a draft task # a$project("demo")$task_add(name = "Draft runif 3", # description = "Description for runif 3", # app = runif_id, # inputs = list(min = 1, max = 10)) # ## confirm # a$project("demo")$task(status = "draft") ## ------------------------------------------------------------------------ # ## get the single task you want to update # tsk <- a$project("demo")$task("Draft runif 3") # tsk # tsk$update(name = "Draft runif update", description = "draft 2", # inputs = list(max = 100)) # ## alternative way to check all inputs # tsk$getInputs() ## ------------------------------------------------------------------------ # tsk$run() # ## run update without information just return latest information # tsk$update() ## ------------------------------------------------------------------------ # tsk$monitor() ## ------------------------------------------------------------------------ # getTaskHook("completed") # getTaskHook("draft") # setTaskHook("draft", function(){message("never happens"); return(TRUE)}) # getTaskHook("draft") ## ------------------------------------------------------------------------ # ## abort # tsk$abort() # ## check # tsk$update() ## ------------------------------------------------------------------------ # tsklst <- a$task(status = "draft") # ## delete a single task # tsklst[[1]]$delete() # ## confirm # a$task(status = "draft") # ## delete a list of tasks # delete(tsklst) ## ------------------------------------------------------------------------ # tsk$download("~/Downloads") ## ------------------------------------------------------------------------ # ## batch by items # (tsk <- p$task_add(name = "RNA DE report new batch 2", # description = "RNA DE analysis report", # app = rna.app$id, # batch = batch(input = "bamfiles"), # inputs = list(bamfiles = bamfiles.in, # design = design.in, # gtffile = gtf.in))) # # ## batch by metadata, input files has to have metadata fields specified # (tsk <- p$task_add(name = "RNA DE report new batch 3", # description = "RNA DE analysis report", # app = rna.app$id, # batch = batch(input = "fastq", # c("metadata.sample_id", "metadata.library_id")), # inputs = list(bamfiles = bamfiles.in, # design = design.in, # gtffile = gtf.in))) ## ------------------------------------------------------------------------ # ## Authentification # getToken() # a <- Auth(token = token) # a <- Auth(token = token, # url = "https://cgc-api.sbgenomics.com/v2/") # a <- Auth(platform = "us", username = "tengfei") # # ## list API # a$api() # # ## Rate limits # a$rate_limit() # # ## Users # a$user() # a$user("tengfei") # # ## billing # a$billing() # a$billing(id = , breakdown = TRUE) # a$invoice() # a$invoice(id = "fake_id") # # ## Project # ### create new project # a$project_new(name = , billing_group_id = , description = ) # ### list all project owned by you # a$project() # a$project(owner = "yintengfei") # ### partial match # p <- a$project(name = , id = , exact = TRUE) # ### delete # p$delete() # ### update # p$update(name = , description = ) # ### members # p$member() # p$member_add(username = ) # p$member(username = )$update(write = , copy = , execute = ) # p$memeber(usrname = )$delete() # # ## file # ### list all files in this project # p$file() # ### list all public files # a$file(visibility = "public") # ### copy # a$copyFile(c(fid, fid2), project = pid) # ### delete # p$file(id = fid)$delete() # ### download # p$file()[[1]]$download_url() # p$file(id = fid3)$download("~/Downloads/") # ### download all # download(p$file()) # ### update a file # fl$update(name = , metadata = list(a = ,b = , ...)) # ### meta # fl$meta() # fl$setMeta() # fl$setMeta(..., overwrite = TRUE) # # ## App # a$app() # ### apps in a project # p$app() # p$app(name, id, revision = ) # a$copyApp(aid, project = pid, name = ) # ### add # p$app_add(short_name = , filename =) # # ## Task # a$task() # a$task(name = , id = ) # a$task(status = ) # # p$task() # p$task(name = , id = ) # p$task(status = ) # # tsk <- p$task(name = , id = ) # tsk$update() # tsk$abort() # tsk$run() # tsk$download() # tsk$detele() # tsk$getInputs() # tsk$monitor() # # getTaskHook() # setTaskHook(statis = , fun =)