aboutsummaryrefslogtreecommitdiff
path: root/pkg/R/TOXSWA_cwa.R
diff options
context:
space:
mode:
authorJohannes Ranke <jranke@uni-bremen.de>2016-07-30 10:42:48 +0200
committerJohannes Ranke <jranke@uni-bremen.de>2016-07-30 10:49:43 +0200
commit1ceb226d999d56276c9e361f359368287a0749c4 (patch)
treef8229f7e9391e3ef98a0b7eec4e7386b07709ff4 /pkg/R/TOXSWA_cwa.R
parentd6b230cd1b415a112009227bc9e0ff50316c42f7 (diff)
Read cwas from .out files with metabolites
TOXSWA 4 stores the detailed output for SWASH runs with metabolites in its .out files. With this commit it is possible to read in .out files from such runs with metabolites. Default is to read in the concentrations for the parent, a newly gained "substance" argument makes it possible to specify the metabolite for which the data should be read.
Diffstat (limited to 'pkg/R/TOXSWA_cwa.R')
-rw-r--r--pkg/R/TOXSWA_cwa.R32
1 files changed, 27 insertions, 5 deletions
diff --git a/pkg/R/TOXSWA_cwa.R b/pkg/R/TOXSWA_cwa.R
index fd056b2..c5ddce9 100644
--- a/pkg/R/TOXSWA_cwa.R
+++ b/pkg/R/TOXSWA_cwa.R
@@ -19,7 +19,7 @@
#'
#' Read TOXSWA hourly concentrations of a chemical substance in a specific
#' segment of a TOXSWA surface water body. Per default, the data for the last
-#' segment are imported. As TOXSWA reports the values at the end of the hour
+#' segment are imported. As TOXSWA 4 reports the values at the end of the hour
#' (ConLiqWatLayCur) in its summary file, we use this value as well instead
#' of the hourly averages (ConLiqWatLay).
#'
@@ -32,6 +32,9 @@
#' @param total Set this to TRUE in order to read total concentrations as well. This is
#' only necessary for .out files as generated by TOXSWA 4.4.2 or similar, not for .cwa
#' files. For .cwa files, the total concentration is always read as well.
+#' @param substance For TOXSWA 4 .out files, the default value "parent" leads
+#' to reading concentrations of the parent compound. Alternatively, the substance
+#' of interested can be selected by its code name.
#' @param windows Numeric vector of width of moving windows in days, for calculating
#' maximum time weighted average concentrations and areas under the curve.
#' @param thresholds Numeric vector of threshold concentrations in µg/L for
@@ -47,11 +50,13 @@
#' zipfile = system.file("testdata/SwashProjects.zip",
#' package = "pfm"))
read.TOXSWA_cwa <- function(filename, basedir = ".", zipfile = NULL,
- segment = "last", total = FALSE,
+ segment = "last", substance = "parent",
+ total = FALSE,
windows = NULL, thresholds = NULL)
{
if (!missing(filename)) {
- cwa <- TOXSWA_cwa$new(filename, basedir, zipfile, total = total)
+ cwa <- TOXSWA_cwa$new(filename, basedir, zipfile,
+ substance = substance, total = total)
if (!is.null(windows[1])) cwa$moving_windows(windows)
if (!is.null(thresholds[1])) cwa$get_events(thresholds)
invisible(cwa)
@@ -165,10 +170,12 @@ TOXSWA_cwa <- R6Class("TOXSWA_cwa",
basedir = NULL,
zipfile = NULL,
segment = NULL,
+ substance = NULL,
cwas = NULL,
windows = NULL,
events = list(),
- initialize = function(filename, basedir, zipfile = NULL, segment = "last", total = FALSE) {
+ initialize = function(filename, basedir, zipfile = NULL,
+ segment = "last", substance = "parent", total = FALSE) {
self$filename <- filename
self$basedir <- basedir
self$zipfile <- zipfile
@@ -227,7 +234,22 @@ TOXSWA_cwa <- R6Class("TOXSWA_cwa",
if (inherits(outfile, "try-error")) {
stop("Could not read ", filename)
} else {
- cwa_lines <- outfile[grep("ConLiqWatLayCur_", outfile)] # concentrations at end of hour
+ # Get the substance name(s)
+ sub_lines <- grep(".*0.000.*ConLiqWatLayCur_", outfile[1:50], value = TRUE)
+ substances <- gsub(".*ConLiqWatLayCur_(.*?) *[0-9].*", "\\1", sub_lines)
+ if (!substance %in% c("parent", substances)) {
+ stop("No data for substance ", substance, " present in the .out file.")
+ }
+
+ # Generate field name for the concentrations at end of hour for the
+ # substance of interest
+ if (substance == "parent") {
+ cwa_string = paste0("ConLiqWatLayCur_", substances[1])
+ } else {
+ cwa_string = paste0("ConLiqWatLayCur_", substance)
+ }
+
+ cwa_lines <- grep(cwa_string, outfile, value = TRUE)
cwa_all_segments <- read_fwf(paste(cwa_lines, collapse = "\n"),
fwf_empty(paste(tail(cwa_lines), collapse = "\n")))

Contact - Imprint