#' Reconstitute data and pick limitations
#'
#' Take fit data and send it back through to build a table with limiting curves
#' @param data The original A/Ci data
#' @param fitParams The returned params data from the fitting function
#' @param name_assimilation The name given to assimilation column in "data"
#' @param name_ci The name given to the internal CO2 concentration column in "data"
#' @param gammastar The Cc compensation point. Default: Tobacco.
#' @param O2 The oxygen concentration in parts per hundred.
#' @param pressure Atmospheric pressure in kPa
#' @param tleaf The leaf temperature, in celsius
#' @param ignoreTPU Whether to fit TPU or not. Leave false if you don't know what you're doing!
#' @param Kc Michaelis-menten kinetic parameter for carboxylation
#' @param Ko Michaelis-menten kinetic parameter for oxygenation
#' @name reconstituteTable
#' @export
reconstituteTable <- function(data,fitParams,name_assimilation="A", name_ci=c("pCi","Ci"),gammastar=3.52,O2=21,pressure=101,tleaf=25,ignoreTPU=F,Kc=exp(35.9774-(80.99 / (0.008314*(273.15 + tleaf)))),
Ko=exp(12.3772-(23.72 / (0.008314*(273.15 + tleaf))))){
if(!tibble::is_tibble(data)){
data <- tibble::tibble(data)
}
locs <- match(tolower(name_ci),tolower(colnames(data)))
loc <- min(stats::na.omit(locs))
pCi <- data[,loc]
if(!grepl(pattern="p",tolower(colnames(pCi)))){
pCi <- pCi /1000000*1000*pressure
}
pCi <- pCi[[1]]
AData <- data[name_assimilation]
coef <- with(fitParams,{
CoefFunc(ag, gammastar, unlist(pCi) - unlist(AData)/gm)
})
data2 <- with(fitParams,{
tibble::tibble(A = unlist(AData), "pCi" = pCi,"Cc"=unlist(pCi) - unlist(AData)/gm)
})
cdat <- with(fitParams,{
tibble::tibble(A=AcFunc(data2$Cc,rL,VcMax,Kc,Ko,O2,coef),Cc = data2$Cc)
})
jdat <- with(fitParams,{
tibble::tibble(A=AjFunc(data2$Cc,ag,as,rL,J,gammastar,coef),Cc=data2$Cc)
})
pdat <- with(fitParams,{
tibble::tibble(A=ApFunc(data2$Cc,ag,as,rL,TPU,gammastar,coef),Cc=data2$Cc)
})
# data2 <- tibble::tibble(A = unlist(AData), "pCi" = pCi,"Cc"=unlist(pCi) - unlist(AData)/gm)
# cdat <- tibble::tibble(A=AcFunc(data2$Cc,ag,as,rd,vcmax,j,tpu,gm,Kc,Ko,O2,gammastar),Cc = data2$Cc)
# jdat <- tibble::tibble(A=AjFunc(data2$Cc,ag,as,rd,vcmax,j,tpu,gm,gammastar),Cc=data2$Cc)
# pdat <- tibble::tibble(A=ApFunc(data2$Cc,ag,as,rd,vcmax,j,tpu,gm,gammastar),Cc=data2$Cc)
#remap data rq
#now I have to pick limitations and create a column with that data
if(ignoreTPU){
data2 <- tibble::add_column(data2,"Rubisco Limited" = cdat$A,"ET Limited" = jdat$A)
data2 <- tibble::add_column(data2, "Limiting process" = apply(data2[,4:5],1,FUN = which.min))
}else{
data2 <- tibble::add_column(data2,"Rubisco Limited" = cdat$A,"ET Limited" = jdat$A, "TPU Limited" = pdat$A)
data2 <- tibble::add_column(data2, "Limiting process" = apply(data2[,4:6],1,FUN = which.min))
}
#now we have to show individual residuals
limiting_values <-c()
for(i in 1:nrow(data2)){
limiting_values[i] <- unname(data2[i,data2$`Limiting process`[i]+3])
}
limiting_values <- dplyr::bind_cols(unlist(limiting_values))
data2 <- tibble::add_column(data2,residual = data2$A-limiting_values$...1)
data2 <- tibble::add_column(data2,`res^2`=data2$residual^2)
return(data2)
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.