inst/doc/api.R

## ----include=FALSE------------------------------------------------------------
knitr::opts_chunk$set(eval = FALSE)

## -----------------------------------------------------------------------------
#  library("sevenbridges")
#  a <- Auth(token = "your_token", platform = "aws-us")
#  a$api(path = "projects", method = "GET")

## -----------------------------------------------------------------------------
#  a$project()

## -----------------------------------------------------------------------------
#  install.packages("BiocManager")
#  BiocManager::install("sevenbridges")

## -----------------------------------------------------------------------------
#  install.packages("BiocManager")
#  BiocManager::install("sevenbridges", version = "devel")

## -----------------------------------------------------------------------------
#  install.packages("devtools")

## -----------------------------------------------------------------------------
#  install.packages("BiocManager")
#  install.packages("readr")
#  
#  devtools::install_github(
#    "sbg/sevenbridges-r",
#    repos = BiocManager::repositories(),
#    build_vignettes = TRUE, dependencies = TRUE
#  )

## ---- eval = TRUE, message = FALSE--------------------------------------------
library("sevenbridges")

## -----------------------------------------------------------------------------
#  (a <- Auth(platform = "cgc", token = "your_token"))

## -----------------------------------------------------------------------------
#  sbg_set_env("https://cgc-api.sbgenomics.com/v2", "your_token")

## -----------------------------------------------------------------------------
#  a <- Auth(from = "env")

## -----------------------------------------------------------------------------
#  a <- Auth(from = "file", profile_name = "aws-us-rfranklin")

## -----------------------------------------------------------------------------
#  a <- Auth(from = "file")

## -----------------------------------------------------------------------------
#  a$user()

## -----------------------------------------------------------------------------
#  a$user(username = "RFranklin")

## -----------------------------------------------------------------------------
#  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 test"))

## -----------------------------------------------------------------------------
#  # list first 100
#  a$project()
#  # list all
#  a$project(complete = TRUE)
#  # return all named match "demo"
#  a$project(name = "demo", complete = TRUE)
#  # get the project you want by id
#  p <- a$project(id = "RFranklin/api-tutorial")

## -----------------------------------------------------------------------------
#  # search by name matching, complete = TRUE search all apps,
#  # not limited by offset or limit.
#  a$public_app(name = "STAR", complete = TRUE)
#  # search by id is accurate
#  a$public_app(id = "admin/sbg-public-data/rna-seq-alignment-star/5")
#  # you can also get everything
#  a$public_app(complete = TRUE)
#  # default limit = 100, offset = 0 which means the first 100
#  a$public_app()

## -----------------------------------------------------------------------------
#  # copy
#  a$copy_app(
#    id = "admin/sbg-public-data/rna-seq-alignment-star/5",
#    project = "RFranklin/api-testing", name = "new copy of star"
#  )
#  # check if it is copied
#  p <- a$project(id = "RFranklin/api-testing")
#  # list apps your got in your project
#  p$app()

## -----------------------------------------------------------------------------
#  app <- a$public_app(id = "admin/sbg-public-data/rna-seq-alignment-star")
#  app$copy_to(
#    project = "RFranklin/api-testing",
#    name = "copy of star"
#  )

## -----------------------------------------------------------------------------
#  # add an CWL file to your project
#  f.star <- system.file("extdata/app", "flow_star.json", package = "sevenbridges")
#  app <- p$app_add("starlocal", fl.runif)
#  (aid <- app$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
#  app <- p$app_add("runif", rbx)
#  (aid <- app$id)

## -----------------------------------------------------------------------------
#  app <- a$app(id = "RFranklin/api-testing-2/newcopyofstar")
#  # get input matrix
#  app$input_matrix()
#  app$input_matrix(c("id", "label", "type"))
#  # get required node only
#  app$input_matrix(c("id", "label", "type"), required = TRUE)

## ---- eval = TRUE-------------------------------------------------------------
f1 <- system.file("extdata/app", "flow_star.json", package = "sevenbridges")
app <- convert_app(f1)
# get input matrix
app$input_matrix()
app$input_matrix(c("id", "label", "type"))
app$input_matrix(c("id", "label", "type"), required = TRUE)

