R/occs2sparse.R

Defines functions occs2sparse

Documented in occs2sparse

#' occs2sparse: Converts occurrence data into a sparse matrix object
#' @param modelsparse A setA object returned by the function \code{\link[bam]{model2sparse}}
#' @param occs A matrix or a data.frame containing two columns. The first one is the longitude and the second is the latitude.
#' @return A sparse vector of zeros and ones.
#' @export
#' @examples
#' \dontrun{
#' model_path <- system.file("extdata/Lepus_californicus_cont.tif",
#'                           package = "bam")
#' model <- raster::raster(model_path)
#'
#' sparse_mod <- bam::model2sparse(model,threshold=0.05)
#'
#' occs_lep_cal <- data.frame(longitude = c(-115.10417,
#'                                          -104.90417),
#'                            latitude = c(29.61846,
#'                                         29.81846))
#'
#' occs_sparse <- bam::occs2sparse(modelsparse = sparse_mod,
#'                                 occs = occs_lep_cal)
#'
#' }

occs2sparse <- function(modelsparse,occs){
  if(!inherits(modelsparse,"setA")){
    stop("modelsparse should be of class setA")
  }

  occsIDs <- raster::cellFromXY(modelsparse@niche_model,occs)
  occsIDsSparese <-  which(modelsparse@cellIDs %in% occsIDs)
  pres_abs <- numeric(nrow(modelsparse@sparse_model))
  pres_abs[occsIDsSparese] <- 1
  pres_abs <- Matrix::Matrix(data = pres_abs,sparse=T)

  #mod_atts <- setA(niche_model = modelsparse@niche_model,
  #                 cellIDs = modelsparse@cellIDs,
  #                 sparse_model =  modelsparse@sparse_model,
  #                 occs_sparse = pres_abs,
  #                 n_occs = nrow(occs))
  return(pres_abs)
}
luismurao/bam documentation built on Nov. 28, 2022, 3:02 p.m.