SeaSondeR
Radial Metrics from SeaSonde HF-Radar Data
Description
Read CODAR's SeaSonde High-Frequency Radar spectra files, compute radial metrics, and generate plots for spectra and antenna pattern data. Implementation is based in technical manuals, publications and patents, please refer to the following documents for more information: Barrick and Lipa (1999) <https://codar.com/images/about/patents/05990834.PDF>; CODAR Ocean Sensors (2002) <http://support.codar.com/Technicians_Information_Page_for_SeaSondes/Docs/Informative/FirstOrder_Settings.pdf>; Lipa et al. (2006) <doi:10.1109/joe.2006.886104>; Paolo et al. (2007) <doi:10.1109/oceans.2007.4449265>; CODAR Ocean Sensors (2009a) <http://support.codar.com/Technicians_Information_Page_for_SeaSondes/Docs/GuidesToFileFormats/File_AntennaPattern.pdf>; CODAR Ocean Sensors (2009b) <http://support.codar.com/Technicians_Information_Page_for_SeaSondes/Docs/GuidesToFileFormats/File_CrossSpectraReduced.pdf>; CODAR Ocean Sensors (2016a) <http://support.codar.com/Technicians_Information_Page_for_SeaSondes/Manuals_Documentation_Release_8/File_Formats/File_Cross_Spectra_V6.pdf>; CODAR Ocean Sensors (2016b) <http://support.codar.com/Technicians_Information_Page_for_SeaSondes/Manuals_Documentation_Release_8/File_Formats/FIle_Reduced_Spectra.pdf>; CODAR Ocean Sensors (2016c) <http://support.codar.com/Technicians_Information_Page_for_SeaSondes/Manuals_Documentation_Release_8/Application_Guides/Guide_SpectraPlotterMap.pdf>; Bushnell and Worthington (2022) <doi:10.25923/4c5x-g538>.
Downloads
633
Last 30 days
5790th
633
Last 90 days
633
Last year
CRAN Check Status
Show all 14 flavors
| Flavor | Status |
|---|---|
| r-devel-linux-x86_64-debian-clang | OK |
| r-devel-linux-x86_64-debian-gcc | OK |
| r-devel-linux-x86_64-fedora-clang | OK |
| r-devel-linux-x86_64-fedora-gcc | OK |
| r-devel-macos-arm64 | ERROR |
| r-devel-windows-x86_64 | OK |
| r-oldrel-macos-arm64 | NOTE |
| r-oldrel-macos-x86_64 | NOTE |
| r-oldrel-windows-x86_64 | NOTE |
| r-patched-linux-x86_64 | OK |
| r-release-linux-x86_64 | OK |
| r-release-macos-arm64 | OK |
| r-release-macos-x86_64 | OK |
| r-release-windows-x86_64 | OK |
Check details (16 non-OK)
*
*
*
*
examples
Running examples in ‘SeaSondeR-Ex.R’ failed
The error most likely occurred in:
> ### Name: seasonder_MUSICLonLat
> ### Title: Map MUSIC Bearings to Geographic Coordinates
> ### Aliases: seasonder_MUSICLonLat seasonder_MUSIC_LonLat
>
> ### ** Examples
>
> # Create a SeaSondeRCS object for MUSIC example
> cs_file <- system.file("css_data/CSS_TORA_24_04_04_0700.cs", package = "SeaSondeR")
> apm_file <- system.file("css_data/MeasPattern.txt", package = "SeaSondeR")
> apm_obj <- seasonder_readSeaSondeRAPMFile(apm_file)
seasonder_createSeaSondeRAPM: APM object created successfully.
> cs_obj <- seasonder_createSeaSondeRCS(cs_file, seasonder_apm_object = apm_obj)
new_SeaSondeRCS: SeaSondeRCS object created successfully.
> cs_obj <- seasonder_initMUSICData(
+ cs_obj,
+ range_cells = c(rep(5,11), rep(4,11)),
+ doppler_bins = c(c(669:679),c(674:684))
+ )
> cs_obj <- seasonder_runMUSIC(cs_obj)
seasonder_runMUSIC: MUSIC algorithm started.
*** caught segfault ***
address 0x1, cause 'invalid permissions'
Traceback:
1: eigen(C, symmetric = TRUE)
2: .f(.x[[i]], ...)
3: .Primitive(".Call")(list(name = "map_impl", address = <pointer: 0x600001e929a0>, dll = list(name = "purrr", path = "/Volumes/Builds/packages/sonoma-arm64/Rlib/4.6/purrr/libs/purrr.so", dynamicLookup = FALSE, handle = <pointer: 0x76373080>, info = <pointer: 0x600003a90cc0>, forceSymbols = FALSE), numParameters = 6L), <environment>, "list", FALSE, 14L, NULL, 1L)
4: call_with_cleanup(map_impl, environment(), .type, .progress, n, names, i)
5: withCallingHandlers(expr, error = function(cnd) { if (i == 0L) { } else { message <- c(i = "In index: {i}.") if (!is.null(names) && !is.na(names[[i]]) && names[[i]] != "") { name <- names[[i]] message <- c(message, i = "With name: {name}.") } else { name <- NULL } cli::cli_abort(message, location = i, name = name, parent = cnd, call = error_call, class = "purrr_error_indexed") }})
6: with_indexed_errors(i = i, names = names, error_call = .purrr_error_call, call_with_cleanup(map_impl, environment(), .type, .progress, n, names, i))
7: map_("list", .x, .f, ..., .progress = .progress)
8: purrr::map(cov, seasonder_eigen_decomp_C)
9: .Call(dplyr_mask_eval_all_mutate, quo, private)
10: eval()
11: mask$eval_all_mutate(quo)
12: mutate_col(dots[[i]], data, mask, new_columns)
13: withCallingHandlers(for (i in seq_along(dots)) { poke_error_context(dots, i, mask = mask) context_poke("column", old_current_column) new_columns <- mutate_col(dots[[i]], data, mask, new_columns)}, error = dplyr_error_handler(dots = dots, mask = mask, bullets = mutate_bullets, error_call = error_call, error_class = "dplyr:::mutate_error"), warning = dplyr_warning_handler(state = warnings_state, mask = mask, error_call = error_call))
14: mutate_cols(.data, dplyr_quosures(...), by)
15: mutate.data.frame(., eigen = purrr::map(cov, seasonder_eigen_decomp_C))
16: dplyr::mutate(., eigen = purrr::map(cov, seasonder_eigen_decomp_C))
17: MUSIC %<>% dplyr::mutate(eigen = purrr::map(cov, seasonder_eigen_decomp_C))
18: seasonder_MUSICCovDecomposition(.)
19: out %<>% seasonder_MUSICCovDecomposition()
20: seasonder_runMUSIC(cs_obj)
An irrecoverable exception occurred. R is aborting now ...
re-building of vignette outputs
Error(s) in re-building vignettes:
sh: line 1: 24231 Segmentation fault: 11 '/Library/Frameworks/R.framework/Resources/bin/R' --vanilla --no-echo > '/Volumes/Temp/tmp/RtmpjMSuNr/file5e7d117501a9' 2>&1 < '/Volumes/Temp/tmp/RtmpjMSuNr/file5e7d18c00733'
--- re-building ‘RadialMetricsExport.Rmd’ using rmarkdown
*** caught segfault ***
address 0x1, cause 'invalid permissions'
Traceback:
1: eigen(C, symmetric = TRUE)
2: .f(.x[[i]], ...)
3: .Primitive(".Call")(list(name = "map_impl", address = <pointer: 0x600000eda040>, dll = list(name = "purrr", path = "/Volumes/Builds/packages/sonoma-arm64/Rlib/4.6/purrr/libs/purrr.so", dynamicLookup = FALSE, handle = <pointer: 0x76374660>, info = <pointer: 0x600002ad4a20>, forceSymbols = FALSE), numParameters = 6L), <environment>, "list", FALSE, 2318L, NULL, 1L)
4: call_with_cleanup(map_impl, environment(), .type, .progress, n, names, i)
5: withCallingHandlers(expr, error = function(cnd) { if (i == 0L) { } else { message <- c(i = "In index: {i}.") if (!is.null(names) && !is.na(names[[i]]) && names[[i]] != "") { name <- names[[i]] message <- c(message, i = "With name: {name}.") } else { name <- NULL } cli::cli_abort(message, location = i, name = name, parent = cnd, call = error_call, class = "purrr_error_indexed") }})
6: with_indexed_errors(i = i, names = names, error_call = .purrr_error_call, call_with_cleanup(map_impl, environment(), .type, .progress, n, names, i))
7: map_("list", .x, .f, ..., .progress = .progress)
8: purrr::map(cov, seasonder_eigen_decomp_C)
9: .Call(dplyr_mask_eval_all_mutate, quo, private)
10: eval()
11: mask$eval_all_mutate(quo)
12: mutate_col(dots[[i]], data, mask, new_columns)
13: withCallingHandlers(for (i in seq_along(dots)) { poke_error_context(dots, i, mask = mask) context_poke("column", old_current_column) new_columns <- mutate_col(dots[[i]], data, mask, new_columns)}, error = dplyr_error_handler(dots = dots, mask = mask, bullets = mutate_bullets, error_call = error_call, error_class = "dplyr:::mutate_error"), warning = dplyr_warning_handler(state = warnings_state, mask = mask, error_call = error_call))
14: mutate_cols(.data, dplyr_quosures(...), by)
15: mutate.data.frame(., eigen = purrr::map(cov, seasonder_eigen_decomp_C))
16: dplyr::mutate(., eigen = purrr::map(cov, seasonder_eigen_decomp_C))
17: MUSIC %<>% dplyr::mutate(eigen = purrr::map(cov, seasonder_eigen_decomp_C))
18: seasonder_MUSICCovDecomposition(.)
19: out %<>% seasonder_MUSICCovDecomposition()
20: seasonder_runMUSIC(.)
21: out %<>% seasonder_runMUSIC()
22: seasonder_runMUSICInFOR(cs_obj)
23: eval(expr, envir)
24: eval(expr, envir)
25: withVisible(eval(expr, envir))
26: withCallingHandlers(code, error = function (e) rlang::entrace(e), message = function (cnd) { watcher$capture_plot_and_output() if (on_message$capture) { watcher$push(cnd) } if (on_message$silence) { invokeRestart("muffleMessage") }}, warning = function (cnd) { if (getOption("warn") >= 2 || getOption("warn") < 0) { return() } watcher$capture_plot_and_output() if (on_warning$capture) { cnd <- sanitize_call(cnd) watcher$push(cnd) } if (on_warning$silence) { invokeRestart("muffleWarning") }}, error = function (cnd) { watcher$capture_plot_and_output() cnd <- sanitize_call(cnd) watcher$push(cnd) switch(on_error, continue = invokeRestart("eval_continue"), stop = invokeRestart("eval_stop"), error = NULL)})
27: eval(call)
28: eval(call)
29: with_handlers({ for (expr in tle$exprs) { ev <- withVisible(eval(expr, envir)) watcher$capture_plot_and_output() watcher$print_value(ev$value, ev$visible, envir) } TRUE}, handlers)
30: doWithOneRestart(return(expr), restart)
31: withOneRestart(expr, restarts[[1L]])
32: withRestartList(expr, restarts[-nr])
33: doWithOneRestart(return(expr), restart)
34: withOneRestart(withRestartList(expr, restarts[-nr]), restarts[[nr]])
35: withRestartList(expr, restarts)
36: withRestarts(with_handlers({ for (expr in tle$exprs) { ev <- withVisible(eval(expr, envir)) watcher$capture_plot_and_output() watcher$print_value(ev$value, ev$visible, envir) } TRUE}, handlers), eval_continue = function() TRUE, eval_stop = function() FALSE)
37: evaluate::evaluate(...)
38: evaluate(code, envir = env, new_device = FALSE, keep_warning = if (is.numeric(options$warning)) TRUE else options$warning, keep_message = if (is.numeric(options$message)) TRUE else options$message, stop_on_error = if (is.numeric(options$error)) options$error else { if (options$error && options$include) 0L else 2L }, output_handler = knit_handlers(options$render, options))
39: in_dir(input_dir(), expr)
40: in_input_dir(evaluate(code, envir = env, new_device = FALSE, keep_warning = if (is.numeric(options$warning)) TRUE else options$warning, keep_message = if (is.numeric(options$message)) TRUE else options$message, stop_on_error = if (is.numeric(options$error)) options$error else { if (options$error && options$include) 0L else 2L }, output_handler = knit_handlers(options$render, options)))
41: eng_r(options)
42: block_exec(params)
43: call_block(x)
44: process_group(group)
45: withCallingHandlers(if (tangle) process_tangle(group) else process_group(group), error = function(e) { if (progress && is.function(pb$interrupt)) pb$interrupt() if (is_R_CMD_build() || is_R_CMD_check()) error <<- format(e) })
46: with_options(withCallingHandlers(if (tangle) process_tangle(group) else process_group(group), error = function(e) { if (progress && is.function(pb$interrupt)) pb$interrupt() if (is_R_CMD_build() || is_R_CMD_check()) error <<- format(e) }), list(rlang_trace_top_env = knit_global()))
47: xfun:::handle_error(with_options(withCallingHandlers(if (tangle) process_tangle(group) else process_group(group), error = function(e) { if (progress && is.function(pb$interrupt)) pb$interrupt() if (is_R_CMD_build() || is_R_CMD_check()) error <<- format(e) }), list(rlang_trace_top_env = knit_global())), function(loc) { setwd(wd) write_utf8(res, output %n% stdout()) paste0("\nQuitting from ", loc, if (!is.null(error)) paste0("\n", rule(), error, "\n", rule()))}, if (labels[i] != "") sprintf(" [%s]", labels[i]), get_loc)
48: process_file(text, output)
49: knitr::knit(knit_input, knit_output, envir = envir, quiet = quiet)
50: rmarkdown::render(file, encoding = encoding, quiet = quiet, envir = globalenv(), output_dir = getwd(), ...)
51: vweave_rmarkdown(...)
52: engine$weave(file, quiet = quiet, encoding = enc)
53: doTryCatch(return(expr), name, parentenv, handler)
54: tryCatchOne(expr, names, parentenv, handlers[[1L]])
55: tryCatchList(expr, classes, parentenv, handlers)
56: tryCatch({ engine$weave(file, quiet = quiet, encoding = enc) setwd(startdir) output <- find_vignette_product(name, by = "weave", engine = engine) if (!have.makefile && vignette_is_tex(output)) { texi2pdf(file = output, clean = FALSE, quiet = quiet) output <- find_vignette_product(name, by = "texi2pdf", engine = engine) }}, error = function(e) { OK <<- FALSE message(gettextf("Error: processing vignette '%s' failed with diagnostics:\n%s", file, conditionMessage(e)))})
57: tools:::.buildOneVignette("RadialMetricsExport.Rmd", "/Volumes/Builds/packages/sonoma-arm64/results/4.6/SeaSondeR.Rcheck/vign_test/SeaSondeR", TRUE, FALSE, "RadialMetricsExport", "UTF-8", "/Volumes/Temp/tmp/RtmpjMSuNr/file5e7d5996295a.rds")
An irrecoverable exception occurred. R is aborting now ...
--- re-building ‘SeaSondeAPM.Rmd’ using rmarkdown
--- finished re-building ‘SeaSondeAPM.Rmd’
--- re-building ‘SeaSondeCS.Rmd’ using rmarkdown
--- finished re-building ‘SeaSondeCS.Rmd’
--- re-building ‘intro.Rmd’ using rmarkdown
--- finished re-building ‘intro.Rmd’
SUMMARY: processing the following file failed:
‘RadialMetricsExport.Rmd’
Error: Vignette re-building failed.
Execution halted
tests
Running ‘testthat.R’ [3s/3s]
Running the tests in ‘tests/testthat.R’ failed.
Complete output:
> # This file is part of the standard setup for testthat.
> # It is recommended that you do not modify it.
> #
> # Where should you do additional test configuration?
> # Learn more about the roles of various files in:
> # * https://r-pkgs.org/testing-design.html#sec-tests-files-overview
> # * https://testthat.r-lib.org/articles/special-files.html
>
> library(testthat)
> library(SeaSondeR)
>
> test_check("SeaSondeR")
Attaching package: 'magrittr'
The following objects are masked from 'package:testthat':
equals, is_less_than, not
*** caught segfault ***
address 0x1, cause 'invalid permissions'
Traceback:
1: eigen(C, symmetric = TRUE)
2: .f(.x[[i]], ...)
3: .Primitive(".Call")(list(name = "map_impl", address = <pointer: 0x6000025fc700>, dll = list(name = "purrr", path = "/Volumes/Builds/packages/sonoma-arm64/Rlib/4.6/purrr/libs/purrr.so", dynamicLookup = FALSE, handle = <pointer: 0x76384250>, info = <pointer: 0x6000001fc180>, forceSymbols = FALSE), numParameters = 6L), <environment>, "list", FALSE, 4608L, NULL, 1L)
4: call_with_cleanup(map_impl, environment(), .type, .progress, n, names, i)
5: withCallingHandlers(expr, error = function(cnd) { if (i == 0L) { } else { message <- c(i = "In index: {i}.") if (!is.null(names) && !is.na(names[[i]]) && names[[i]] != "") { name <- names[[i]] message <- c(message, i = "With name: {name}.") } else { name <- NULL } cli::cli_abort(message, location = i, name = name, parent = cnd, call = error_call, class = "purrr_error_indexed") }})
6: with_indexed_errors(i = i, names = names, error_call = .purrr_error_call, call_with_cleanup(map_impl, environment(), .type, .progress, n, names, i))
7: map_("list", .x, .f, ..., .progress = .progress)
8: purrr::map(cov, seasonder_eigen_decomp_C)
9: .Call(dplyr_mask_eval_all_mutate, quo, private)
10: eval()
11: mask$eval_all_mutate(quo)
12: mutate_col(dots[[i]], data, mask, new_columns)
13: withCallingHandlers(for (i in seq_along(dots)) { poke_error_context(dots, i, mask = mask) context_poke("column", old_current_column) new_columns <- mutate_col(dots[[i]], data, mask, new_columns)}, error = dplyr_error_handler(dots = dots, mask = mask, bullets = mutate_bullets, error_call = error_call, error_class = "dplyr:::mutate_error"), warning = dplyr_warning_handler(state = warnings_state, mask = mask, error_call = error_call))
14: mutate_cols(.data, dplyr_quosures(...), by)
15: mutate.data.frame(., eigen = purrr::map(cov, seasonder_eigen_decomp_C))
16: dplyr::mutate(., eigen = purrr::map(cov, seasonder_eigen_decomp_C))
17: MUSIC %<>% dplyr::mutate(eigen = purrr::map(cov, seasonder_eigen_decomp_C))
18: seasonder_MUSICCovDecomposition(.)
19: out %<>% seasonder_MUSICCovDecomposition()
20: seasonder_runMUSIC(.)
21: out %<>% seasonder_runMUSIC()
22: seasonder_runMUSICInFOR(seasonder_cs_obj)
23: eval(code, test_env)
24: eval(code, test_env)
25: withCallingHandlers({ eval(code, test_env) new_expectations <- the$test_expectations > starting_expectations if (snapshot_skipped) { skip("On CRAN") } else if (!new_expectations && skip_on_empty) { skip_empty() }}, expectation = handle_expectation, packageNotFoundError = function(e) { if (on_cran()) { skip(paste0("{", e$package, "} is not installed.")) }}, snapshot_on_cran = function(cnd) { snapshot_skipped <<- TRUE invokeRestart("muffle_cran_snapshot")}, skip = handle_skip, warning = handle_warning, message = handle_message, error = handle_error, interrupt = handle_interrupt)
26: doTryCatch(return(expr), name, parentenv, handler)
27: tryCatchOne(expr, names, parentenv, handlers[[1L]])
28: tryCatchList(expr, classes, parentenv, handlers)
29: tryCatch(withCallingHandlers({ eval(code, test_env) new_expectations <- the$test_expectations > starting_expectations if (snapshot_skipped) { skip("On CRAN") } else if (!new_expectations && skip_on_empty) { skip_empty() }}, expectation = handle_expectation, packageNotFoundError = function(e) { if (on_cran()) { skip(paste0("{", e$package, "} is not installed.")) }}, snapshot_on_cran = function(cnd) { snapshot_skipped <<- TRUE invokeRestart("muffle_cran_snapshot")}, skip = handle_skip, warning = handle_warning, message = handle_message, error = handle_error, interrupt = handle_interrupt), error = handle_fatal)
30: doWithOneRestart(return(expr), restart)
31: withOneRestart(expr, restarts[[1L]])
32: withRestarts(tryCatch(withCallingHandlers({ eval(code, test_env) new_expectations <- the$test_expectations > starting_expectations if (snapshot_skipped) { skip("On CRAN") } else if (!new_expectations && skip_on_empty) { skip_empty() }}, expectation = handle_expectation, packageNotFoundError = function(e) { if (on_cran()) { skip(paste0("{", e$package, "} is not installed.")) }}, snapshot_on_cran = function(cnd) { snapshot_skipped <<- TRUE invokeRestart("muffle_cran_snapshot")}, skip = handle_skip, warning = handle_warning, message = handle_message, error = handle_error, interrupt = handle_interrupt), error = handle_fatal), end_test = function() { })
33: test_code(code, parent.frame())
34: test_that("El fichero exportado coincide con el fichero de referencia", { CS_file_path <- system.file("css_data/CSS_TORA_24_04_04_0700.cs", package = "SeaSondeR") APM_path <- system.file("css_data/MeasPattern.txt", package = "SeaSondeR") seasonder_disableMessages() seasonder_apm_obj <- seasonder_readSeaSondeRAPMFile(APM_path) seasonder_cs_obj <- seasonder_createSeaSondeRCS(CS_file_path, seasonder_apm_object = seasonder_apm_obj) first_order_settings <- list(nsm = 2, fdown = 10^(10/10), flim = 10^(20/10), noisefact = 10^(6/10), currmax = 2, reject_distant_bragg = TRUE, reject_noise_ionospheric = FALSE, reject_noise_ionospheric_threshold = 0) seasonder_cs_obj <- seasonder_computeFORs(seasonder_cs_obj, FOR_control = first_order_settings) MUSIC_options <- list(doppler_interpolation = 2, smoothNoiseLevel = TRUE, PPMIN = 5, PWMAX = 50) seasonder_cs_obj <- seasonder_setMUSICOptions(seasonder_cs_obj, MUSIC_options) seasonder_cs_obj <- seasonder_runMUSICInFOR(seasonder_cs_obj) lluv_temp_path <- tempfile(pattern = "CSS_TORA_24_04_04_0700", fileext = ".ruv") AngSeg <- purrr::list_c(lapply(45:61, function(i) list(c(i, 313, 360), c(i, 0, 31)))) seasonder_exportLLUVRadialMetrics(seasonder_cs_obj, LLUV_path = lluv_temp_path, AngSeg = AngSeg) expected_metrics_text <- readLines(system.file("css_data/CSS_TORA_24_04_04_0700.ruv", package = "SeaSondeR")) radial_metrics_text <- readLines(lluv_temp_path) filter_text <- function(txt) { txt[!grepl("^%ProcessedTimeStamp", txt)] } expected_metrics_text <- filter_text(expected_metrics_text) radial_metrics_text <- filter_text(radial_metrics_text) expect_equal(radial_metrics_text, expected_metrics_text) })
35: eval(code, test_env)
36: eval(code, test_env)
37: withCallingHandlers({ eval(code, test_env) new_expectations <- the$test_expectations > starting_expectations if (snapshot_skipped) { skip("On CRAN") } else if (!new_expectations && skip_on_empty) { skip_empty() }}, expectation = handle_expectation, packageNotFoundError = function(e) { if (on_cran()) { skip(paste0("{", e$package, "} is not installed.")) }}, snapshot_on_cran = function(cnd) { snapshot_skipped <<- TRUE invokeRestart("muffle_cran_snapshot")}, skip = handle_skip, warning = handle_warning, message = handle_message, error = handle_error, interrupt = handle_interrupt)
38: doTryCatch(return(expr), name, parentenv, handler)
39: tryCatchOne(expr, names, parentenv, handlers[[1L]])
40: tryCatchList(expr, classes, parentenv, handlers)
41: tryCatch(withCallingHandlers({ eval(code, test_env) new_expectations <- the$test_expectations > starting_expectations if (snapshot_skipped) { skip("On CRAN") } else if (!new_expectations && skip_on_empty) { skip_empty() }}, expectation = handle_expectation, packageNotFoundError = function(e) { if (on_cran()) { skip(paste0("{", e$package, "} is not installed.")) }}, snapshot_on_cran = function(cnd) { snapshot_skipped <<- TRUE invokeRestart("muffle_cran_snapshot")}, skip = handle_skip, warning = handle_warning, message = handle_message, error = handle_error, interrupt = handle_interrupt), error = handle_fatal)
42: doWithOneRestart(return(expr), restart)
43: withOneRestart(expr, restarts[[1L]])
44: withRestarts(tryCatch(withCallingHandlers({ eval(code, test_env) new_expectations <- the$test_expectations > starting_expectations if (snapshot_skipped) { skip("On CRAN") } else if (!new_expectations && skip_on_empty) { skip_empty() }}, expectation = handle_expectation, packageNotFoundError = function(e) { if (on_cran()) { skip(paste0("{", e$package, "} is not installed.")) }}, snapshot_on_cran = function(cnd) { snapshot_skipped <<- TRUE invokeRestart("muffle_cran_snapshot")}, skip = handle_skip, warning = handle_warning, message = handle_message, error = handle_error, interrupt = handle_interrupt), error = handle_fatal), end_test = function() { })
45: test_code(code = exprs, env = env, reporter = get_reporter() %||% StopReporter$new())
46: source_file(path, env = env(env), desc = desc, shuffle = shuffle, error_call = error_call)
47: FUN(X[[i]], ...)
48: lapply(test_paths, test_one_file, env = env, desc = desc, shuffle = shuffle, error_call = error_call)
49: doTryCatch(return(expr), name, parentenv, handler)
50: tryCatchOne(expr, names, parentenv, handlers[[1L]])
51: tryCatchList(expr, classes, parentenv, handlers)
52: tryCatch(code, testthat_abort_reporter = function(cnd) { cat(conditionMessage(cnd), "\n") NULL})
53: with_reporter(reporters$multi, lapply(test_paths, test_one_file, env = env, desc = desc, shuffle = shuffle, error_call = error_call))
54: test_files_serial(test_dir = test_dir, test_package = test_package, test_paths = test_paths, load_helpers = load_helpers, reporter = reporter, env = env, stop_on_failure = stop_on_failure, stop_on_warning = stop_on_warning, desc = desc, load_package = load_package, shuffle = shuffle, error_call = error_call)
55: test_files(test_dir = path, test_paths = test_paths, test_package = package, reporter = reporter, load_helpers = load_helpers, env = env, stop_on_failure = stop_on_failure, stop_on_warning = stop_on_warning, load_package = load_package, parallel = parallel, shuffle = shuffle)
56: test_dir("testthat", package = package, reporter = reporter, ..., load_package = "installed")
57: test_check("SeaSondeR")
An irrecoverable exception occurred. R is aborting now ...
*
installed package size
installed size is 10.1Mb
sub-directories of 1Mb or more:
css_data 8.7Mb
installed package size
installed size is 10.1Mb
sub-directories of 1Mb or more:
css_data 8.7Mb
installed package size
installed size is 10.0Mb
sub-directories of 1Mb or more:
css_data 8.7Mb
*
*
*
*
*
Check History
ERROR 10 OK · 3 NOTE · 0 WARNING · 1 ERROR · 0 FAILURE Mar 9, 2026
examples
Running examples in ‘SeaSondeR-Ex.R’ failed
The error most likely occurred in:
> ### Name: seasonder_MUSICLonLat
> ### Title: Map MUSIC Bearings to Geographic Coordinates
> ### Aliases: seasonder_MUSICLonLat seasonder_MUSIC_LonLat
>
> ### ** Examples
>
> # Create a SeaSondeRCS object for MUSIC example
> cs_file <- system.file("css_data/CSS_TORA_24_04_04_0700.cs", package = "SeaSondeR")
> apm_file <- system.file("css_data/MeasPattern.txt", package = "SeaSondeR")
> apm_obj <- seasonder_readSea
installed package size
installed size is 10.1Mb
sub-directories of 1Mb or more:
css_data 8.7Mb
installed package size
installed size is 10.1Mb
sub-directories of 1Mb or more:
css_data 8.7Mb
installed package size
installed size is 10.0Mb
sub-directories of 1Mb or more:
css_data 8.7Mb