## -----------------------------------------------------------------------------
#  tool.in <- system.file("extdata/app", "tool_unpack_fastq.json", package = "sevenbridges")
#  flow.in <- system.file("extdata/app", "flow_star.json", package = "sevenbridges")
#  input_matrix(tool.in)
#  input_matrix(tool.in, required = TRUE)
#  input_matrix(flow.in)
#  input_matrix(flow.in, c("id", "type"))
#  input_matrix(flow.in, required = TRUE)
#  output_matrix(tool.in)
#  output_matrix(flow.in)

## -----------------------------------------------------------------------------
#  fastqs <- c("SRR1039508_1.fastq", "SRR1039508_2.fastq")
#  
#  # get all 2 exact files
#  fastq_in <- p$file(name = fastqs, exact = TRUE)
#  
#  # get a single file
#  fasta_in <- p$file(
#    name = "Homo_sapiens.GRCh38.dna.primary_assembly.fa",
#    exact = TRUE
#  )
#  # get all single file
#  gtf_in <- p$file(
#    name = "Homo_sapiens.GRCh38.84.gtf",
#    exact = TRUE
#  )

## -----------------------------------------------------------------------------
#  # add new tasks
#  taskName <- paste0("RFranklin-star-alignment ", date())
#  
#  tsk <- p$task_add(
#    name = taskName,
#    description = "star test",
#    app = "RFranklin/api-testing-2/newcopyofstar/0",
#    inputs = list(
#      sjdbGTFfile = gtf_in,
#      fastq = fastq_in,
#      genomeFastaFiles = fasta_in
#    )
#  )

## -----------------------------------------------------------------------------
#  f1 <- p$file(name = "SRR1039508_1.fastq", exact = TRUE)
#  f2 <- p$file(name = "SRR1039508_2.fastq", exact = TRUE)
#  # get all 2 exact files
#  fastq_in <- list(f1, f2)
#  
#  # or if you know you only have 2 files whose names match SRR924146*.fastq
#  fastq_in <- p$file(name = "SRR1039508*.fastq", complete = TRUE)

## -----------------------------------------------------------------------------
#  fastqs <- c(
#    "SRR1039508_1.fastq", "SRR1039508_2.fastq", "SRR1039509_1.fastq",
#    "SRR1039509_2.fastq", "SRR1039512_1.fastq", "SRR1039512_2.fastq",
#    "SRR1039513_1.fastq", "SRR1039513_2.fastq"
#  )
#  
#  # get all 8 files
#  fastq_in <- p$file(name = fastqs, exact = TRUE)
#  # can also try to returned all SRR*.fastq files
#  # fastq_in <- p$file(name= "SRR*.fastq", complete = TRUE)
#  
#  tsk <- p$task_add(
#    name = taskName,
#    description = "Batch Star Test",
#    app = "RFranklin/api-testing-2/newcopyofstar/0",
#    batch = batch(
#      input = "fastq",
#      criteria = c("metadata.sample_id", "metadata.noexist_id")
#    ),
#    inputs = list(
#      sjdbGTFfile = gtf_in,
#      fastq = fastqs_in,
#      genomeFastaFiles = fasta_in
#    )
#  )

## -----------------------------------------------------------------------------
#  # run your task
#  tsk$run()

## -----------------------------------------------------------------------------
#  # # not run
#  # tsk$delete()

## -----------------------------------------------------------------------------
#  # abort your task
#  tsk$abort()

## -----------------------------------------------------------------------------
#  tsk$getInputs()
#  # missing number input, only update number
#  tsk$update(inputs = list(sjdbGTFfile = "some new file"))
#  # double check
#  tsk$getInputs()

## -----------------------------------------------------------------------------
#  p <- a$project_new(
#    name = "spot-disabled-project", bid, description = "spot disabled project",
#    use_interruptible = FALSE
#  )

## -----------------------------------------------------------------------------
#  tsk <- p$task_add(
#    name = paste0("spot enabled task in a spot disabled project"),
#    description = "spot enabled task",
#    app = ...,
#    inputs = list(...),
#    use_interruptible_instances = TRUE
#  )

## -----------------------------------------------------------------------------
#  tsk <- p$task_add(
#    ...,
#    execution_settings = list(
#      instance_type = "c4.2xlarge;ebs-gp2;2000",
#      max_parallel_instances = 2
#    )
#  )

## -----------------------------------------------------------------------------
#  tsk$update()

