checksubstance <- function(substance,
db = c("cytotox", "enzymes", "ecotox"),
experimentator = "%",
celltype = "%", enzymetype = "%", organism = "%",
endpoint = "%",
whereClause = "1", ok= "%")
{
db = match.arg(db)
databases <- data.frame(
responsename = c("viability", "activity", "raw_response"),
testtype = c("celltype", "enzyme", "organism"),
exptype = c("plate", "plate", "experiment"),
row.names = c("cytotox", "enzymes", "ecotox"),
stringsAsFactors = FALSE)
con <- dbConnect(odbc(), "cytotox", database = db)
responsename <- databases[db, 1]
testtype <- databases[db, 2]
exptype <- databases[db, 3]
if (db == "cytotox") {
type <- celltype
}
if (db == "enzymes") {
type <- enzymetype
}
if (db == "ecotox") {
type <- organism
}
query <- paste("SELECT experimentator,substance,",
testtype, ",", exptype, ",conc,unit,",responsename,",ok",
" FROM ",db," WHERE substance LIKE '",
substance,"' AND experimentator LIKE '",
experimentator,"' AND ",testtype," LIKE '",
type,"' AND ",
whereClause," AND ok LIKE '",ok,"'",
sep = "")
if (db == "ecotox") {
query <- paste(query, " AND type LIKE '",
endpoint, "'", sep = "")
}
data <- dbGetQuery(con, query)
if (length(data$experimentator) < 1) {
stop(paste("\nNo response data for",substance,"in database",
db,"found with these parameters\n"))
}
data$experimentator <- factor(data$experimentator)
data$substance <- factor(data$substance)
substances <- levels(data$substance)
data$type <- factor(data[[testtype]])
data[[exptype]] <- factor(data[[exptype]])
experiments <- levels(data[[exptype]])
concentrations <- split(data$conc,data$conc)
concentrations <- as.numeric(names(concentrations))
data$unit <- factor(data$unit)
data$ok <- factor(data$ok)
if (length(experiments)>6) {
palette(rainbow(length(experiments)))
}
plot(log10(data$conc),data[[responsename]],
xlim=c(-2.5, 4.5),
ylim= range(data[[responsename]], na.rm = TRUE),
xlab=paste("decadic logarithm of the concentration in ",levels(data$unit)),
ylab=responsename)
explist <- split(data,data[[exptype]])
for (i in 1:length(explist)) {
points(log10(explist[[i]]$conc),explist[[i]][[responsename]],col=i);
}
legend("topleft", experiments, pch=1, col=1:length(experiments), inset=0.05)
title(main=paste(substance," - ",levels(data$experimentator)," - ",levels(data$type)))
exptypename <- paste(toupper(substring(exptype,1,1)),
substring(exptype,2), sep = "")
experimentators <- paste(levels(data$experimentator), collapse = " ")
types <- paste(levels(data$type), collapse = " ")
experiments <- paste(levels(data[[exptype]]), collapse = " ")
class(experiments)
cat("\n\tSubstanz:\t\t",substance,"\n",
"\tExperimentator(s):\t", experimentators,"\n",
"\tType(s): \t\t",types,"\n",
"\tEndpoint: \t\t",endpoint,"\n",
"\t", exptypename, "(s):\t\t",experiments,"\n\n", sep = "")
}