## ----setup, include=FALSE-----------------------------------------------------
knitr::opts_chunk$set(
  collapse = TRUE,
  comment = "#>"
)

## ----install-cran, eval=FALSE-------------------------------------------------
# install.packages("nemoR")

## ----install-local, eval=FALSE------------------------------------------------
# devtools::install("nemoR", build_vignettes = TRUE)
# browseVignettes("nemoR")

## ----load---------------------------------------------------------------------
library(nemoR)

## ----discover-----------------------------------------------------------------
safe_portal_call <- function(expr) {
  tryCatch(
    expr,
    error = function(error) {
      message("NeMO portal query skipped: ", conditionMessage(error))
      NULL
    }
  )
}

species <- safe_portal_call(nemo_species())
if (!is.null(species)) {
  head(species)
}

## ----discover-file-formats----------------------------------------------------
formats <- safe_portal_call(nemo_file_formats(taxon = "house mouse", access = "open"))
if (!is.null(formats)) {
  head(formats)
}

## ----search-------------------------------------------------------------------
results <- safe_portal_call(
  nemo_search(
    taxon = "house mouse",
    file_format = "h5ad",
    access = "open",
    target = "files",
    size = 1
  )
)

if (!is.null(results)) {
  results
  attr(results, "pagination")
}

## ----manifest-----------------------------------------------------------------
manifest <- nemo_manifest_from_urls(
  urls = c(
    "https://example.com?file=sample-a.h5ad",
    "https://example.com?file=sample-b.h5ad"
  ),
  collection_id = "example-neuro-study"
)

manifest$size <- c(1024^2, 2 * 1024^2)
manifest

## ----plan---------------------------------------------------------------------
nemo_download_plan(manifest, max_size_gb = 1)

## ----write-read---------------------------------------------------------------
path <- tempfile(fileext = ".tsv")
nemo_write_manifest(manifest, path)
restored <- nemo_read_manifest(path)
restored[, c("collection_id", "file_name", "download_status")]

## ----download, eval=FALSE-----------------------------------------------------
# downloaded <- nemo_download(
#   manifest,
#   destdir = "nemo_downloads",
#   max_size_gb = 5,
#   verify_checksum = TRUE
# )

## ----fetch-dry-run, eval=FALSE------------------------------------------------
# preview <- nemo_fetch(
#   destdir = "nemo_downloads",
#   taxon = "house mouse",
#   file_format = "h5ad",
#   access = "open",
#   max_files = 3,
#   dry_run = TRUE
# )
# 
# attr(preview, "download_plan")

## ----session-info-------------------------------------------------------------
sessionInfo()