## -----------------------------------------------------------------------------
#  # Monitor your task (skip this part)
#  # tsk$monitor()

## -----------------------------------------------------------------------------
#  tsk$download("~/Downloads")

## ---- eval = TRUE-------------------------------------------------------------
getTaskHook("completed")

## -----------------------------------------------------------------------------
#  setTaskHook("completed", function() {
#    tsk$download("~/Downloads")
#    return(TRUE)
#  })
#  tsk$monitor()

## -----------------------------------------------------------------------------
#  a <- Auth(
#    token = "your_token",
#    platform = "aws-us"
#  )

## -----------------------------------------------------------------------------
#  a <- Auth(
#    token = "your_token",
#    url = "https://gcp-api.sbgenomics.com/v2"
#  )

## -----------------------------------------------------------------------------
#  a <- Auth(token = "your_token")

## -----------------------------------------------------------------------------
#  sbg_set_env(
#    url = "https://cgc-api.sbgenomics.com/v2",
#    token = "your_token"
#  )

## -----------------------------------------------------------------------------
#  sbg_get_env("SB_API_ENDPOINT")
#  ## "https://cgc-api.sbgenomics.com/v2"
#  sbg_get_env("SB_AUTH_TOKEN")
#  ## "your_token"

## -----------------------------------------------------------------------------
#  a <- Auth(from = "env")

## -----------------------------------------------------------------------------
#  Sys.unsetenv("SB_API_ENDPOINT")
#  Sys.unsetenv("SB_AUTH_TOKEN")

## -----------------------------------------------------------------------------
#  a <- Auth(from = "file")

## -----------------------------------------------------------------------------
#  a <- Auth(from = "file", profile_name = "aws-us-rfranklin")

## -----------------------------------------------------------------------------
#  a <- Auth(
#    from = "file", config_file = "~/sevenbridges.cfg",
#    profile_name = "aws-us-rfranklin"
#  )

## -----------------------------------------------------------------------------
#  a$api()

## -----------------------------------------------------------------------------
#  getOption("sevenbridges")$offset
#  getOption("sevenbridges")$limit

## -----------------------------------------------------------------------------
#  # first, search by id is fast
#  x <- a$app(visibility = "public", id = "admin/sbg-public-data/sbg-ucsc-b37-bed-converter/1")
#  
#  # show 100 items from public
#  x <- a$app(visibility = "public")
#  length(x) # 100
#  
#  x <- a$app(visibility = "public", complete = TRUE)
#  length(x) # 272 by Nov 2016
#  # this return nothing, because it is not in the first 100 returned names
#  a$app(visibility = "public", name = "bed converter")
#  # this return an app, because it pulls *all* app names and did search
#  a$app(visibility = "public", name = "bed converter", complete = TRUE)

## -----------------------------------------------------------------------------
#  library("sevenbridges")
#  getOption("sevenbridges")$advance_access

## -----------------------------------------------------------------------------
#  req <- api(
#    token = "your_token", path = "genome/markers?file={bam_file_id}",
#    method = "GET"
#  )
#  
#  httr::content(req)$"message"

## -----------------------------------------------------------------------------
#  opt <- getOption("sevenbridges")
#  opt$advance_access <- TRUE
#  options(sevenbridges = opt)

## -----------------------------------------------------------------------------
#  getOption("sevenbridges")$advance_access

## -----------------------------------------------------------------------------
#  req <- api(
#    token = "your_token", path = "genome/markers?file={bam_file_id}",
#    method = "GET"
#  )

## -----------------------------------------------------------------------------
#  httr::content(req)

## -----------------------------------------------------------------------------
#  ## default fields id, name, project
#  p$file()
#  ## return file(s) with id, name, siae information
#  p$file(fields = "id,name,size")
#  ## return file(s) with all available info
#  p$file(detail = TRUE)
#  ## same as above
#  p$file(fields = "_all")

## -----------------------------------------------------------------------------
#  a$rate_limit()

## -----------------------------------------------------------------------------
#  # return your information
#  a$user()
#  # return user RFranklin's information
#  a$user("RFranklin")

## -----------------------------------------------------------------------------
#  # return a BillingList object
#  (b <- a$billing())
#  a$billing(id = b$id, breakdown = TRUE)

