Compare commits

2 Commits

8 changed files with 398 additions and 2782 deletions
+43 -2782
View File
File diff suppressed because it is too large Load Diff
+143
View File
@@ -0,0 +1,143 @@
explore_4pl <- tagList(
div(),#empty, just for spacing
navset_pill(
id = "tab_menu_2",
nav_panel("normal option TODO",
tags$div("graphs 4pl TODO"),
accordion(
open = FALSE,
accordion_panel(
title = "4PL-Tests",
p("This is the content inside the expandable box."),
)
),
accordion(
open = FALSE,
accordion_panel(
title = "unrestricted ANOVA for 4PL",
p("This is the content inside the expandable box."),
)
),
accordion(
open = FALSE,
accordion_panel(
title = "Error calculations:", #TODO NAME?
p("This is the content inside the expandable box."),
)
)
),
nav_panel("ln-transformed y",
tags$div("graphs 4pl ln transformed y TODO"),
accordion(
open = FALSE,
accordion_panel(
title = "4PL-Tests for ln-transformed y",
p("This is the content inside the expandable box."),
)
)
),
),
)
explore_linear <- tagList(
tags$p("graphs linear TODO"),
accordion(
open = FALSE,
accordion_panel(
title = "Tests for linear PLA:",
p("This is the content inside the expandable box."),
)
),
accordion(
open = FALSE,
accordion_panel(
title = "ANOVA for parallel line assay:",
p("This is the content inside the expandable box."),
)
),
accordion(
open = FALSE,
accordion_panel(
title = "Unrestricted linear model (SSSI):",
p("This is the content inside the expandable box."),
)
),
accordion(
open = FALSE,
accordion_panel(
title = "Restricted linear model (CSSI):",
p("This is the content inside the expandable box."),
)
)
)
explore_page <- layout_sidebar(
sidebar = sidebar(
class = "sidebar",
tags$div( class = "sidebar_collector",
tags$h5( class = "sidebar_collector_header",
"Exploration Settings"
),
sliderInput("sdfac", "Variability of lower to upper asymptote [%]:", min = 0, max = 100, value = 50),
sliderInput("potencydiff", "Potency of test [%]:", min = 0, max = 200, value = 100),
checkboxInput("PureErrMeta","Use pure error", FALSE),
checkboxInput("heterosked","Heteroskedastic noise", FALSE),
),
tags$div( class = "sidebar_collector",
tags$h5( class = "sidebar_collector_header", "Curve Settings"),
numericInput("lowAsymptREF", "lower asymptote REF", 10, step = 1, min = 0),
numericInput("lowAsymptTEST", "lower asymptote TEST", 10, step = 1, min = 0),
numericInput("uppAsymptREF", "upper asymptote REF", 110, step = 1, min = 0),
numericInput("uppAsymptTEST", "upper asymptote TEST", 110, step = 1, min = 0),
numericInput("slopeREF", "slope REF", 1, step = 0.1, min = -10),
numericInput("slopeTEST", "slope TEST", 1, step = 0.1, min = -10),
numericInput("EC50", "EC50 REF", -3.5),
numericInput("potDiff", "potency difference", 0)
),
tags$div( class = "sidebar_collector",
tags$h5( class = "sidebar_collector_header", "Dilutions"),
numericInput("CONC1", "highest concentration", 0.3, min = -3.5),
numericInput("CONC2", "2nd concentration", 0.15),
numericInput("CONC3", "3rd concentration", 0.075),
numericInput("CONC4", "4th concentration", 0.0375),
numericInput("CONC5", "5th concentration", 0.01875),
numericInput("CONC6", "6th concentration", 0.00938),
numericInput("CONC7", "7th concentration", 0.00469),
numericInput("CONC8", "8thd concentration", 0.00235),
numericInput("CONC9", "9thd concentration", value = NA),
numericInput("CONC10", "10th concentration", value = NA),
numericInput("CONC11", "11th concentration", value = NA),
numericInput("CONC12", "lowest concentration", NA)
),
tags$div( class = "sidebar_collector",
tags$h5( class = "sidebar_collector_header", "Geometric Dilution Scheme"),
numericInput("ConcStart", "starting concentration", value = NA, min = 0),
numericInput("dilutionFac", "dilution factor", value = NA, min = 0, max = 10),
numericInput("NoDil", "no. of dilutions", value = NA, min = 8),
numericInput("NoDilSer", "no. of dil. series", value = NA, min = 0), #TODO 1?
),
),
# Main content goes here (can be multiple elements)
navset_pill(
id = "tab_menu_1",
nav_panel("4PL", explore_4pl),
nav_panel("LINEAR", explore_linear)
),
accordion(
open = FALSE,
accordion_panel(
title = "Input-Data with added random noise:",
box( # TODO
title = "Simulated data per log-concentration", solidHeader = TRUE, width = 12, "incl. mean, sd and CV%",
DT::dataTableOutput("ConctabMeta")
),
)
)
)
+44
View File
@@ -0,0 +1,44 @@
home_page <- tagList(
tags$div( style = "align-self: center",
tags$div( class = "home-text-section",
tags$h3("Welcome to Plateflow"),
tags$p("Plateflow allows you to EXPLORE, INSPECT and OPTIMIZE your data in
the context of a 4 PL fit or a linear regression fit. "),
),
tags$div( class = "home-text-section",
tags$h4("Readable formats and expected structure"),
tags$p("Plateflow is optimized for uploadfiles in the folowing formats:
.xlsx, .csv and .numbers."),
tags$ul(
tags$li("1 column with the dilution concentrations (first or last column) is expected"),
tags$li("The column name of the dilution concentrations can be as follows: concentration, dose, log_concentration, log_dose (first letter can be capital).
It is assumed, that the concentrations are in anti-log or in natural log mode."),
tags$li("2 columns of reference and test sample readouts, respectively, in this order, are expected"),
tags$li("The column names for reference and test are free to set, but must differ for all columns"),
),
tags$p("You can download an example", tags$a("TestFile.xlsx ", target = "self", href = "TestFile.xlsx"), "File here."),
tags$h6("Example filestructure:"),
tags$img(src= "example_file.png", width = "800px", alt="example filestructure for upload", style = " max-width:800px"),
tags$br(),
),
tags$div( class = "home-text-section",
tags$br(),
tags$h4("Information on dilution settings"), #TODO
tags$p("Bend points are calculated according to following formula:",
withMathJax(" $$bp_{1/2} = \\pm\\frac{1.31696}{Hill's slope}$$"),
"Please refer to this", a(href = "ADONIS.pdf", "Whitepaper", download = NA, target = "_blank"), "for further details.", #TODO this link does not work for me
),
tags$br(),
),
tags$div( class = "home-text-section",
tags$h4("Plateflow Point of Contact"),
tags$p("At InnerAnalytics, we are happy to hear from you. You can contact us under: ",
tags$a("info@inner-analytics.eu", href = "mailto:info@inner-analytics.eu")),
tags$p("If you would like to report a bug, we would appreciate it if you sent us the following infos to help us solve your request as fast as possible: "),
verbatimTextOutput("sessioninfo"), #TODO actually output this
),
)
)
+61
View File
@@ -0,0 +1,61 @@
optimize_4pl <- tagList(
tags$p("graphs optimize 4pl TODO"),
accordion(
open = FALSE,
accordion_panel(
title = "Tests for linear PLA:",
p("This is the content inside the expandable box."),
)
),
)
dilution_slider <- tagList(
tags$h2("Finder for optimal dilutions"),
tags$p("graphs optimize dilution-slider TODO"),
accordion(
open = FALSE,
accordion_panel(
title = "Adjusted dilution factors:",
p("This is the content inside the expandable box."),
)
),
)
histograms <- tagList(
accordion(
open = FALSE,
accordion_panel(
title = "Parameter Histograms",
p("This is the content inside the expandable box."),
)
),
)
optimize_report <- tagList(
tags$p("download optimize report TODO"),
)
optimize_page <- layout_sidebar(
sidebar = sidebar(
class = "sidebar",
tags$div( class = "sidebar_collector",
tags$h5( class = "sidebar_collector_header",
"Optimization Settings"
),
sliderInput("TODO", "Adjust the dilutions (+- change in %):", min = -100, max = 100, value = 0),
checkboxInput("TODO2","Fix highest concentration instead of center", FALSE),
p("Wider dilution ranges increase the CIs of the relative potency, and decrease the CIs of the upper and lower asymptotes ratios, as well as the Hill's slope ratios."),
),
),
# Main content goes here (can be multiple elements)
optimize_4pl,
dilution_slider,
histograms,
optimize_report
)

Before

Width:  |  Height:  |  Size: 292 KiB

After

Width:  |  Height:  |  Size: 292 KiB

BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

View File

Before

Width:  |  Height:  |  Size: 3.6 KiB

After

Width:  |  Height:  |  Size: 3.6 KiB

+107
View File
@@ -0,0 +1,107 @@
:root {
color-scheme: light;
--text-dark: #000000;
--text-light: #ffffff;
--grey-900: #1f2937;
--grey-800: #2b3441;
--grey-200: #b1b9c5;
--grey-100: #e7f1ff;
--grey-white: #ffffff;
--blue-light: #7faeff;
--blue: #5757fd;
--blue-dark: #4545ba;
}
body {
background: var(--grey-white);
color: var(--text-dark);
}
/*------------------------header-------------------------------------------*/
.navbar {
background-color: var(--grey-100);
border-bottom: 1px solid var(--blue-light) !important;
align-items: center;
width: 100;
}
/* The app title */
.navbar-brand {
color: var(--text-dark);
font-size: 1.4rem;
}
/* Nav container */
.navbar-nav {
display: flex;
justify-content: space-evenly;
align-self: center;
}
/*Header buttons*/
.navbar-nav .nav-link {
padding: 0.2rem 1.2rem !important;
margin: 0.4rem 0rem;
border: none;
border-radius: 5px;
}
/*----------------------------------------------------------------------------*/
.navbar-nav .nav-link.active,
.tab-button:hover,
.navbar-nav .nav-link.focus,
.tab-button:focus,
#tab_menu_1 .nav-link.active,
#tab_menu_2 .nav-link.active{
background-color: var(--blue-light);
color: var(--text-light)
}
/* Center the tab buttons */
#tab_menu_1,
#tab_menu_2{
justify-content: center;
}
/* Style individual tab buttons */
#tab_menu_1 .nav-link,
#tab_menu_2 .nav-link{
background-color: var(--grey-100);
border-radius: 4px;
margin: 0rem 1rem;
color: var(--text-dark)
}
/*----------------------------------------------------------------------------*/
.sidebar {
background-color: var(--grey-100) !important;
border-right: 1px solid var(--blue-light) !important;
}
.sidebar_collector{
border: 1px solid var(--blue-light);
border-radius: 4px;
padding: 10px;
}
.sidebar_collector_header{
border-bottom: 1px dashed var(--blue-light);
padding: 0 0 15px 0;
}
/*----------------------------------------------------------------------------*/
.home-text-section{
background-color: var(--grey-white);
padding: 10px;
border-radius: 4px;
max-width: 900px;
align-self: start;
}