1# Author: Robert J. Hijmans 2# Date : October 2018 3# Version 1.0 4# License GPL v3 5 6error <- function(f, emsg="", ...) { 7 stop("[", f, "] ", emsg, ..., call.=FALSE) 8} 9 10warn <- function(f, wmsg="", ...) { 11 warning("[", f, "] ", wmsg, ..., call.=FALSE) 12} 13 14messages <- function(x, f="") { 15 if (methods::.hasSlot(x, "ptr")) { 16 if (x@ptr$has_warning()) { 17 warn(f, paste(x@ptr$getWarnings(), collapse="\n")) 18 } 19 if (x@ptr$has_error()) { 20 error(f, x@ptr$getError()) 21 } 22 return(x) 23 } else { 24 if (x$has_warning()) { 25 warn(f, paste(x$getWarnings(), collapse="\n")) 26 } 27 if (x$has_error()) { 28 error(f, x$getError()) 29 } 30 return(x) 31 } 32} 33 34 35mem_info <- function(x, n=1) { 36 n <- max(0,n) 37 opt <- spatOptions() 38 opt$ncopies = n; 39 v <- x@ptr$mem_needs(opt) 40 #if (print) { 41 gb <- 1024^3 / 8 # 42 cat("\n------------------------") 43 cat("\nMemory (GB) ") 44 cat("\n------------------------") 45 cat(paste("\navailable :", round(v[2] / gb, 2))) 46 cat(paste0("\nallowed (", round(100* v[3]) , "%) : ", round(v[3] * v[2] / gb, 2))) 47 48 cat(paste0("\nneeded (n=", n, ") ", ifelse(n<10, " : ", ": "), round(v[1] / gb, 2))) 49 cat("\n------------------------") 50 cat(paste("\nproc in memory :", round(v[5]) != 0)) 51 cat(paste("\nnr chunks :", ceiling(nrow(x)/v[4]))) 52 cat("\n------------------------\n") 53 #} 54 names(v) <- c("needed", "available", "memfrac", "chunksize") 55} 56 57 58free_RAM <- function() { 59 opt <- spatOptions() 60 x <- rast() 61 v <- x@ptr$mem_needs(opt) 62 v[2] / 128 63} 64 65 66 67