app made independent XL and metadata, functions roxygenized

This commit is contained in:
2026-05-13 15:08:12 +02:00
parent a4bdbe8f8c
commit 1555fe3b6c
2 changed files with 443 additions and 257 deletions
+5 -20
View File
@@ -1,23 +1,8 @@
dat <- data.frame(REF1=c(1.1,1.2,2.1,3,5,6,8.1,9), REF1=c(1.2,1.5,2.1,3.1,4.9,6.1,8.3,9.1), ################################################################################
TEST1=c(1,1.3,2.5,3.5,5.9,6.9,8.1,9.1), TEST2=c(1.4,1.2,2.6,3.4,5.8,6.7,8.6,9.3), log_dose=c(1,0,-1,-2,-3,-4,-5,-6)) # Test file for functions of plateflow
# F. Innerbichler
all_l <- melt(data.frame(dat), id.vars="log_dose", variable.name="replname", value.name = "readout") # 13.5.2026
isRef <- rep(c(1,0),1,each=nrow(all_l)/2) ################################################################################
isSample <- rep(c(0,1),1,each=nrow(all_l)/2)
all_l2 <- cbind(all_l, isRef, isSample)
startlistmu <- list(as=1, bs=-1,cs=-3,
ds=10,at=1, bt=-1,
dt=10,r=0)
mu <- gsl_nls(fn = readout ~ as*isRef + at*isSample + (ds*isRef + dt*isSample - as*isRef - at*isSample)/
(1+isRef*exp(bs*(cs - log_dose)) + isSample*exp(bt*(cs-r*isSample-log_dose))),
data=all_l,
start=startlistmu,
control=gsl_nls_control(xtol=1e-6,ftol=1e-6, gtol=1e-6))
s_mu <- summary(mu)$coefficients[,1]
s_mu
CIRC <- data.frame(log_dose = c(-2.5,-2.5,-2.5, -3.2,-3.2,-3.2,-3.9,-3.9,-3.9, CIRC <- data.frame(log_dose = c(-2.5,-2.5,-2.5, -3.2,-3.2,-3.2,-3.9,-3.9,-3.9,
+433 -232
View File
@@ -669,6 +669,66 @@ ANOVAlintests <- function(ro_new, circles, Lim, PureErrFlag) {
return(RET) return(RET)
} }
PlotLinPLA_FUNC <-function(circle, sigmoid, all_l2, pl_df, indS, indT) {
mLin <- gsl_nls(readout ~ (intS+r)*isSample + intS*isRef + k*log_dose,
data=circle,
start=list(intS = 0, k=1,r=0),
control = gsl_nls_control(xtol=1e-10,ftol=1e-10,gtol=1e-10))
# alternativ: modAB <- lm(readout ~ log_dose+isSample, circle)
sum_mLin <- summary(mLin)
log_dose <- unique(all_l2$log_dose)
seq_x <- seq(min(log_dose), max(log_dose),0.1)
SAMPLEtrue <- sigmoid[5] + (sigmoid[7]-sigmoid[5])/(1+exp(sigmoid[6]*((sigmoid[4]-sigmoid[8]-seq_x))))
REFtrue <- sigmoid[1] + (sigmoid[3]-sigmoid[1])/(1+exp(sigmoid[2]*((sigmoid[4]-seq_x))))
truePL_df <- cbind(seq_x,SAMPLEtrue, REFtrue)
p <- ggplot(all_l2,aes(x=log_dose,y=readout, color=factor(isRef))) +
geom_point() +
labs(title=paste("linear regression model", indS,indT), color="product") +
scale_colour_manual(labels = c("test","reference"), values=c("#C2173F","#4545BA")) +
ylim(min(all_l2$readout),max(all_l2$readout)) +
theme_bw()
p2 <- p + geom_line(data=pl_df,aes(x=lnC,y=plotS),color="#4545BA",
inherit.aes = F) +
geom_line(data=pl_df,aes(x=lnC,y=plotT),color="#C2173F",
inherit.aes = F) +
geom_line(data=data.frame(truePL_df),aes(x=seq_x,y=SAMPLEtrue),color="#C2173F", linetype=2,alpha=0.4,
inherit.aes = F) +
geom_line(data=data.frame(truePL_df),aes(x=seq_x,y=REFtrue),color="#4545BA", linetype=2,alpha=0.4,
inherit.aes = F) +
labs(title = paste("unrestricted linear regression model",indS,indT), color="product") +
theme(legend.position="none", axis.text = element_text(size=14))
p3 <- p2 + geom_point(circle, mapping=aes(x=log_dose, y=readout, shape=factor(isRef),
size=5,alpha=0.2), inherit.aes = FALSE) +
scale_shape_manual(labels=c("test","reference"), values=c(21,21))
# fit intercept for test and ref and common slope
pl_restS <- sum_mLin$coefficients[1,1] + sum_mLin$coefficients[2,1]*log_dose
pl_restT <- sum_mLin$coefficients[1,1] + sum_mLin$coefficients[3,1] + sum_mLin$coefficients[2,1]*log_dose
pl_rest <- data.frame(lnC=log_dose, plotS=pl_restS, plotT=pl_restT)
pr2 <- p + geom_line(data=pl_rest,aes(x=lnC,y=plotS),color="#4545BA",
inherit.aes = F) +
geom_line(data=pl_rest,aes(x=lnC,y=plotT),color="#C2173F",
inherit.aes = F) +
geom_line(data=data.frame(truePL_df),aes(x=seq_x,y=SAMPLEtrue),color="#C2173F", linetype=2,alpha=0.4,
inherit.aes = F) +
geom_line(data=data.frame(truePL_df),aes(x=seq_x,y=REFtrue),color="#4545BA", linetype=2,alpha=0.4,
inherit.aes = F) +
labs(title = paste("restricted linear regression model",indS,indT), color="product") +
theme(legend.position="none", axis.text = element_text(size=14))
pr3 <- pr2 + geom_point(circle, mapping=aes(x=log_dose, y=readout, shape=factor(isRef),
size=5,alpha=0.2), inherit.aes = FALSE) +
scale_shape_manual(labels=c("test","reference"), values=c(21,21))
return(grid.arrange(p3,pr3,nrow=1))
}
#' Calculates the potency of 4PL PLA of all models model #' Calculates the potency of 4PL PLA of all models model
#' #'
#' The gradient method is used for calculating the potency for a restricted model, an unrestricteed model, #' The gradient method is used for calculating the potency for a restricted model, an unrestricteed model,
@@ -1247,7 +1307,7 @@ server <- function(input, output, session) {
verbatimTextOutput("sessioninfo")) verbatimTextOutput("sessioninfo"))
) )
}) })
##### UI XL ----
output$Dataupload <- renderUI({ output$Dataupload <- renderUI({
navbarPage(title="Information", navbarPage(title="Information",
tabPanel(title = "Real data", tabPanel(title = "Real data",
@@ -1312,11 +1372,11 @@ server <- function(input, output, session) {
), ),
column(8, column(8,
plotOutput("XLplot"), plotOutput("XLplot"),
DTOutput("pottab4plXL"),
plotOutput("diagnplot"), plotOutput("diagnplot"),
DTOutput("EQtests"), DTOutput("EQtests"),
DTOutput("pottab4pl"),
DTOutput("pottab4plTrans"), DTOutput("pottab4plTransXL"),
tableOutput("ANOVAXLS") tableOutput("ANOVAXLS")
) )
@@ -1335,7 +1395,6 @@ server <- function(input, output, session) {
mainPanel( mainPanel(
tabsetPanel(id="tabs", tabsetPanel(id="tabs",
tabPanel("linear PLA", tabPanel("linear PLA",
column(12, column(12,
htmlOutput("PureErrW3"), htmlOutput("PureErrW3"),
tags$head(tags$style("#PureErrW3{color: red; tags$head(tags$style("#PureErrW3{color: red;
@@ -1359,7 +1418,8 @@ server <- function(input, output, session) {
tableOutput("SlopeDiffCI"), tableOutput("SlopeDiffCI"),
h3("ANOVA for parallel line assay"), h3("ANOVA for parallel line assay"),
DTOutput("ANOVAlin"))), DTOutput("ANOVAlin"))
),
tabPanel("Report", tabPanel("Report",
h4("Settings for report") h4("Settings for report")
)) ))
@@ -1396,9 +1456,9 @@ server <- function(input, output, session) {
##### UI Meta ----
output$fourPL <- renderUI({ output$fourPL <- renderUI({
navbarPage(title="4PL", navbarPage(title="4PL+linear reg",
tabPanel("Analysis and Plots", tabPanel("Analysis and Plots",
#sidebarLayout( #sidebarLayout(
# sidebarPanel( # sidebarPanel(
@@ -1410,7 +1470,7 @@ server <- function(input, output, session) {
tabsetPanel(id="tabs", tabsetPanel(id="tabs",
tabPanel("Settings", tabPanel("Settings",
h4("Settings of 4PL regression"), h4("Settings of 4PL regression"),
div(checkboxInput("PureErr4pl", "Should pure error be used for calculation of CIs?", FALSE), div(checkboxInput("PureErrMeta", "Should pure error be used for calculation of CIs?", FALSE),
style = "font-size: 24px !important;color: #C2173F"), style = "font-size: 24px !important;color: #C2173F"),
h4("User help"), h4("User help"),
@@ -1472,7 +1532,10 @@ server <- function(input, output, session) {
sliderInput("outlU","outlier in upper asymptote", min=0, max=1.5,value=0, step=0.1) sliderInput("outlU","outlier in upper asymptote", min=0, max=1.5,value=0, step=0.1)
), ),
h4("log-dilutions from settings above"), h4("log-dilutions from settings above"),
verbatimTextOutput("logdil") verbatimTextOutput("logdil"),
column(8,
box(title = "Simulated data per log-concentration", status="warning",solidHeader = T, width=12, "incl. mean, sd and CV%",
DT::dataTableOutput("ConctabMeta")))
#) #)
), ),
@@ -1487,7 +1550,7 @@ server <- function(input, output, session) {
tags$style(span(htmlOutput("PureErrW3"), style="color: red")), tags$style(span(htmlOutput("PureErrW3"), style="color: red")),
htmlOutput("PureErrW3"), htmlOutput("PureErrW3"),
plotOutput("plot", width = "80%"), plotOutput("plot4plMeta", width = "80%"),
DTOutput("pottab4pl"), DTOutput("pottab4pl"),
"Footnote: test performed on relative CIs.", "Footnote: test performed on relative CIs.",
@@ -1510,18 +1573,51 @@ server <- function(input, output, session) {
h5("SSE ... 'Pure error' in the SumSquares column"), h5("SSE ... 'Pure error' in the SumSquares column"),
h5("RMSE ... Square root of the 'Residual Error' in the MeanSquares column"), h5("RMSE ... Square root of the 'Residual Error' in the MeanSquares column"),
verbatimTextOutput("RMSE") verbatimTextOutput("RMSE")
), )
column(8,
box(title = "Simulated data per log-concentration", status="warning",solidHeader = T, width=12, "incl. mean, sd and CV%",
DT::dataTableOutput("Conctab")))
)) ))
), ),
tabPanel("ln-transformed y", tabPanel("ln-transformed y",
h4("ln-transformed y-axis plots"), h4("ln-transformed y-axis plots"),
plotOutput("plot4plTrans", width = "80%"), plotOutput("plot4plTransMeta", width = "80%"),
DT::dataTableOutput("pottab4plTrans"), DT::dataTableOutput("pottab4plTrans"),
), ),
tabPanel("linear regression",
h4("Evaluations from meta-data"),
htmlOutput("PureErrW3"),
tags$head(tags$style("#PureErrW3{color: red;
font-size: 16px;
font_style: italic;}")),
column(12,
plotOutput("plotLinMeta"),
"Delta method is used for potency CIs",
DTOutput("pottabMeta")
),
column(5,
h3("Tests for linear PLA:"),
box(title="Suitability tests", status="primary",solidHeader = T,collapsible=T, width=12,
DTOutput("TESTSlinMeta")),
h5("The estimate is the p-value of the test"),
h5("F-tests on regression, significance of slopes, and preparation need to have a p-value <0.05 to pass"),
h5("All other tests pass if p-value > 0.05"),
box(title="Unrestricted linear model (SSSI):", status="primary",solidHeader = T,collapsible=T, width=12,
tableOutput("SummaryModABuMeta")),
h4("Restricted linear model (CSSI):"),
box(title="Restricted linear model (CSSI):", status="primary",solidHeader = T,collapsible=T, width=12,
tableOutput("SummaryModABMeta"))
),
column(6,
h3("ANOVA for parallel line assay"),
box(title="ANOVA for simultated data", status="primary",solidHeader = T, collapsible=T, width=12,
DTOutput("ANOVAlinMeta")),
" CI for difference of slopes:",
tableOutput("SlopeDiffCIMeta"),
)
),
tabPanel("Report", tabPanel("Report",
h4("Settings for report"), h4("Settings for report"),
downloadButton("downloadXLReport", label="Download PDF report", class="butt"), downloadButton("downloadXLReport", label="Download PDF report", class="butt"),
@@ -1795,13 +1891,13 @@ server <- function(input, output, session) {
REP$DiagnTable <- DiagnTable REP$DiagnTable <- DiagnTable
logpotest <- FITsTrans[[3]] #exp(confintd(mrlog, "r", method = "asymptotic")) # compParm(logpot, "c") logpotest <- FITsTrans[[3]] #exp(confintd(mrlog, "r", method = "asymptotic")) # compParm(logpot, "c")
logpotuest <- FITsTrans[[4]] # exp(confintd(mulog, "r", method = "asymptotic")) # compParm(logpotu, "c") logpotUest <- FITsTrans[[4]] # exp(confintd(mulog, "r", method = "asymptotic")) # compParm(logpotu, "c")
# Berechnung der Konfidenzintervalle (CI) # Berechnung der Konfidenzintervalle (CI)
# logpotCI <- c(exp(Smrlog[5,1] - qt(0.975, nrow(all_1)-5) * Smrlog[5,2]), exp(Smrlog[5,1]), exp(Smrlog[5,1] + qt(0.975, nrow(all_1)-5) * Smrlog[5,2])) # logpotCI <- c(exp(Smrlog[5,1] - qt(0.975, nrow(all_1)-5) * Smrlog[5,2]), exp(Smrlog[5,1]), exp(Smrlog[5,1] + qt(0.975, nrow(all_1)-5) * Smrlog[5,2]))
colnames(logpotest) <- c("estimate", "lowerCI", "upperCI") colnames(logpotest) <- c("estimate", "lowerCI", "upperCI")
colnames(logpotuest) <- c("estimate", "lowerCI", "upperCI") colnames(logpotUest) <- c("estimate", "lowerCI", "upperCI")
#browser() #browser()
cnXL <- colnames(XLdat2) cnXL <- colnames(XLdat2)
Filesample <- data.frame(Test = c("File name", "samples"), Test2=c(Dat$FileName, paste(cnXL[1], " vs ", cnXL[4]))) Filesample <- data.frame(Test = c("File name", "samples"), Test2=c(Dat$FileName, paste(cnXL[1], " vs ", cnXL[4])))
@@ -1839,8 +1935,7 @@ server <- function(input, output, session) {
coeffs_R <- coeffsMR # pot$coefficients coeffs_R <- coeffsMR # pot$coefficients
coeffs_R[5] <- coeffs_R[4] - coeffs_R[5] coeffs_R[5] <- coeffs_R[4] - coeffs_R[5]
names(coeffs_R) <- c("lower A", "slope", "upper A", "EC50 REF", "EC50 TEST") names(coeffs_R) <- c("lower A", "slope", "upper A", "EC50 REF", "EC50 TEST")
# coeffs_R[4] <- log(coeffs_R[4])
# coeffs_R[5] <- log(coeffs_R[5])
# --- Ergebnistabelle: RESTRICTED --- # --- Ergebnistabelle: RESTRICTED ---
PLAAusw <- data.frame( PLAAusw <- data.frame(
Information = c("model", "lower asymptote", "Hill's slope", "upper asymptote","EC50 Ref", Information = c("model", "lower asymptote", "Hill's slope", "upper asymptote","EC50 Ref",
@@ -1856,7 +1951,7 @@ server <- function(input, output, session) {
REP$PLAausw <- PLAAusw REP$PLAausw <- PLAAusw
REP$PLBend <- PLAAusw2 REP$PLBend <- PLAAusw2
# --- Koeffizienten-Extraktion --- #### Koeffizienten-Extraktion ----
logcoeffs_R <- SRlog$coefficients[, 1] # logpot$coefficients logcoeffs_R <- SRlog$coefficients[, 1] # logpot$coefficients
names(logcoeffs_R) <- c("lower A", "Hill's slope", "upper A", "EC50 REF","EC50 DIFF") names(logcoeffs_R) <- c("lower A", "Hill's slope", "upper A", "EC50 REF","EC50 DIFF")
@@ -1867,7 +1962,7 @@ server <- function(input, output, session) {
"EC50 difference", "log relative potency", "EC50 difference", "log relative potency",
"log lower CI", "log upper CI"), "log lower CI", "log upper CI"),
Results = unlist(c("LOG RESTRICTED", round(logcoeffs_R, 3), Results = unlist(c("LOG RESTRICTED", round(logcoeffs_R, 3),
round(logpotest * 100, 3)))) # von gs1_nls round(logpotest * 100, 3)))) # von gsl_nls
output$logcoeffs_r <- renderTable({ LogPLAAusw }) output$logcoeffs_r <- renderTable({ LogPLAAusw })
REP$LogPLAausw <- LogPLAAusw REP$LogPLAausw <- LogPLAAusw
@@ -1885,7 +1980,7 @@ server <- function(input, output, session) {
"relative potency", "lower CI", "upper CI"), "relative potency", "lower CI", "upper CI"),
Results = unlist(c("LOG UNRESTRICTED", round(logcoeffs_UNR, 3), Results = unlist(c("LOG UNRESTRICTED", round(logcoeffs_UNR, 3),
round(logpotest * 100, 3)))) # von gs1_nls round(logpotUest * 100, 3)))) # von gsl_nls
output$logcoeffs_unr <- renderTable({ output$logcoeffs_unr <- renderTable({
LogUnrPLAAusw LogUnrPLAAusw
@@ -1900,7 +1995,7 @@ server <- function(input, output, session) {
} else Dat$dilution <- exp(XLdat[,logI]) } else Dat$dilution <- exp(XLdat[,logI])
# --- Plot-Ausgabe --- # --- Plot-Ausgabe ---
output$XLplot <- renderPlot({ output$XLplot <- renderPlot({
plot_f(XLdat2, sigmoid = NULL, det_sig = coeffsMU, TransFlag=F) plot_f(XLdat2, TransFlag=F)
}) })
REP$XLdat2 <- XLdat2 REP$XLdat2 <- XLdat2
@@ -1967,82 +2062,82 @@ server <- function(input, output, session) {
}) })
#### updateSlider on XLSX ---- #### updateSlider on XLSX ----
observe({ # observe({
if (!is.null(Dat$potDiffXL)) { # if (!is.null(Dat$potDiffXL)) {
updateSliderInput(session, "potencydiff", # updateSliderInput(session, "potencydiff",
value=round(as.numeric(Dat$potDiffXL[[1]]),5)) # value=round(as.numeric(Dat$potDiffXL[[1]]),5))
} # }
}) # })
observeEvent(input$potencydiff, { # observeEvent(input$potencydiff, {
if (!is.null(Dat$potDiffXL)) { # if (!is.null(Dat$potDiffXL)) {
updateSliderInput(session, "potencydiff", # updateSliderInput(session, "potencydiff",
value=round(as.numeric(input$potencydiff),5)) # value=round(as.numeric(input$potencydiff),5))
} # }
}) # })
observe({ # observe({
if (!is.null(Dat$ProzSD_XL)) { # if (!is.null(Dat$ProzSD_XL)) {
updateSliderInput(session, "sdfacf", # updateSliderInput(session, "sdfac",
value=round(as.numeric(Dat$ProzSD_XL[[1]]),5)) # value=round(as.numeric(Dat$ProzSD_XL[[1]]),5))
} # }
}) # })
observeEvent(input$sdfac, { # observeEvent(input$sdfac, {
if (!is.null(Dat$ProzSD_XL)) { # if (!is.null(Dat$ProzSD_XL)) {
updateSliderInput(session, "sdfac", # updateSliderInput(session, "sdfac",
value=round(as.numeric(Dat$ProzSD_XL[[1]]),5)) # value=round(as.numeric(Dat$ProzSD_XL[[1]]),5))
} # }
}) # })
#### updaterNumeric Input ---- #### updaterNumeric Input ----
observe({ # observe({
if(!is.null(Dat$coeffs_UN)) { # if(!is.null(Dat$coeffs_UN)) {
updateNumericInput(session, "lowAsymptREF", # updateNumericInput(session, "lowAsymptREF",
value=round(as.numeric(Dat$coeffs_UN[3]),5), min=0) # value=round(as.numeric(Dat$coeffs_UN[3]),5), min=0)
updateNumericInput(session, "lowAsymptTEST", # updateNumericInput(session, "lowAsymptTEST",
value=round(as.numeric(Dat$coeffs_UN[4]),5), min=0) # value=round(as.numeric(Dat$coeffs_UN[4]),5), min=0)
updateNumericInput(session, "uppAsymptREF", # updateNumericInput(session, "uppAsymptREF",
value=round(as.numeric(Dat$coeffs_UN[5]),5), min=0) # value=round(as.numeric(Dat$coeffs_UN[5]),5), min=0)
updateNumericInput(session, "uppAsymptTEST", # updateNumericInput(session, "uppAsymptTEST",
value=round(as.numeric(Dat$coeffs_UN[6]),5), min=0) # value=round(as.numeric(Dat$coeffs_UN[6]),5), min=0)
updateNumericInput(session, "slopeREF", # updateNumericInput(session, "slopeREF",
value=round(as.numeric(Dat$coeffs_UN[1]),5)) # value=round(as.numeric(Dat$coeffs_UN[1]),5))
updateNumericInput(session, "slopeTEST", # updateNumericInput(session, "slopeTEST",
value=round(as.numeric(Dat$coeffs_UN[2]),5)) # value=round(as.numeric(Dat$coeffs_UN[2]),5))
updateNumericInput(session, "EC50", # updateNumericInput(session, "EC50",
value=round(as.numeric(Dat$coeffs_UN[7]),5)) # value=round(as.numeric(Dat$coeffs_UN[7]),5))
updateNumericInput(session, "potDiff", # updateNumericInput(session, "potDiff",
value=round(as.numeric(Dat$coeffs_UN[7])- as.numeric(Dat$coeffs_UN[8]),5)) # value=round(as.numeric(Dat$coeffs_UN[7])- as.numeric(Dat$coeffs_UN[8]),5))
} # }
}) # })
#
observe({ # observe({
if(!is.null(Dat$dilution)) { # if(!is.null(Dat$dilution)) {
updateNumericInput(session, "CONC1", # updateNumericInput(session, "CONC1",
value=as.numeric(Dat$dilution[1])) # value=as.numeric(Dat$dilution[1]))
updateNumericInput(session, "CONC2", # updateNumericInput(session, "CONC2",
value=as.numeric(Dat$dilution[2])) # value=as.numeric(Dat$dilution[2]))
updateNumericInput(session, "CONC3", # updateNumericInput(session, "CONC3",
value=as.numeric(Dat$dilution[3])) # value=as.numeric(Dat$dilution[3]))
updateNumericInput(session, "CONC4", # updateNumericInput(session, "CONC4",
value=as.numeric(Dat$dilution[4])) # value=as.numeric(Dat$dilution[4]))
updateNumericInput(session, "CONC5", # updateNumericInput(session, "CONC5",
value=as.numeric(Dat$dilution[5])) # value=as.numeric(Dat$dilution[5]))
updateNumericInput(session, "CONC6", # updateNumericInput(session, "CONC6",
value=as.numeric(Dat$dilution[6])) # value=as.numeric(Dat$dilution[6]))
updateNumericInput(session, "CONC7", # updateNumericInput(session, "CONC7",
value=as.numeric(Dat$dilution[7])) # value=as.numeric(Dat$dilution[7]))
updateNumericInput(session, "CONC8", # updateNumericInput(session, "CONC8",
value=as.numeric(Dat$dilution[8])) # value=as.numeric(Dat$dilution[8]))
updateNumericInput(session, "CONC9", # updateNumericInput(session, "CONC9",
value=as.numeric(Dat$dilution[9])) # value=as.numeric(Dat$dilution[9]))
updateNumericInput(session, "CONC10", # updateNumericInput(session, "CONC10",
value=as.numeric(Dat$dilution[10])) # value=as.numeric(Dat$dilution[10]))
updateNumericInput(session, "CONC11", # updateNumericInput(session, "CONC11",
value=as.numeric(Dat$dilution[11])) # value=as.numeric(Dat$dilution[11]))
updateNumericInput(session, "CONC12", # updateNumericInput(session, "CONC12",
value=as.numeric(Dat$dilution[12])) # value=as.numeric(Dat$dilution[12]))
#
} # }
}) # })
observe({ observe({
if(!is.null(Dat$MetaConc)) { if(!is.null(Dat$MetaConc)) {
@@ -2119,33 +2214,33 @@ server <- function(input, output, session) {
####sim2 ---- ####sim2 ----
sim2 <- reactive({ sim2 <- reactive({
tab <- sim() tab <- sim()
if (is.null(Dat$EXCEL)) return(tab) else return(Dat$EXCEL) #if (is.null(Dat$EXCEL)) return(tab) else return(Dat$EXCEL)
}) })
#### Plot 4pl ---- #### Plot 4pl ----
output$plot <- renderPlot({ output$plot4plMeta <- renderPlot({
#browser() #browser()
sigmoid <- sigmoid() sigmoid <- sigmoid()
det_sig=NULL det_sig=NULL
plot_f(sim2(),sigmoid, det_sig, TransFlag = F) plot_f(sim2(), TransFlag = F)
}) })
#### Plot 4pl Transformed ---- #### Plot 4pl Transformed ----
output$plot4plTrans <- renderPlot({ output$plot4plTransMeta <- renderPlot({
#browser() #browser()
sigmoid <- sigmoid() sigmoid <- sigmoid()
det_sig=NULL det_sig=NULL
plot_f(sim2(),sigmoid, det_sig, TransFlag = T) plot_f(sim2(), TransFlag = T)
}) })
#### Testergebnisse für 4PL ---- #### Testergebnisse für 4PL ----
observe({ observe({
if (is.null(sim2())) return(NULL) if (is.null(sim2())) return(NULL)
if (is.null(input$PureErr4pl)) return(NULL) if (is.null(input$PureErrMeta)) return(NULL)
#observeEvent(input$StartCalc,{ #observeEvent(input$StartCalc,{
PureErrFlag <- input$PureErr4pl PureErrFlag <- input$PureErrMeta
warning_text3 <- reactive({ warning_text3 <- reactive({
ifelse(PureErrFlag, 'Pure error selected','') ifelse(PureErrFlag, 'Pure error selected','')
}) })
@@ -2261,6 +2356,31 @@ server <- function(input, output, session) {
dom="t" dom="t"
)) ))
}) })
##### Concentrationtab Meta ----
output$ConctabMeta <- DT::renderDataTable({
if (!is.na(Dils()[1]) & is.na(Dils()[4])) return(NULL)
tab <- sim2()
if (is.character(tab)) stop(tab)
if (!is.na(Dils()[4])) {
noDilSer <- Dils()[4]
} else if (!is.null(Dat$noDilSeriesXL)) {
noDilSer <- Dat$noDilSeriesXL
} else { noDilSer <- 3 }
Conc <- CONC()
Conctab <- perConcTab(tab, noDilSeries = noDilSer)
Dat$Conctab <- Conctab
dat <- datatable(Conctab, options=list(
paging=T,
pageLength=12,
dom="t"
)) %>% formatStyle(0,
target='row',
backgroundColor = styleEqual(c("avs","sds","cv", "avs_test","sds_test","cv_test"),
c('lightgrey','lightgreen','pink','lightgrey','lightgreen','pink'))
) %>% formatRound(columns=colnames(Conctab), digits=3)
})
output$Conctab <- DT::renderDataTable({ output$Conctab <- DT::renderDataTable({
if (!is.na(Dils()[1]) & is.na(Dils()[4])) return(NULL) if (!is.na(Dils()[1]) & is.na(Dils()[4])) return(NULL)
@@ -2287,10 +2407,10 @@ server <- function(input, output, session) {
) %>% formatRound(columns=colnames(Conctab), digits=3) ) %>% formatRound(columns=colnames(Conctab), digits=3)
}) })
#### linear Plot output ---- #### process XL linearly, Plot output ----
output$plotLin <- renderPlot({ output$plotLin <- renderPlot({
if (is.null(Dat$EXCEL)) return(NULL)
tab <- Dat$EXCEL tab <- Dat$EXCEL
# tab <- sim2() # tab <- sim2()
@@ -2336,70 +2456,25 @@ server <- function(input, output, session) {
Dat$circles <- circle Dat$circles <- circle
#browser() #browser()
mLin <- gsl_nls(readout ~ (intS+r)*isSample + intS*isRef + k*log_dose,
data=circle,
start=list(intS = 0, k=1,r=0),
control = gsl_nls_control(xtol=1e-10,ftol=1e-10,gtol=1e-10))
# alternativ: modAB <- lm(readout ~ log_dose+isSample, circle)
sum_mLin <- summary(mLin)
sigmoid <- Dat$coeffsMUnr sigmoid <- Dat$coeffsMUnr
log_dose <- unique(all_l$log_dose)
seq_x <- seq(min(log_dose), max(log_dose),0.1)
SAMPLEtrue <- sigmoid[5] + (sigmoid[7]-sigmoid[5])/(1+exp(sigmoid[6]*((sigmoid[4]-sigmoid[8]-seq_x))))
REFtrue <- sigmoid[1] + (sigmoid[3]-sigmoid[1])/(1+exp(sigmoid[2]*((sigmoid[4]-seq_x))))
truePL_df <- cbind(seq_x,SAMPLEtrue, REFtrue) pLin <- PlotLinPLA_FUNC(circle, sigmoid = sigmoid, all_l2, pl_df, indS, indT)
p <- ggplot(all_l2,aes(x=log_dose,y=readout, color=factor(isRef))) +
geom_point() +
labs(title=paste("linear regression model", indS,indT), color="product") +
scale_colour_manual(labels = c("test","reference"), values=c("#C2173F","#4545BA")) +
ylim(min(all_l2$readout),max(all_l2$readout)) +
theme_bw()
p2 <- p + geom_line(data=pl_df,aes(x=lnC,y=plotS),color="#4545BA",
inherit.aes = F) +
geom_line(data=pl_df,aes(x=lnC,y=plotT),color="#C2173F",
inherit.aes = F) +
geom_line(data=data.frame(truePL_df),aes(x=seq_x,y=SAMPLEtrue),color="#C2173F", linetype=2,alpha=0.4,
inherit.aes = F) +
geom_line(data=data.frame(truePL_df),aes(x=seq_x,y=REFtrue),color="#4545BA", linetype=2,alpha=0.4,
inherit.aes = F) +
labs(title = paste("unrestricted linear regression model",indS,indT), color="product") +
theme(legend.position="none", axis.text = element_text(size=14))
p3 <- p2 + geom_point(circle, mapping=aes(x=log_dose, y=readout, shape=factor(isRef),
size=5,alpha=0.2), inherit.aes = FALSE) +
scale_shape_manual(labels=c("test","reference"), values=c(21,21))
# fit intercept for test and ref and common slope
pl_restS <- sum_mLin$coefficients[1,1] + sum_mLin$coefficients[2,1]*log_conc pLin
pl_restT <- sum_mLin$coefficients[1,1] + sum_mLin$coefficients[3,1] + sum_mLin$coefficients[2,1]*log_conc
pl_rest <- data.frame(lnC=log_conc, plotS=pl_restS, plotT=pl_restT)
pr2 <- p + geom_line(data=pl_rest,aes(x=lnC,y=plotS),color="#4545BA",
inherit.aes = F) +
geom_line(data=pl_rest,aes(x=lnC,y=plotT),color="#C2173F",
inherit.aes = F) +
geom_line(data=data.frame(truePL_df),aes(x=seq_x,y=SAMPLEtrue),color="#C2173F", linetype=2,alpha=0.4,
inherit.aes = F) +
geom_line(data=data.frame(truePL_df),aes(x=seq_x,y=REFtrue),color="#4545BA", linetype=2,alpha=0.4,
inherit.aes = F) +
labs(title = paste("restricted linear regression model",indS,indT), color="product") +
theme(legend.position="none", axis.text = element_text(size=14))
pr3 <- pr2 + geom_point(circle, mapping=aes(x=log_dose, y=readout, shape=factor(isRef),
size=5,alpha=0.2), inherit.aes = FALSE) +
scale_shape_manual(labels=c("test","reference"), values=c(21,21))
grid.arrange(p3,pr3,nrow=1)
}) })
#### process metadata, Plot output ----
output$plotLin2 <- renderPlot({ output$plotLinMeta <- renderPlot({
tab <- sim2() tab <- sim2()
if(is.null(tab)) return(NULL)
if (is.character(tab)) stop(tab) if (is.character(tab)) stop(tab)
#browser() #browser()
if (!is.na(Dils()[4])) noDilSer <- Dils()[4] else noDilSer = (ncol(tab)-1)/2 if (!is.na(Dils()[4])) noDilSer <- Dils()[4] else noDilSer = (ncol(tab)-1)/2
Conc <- CONC() Conc <- CONC()
Conctab <- Dat$Conctab log_conc <- log(Conc)
Conctab <- perConcTab(tab, noDilSer)
if (!is.na(Dils()[3])) noDil <- Dils()[3] else noDil = length(Conc) if (!is.na(Dils()[3])) noDil <- Dils()[3] else noDil = length(Conc)
slopeSt <- slopeTe <- matrix(NA, nrow=noDil-2,ncol=2) slopeSt <- slopeTe <- matrix(NA, nrow=noDil-2,ncol=2)
@@ -2434,67 +2509,56 @@ server <- function(input, output, session) {
circleT <- all_mT[(indT*noDilSer-(noDilSer-1)):((indT+2)*noDilSer),] circleT <- all_mT[(indT*noDilSer-(noDilSer-1)):((indT+2)*noDilSer),]
circle <- rbind(circleS,circleT) circle <- rbind(circleS,circleT)
Dat$circles <- circle Dat$circlesMeta <- circle
sigmoid <- sigmoid() sigmoid <- sigmoid()
log_dose <- unique(all_l$log_dose) #browser()
seq_x <- seq(min(log_dose), max(log_dose),0.1) pLin2 <- PlotLinPLA_FUNC(circle, sigmoid = sigmoid, all_l2, pl_df,indS, indT)
SAMPLEtrue <- sigmoid[2] + (sigmoid[4]-sigmoid[2])/(1+exp(sigmoid[6]*((sigmoid[7]-log(input$potencydiff/100)-seq_x)))) pLin2
REFtrue <- sigmoid[1] + (sigmoid[3]-sigmoid[1])/(1+exp(sigmoid[5]*((sigmoid[7]-seq_x))))
truePL_df <- cbind(seq_x,SAMPLEtrue, REFtrue)
p <- ggplot(all_l2,aes(x=log_dose,y=readout, color=factor(isRef))) +
geom_point() +
labs(title=paste("linear regression model", indS,indT), color="product") +
scale_colour_manual(labels = c("test","reference"), values=c("red","blue")) +
ylim(min(all_l2$readout),max(all_l2$readout)) +
theme_bw()
p2 <- p + geom_line(data=pl_df,aes(x=lnC,y=plotS),color="blue",
inherit.aes = F) +
geom_line(data=pl_df,aes(x=lnC,y=plotT),color="red",
inherit.aes = F) +
geom_line(data=data.frame(truePL_df),aes(x=seq_x,y=SAMPLEtrue),color="red", linetype=2,alpha=0.4,
inherit.aes = F) +
geom_line(data=data.frame(truePL_df),aes(x=seq_x,y=REFtrue),color="blue", linetype=2,alpha=0.4,
inherit.aes = F) +
labs(title = paste("unrestricted linear regression model",indS,indT), color="product") +
theme(legend.position="none", axis.text = element_text(size=14))
p3 <- p2 + geom_point(circle, mapping=aes(x=log_dose, y=readout, shape=factor(isRef),
size=5,alpha=0.2), inherit.aes = FALSE) +
scale_shape_manual(labels=c("test","reference"), values=c(21,21))
mLin <- gsl_nls(readout ~ (intS+r)*isSample + intS*isRef + k*log_dose,
data=circle,
start=list(intS = 0, k=1,r=0),
control = gsl_nls_control(xtol=1e-10,ftol=1e-10,gtol=1e-10))
# alternativ: modAB <- lm(readout ~ log_dose+isSample, circle)
sum_mLin <- summary(mLin)
pl_restS <- sum_mLin$coefficients[1,1] + sum_mLin$coefficients[2,1]*log_conc
pl_restT <- sum_mLin$coefficients[1,1] + sum_mLin$coefficients[3,1] + sum_mLin$coefficients[2,1]*log_conc
pl_rest <- data.frame(lnC=log_conc, plotS=pl_restS, plotT=pl_restT)
pr2 <- p + geom_line(data=pl_rest,aes(x=lnC,y=plotS),color="blue",
inherit.aes = F) +
geom_line(data=pl_rest,aes(x=lnC,y=plotT),color="red",
inherit.aes = F) +
geom_line(data=data.frame(truePL_df),aes(x=seq_x,y=SAMPLEtrue),color="red", linetype=2,alpha=0.4,
inherit.aes = F) +
geom_line(data=data.frame(truePL_df),aes(x=seq_x,y=REFtrue),color="blue", linetype=2,alpha=0.4,
inherit.aes = F) +
labs(title = paste("restricted linear regression model",indS,indT), color="product") +
theme(legend.position="none", axis.text = element_text(size=14))
pr3 <- pr2 + geom_point(circle, mapping=aes(x=log_dose, y=readout, shape=factor(isRef),
size=5,alpha=0.2), inherit.aes = FALSE) +
scale_shape_manual(labels=c("test","reference"), values=c(21,21))
grid.arrange(p3,pr3,nrow=1)
}) })
#### linear PLA tests ---- #### linear PLA tests Metadata ----
output$TESTSlin <- DT::renderDataTable({ output$TESTSlinMeta <- DT::renderDataTable({
tab <- sim2() tab <- sim2()
if (is.character(tab)) stop(tab) if (is.null(tab)) return(NULL)
Conc <- CONC() Conc <- CONC()
Limite <- Dat$limite
circlesMeta <- Dat$circlesMeta
PureErrFlag <- input$PureErrMeta
warning_text <- reactive({
ifelse(PureErrFlag, 'Pure error is selected','')
})
output$PureErrW <- renderText(warning_text())
browser()
LIN <- ANOVAlintests(tab,circlesMeta,Limite,PureErrFlag=PureErrFlag)
df <- LIN[[1]]
su_modU <- LIN[[2]]
su_mod2 <- LIN[[4]]
output$SummaryModABuMeta <- renderTable({ su_modU }, digits=5)
output$SummaryModABMeta <- renderTable({ su_mod2 }, digits=5)
slopeDiffCI <- t(data.frame(LIN[[3]]))
colnames(slopeDiffCI) <- c("slope difference","lower CI","upper CI")
output$SlopeDiffCIMeta <- renderTable({ slopeDiffCI },digits=5)
SelTestsL <- as.numeric(input$selectedSSTsLinear)
df2 <- df
Dat$ANOVAMeta <- df[,4:length(df)]
dat <- datatable(df2[,1:3],
options=list(
paging=T, dom="t",rownames=F
)) %>% formatStyle("test_results", target="row",backgroundColor = styleEqual(c(-1,0,1),
c("pink","lightgreen","lightgrey")))
})
#### linear PLA tests XLinput ----
output$TESTSlin <- DT::renderDataTable({
tab <- Dat$EXCEL
if (is.character(tab)) stop(tab)
Conc <- exp(tab$log_dose)
Limite <- list(as.numeric(input$lEACdiffla), as.numeric(input$uEACdiffla), Limite <- list(as.numeric(input$lEACdiffla), as.numeric(input$uEACdiffla),
as.numeric(input$lEACratiola), as.numeric(input$uEACratiola), as.numeric(input$lEACratiola), as.numeric(input$uEACratiola),
as.numeric(input$lEACratioSlope), as.numeric(input$uEACratioSlope), as.numeric(input$lEACratioSlope), as.numeric(input$uEACratioSlope),
@@ -2502,14 +2566,49 @@ server <- function(input, output, session) {
as.numeric(input$lowerPot), as.numeric(input$upperPot), as.numeric(input$lowerPot), as.numeric(input$upperPot),
as.numeric(input$lEACratioAdiff), as.numeric(input$uEACratioAdiff)) as.numeric(input$lEACratioAdiff), as.numeric(input$uEACratioAdiff))
circles <- Dat$circles noDil <- nrow(tab)
noDilSer <- Dat$noDilSeriesXL
Conctab <- perConcTab(tab, noDilSeries = noDilSer)
#browser()
slopeSt <- slopeTe <- matrix(NA, nrow=noDil-2,ncol=2)
for (i in 1:(noDil-2)) {
avs <- Conctab[noDilSer+1,]
threes <- data.frame(lnC=log(Conc[i:(i+2)]), resp=avs[i:(i+2)])
lm3St <- lm(resp ~ lnC, data=threes)
slopeSt[i,] <- lm3St$coefficients
avt <- Conctab[noDilSer*2+4,]
threet <- data.frame(lnC=log(Conc[i:(i+2)]), resp=avt[i:(i+2)])
lm3Te <- lm(resp ~ lnC, data=threet)
slopeTe[i,] <- lm3Te$coefficients
}
indS <- which(abs(slopeSt[,2]) == max(abs(slopeSt[,2])))
indT <- which(abs(slopeTe[,2]) == max(abs(slopeTe[,2])))
# pl_ <- slopeSt[indS,1]+slopeSt[indS,2]*log_conc
# pl_T <- slopeTe[indT,1]+slopeTe[indT,2]*log_conc
# pl_df <- data.frame(lnC=log_conc, plotS=pl_, plotT=pl_T)
all_l <- melt(data.frame(tab), id.vars="log_dose",variable.name="replname",value.name="readout")
isRef <- rep(c(1,0), 1,each=nrow(all_l)/2)
isSample <- rep(c(0,1), 1,each=nrow(all_l)/2)
all_l2 <- cbind(all_l,isRef, isSample)
all_l2S <- all_l2[all_l2$isRef == 1,]
all_l2T <- all_l2[all_l2$isRef == 0,]
all_mS <- all_l2S[order(all_l2S$log_dose, decreasing=TRUE),]
all_mT <- all_l2T[order(all_l2T$log_dose, decreasing=TRUE),]
circleS <- all_mS[(indS*noDilSer-(noDilSer-1)):((indS+2)*noDilSer),]
circleT <- all_mT[(indT*noDilSer-(noDilSer-1)):((indT+2)*noDilSer),]
circle <- rbind(circleS,circleT)
PureErrFlag <- input$PureErr PureErrFlag <- input$PureErr
warning_text <- reactive({ warning_text <- reactive({
ifelse(PureErrFlag, 'Pure error is selected','') ifelse(PureErrFlag, 'Pure error is selected','')
}) })
output$PureErrW <- renderText(warning_text()) output$PureErrW3 <- renderText(warning_text())
#browser()
LIN <- ANOVAlintests(tab,circles,Limite,PureErrFlag=PureErrFlag) LIN <- ANOVAlintests(tab,circle,Limite,PureErrFlag=PureErrFlag)
df <- LIN[[1]] df <- LIN[[1]]
su_modU <- LIN[[2]] su_modU <- LIN[[2]]
su_mod2 <- LIN[[4]] su_mod2 <- LIN[[4]]
@@ -2533,7 +2632,7 @@ server <- function(input, output, session) {
}) })
#### output 4PL ANOVA tests --- #### output 4PL ANOVA tests Meta ----
output$ANOVA <- DT::renderDataTable({ output$ANOVA <- DT::renderDataTable({
sigmoid <- sigmoid() sigmoid <- sigmoid()
tab <- ANOVA4plUnresfunc(sim2()) # ,sigmoid tab <- ANOVA4plUnresfunc(sim2()) # ,sigmoid
@@ -2545,18 +2644,33 @@ server <- function(input, output, session) {
c("lightgrey"))) c("lightgrey")))
}) })
#### output 4PL ANOVA tests XL ----
# not needed
# output$ANOVA_XL <- DT::renderDataTable({
# tab <- Dat$EXCEL
# tab <- ANOVA4plUnresfunc(sim2()) # ,sigmoid
# dat <- datatable(tab,
# options=list(
# dom="t",rownames=F
# )) %>% formatStyle("p_value", target="row",
# backgroundColor = styleEqual(c("p_value"),
# c("lightgrey")))
# })
#### output RMSEs ---- #### output RMSEs ----
output$RMSE <- renderText({ output$RMSE <- renderText({
paste("RMSE (unrestricted model):", Dat$RMSE_unr, "(~ entered % upper-lower asymptote)\n", paste("RMSE (unrestricted model):", Dat$RMSE_unr, "(Use it to compare against RMSE restr. model for non-parallelism)\n",
"RMSE restricted model:", Dat$RMSE_r, "\n", "RMSE (restricted model):", Dat$RMSE_r, "\n",
"Pure RMSE unrestricted model:", Dat$RMSE_pure, "\n", "Pure RMSE (unrestricted model):", Dat$RMSE_pure, "\n",
"%SD (unr model): ", Dat$RMSE_unr*100/Dat$up_lowAs, "(calculated as: RMSE/(upper-lower Asymptote)*100\n", "%SD (unr. model): ", Dat$RMSE_unr*100/Dat$up_lowAs, "(calculated as: RMSE/(upper-lower Asymptote)*100\n",
"RMSE (log restr. model): ", Dat$RMSE_Rlog, "\n", "RMSE (log restr. model): ", Dat$RMSE_Rlog, "\n",
"RMSE (log unrestr. model): ", Dat$RMSE_Ulog, "\n", "RMSE (log unrestr. model): ", Dat$RMSE_Ulog, "\n",
"%SDlog (unr model): ", Dat$RMSE_Ulog*100/Dat$up_lowAslog ) "%SDlog (unr model): ", Dat$RMSE_Ulog*100/Dat$up_lowAslog )
}) })
output$ANOVAlin <- DT::renderDataTable({ output$ANOVAlin <- DT::renderDataTable({
if (is.null(Dat$ANOVA)) return(NULL)
ANOVAlin <- Dat$ANOVA ANOVAlin <- Dat$ANOVA
dat <- datatable(ANOVAlin, dat <- datatable(ANOVAlin,
options=list( options=list(
@@ -2565,9 +2679,19 @@ server <- function(input, output, session) {
backgroundColor = styleEqual(c("p.value"), backgroundColor = styleEqual(c("p.value"),
c("lightgrey"))) c("lightgrey")))
}) })
### output pot tab ----
output$pottab <- DT::renderDataTable({
output$ANOVAlinMeta <- DT::renderDataTable({
ANOVAlin <- Dat$ANOVAMeta
dat <- datatable(ANOVAlin,
options=list(
dom="t",rownames=F
)) %>% formatStyle("p.value", target='cell',
backgroundColor = styleEqual(c("p.value"),
c("lightgrey")))
})
#### output Lin pot tab XL ----
output$pottab <- DT::renderDataTable({
if (is.null(Dat$circles)) return(NULL)
Lim <- list(as.numeric(input$lEACdiffla), as.numeric(input$uEACdiffla), Lim <- list(as.numeric(input$lEACdiffla), as.numeric(input$uEACdiffla),
as.numeric(input$lEACratiola), as.numeric(input$uEACratiola), as.numeric(input$lEACratiola), as.numeric(input$uEACratiola),
as.numeric(input$lEACratioSlope), as.numeric(input$uEACratioSlope), as.numeric(input$lEACratioSlope), as.numeric(input$uEACratioSlope),
@@ -2582,17 +2706,38 @@ server <- function(input, output, session) {
options=list( options=list(
dom="t",rownames=F dom="t",rownames=F
)) %>% formatStyle("test_result", target='row', )) %>% formatStyle("test_result", target='row',
backgroundColor = styleEqual(c(0,1), c("lightgrey"))) backgroundColor = styleEqual(c(0,1), c("lightgrey","#F9545488")))
}) })
#### 4pl potency table ----
### output pot tab Meta ----
output$pottabMeta <- DT::renderDataTable({
Lim <- list(as.numeric(input$lEACdiffla), as.numeric(input$uEACdiffla),
as.numeric(input$lEACratiola), as.numeric(input$uEACratiola),
as.numeric(input$lEACratioSlope), as.numeric(input$uEACratioSlope),
as.numeric(input$lEACratioua), as.numeric(input$uEACratioua),
as.numeric(input$lowerPot), as.numeric(input$upperPot))
circles <- Dat$circlesMeta
PureErrFlag <- input$PureErrMeta
pottab <- LinPotTab(circles,Lim,PureErrFlag = PureErrFlag)
#browser()
dat <- datatable(pottab,
options=list(
dom="t",rownames=F
)) %>% formatStyle("test_result", target='row',
backgroundColor = styleEqual(c(0,1), c("lightgrey","#F9545488")))
})
#### 4pl potency table Meta ----
observe({ observe({
#browser() #browser()
if (is.null(sim2()) | is.null(Dils())) return(NULL) if (is.null(sim2()) | is.null(Dils())) return(NULL)
ro_new <- sim2() ro_new <- sim2()
Dils_ <- Dils() Dils_ <- Dils()
if (!is.na(Dils()[4])) noDilSer <- Dils()[4] else noDilSer <- 3 if (!is.na(Dils()[4])) noDilSer <- Dils()[4] else noDilSer <- 3
PureErrFl <- input$PureErr4pl PureErrFl <- input$PureErrMeta
pottab4 <- pot4plFUNC(ro_new = ro_new, PureErrFlag = PureErrFl) pottab4 <- pot4plFUNC(ro_new = ro_new, PureErrFlag = PureErrFl)
#browser() #browser()
Lim <- list(as.numeric(input$lEACdiffla), as.numeric(input$uEACdiffla), Lim <- list(as.numeric(input$lEACdiffla), as.numeric(input$uEACdiffla),
@@ -2640,6 +2785,62 @@ server <- function(input, output, session) {
}) })
}) })
#### 4pl potency table XL ----
observe({
#browser()
if (is.null(Dat$EXCEL)) return(NULL)
ro_new <- Dat$EXCEL
noDilSer <- Dat$noDilSeriesXL
PureErrFl <- input$PureErr
pottab4 <- pot4plFUNC(ro_new = ro_new, PureErrFlag = PureErrFl)
#browser()
Lim <- list(as.numeric(input$lEACdiffla), as.numeric(input$uEACdiffla),
as.numeric(input$lEACratiola), as.numeric(input$uEACratiola),
as.numeric(input$lEACratioSlope), as.numeric(input$uEACratioSlope),
as.numeric(input$lEACratioua), as.numeric(input$uEACratioua),
as.numeric(input$lowerPot), as.numeric(input$upperPot))
pottab4_ <- data.frame(pottab4)
pottab4_$potency <- round(as.numeric(pottab4[,2])*100,1)
pottab4_$`lower95%CI` <- round(as.numeric(pottab4[,3])*100,2)
pottab4_$`upper95%CI` <- round(as.numeric(pottab4[,4])*100,2)
pottab4_$relative_lowerCL <- round(pottab4_[,6]/pottab4_[,5]*100,2)
pottab4_$relative_upperCL <- round(pottab4_[,7]/pottab4_[,5]*100,2)
if (as.numeric(pottab4_$relative_lowerCL[1]) > Lim[[9]] & as.numeric(pottab4_$relative_upperCL[1]) < Lim[[10]] ) {
test_potCI <- 0
} else {test_potCI <- 1 }
if (as.numeric(pottab4_$relative_lowerCL[2]) > Lim[[9]] & as.numeric(pottab4_$relative_upperCL[2]) < Lim[[10]] ) {
test_potUCI <- 0
} else {test_potUCI <- 1 }
if (as.numeric(pottab4_$relative_lowerCL[3]) > Lim[[9]] & as.numeric(pottab4_$relative_upperCL[3]) < Lim[[10]] ) {
test_potCI_t <- 0
} else {test_potCI_t <- 1 }
if (as.numeric(pottab4_$relative_lowerCL[4]) > Lim[[9]] & as.numeric(pottab4_$relative_upperCL[4]) < Lim[[10]] ) {
test_potUCI_t <- 0
} else {test_potUCI_t <- 1 }
pottab4_ <- cbind(pottab4_[,-(2:4)], data.frame(tests=c(test_potCI, test_potUCI,test_potCI_t,test_potUCI_t)))
colnames(pottab4_) <- c("model","potency","lower95%CI","upper95%CI","relative_lower95%CI","relative_upper95%CI","test_result")
output$pottab4plXL <- DT::renderDataTable({
dat <- datatable(pottab4_[1:2,],
options=list(digits=3,
paging=T, dom="t",rownames=F
)) %>% formatStyle("test_result", target="row",backgroundColor = styleEqual(c(0,1),
c("#B5C74055","#F9545455")))
})
output$pottab4plTransXL <- DT::renderDataTable({
dat <- datatable(pottab4_[3:4,],
options=list(digits=3,
paging=T, dom="t",rownames=F
)) %>% formatStyle("test_result", target="row",backgroundColor = styleEqual(c(0,1),
c("#B5C74055","#F9545455")))
})
})
#### Dilutions Simulator ---- #### Dilutions Simulator ----
output$plotfordilutions <- renderPlot({ output$plotfordilutions <- renderPlot({
tab <- sim2() tab <- sim2()
@@ -2686,7 +2887,7 @@ server <- function(input, output, session) {
Xbend200u <- sigmoid[7] - 0.693147+1.5434/sigmoid[5] Xbend200u <- sigmoid[7] - 0.693147+1.5434/sigmoid[5]
Xbend50 <- max(Xbend50l, Xbend50u) Xbend50 <- max(Xbend50l, Xbend50u)
Xbend200 <- min(Xbend200l, Xbend200u) Xbend200 <- min(Xbend200l, Xbend200u)
dummy <- plot_f(tab,sigmoid,det_sig=NULL) dummy <- plot_f(tab)
} else { } else {
#browser() #browser()
@@ -2698,7 +2899,7 @@ server <- function(input, output, session) {
Xbend200u <- det_sig[7] - 0.693147+1.5434/det_sig[1] Xbend200u <- det_sig[7] - 0.693147+1.5434/det_sig[1]
Xbend50 <- max(Xbend50l, Xbend50u) Xbend50 <- max(Xbend50l, Xbend50u)
Xbend200 <- min(Xbend200l, Xbend200u) Xbend200 <- min(Xbend200l, Xbend200u)
dummy <- plot_f(tab,sigmoid=NULL,det_sig=det_sig) dummy <- plot_f(tab)
} }