## -----------------------------------------------------------------------------
#  a$invoice()
#  a$invoice(id = "your_id")

## -----------------------------------------------------------------------------
#  a$project()

## -----------------------------------------------------------------------------
#  a$project(owner = "RFranklin")
#  a$project(owner = "Rosalind.Franklin")

## -----------------------------------------------------------------------------
#  a$project(detail = TRUE)

## -----------------------------------------------------------------------------
#  # want to return a project called
#  a$project("hello")

## -----------------------------------------------------------------------------
#  # return all projects matching the name "wgs"
#  p <- a$project("wgs", complete = TRUE)
#  
#  # filter by project creators
#  creators <- sapply(p, "[[", "created_by")
#  which(creator == "RFranklin")
#  
#  # filter by project creation date
#  create_date <- as.Date(sapply(p, "[[", "created_on"))
#  which(as.Date(create_date) < as.Date("2019-01-01"))
#  
#  # filter by project modification date
#  modify_date <- as.Date(sapply(p, "[[", "modified_on"))
#  which(as.Date(modify_date) < as.Date("2019-01-01"))

## -----------------------------------------------------------------------------
#  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 match the name
#  delete(a$project("api_testing_donnot_delete_me"))

## -----------------------------------------------------------------------------
#  a$project(id = "RFranklin/helloworld")
#  a$project(id = "RFranklin/helloworld")$update(
#    name = "Hello World Update",
#    description = "Update description"
#  )

## -----------------------------------------------------------------------------
#  a$project(id = "RFranklin/demo-project")$member()

## -----------------------------------------------------------------------------
#  m <- a$project(id = "RFranklin/demo-project")$
#    member_add(username = "Rosalind.Franklin")

## -----------------------------------------------------------------------------
#  m <- a$project(id = "RFranklin/demo-project")$
#    member(username = "Rosalind.Franklin")
#  m$update(copy = TRUE)

## -----------------------------------------------------------------------------
#  m$delete()
#  # confirm
#  a$project(id = "RFranklin/demo-project")$member()

## -----------------------------------------------------------------------------
#  p <- a$project(id = "RFranklin/demo-project")
#  p$file()

## -----------------------------------------------------------------------------
#  # first 100 files, default offset = 0, limit = 100
#  p$file()
#  # list all files
#  p$file(complete = TRUE)

## -----------------------------------------------------------------------------
#  a$file(project = p$id)
#  a$file(name = "omni", project = p$id, detail = TRUE)

## -----------------------------------------------------------------------------
#  p <- a$project(id = "RFranklin/demo")
#  p$file(
#    metadata = list(
#      sample_id = "Sample1",
#      sample_id = "Sample2",
#      library_id = "EXAMPLE"
#    ),
#    tag = c("hello", "world")
#  )

## -----------------------------------------------------------------------------
#  # return single object id is "some_file_id"
#  p$file(id = "some_file_id")
#  # return a single object named a.fastq
#  p$file(name = "a.fastq", exact = TRUE)
#  # public file search using Auth object
#  a$public_file(name = "ucsc.hg19.fasta.fai", exact = TRUE)
#  a$public_file(id = "578cf94a507c17681a3117e8")

## -----------------------------------------------------------------------------
#  # get two files
#  p$file(name = c("test1.fastq", "test2.fastq"), exact = TRUE)
#  # get two files from public files using shorthand
#  a$public_file(
#    name = c("ucsc.hg19.fasta.fai", "ucsc.hg19.fasta"),
#    exact = TRUE
#  )

## -----------------------------------------------------------------------------
#  # get matchd the pattern for searching first 100 files
#  p$file(name = c("gz", "fastq"))
#  # get all matched files from the project
#  p$file(name = c("gz", "fastq"), complete = TRUE)
#  # get all files matched ucsc
#  a$public_file(name = "ucsc.hg19", complete = TRUE)

## -----------------------------------------------------------------------------
#  p <- a$project(id = "RFranklin/demo")
#  p$file(metadata = list(
#    sample_id = "Sample1",
#    sample_id = "Sample2",
#    library_id = "EXAMPLE"
#  ))

## -----------------------------------------------------------------------------
#  p <- a$project(id = "RFranklin/demo")
#  p$file(tag = c("s1", "s2"))

