bw.time {pcvr} | R Documentation |
Time conversion and plotting for bellwether data
bw.time(
df = NULL,
mode = c("DAS", "DAP", "DAE"),
plantingDelay = NULL,
phenotype = NULL,
cutoff = 1,
timeCol = "timestamp",
group = "Barcodes",
plot = TRUE,
format = "%Y-%m-%d %H:%M:%S",
traitCol = "trait",
valueCol = "value",
index = NULL
)
df |
Data frame to use, this can be in wide or long format. |
mode |
One of "DAS", "DAP" or "DAE" (Days After Planting and Days After Emergence). Defaults to adding all columns. Note that if timeCol is not an integer then DAS is always returned. |
plantingDelay |
If 'mode' includes "DAP" then 'plantingDelay' is used to adjust "DAS" |
phenotype |
If 'mode' includes "DAE" then this is the phenotype used to classify emergence. |
cutoff |
If 'mode' inlcludes "DAE" then this value is used to classify emergence. Defaults to 1, meaning an image with a value of 1 or more for 'phenotype' has "emerged". |
timeCol |
Column of input time values, defaults to "timestamp". If this is not an integer then it is assumed to be a timestamp in the format of the format argument. |
group |
Grouping variables to specify unique plants as a character vector. This defaults to "Barcodes". These taken together should identify a unique plant across time, although often "angle" or "rotation" should be added. |
plot |
Logical, should plots of the new time variables be printed? |
format |
An R POSIXct format, defaults to lemnatech standard format. This is only used if timeCol is not an integer. |
traitCol |
Column with phenotype names, defaults to "trait". This should generally not need to be changed from the default. If this and valueCol are present in colnames(df) then the data is assumed to be in long format. |
valueCol |
Column with phenotype values, defaults to "value". This should generally not need to be changed from the default. |
index |
Optionally a time to use as the beginning of the experiment. This
may be useful if you have multiple datasets or you are adding data from bw.water
and plants were watered before being imaged or if you want to index days off of
midnight. This defaults to NULL but will take any value coercible to POSIXct by
|
The input dataframe with new integer columns for different ways of describing time in the experiment. If plot is TRUE then a ggplot is also returned as part of a list.
f <- "https://raw.githubusercontent.com/joshqsumner/pcvrTestData/main/pcv4-single-value-traits.csv"
tryCatch(
{
sv <- read.pcv(
f,
mode = "wide", reader = "fread"
)
sv$genotype = substr(sv$barcode, 3, 5)
sv$genotype = ifelse(sv$genotype == "002", "B73",
ifelse(sv$genotype == "003", "W605S",
ifelse(sv$genotype == "004", "MM", "Mo17")
)
)
sv$fertilizer = substr(sv$barcode, 8, 8)
sv$fertilizer = ifelse(sv$fertilizer == "A", "100",
ifelse(sv$fertilizer == "B", "50", "0")
)
sv <- bw.time(sv,
plantingDelay = 0, phenotype = "area_pixels", cutoff = 10,
timeCol = "timestamp", group = c("barcode", "rotation"), plot = FALSE
)
svl <- read.pcv(
f,
mode = "long", reader = "fread"
)
svl$genotype = substr(svl$barcode, 3, 5)
svl$genotype = ifelse(svl$genotype == "002", "B73",
ifelse(svl$genotype == "003", "W605S",
ifelse(svl$genotype == "004", "MM", "Mo17")
)
)
svl$fertilizer = substr(svl$barcode, 8, 8)
svl$fertilizer = ifelse(svl$fertilizer == "A", "100",
ifelse(svl$fertilizer == "B", "50", "0")
)
svl <- bw.time(svl,
plantingDelay = 0, phenotype = "area_pixels", cutoff = 10, timeCol = "timestamp",
group = c("barcode", "rotation"), plot = FALSE
)
},
error = function(e) {
message(e)
}
)