Chapter 5 Data storage

All kaltoa objects can be stored as serialized R objects with saveRDS() and save(). However, to pass data to non-R users kaltoa provides functions for reading and writing objects to csv files. Below we’ll show some examples of this.

require(archive)
## Loading required package: archive
# --- Write/read Detections object 
# Write to csv
det = exdata_clocksync[[1]]
fname <- tempfile(fileext = ".csv.gz")
fh <- gzfile(fname, open = "w")
write.csv(x = det, file = fh, row.names = F)
close(fh)
# Import from csv
fh <- gzfile(fname, open = "r")
df_det <- read.csv(file = fh)
det_import <- as.Detections(
  df_det, name = "1", coord = c(481472, 6243509),
  depth = NaN, emit_id = "62041")
close(fh)

# --- Write DetectionsList as tar archived csv files
# Create temp directory
tmp_dir <- tempfile()
dir.create(tmp_dir)
# Write array attributes to csv
write.csv(
  file = file.path(tmp_dir, "attributes.csv"),
  x = attribute_table(exdata_positioning), row.names = F)
# Write detections tables to csv files
for(det in exdata_positioning){
  fname <- sprintf("Detections-%s.csv", attr(det, "name"))
  write.csv(
    file = file.path(tmp_dir, fname),
    x = det, row.names = F)
}
# Archive directory
f_archv <- tempfile(fileext = ".tar.gz")
archive_write_dir(archive = f_archv, dir = tmp_dir, full.names = F)
# Delete temp folder
unlink(tmp_dir, recursive = T)

# --- Write/read TOAMatrix to csv
toa <- get_toa(exdata_positioning, tag_id = "HR-53883", group_thresh = 0.5)
# Export as csv file
fname <- tempfile()
fh <- gzfile(fname, open = "w")
write.csv(x = toa, file = fh, row.names = F)
close(fh)
# Import from csv
fh <- gzfile(fname, open = "r")
df_toa <- read.csv(file = fh, check.names = F)
det_import <- as.TOAMatrix(
  df_toa, tag_id = "HR-53883", receiver_positions = positions(toa),
  transmission_speed = 1420)
close(fh)