## -----------------------------------------------------------------------------
#  # list all outputs file from a task id
#  a$task(id = "53020538-6936-422f-80de-02fa65ae4b39")$file()
#  
#  # OR
#  p <- a$project(id = "RFranklin/demo")
#  p$file(origin.task = "53020538-6936-422f-80de-02fa65ae4b39")

## -----------------------------------------------------------------------------
#  # 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 = "RFranklin", platform = "cgc")
#  fl <- system.file("extdata", "sample1.fastq", package = "sevenbridges")
#  
#  (p <- a$project(id = "RFranklin/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")

## -----------------------------------------------------------------------------
#  # upload all fiels and all metadata
#  p$upload(manifest_file = "~/manifest.csv")
#  
#  # verbal = TRUE, print single file level progress
#  p$upload(manifest_file = "~/manifest.csv", overwrite = TRUE, verbal = TRUE)
#  
#  # manifest_metadata = FALSE doens't attach any metadata
#  p$upload(manifest_file = "~/manifest.csv", manifest_metadata = FALSE, overwrite = TRUE)
#  
#  # filter files first, upload only files with score < 0.5
#  p$upload(manifest_file = "~/manifest.csv", overwrite = TRUE, subset = score < 0.5)
#  
#  # attach all meta except "bad_field" and "sample_id"
#  p$upload(
#    manifest_file = "~/manifest.csv", overwrite = TRUE,
#    subset = score < 0.5, select = -c(bad_field, sample_id)
#  )

## -----------------------------------------------------------------------------
#  get_uploader("cgc", "~/Downloads/")

## -----------------------------------------------------------------------------
#  cgc_token <- "your_cgc_token"
#  cgc_uploader <- "~/Downloads/cgc-uploader/"
#  
#  cli_list_projects(
#    token = cgc_token,
#    uploader = cgc_uploader
#  )

## -----------------------------------------------------------------------------
#  cli_list_tags(
#    token = cgc_token,
#    uploader = cgc_uploader,
#    project = "username/project-name"
#  )

## -----------------------------------------------------------------------------
#  cli_upload(
#    token = cgc_token,
#    uploader = cgc_uploader,
#    file = "~/example.fastq",
#    project = "username/project-name"
#  )

## -----------------------------------------------------------------------------
#  (fl <- a$project(id = "RFranklin/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 metadata saved the previously saved one
#  fl$metadata

## -----------------------------------------------------------------------------
#  fl$set_meta(new_item3 = "item3")
#  fl
#  # oops it removed rest of the meta
#  fl$set_meta(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"
#  )

## -----------------------------------------------------------------------------
#  p <- a$project(id = "RFranklin/s3tutorial")
#  fl <- p$file("sample.bam", exact = TRUE)
#  # show tags for single file
#  fl$tag()
#  # add new tags
#  fl$add_tag("new tag")
#  # equavilent to
#  fl$set_tag("new tag 2", overwrite = FALSE)
#  # set tags to overwrite existing
#  x <- list("this", "is", 1234)
#  fl$set_tag(x)
#  # filter by tags
#  p$file(tag = c("1234", "new"))
#  p$file(tag = list("1234", "new"))
#  p$file(tag = "1234")

## -----------------------------------------------------------------------------
#  # work on a group of files
#  # add tag "s2" to a group of files named with "Sample2" in it
#  fl2 <- p$file("Sample2")
#  add_tag(fl2, "s2")
#  # add tag "s2" to a group of files named with "Sample1" in it
#  fl1 <- p$file("Sample1")
#  add_tag(fl1, "s1")
#  # filter by tag s1 or s2
#  p$file(tag = "s1")
#  p$file(tag = "s2")
#  # get files tagged with s2 and 1234
#  p$file(tag = list("s2", "s1"))

## -----------------------------------------------------------------------------
#  p <- a$project(id = "RFranklin/folders-api-testing")

## -----------------------------------------------------------------------------
#  p$get_root_folder_id()

## -----------------------------------------------------------------------------
#  (root_folder <- p$get_root_folder())

## -----------------------------------------------------------------------------
#  folder1 <- root_folder$create_folder("folder1")

## -----------------------------------------------------------------------------
#  folder2 <- folder1$create_folder("folder2")

## -----------------------------------------------------------------------------
#  file_public <- a$public_file(name = "Homo_sapiens_assembly38.fasta", exact = TRUE)
#  file1 <- file_public$copy_to_folder(root_folder$id)

