From f154986505c36f7b7207683aefeed7f1fe864494 Mon Sep 17 00:00:00 2001 From: Franz Innerbichler Date: Mon, 10 Aug 2026 10:31:30 +0200 Subject: [PATCH] OPTIMIZE improved, layout changed, bug fix --- R/Global.R | 8 +- Tests3Plates.numbers | Bin 791095 -> 790357 bytes Tests4Plates.xlsx | Bin 0 -> 11576 bytes dev/.DS_Store | Bin 8196 -> 8196 bytes dev/app.R | 259 +++++++++++++++++++++++++++++++++++-------- 5 files changed, 216 insertions(+), 51 deletions(-) create mode 100644 Tests4Plates.xlsx diff --git a/R/Global.R b/R/Global.R index 4bf9614..8591e82 100644 --- a/R/Global.R +++ b/R/Global.R @@ -40,6 +40,7 @@ library(scales) COR_FUNC <- function(vec1, vec2) { df <- data.frame(v1 = vec1, v2 = vec2) df2 <- df[complete.cases(df),] + #browser() return(cor(df2[,1],df2[,2])) } @@ -942,12 +943,13 @@ PlotLinPLA_FUNC <- function(circle, sigmoid, all_l2, pl_df, indS, indT) { truePL_df <- NULL } + p <- ggplot(all_l2, aes(x = log_dose, y = readout, color = factor(isRef))) + geom_point(size = 2) + # 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)) + + scale_x_continuous(breaks = scales::pretty_breaks(n = 10)) + scale_y_continuous(breaks = scales::pretty_breaks(n = 10)) + theme_bw() @@ -981,6 +983,7 @@ PlotLinPLA_FUNC <- function(circle, sigmoid, all_l2, pl_df, indS, indT) { x = log_dose, y = readout, shape = factor(isRef), size = 5, alpha = 0.2 ), col = c("black"), inherit.aes = FALSE) + + ylim(min(all_l2$readout), max(all_l2$readout)) + scale_shape_manual(labels = c("test", "reference"), values = c(21, 21)) # fit intercept for test and ref and common slope @@ -1017,6 +1020,7 @@ PlotLinPLA_FUNC <- function(circle, sigmoid, all_l2, pl_df, indS, indT) { title = paste("restricted linear regression model"), subtitle = paste("Regression on highlighted points") ) + + ylim(min(all_l2$readout), max(all_l2$readout)) + 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), @@ -1219,7 +1223,7 @@ tests_FUNC <- function(ro_new, Lim, PureErrFlag) { VCOVpure <- V_V * meanPureErr DFsPure <- FitAnova[4, 1] - +#browser() testPOTr <- logical() if (POTr_CI[1] * 100 > Lim[[9]] & POTr_CI[2] * 100 < Lim[[10]]) testPOTr <- 0 else testPOTr <- 1 diff --git a/Tests3Plates.numbers b/Tests3Plates.numbers index adf4ae2161119d812b527b37cf805b11174c37cd..72d3d188beb8e144bf0108d85043ebcf8c61798f 100644 GIT binary patch delta 34385 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ðxpidCm)IPPM2thz~J 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

lxzjn> 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 HFfafB=`H90 diff --git a/Tests4Plates.xlsx b/Tests4Plates.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..5c000541d9224911e4b7d6757dfdf71ce837d888 GIT binary patch literal 11576 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 D!gvy8 diff --git a/dev/app.R b/dev/app.R index 2ad4cb1..b3ed2c9 100644 --- a/dev/app.R +++ b/dev/app.R @@ -118,8 +118,32 @@ server <- function(input, output, session) { "The reference readout columns have to be before the test sample readout columns. The column names for reference and test are free to set, but different for all columns.", "The column name of the dilution concentrations can be as follows: concentration, dose, log_concentration, log_dose (first letter can be capital)", "If the concentrations are in logarithmized, any log base can be used.", + br(), br(), + "EXPLORE the 4pl function: visualize the meta data in the context of a 4 PL fit or a linear regression fit. ", + "Enter the 4 parameters of test and reference sample and see, what this means.", br(), + br(), + "OPTIMIZE the concentrations: plot all results you have and adjust the concentrations accordingly. ", + "Get help if you want to read pdfs in contacting us.", br(), ), - column(6, ) + column(2, + style = "background: #7FAEFF88", + "HERE: Enter the equivalence limits for 4PL suitability tests. If you need help to set them, contact us.", + numericInput("lEACratiola", "lower EAC ratio of LAs", 0.005, step = 0.001), + numericInput("uEACratiola", "upper EAC for ratio of LAs", 100, step = 1), + numericInput("lEACratioSlope", "lower EAC for ratio of slopes", 0.55, step = 0.01), + numericInput("uEACratioSlope", "upper EAC for ratio of slopes", 1.84, step = 0.1), + numericInput("lEACratioua", "lower EAC for ratio of UAs", 0.75, step = 0.1), + numericInput("uEACratioua", "upper EAC for ratio of UAs", 1.33, step = 0.1) + ), + column(2, + style = "background: #7FAEFF88", + numericInput("lowerPot", "lower EAC for potency", 75, step = 1), + numericInput("upperPot", "upper EAC for potency", 133, step = 1), + numericInput("lEACratioAdiff", "lower EAC of ratio of asymptote differences", 0.75, step = 0.01), + numericInput("uEACratioAdiff", "upper EAC of ratio of asymptote differences", 1.33, step = 0.01), + numericInput("lEACdiffla", "lower EAC for diff. of LA", -0.175, step = 0.001), + numericInput("uEACdiffla", "upper EAC for diff. of LA", 0.189, step = 0.001) + ) ), tabPanel( "Documentation", @@ -188,24 +212,6 @@ server <- function(input, output, session) { ), selected = c("1", "2", "3", "4", "5", "6", "7", "8") ) - ), - column(2, - style = "background: #7FAEFF88", - numericInput("lEACratiola", "lower EAC ratio of LAs", 0.005, step = 0.001), - numericInput("uEACratiola", "upper EAC for ratio of LAs", 100, step = 1), - numericInput("lEACratioSlope", "lower EAC for ratio of slopes", 0.55, step = 0.01), - numericInput("uEACratioSlope", "upper EAC for ratio of slopes", 1.84, step = 0.1), - numericInput("lEACratioua", "lower EAC for ratio of UAs", 0.75, step = 0.1), - numericInput("uEACratioua", "upper EAC for ratio of UAs", 1.33, step = 0.1) - ), - column(2, - style = "background: #7FAEFF88", - numericInput("lowerPot", "lower EAC for potency", 75, step = 1), - numericInput("upperPot", "upper EAC for potency", 133, step = 1), - numericInput("lEACratioAdiff", "lower EAC of ratio of asymptote differences", 0.75, step = 0.01), - numericInput("uEACratioAdiff", "upper EAC of ratio of asymptote differences", 1.33, step = 0.01), - numericInput("lEACdiffla", "lower EAC for diff. of LA", -0.175, step = 0.001), - numericInput("uEACdiffla", "upper EAC for diff. of LA", 0.189, step = 0.001) ) ), @@ -559,8 +565,8 @@ server <- function(input, output, session) { tabPanel( "Report", h4("Settings for report"), - downloadButton("downloadXLReport", label = "Download PDF report", class = "butt"), - tags$style(type = "text/css", "#downloadXLReport {background-color: orange; color: black;font-family: COurier New}"), + downloadButton("downloadXLReportMeta", label = "Download PDF report", class = "butt"), + tags$style(type = "text/css", "#downloadXLReportMeta {background-color: orange; color: black;font-family: COurier New}"), ) ) ) @@ -632,7 +638,11 @@ server <- function(input, output, session) { ), tabPanel("Histograms", h4("Histograms of parameters"), - plotOutput("histCIs"), + plotOutput("linerangeCIs"), + plotOutput("ratioSlope"), + plotOutput("ratioLas"), + plotOutput("ratioUas"), + plotOutput("widthCIs"), column(6, plotOutput("histEC50REF"), plotOutput("histLasREF"), @@ -647,7 +657,16 @@ server <- function(input, output, session) { ), tabPanel( "Report", - h4("Settings for report")) + h4("Settings for report"), + useShinyjs(), + actionButton("btn2", "Download PDF report", icon = icon("download")), + downloadButton("downloadWizardReport", label = "Download report", class = "butt"), + tags$style(type = "text/css", "#downloadWizardReport {background-color: #4FCBD9; color: black;font-family: Courier New}"), + # textInput("Author", "Author", value = ""), + # textInput("RepIdentifier", "Report name", value = ""), + # textInput("NoP", "Product name", value = ""), + # textInput("Assay", "Assay name", value = "") + ) ) ) # main panel @@ -2003,7 +2022,7 @@ server <- function(input, output, session) { 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) - +#browser() if (as.numeric(pottab4_$relative_lowerCL[1]) > Lim[[9]] & as.numeric(pottab4_$relative_upperCL[1]) < Lim[[10]]) { test_potCI <- 0 } else { @@ -2129,7 +2148,7 @@ server <- function(input, output, session) { }) - #### Dilutions Simulator ---- + #### Meta plots all XL ---- observe({ if (!is.null(Dat$Mws)) { @@ -2194,8 +2213,9 @@ server <- function(input, output, session) { } } #for N_WS - #browser() +#browser() URMcoefsDF <- t(matrix(unlist(URMcoefsL),nrow=9)) + colnames(URMcoefsDF) <- c("WS name", "lowerAs REF","slope REF","upperAs REF","EC50 REF", "lowerAs TEST","slope TEST","upperAs TEST","EC50 Difference") EC50TEST <- as.numeric(URMcoefsDF[,5]) - as.numeric(URMcoefsDF[,9]) # EC50TEST <- EC50TEST[!EC50TEST %in% boxplot.stats(EC50TEST)$out] EC50REF <- as.numeric(URMcoefsDF[,5]) @@ -2204,8 +2224,15 @@ server <- function(input, output, session) { # UasREF <- UasREF[!UasREF %in% boxplot.stats(UasREF)$out] LasREF <- as.numeric(URMcoefsDF[,2]) # LasREF <- LasREF[!LasREF %in% boxplot.stats(LasREF)$out] - UasTEST <- as.numeric(URMcoefsDF[,4]) - LasTEST <- as.numeric(URMcoefsDF[,2]) + UasTEST <- as.numeric(URMcoefsDF[,8]) + LasTEST <- as.numeric(URMcoefsDF[,6]) + slopeREF <- as.numeric(URMcoefsDF[,3]) + slopeTEST <- as.numeric(URMcoefsDF[,7]) + + slopeRatio <- slopeTEST/slopeREF + LasRatio <- LasTEST/LasREF + UasRatio <- UasTEST/UasREF + ratioDF <- data.frame(WS_name = URMcoefsDF[,1], slopeRatio = slopeRatio, LasRatio = LasRatio, UasRatio = UasRatio) RMcoefsDF <- t(matrix(unlist(RMcoefsL),nrow=6)) @@ -2213,6 +2240,7 @@ server <- function(input, output, session) { Dat$RestrM <- RMcoefsDF CalcPotDF <- t(matrix(unlist(potEstL),nrow=3)) + colnames(CalcPotDF) <- c("rel_potency","lower_CI","upper_CI") Dat$CalcPot <- CalcPotDF # #### sigmoid plots ---- @@ -2241,7 +2269,7 @@ server <- function(input, output, session) { expand_limits(x = c(min(SIGrefDF$X) - 0.1 * diff(range(SIGrefDF$X)), max(SIGrefDF$X) + 0.1 * diff(range(SIGrefDF$X)))) + xlab("dilutions") + - #ggtitle("Plot of all calculated reference fits (unrestricted model, in gray vertical lines: EC50)") + + ggtitle("REF sample 4PL-fits (unrestricted model, gray vertical lines: EC50)") + theme_bw() + theme(axis.text = element_text(face = "bold", size = 15), plot.title = element_text(size = 15, face = "bold"), @@ -2261,7 +2289,7 @@ server <- function(input, output, session) { geom_hline(yintercept = c(LasParTolTEST[[4]], LasParTolTEST[[5]]), linetype=2, col="grey") + geom_vline(xintercept = EC50TEST, alpha = 0.2) + xlab("dilutions") + - ggtitle("Calculated test sample fits (unrestricted model, in gray vertical lines: EC50)") + + ggtitle("TEST sample 4PL-fits (unrestricted model, gray vertical lines: EC50)") + theme_bw() + theme(axis.text = element_text(face = "bold", size = 15), plot.title = element_text(size = 15, face = "bold")) @@ -2269,29 +2297,90 @@ server <- function(input, output, session) { output$sigPlotTEST <- renderPlot({ p2 }) Dat$sigPlotTEST <- p2 - + #### histograms right panel ---- - #browser() + - all_lPot <- data.frame(Cat_potency= c(rep("rel poteny",nrow(CalcPotDF)), rep("lower CI",nrow(CalcPotDF)),rep("upper CI",nrow(CalcPotDF))), + all_lPot <- data.frame(Cat_potency= c(rep("rel_poteny",nrow(CalcPotDF)), rep("lower_CI",nrow(CalcPotDF)),rep("upper_CI",nrow(CalcPotDF))), Potency_and_CI = c(CalcPotDF[,1], CalcPotDF[,2],CalcPotDF[,3])) all_lPot[,2][all_lPot[,2] > 5] <- NA all_lPot[,2][all_lPot[,2] < 0.1] <- NA - P_histCI <- ggplot(all_lPot, aes(x=Potency_and_CI, fill=Cat_potency)) + + CalcPotDF <- as.data.frame(CalcPotDF) + CalcPotDF$width_CI <- CalcPotDF$upper_CI - CalcPotDF$lower_CI + widthCLTol <- normtol.int(x = CalcPotDF$width_CI, alpha = 1-input$TolConf, P = input$TolPop, side = 1) + + P_linerangeCI <- ggplot(CalcPotDF, aes(x=seq(1,nrow(CalcPotDF)))) + #, aes(x=Potency_and_CI, fill=Cat_potency) + geom_linerange(aes(ymin=lower_CI, ymax=upper_CI), color="black") + + geom_point(aes(y=rel_potency), alpha = 0.1) + + #scale_fill_manual(values=c("darkgreen","darkblue","salmon2","tomato3")) + + ggtitle("CLs of relative potencies, standard RMSEs") + + # scale_x_continuous( + # breaks=seq(trunc(min(all_lPot$Potency_and_CI, na.rm=T)*10)/10, max(all_lPot$Potency_and_CI, na.rm=T)*1.1, by=0.4), + # ) + + theme_bw() + + theme(axis.text = element_text(face="bold", size=15), + axis.text.x = element_text(angle=90), + plot.title= element_text(size=15, face="bold")) + #P_linerangeCI + output$linerangeCIs <- renderPlot({ P_linerangeCI }) + + P_widthCIs <- ggplot(CalcPotDF, aes(x=width_CI, fill="blue")) + geom_histogram(color="#e9ecef", alpha=0.6, position = "identity") + - scale_fill_manual(values=c("darkgreen","darkblue","salmon2","tomato3")) + - ggtitle("Histogram of relative potencies, standard RMSEs") + - scale_x_continuous( - breaks=seq(trunc(min(all_lPot$Potency_and_CI, na.rm=T)*10)/10, max(all_lPot$Potency_and_CI, na.rm=T)*1.1, by=0.4), - ) + + geom_density(alpha = 0.1) + + #scale_fill_manual(values=c("darkgreen","darkblue","salmon2","tomato3")) + + labs(title = "Histogram of width of CLs", subtitle = paste("with upper",input$TolConf,input$TolPop, "tolerance interval")) + + geom_vline(xintercept = widthCLTol[[5]]) + + theme_bw() + + theme(axis.text = element_text(face="bold", size=15), + axis.text.x = element_text(angle=90), + plot.title= element_text(size=15, face="bold")) + + output$widthCIs <- renderPlot({ P_widthCIs }) + + SlopeTol <- normtol.int(x = slopeRatio, alpha = 1-input$TolConf, P = input$TolPop, side = 2) + LasTol <- normtol.int(x = LasRatio, alpha = 1-input$TolConf, P = input$TolPop, side = 2) + UasTol <- normtol.int(x = UasRatio, alpha = 1-input$TolConf, P = input$TolPop, side = 2) + + P_ratioSlope <- ggplot(ratioDF, aes(x=slopeRatio, fill="turquoise")) + + geom_histogram(color="#e9ecef", alpha=0.6, position = "identity") + + geom_density(alpha = 0.1) + + #scale_fill_manual(values=c("darkgreen","darkblue","salmon2","tomato3")) + + labs(title = "Histogram of Hill's slope ratios ", subtitle = paste("with",input$TolConf,input$TolPop, "tolerance interval")) + + geom_vline(xintercept = c(SlopeTol[[4]], SlopeTol[[5]]), linetype=2, col="grey") + theme_bw() + theme(axis.text = element_text(face="bold", size=15), axis.text.x = element_text(angle=90), plot.title= element_text(size=15, face="bold")) - output$histCIs <- renderPlot({ P_histCI }) + output$ratioSlope <- renderPlot({ P_ratioSlope }) + + P_ratioLas <- ggplot(ratioDF, aes(x=LasRatio, fill="turquoise")) + + geom_histogram(color="#e9ecef", alpha=0.6, position = "identity") + + geom_density(alpha = 0.1) + + #scale_fill_manual(values=c("darkgreen","darkblue","salmon2","tomato3")) + + labs(title = "Histogram of lower asymptote ratios ", subtitle = paste("with",input$TolConf,input$TolPop, "tolerance interval")) + + geom_vline(xintercept = c(LasTol[[4]], LasTol[[5]]), linetype=2, col="grey") + + theme_bw() + + theme(axis.text = element_text(face="bold", size=15), + axis.text.x = element_text(angle=90), + plot.title= element_text(size=15, face="bold")) + + output$ratioLas <- renderPlot({ P_ratioLas }) + + P_ratioUas <- ggplot(ratioDF, aes(x=UasRatio, fill="turquoise")) + + geom_histogram(color="#e9ecef", alpha=0.6, position = "identity") + + geom_density(alpha = 0.1) + + #scale_fill_manual(values=c("darkgreen","darkblue","salmon2","tomato3")) + + labs(title = "Histogram of upper asymptote ratios ", subtitle = paste("with",input$TolConf,input$TolPop, "tolerance interval")) + + geom_vline(xintercept = c(UasTol[[4]], UasTol[[5]]), linetype=2, col="grey") + + theme_bw() + + theme(axis.text = element_text(face="bold", size=15), + axis.text.x = element_text(angle=90), + plot.title= element_text(size=15, face="bold")) + + output$ratioUas <- renderPlot({ P_ratioUas }) output$histEC50REF <- renderPlot({ hist(EC50REF, col="steelblue", border="white", main = 'Histogram of EC50REF') @@ -2315,11 +2404,12 @@ server <- function(input, output, session) { Dat$histEC50REF <- hist(EC50REF, col="steelblue", border="white", main = 'Histogram of EC50REF') Dat$histLasREF <- hist(LasREF, col="violet", border="white", main = 'Histogram of EC50REF') Dat$histUasREF <- hist(UasREF, col="darkturquoise", border="white", main = 'Histogram of EC50REF') - + + ##### Dilutions Simulator ---- tab <- AllXL[[1]] dils <- tab$log_dose - min_y <- min(tab[, 1:2]) - max_y <- max(tab[, 1:2]) + min_y <- min(tab[, 1:2], na.rm = T) + max_y <- max(tab[, 1:2], na.rm = T) #browser() # if (input$fixupper) { # dils_av <- dils - max(dils) @@ -2389,16 +2479,17 @@ server <- function(input, output, session) { ) DilsTable }) - +##### Plot for dilution slider ---- + if (!is.null(p2)) { #p2 <- Dat$p2 p_dil <- p2 + - annotate("pointrange", x = dils2, y = rep(min_y, length(dils2)), xmin = min(dils2), xmax = max(dils2)) + - annotate("text", x = dils2, y = rep(min_y + (max_y - min_y) * 0.05, length(dils2)), label = as.character(round(dils2, 3))) + + annotate("pointrange", x = dils2, y = rep(min_y, length(dils2)), xmin = min(dils2), xmax = max(dils2),colour = "red" ,linetype = 3) + + annotate("text", x = dils2, y = rep(min_y + (max_y - min_y) * 0.05, length(dils2)), label = as.character(round(dils2, 3)),colour = "red") + annotate("text", x = dils2[-1] + (max(dils2) - min(dils2)) * 0.05, y = rep(min_y + (max_y - min_y) * 0.1, length(dils2[-1])), - label = as.character(round(dilfactors[-1], 3))) + label = as.character(round(dilfactors[-1], 3)),colour = "red") # geom_line( # data = as.data.frame(pl_df), aes(x = dils2, y = SAMPLE50), color = "grey15", linetype = 2, # inherit.aes = F @@ -2512,7 +2603,7 @@ server <- function(input, output, session) { }) }) - #### simulations ---- + #### NOT SHOWN: simulations ---- observe({ observeEvent(input$goSim, { sd_fac_ <- as.numeric(input$sdfac) @@ -2625,7 +2716,7 @@ server <- function(input, output, session) { }) - #### simulation Histograms output ---- + #### NOT SHOWN: simulation Histograms output ---- output$plotHistuAs <- renderPlot({ if (!is.null(Dat$resHist)) { @@ -2756,6 +2847,76 @@ server <- function(input, output, session) { ) } ) + + + #### download Meta 4PL report---- + + observeEvent(input$btn2, { + if(!Dat$FITsFlag) { + runjs("$('#downloadXLReportMeta')[0].click();") + } else { + showModal(modalDialog( + title = "No 4PL model to Download", + "Please select other data before download.", + easyClose = TRUE, + footer = NULL + )) + } + }) + + output$downloadXLReportMeta <- downloadHandler( + filename = paste0("Report_4PLEvaluation", Dat$RepIdentifier, ".pdf"), + content = function(file) { + tpdr <- tempdir() + tempReport <- file.path(tpdr, "Doc_BioassayReport.Rmd") + file.copy("Doc_BioassayReport.Rmd", tempReport, overwrite = T) + + tempReportc <- file.path(tpdr, "logov2.png") + file.copy("logov2.png", tempReportc, overwrite = T) + + rmarkdown::render(tempReport, + output_file = file, + params = list( + FileName = Dat$FileName, + author = Dat$Author, + NoP = Dat$NoP, + Assay = Dat$Assay, + REP = REP, + coeffs = Dat$coeffs_UN + ), + envir = new.env(parent = globalenv()) + ) + } + ) + + + #### download Wizard report ---- + + output$downloadWizardReport <- downloadHandler( + filename = paste0("Report_Meta", Dat$nameRep, ".pdf"), + content = function(file) { + tpdr <- tempdir() + tempReport <- file.path(tpdr, "Doc_BioassayLinReport.Rmd") + file.copy("Doc_BioassayLinReport.Rmd", tempReport, overwrite = TRUE) + + tempReportc <- file.path(tpdr, "logov2.png") + file.copy("logov2.png", tempReportc, overwrite = TRUE) + + rmarkdown::render(tempReport, + output_file = file, + params = list( + FileName = Dat$FileName, + author = Dat$Author, + NoP = Dat$NoP, + Assay = Dat$Assay, + REP = REP, + REPlin = REPlin, + coeffsLin = Dat$coeffs_UN + ), + envir = new.env(parent = globalenv()) + ) + } + ) } shinyApp(ui, server)