tests/testthat/test-sdm_as.R

test_that("sdm_as_stars", {
  sa <- sdm_area(parana, 100000, crs=6933) |>
    add_predictors(bioc) |>
    select_predictors(c("bio1", "bio12"))

  expect_null(sdm_as_stars(sa))
  expect_null(sdm_as_terra(sa))
  expect_null(sdm_as_raster(sa))

  oc <- occurrences_sdm(occ, crs=6933)
  suppressWarnings(oc <- join_area(oc, sa))
  i <- input_sdm(oc, sa)
  #predictors
  expect_equal(class(sdm_as_stars(i)), "stars")
  expect_equal(class(sdm_as_terra(i))[1], "SpatRaster")
  expect_equal(class(sdm_as_raster(i))[1], "RasterBrick")

  i <- add_scenarios(i)
  #scenarios
  expect_equal(class(sdm_as_stars(i)), "stars")
  expect_equal(class(sdm_as_terra(i))[1], "SpatRaster")
  expect_equal(class(sdm_as_raster(i))[1], "RasterBrick")
  expect_equal(class(sdm_as_raster(i, what="scenarios"))[1], "RasterBrick")
  expect_equal(class(sdm_as_raster(i, what="scenarios", scen="current"))[1], "RasterBrick")
  expect_equal(class(sdm_as_terra(i, what="scenarios"))[1], "SpatRaster")
  expect_equal(class(sdm_as_terra(i, what="scenarios", scen="current"))[1], "SpatRaster")

  suppressWarnings(i <- pseudoabsences(i, method = "random", n_set = 3))
  ctrl <- caret::trainControl(
    method = "cv", number = 2, classProbs = TRUE, returnResamp = "all",
    summaryFunction = caret::twoClassSummary, savePredictions = "all"
  )
  suppressWarnings(i <- train_sdm(i,
                                  algo = c("naive_bayes", "kknn"),
                                  ctrl = ctrl))
  p <- predict_sdm(i, th = 0.5, ensembles = FALSE)
  # predictions
  expect_equal(class(sdm_as_stars(p)), "stars")
  expect_true(all(c("cell_id", "presence", "pseudoabsence") %in% names(sdm_as_stars(p))))
  expect_equal(class(sdm_as_terra(p))[1], "SpatRaster")
  expect_equal(class(sdm_as_raster(p))[1], "RasterBrick")
  expect_true(all(c("cell_id", "presence") %in% names(sdm_as_terra(p))))
  expect_true(all(c("cell_id", "presence") %in% names(sdm_as_raster(p))))

  p <- predict_sdm(i, th = 0.5)
  # ensembles
  expect_equal(class(sdm_as_stars(p)), "stars")
  expect_true(all(c("cell_id", "mean_occ_prob") %in% names(sdm_as_stars(p))))
  expect_equal(class(sdm_as_terra(p))[1], "SpatRaster")
  expect_true(all(c("mean_occ_prob") %in% names(sdm_as_terra(p))))
  expect_equal(class(sdm_as_raster(p))[1], "RasterBrick")
  expect_true(all(c("mean_occ_prob") %in% names(sdm_as_raster(p))))

  # what
  expect_equal(class(sdm_as_stars(p, what="predictors")), "stars")
  expect_equal(class(sdm_as_stars(p, what="scenarios")), "list")
  expect_equal(names(sdm_as_stars(p, what="scenarios")), "current")
  expect_equal(class(sdm_as_stars(p, what="scenarios")$current), "stars")
  expect_equal(class(sdm_as_stars(p, what="predictions")), "stars")
  expect_true(all(c("cell_id", "presence", "pseudoabsence") %in% names(sdm_as_stars(p, what="predictions"))))
  expect_equal(class(sdm_as_stars(p, what="ensembles")), "stars")
  expect_true(all(c("cell_id", "mean_occ_prob") %in% names(sdm_as_stars(p, what="ensembles"))))

  # classes
  expect_true(is_input_sdm(p))
  expect_true(is_sdm_area(p$predictors))
  expect_true(is_occurrences(p$occurrences))
  expect_true(is_models(p$models))
  expect_true(is_predictions(p$predictions))
})

Try the caretSDM package in your browser

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

caretSDM documentation built on Aug. 29, 2025, 5:17 p.m.