## -----------------------------------------------------------------------------
#  file2 <- file_public$copy_to_folder(root_folder$id, "ref_grch38.fasta")

## -----------------------------------------------------------------------------
#  file1 <- file1$move_to_folder(folder1$id)

## -----------------------------------------------------------------------------
#  (contents_root <- root_folder$list_folder_contents(complete = TRUE))

## -----------------------------------------------------------------------------
#  root_folder$list_folder_contents(type = "file", complete = TRUE)
#  root_folder$list_folder_contents(type = "folder", complete = TRUE)

## -----------------------------------------------------------------------------
#  contents_root[[1]]$typeof()

## -----------------------------------------------------------------------------
#  sapply(contents_root, function(x) x$typeof())

## -----------------------------------------------------------------------------
#  contents_root[[1]]$get_parent_folder_id()

## -----------------------------------------------------------------------------
#  contents_root[[1]]$get_parent_folder()

## -----------------------------------------------------------------------------
#  file1$delete()

## -----------------------------------------------------------------------------
#  file2 <- file2$move_to_folder(folder2$id)
#  folder2$delete()

## -----------------------------------------------------------------------------
#  file2$delete()
#  folder2$delete()
#  folder1$delete()

## -----------------------------------------------------------------------------
#  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 = "RFranklin/helloworld", complete = TRUE)
#  length(x)
#  a$app(visibility = "public", limit = 5, offset = 150)

## -----------------------------------------------------------------------------
#  a$app("STAR", visibility = "public", complete = TRUE)

## -----------------------------------------------------------------------------
#  aid <- a$public_app()[[1]]$id
#  a$copy_app(aid, project = pid, name = "copy-rename-test")
#  # check if it is copied
#  a$app(project = pid)

## -----------------------------------------------------------------------------
#  app <- a$public_app(id = "admin/sbg-public-data/rna-seq-alignment-star")
#  app$copy_to(
#    project = "RFranklin/api-testing",
#    name = "copy of star"
#  )

## -----------------------------------------------------------------------------
#  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)

## -----------------------------------------------------------------------------
#  rbx <- Tool(
#    id = "runif",
#    label = "Random number generator",
#    hints = requirements(
#      docker(pull = "RFranklin/runif"),
#      cpu(1), mem(2000)
#    ),
#    baseCommand = "runif.R",
#    inputs = in.lst,
#    outputs = out.lst,
#    "sbg:job" = list(
#      allocatedResources = list(mem = 9000, cpu = 1),
#      inputs = list(min = 1, max = 150)
#    )
#  )
#  p$app_add("random", rbx)

## -----------------------------------------------------------------------------
#  rbx <- Tool(
#    id = "runif",
#    label = "Random number generator",
#    hints = requirements(
#      docker(pull = "RFranklin/runif"),
#      cpu(1), mem(2000)
#    ),
#    baseCommand = "runif.R",
#    inputs = in.lst,
#    outputs = out.lst
#  )
#  p$app_add("random", rbx, keep_test = TRUE)

## -----------------------------------------------------------------------------
#  # all tasks
#  a$task()
#  # filter
#  a$task(status = "completed")
#  a$task(status = "running")

## -----------------------------------------------------------------------------
#  # a better way
#  a$project("demo")$task()
#  
#  # alternatively
#  pid <- a$project("demo")$id
#  a$task(project = pid)

## -----------------------------------------------------------------------------
#  p$task(id = "your task id here", detail = TRUE)
#  p$task(detail = TRUE)

## -----------------------------------------------------------------------------
#  p <- a$project(id = "RFranklin/demo")
#  p$task(id = "2e1ebed1-c53e-4373-870d-4732acacbbbb")
#  p$task(parent = "2e1ebed1-c53e-4373-870d-4732acacbbbb")
#  p$task(parent = "2e1ebed1-c53e-4373-870d-4732acacbbbb", status = "completed")
#  p$task(parent = "2e1ebed1-c53e-4373-870d-4732acacbbbb", status = "draft")

## -----------------------------------------------------------------------------
#  # push an app first
#  fl.runif <- system.file("extdata", "runif.json", package = "sevenbridges")
#  a$project("demo")$app_add("runif_draft", fl.runif)
#  runif_id <- "RFranklin/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
#    )
#  ))

