aboutsummaryrefslogtreecommitdiff
path: root/R/drdata.R
diff options
context:
space:
mode:
Diffstat (limited to 'R/drdata.R')
-rw-r--r--R/drdata.R80
1 files changed, 43 insertions, 37 deletions
diff --git a/R/drdata.R b/R/drdata.R
index b7e4761..8f18ebd 100644
--- a/R/drdata.R
+++ b/R/drdata.R
@@ -3,44 +3,50 @@ drdata <- function(substances, experimentator = "%", db = "cytotox",
organism = "Vibrio fischeri", endpoint = "Luminescence", whereClause = "1",
ok = "'ok','no fit'")
{
- if (requireNamespace("RODBC")) {
- channel <- RODBC::odbcConnect(db,uid="cytotox",pwd="cytotox",case="tolower")
- slist <- paste(substances,collapse="','")
- if (db == "cytotox") {
- experimenttype <- "plate"
- responsetype <- "viability"
- testtype <- "celltype"
- type <- celltype
- } else {
- if (db == "enzymes") {
- experimenttype <- "plate"
- responsetype <- "activity"
- testtype <- "enzyme"
- type <- enzymetype
- } else {
- experimenttype <- "experiment"
- responsetype <- "response"
- testtype <- "organism"
- type <- organism
- }
- }
+ # Connect to the correct database via the DSN
+ con <- dbConnect(odbc(), "cytotox", database = db)
- query <- paste("SELECT conc,",responsetype,", unit, experimentator, ",
- experimenttype, ", substance, ", testtype,
- ", ok FROM ", db, " WHERE substance IN ('",
- slist,"') AND experimentator LIKE '",
- experimentator,"' AND ",testtype," LIKE '",
- type,"' AND ",
- whereClause," AND ok in (",
- ok,")",sep="")
- if (db == "ecotox") query <- paste(query," AND type LIKE '",endpoint,"'",sep="")
- data <- RODBC::sqlQuery(channel,query)
- RODBC::odbcClose(channel)
- names(data)[[1]] <- "dose"
- names(data)[[2]] <- "response"
- data$substance <- factor(data$substance,levels=substances)
- return(data)
+ # Construct the query
+ slist <- paste(substances, collapse = "','")
+ if (db == "cytotox") {
+ experimenttype <- "plate"
+ responsetype <- "viability"
+ testtype <- "celltype"
+ type <- celltype
} else {
- stop("For this function, the RODBC package has to be installed and configured.")
+ if (db == "enzymes") {
+ experimenttype <- "plate"
+ responsetype <- "activity"
+ testtype <- "enzyme"
+ type <- enzymetype
+ } else {
+ experimenttype <- "experiment"
+ responsetype <- "response"
+ testtype <- "organism"
+ type <- organism
+ }
}
+
+ query <- paste0(
+ "SELECT conc,", responsetype, ", unit, experimentator, ",
+ experimenttype, ", substance, ", testtype,
+ ", ok ",
+ "FROM ", db, " ",
+ "WHERE ",
+ "substance IN ('", slist, "') AND ",
+ "experimentator LIKE '", experimentator,"' AND ",
+ testtype, " LIKE '", type, "' AND ",
+ whereClause, " AND ",
+ "ok in (", ok, ")")
+
+ if (db == "ecotox") query <- paste0(query, " AND type LIKE '", endpoint, "'")
+
+ # Get the data, format and return them
+ data <- dbGetQuery(con, query)
+
+ names(data)[[1]] <- "dose"
+ names(data)[[2]] <- "response"
+ data$substance <- factor(data$substance, levels = substances)
+
+ return(data)
}

Contact - Imprint