## -----------------------------------------------------------------------------
#  batch_task <- p$task(parent = "<parent_task_id>")
#  tsk_id <- sapply(batch_task, "[[", "id")
#  for (i in 1:length(tsk_id)) {
#    tsk <- p$task(id = tsk_id[i])
#    tsk$file()
#    tsk$download()
#  }

## -----------------------------------------------------------------------------
#  a <- Auth(user = "RFranklin", platform = "aws-us")
#  
#  a$add_volume(
#    name = "tutorial_volume",
#    type = "s3",
#    bucket = "RFranklin-demo",
#    prefix = "",
#    access_key_id = "your_access_key_id",
#    secret_access_key = "your_secret_access_key",
#    sse_algorithm = "AES256",
#    access_mode = "RW"
#  )

## -----------------------------------------------------------------------------
#  # list all volume
#  a$volume()
#  # get unique volume by id
#  a$volume(id = "RFranklin/RFranklin_demo")
#  # partial search by name
#  a$volume(name = "demo")

## -----------------------------------------------------------------------------
#  v <- a$volume()
#  v[[1]]$detail()

## -----------------------------------------------------------------------------
#  a$volume(id = "RFranklin/RFranklin_demo")$delete()

## -----------------------------------------------------------------------------
#  v <- a$volume(id = "RFranklin/tutorial_volume")
#  res <- v$import(
#    location = "A-RNA-File.bam.bai",
#    project = "RFranklin/s3tutorial",
#    name = "new.bam.bai",
#    overwrite = TRUE
#  )
#  
#  # get job status update
#  # state will be "COMPLETED" when it's finished, otherwise "PENDING"
#  v$get_import_job(res$id)
#  v

## -----------------------------------------------------------------------------
#  res <- v$export(
#    file = "579fb1c9e4b08370afe7903a",
#    volume = "RFranklin/tutorial_volume",
#    location = "", # when "" use old name
#    sse_algorithm = "AES256"
#  )
#  # get job status update
#  # state will be "COMPLETED" when it's finished other wise "PENDING"
#  v$get_export_job(res$id)
#  v

## -----------------------------------------------------------------------------
#  # list the first 100 files
#  a$public_file()
#  # list by offset and limit
#  a$public_file(offset = 100, limit = 100)
#  # simply list everything!
#  a$public_file(complete = TRUE)
#  # get exact file by id
#  a$public_file(id = "5772b6f0507c175267448700")
#  # get exact file by name with exact = TRUE
#  a$public_file(name = "G20479.HCC1143.2.converted.pe_1_1Mreads.fastq", exact = TRUE)
#  # with exact = FALSE by default search by name pattern
#  a$public_file(name = "fastq")
#  a$public_file(name = "G20479.HCC1143.2.converted.pe_1_1Mreads.fastq")

## -----------------------------------------------------------------------------
#  # list for 100 apps
#  a$public_app()
#  # list by offset and limit
#  a$public_app(offset = 100, limit = 50)
#  # search by id
#  a$public_app(id = "admin/sbg-public-data/control-freec-8-1/12")
#  # search by name in ALL apps
#  a$public_app(name = "STAR", complete = TRUE)
#  # search by name with exact match
#  a$public_app(name = "Control-FREEC", exact = TRUE, complete = TRUE)

## -----------------------------------------------------------------------------
#  p <- a$project(id = "RFranklin/source-project")
#  f <- p$file(complete = TRUE)
#  # get all file IDs
#  file_ids <- sapply(f, "[[", "id")
#  # bulk copy files to the target project
#  req <- a$bulk_file_copy(file_ids, "RFranklin/target-project")
#  # print the response list
#  (req <- unname(req))

## -----------------------------------------------------------------------------
#  sapply(req, "[[", "status")

## -----------------------------------------------------------------------------
#  sapply(req, "[[", "new_file_id")

## -----------------------------------------------------------------------------
#  sapply(req, "[[", "new_file_name")

## -----------------------------------------------------------------------------
#  a$send_feedback(
#    "This is a test for sending feedback via API. Please ignore this message.",
#    type = "thought"
#  )

## -----------------------------------------------------------------------------
#  a <- Auth(...)
#  
#  a$division()

## -----------------------------------------------------------------------------
#  (d <- a$division("the-division"))

## -----------------------------------------------------------------------------
#  team1 <- d$create_team(name = "New Team 1")
#  team2 <- d$create_team(name = "New Team 2")

## -----------------------------------------------------------------------------
#  d$team(team1$id)

## -----------------------------------------------------------------------------
#  team1$add_member("the-division/your_username")
#  team1$add_member("the-division/another_username")
#  
#  team2$add_member("the-division/your_username")

## -----------------------------------------------------------------------------
#  (m1 <- team1$member())
#  (m2 <- team2$member())

## -----------------------------------------------------------------------------
#  team1$remove_member(m1[[1]]$username)

## -----------------------------------------------------------------------------
#  team1$rename("Another Team Name")

## -----------------------------------------------------------------------------
#  d$team()

## -----------------------------------------------------------------------------
#  team1$delete()
#  team2$delete()

## -----------------------------------------------------------------------------
#  opt <- getOption("sevenbridges")
#  opt$advance_access <- TRUE
#  options(sevenbridges = opt)

## -----------------------------------------------------------------------------
#  # locate the project
#  p <- a$project(id = "RFranklin/api-markers")
#  # search for files with `.bam` in their names
#  f <- p$file(name = ".bam")
#  # use the first BAM file
#  f <- p$file(id = f[[1]]$id)
#  
#  # create two markers
#  m1 <- f$create_marker("The First Marker", start = 21631232, end = 21631232)
#  m2 <- f$create_marker("The Second Marker", start = 21631156, end = 21631158, chromosome = "chr7", private = FALSE)

## -----------------------------------------------------------------------------
#  f$marker()

## -----------------------------------------------------------------------------
#  marker_id <- m1$id
#  f$marker(id = marker_id)

## -----------------------------------------------------------------------------
#  (m1 <- m1$modify(name = "New Marker Name", end = 21631233, private = FALSE))

## -----------------------------------------------------------------------------
#  m1$delete()
#  m2$delete()

## -----------------------------------------------------------------------------
#  # 01 - Authentication ----------------------------------------------------------
#  
#  getToken()
#  
#  # authentication methods
#  a <- Auth(token = token)
#  a <- Auth(token = token, platform = "cgc")
#  a <- Auth(from = "env")
#  a <- Auth(from = "file", profile_name = "aws-us-user")
#  
#  # list all API calls
#  a$api()
#  
#  # API rate limit
#  a$rate_limit()
#  
#  # 02 - User -------------------------------------------------------------------
#  
#  a$user()
#  a$user("RFranklin")
#  
#  # 03 - Billing -----------------------------------------------------------------
#  
#  a$billing()
#  a$billing(id = ..., breakdown = TRUE)
#  a$invoice()
#  a$invoice(id = "your_id")
#  
#  # 04 - Project -----------------------------------------------------------------
#  
#  # create new project
#  a$project_new(name = ..., billing_group_id = ..., description = ...)
#  
#  # list all project owned by you
#  a$project()
#  a$project(owner = "Rosalind.Franklin")
#  
#  # 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()
#  
#  # 05 - 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 = ..., ...))
#  
#  # metadata
#  fl$meta()
#  fl$setMeta()
#  fl$setMeta(..., overwrite = TRUE)
#  
#  # 06 - App ---------------------------------------------------------------------
#  
#  a$app()
#  
#  # apps in a project
#  p$app()
#  p$app(name, id, revision = ...)
#  a$copy_app(aid, project = pid, name = ...)
#  
#  # add new app
#  p$app_add(short_name = ..., filename = ...)
#  
#  # 07 - Task --------------------------------------------------------------------
#  
#  a$task()
#  a$task(id = ...)
#  a$task(status = ...)
#  
#  p$task()
#  p$task(id = ...)
#  p$task(status = ...)
#  
#  tsk <- p$task(id = ...)
#  tsk$update()
#  tsk$abort()
#  tsk$run()
#  tsk$download()
#  tsk$detele()
#  tsk$getInputs()
#  tsk$monitor()
#  
#  getTaskHook()
#  setTaskHook(status = ..., fun = ...)

Try the sevenbridges package in your browser

Any scripts or data that you put into this service are public.

sevenbridges documentation built on March 25, 2021, 6 p.m.