From 26aa2b8b2ef2b5d2e1b02beb22855fa9daa82cd3 Mon Sep 17 00:00:00 2001 From: Franz Innerbichler Date: Sun, 3 May 2026 22:23:51 +0200 Subject: [PATCH] add existing files to git --- .DS_Store | Bin 0 -> 8196 bytes .Rhistory | 0 .Rproj.user/1804966C/assistant_options | 4 + .Rproj.user/1804966C/build_options | 7 + .Rproj.user/1804966C/pcs/files-pane.pper | 9 + .Rproj.user/1804966C/pcs/source-pane.pper | 3 + .../1804966C/pcs/windowlayoutstate.pper | 14 + .Rproj.user/1804966C/pcs/workbench-pane.pper | 6 + .Rproj.user/1804966C/rmd-outputs | 5 + .Rproj.user/1804966C/rstudio-prefs.json | 3 + .Rproj.user/1804966C/saved_source_markers | 1 + .Rproj.user/1804966C/sources/prop/0498AE4A | 6 + .Rproj.user/1804966C/sources/prop/1F7C96C9 | 7 + .Rproj.user/1804966C/sources/prop/2E42830B | 8 + .Rproj.user/1804966C/sources/prop/690ECC06 | 6 + .Rproj.user/1804966C/sources/prop/75D6CC68 | 7 + .Rproj.user/1804966C/sources/prop/D28532A3 | 7 + .Rproj.user/1804966C/sources/prop/E0EFE663 | 6 + .Rproj.user/1804966C/sources/prop/INDEX | 7 + .../sources/session-c8f70505/00336B5B | 26 + .../session-c8f70505/00336B5B-contents | 277 ++ .../session-c8f70505/0A0A1958-contents | 0 .../session-c8f70505/24304C96-contents | 0 .../session-c8f70505/26A61C2B-contents | 0 .../sources/session-c8f70505/2D702BEF | 27 + .../session-c8f70505/2D702BEF-contents | 2307 +++++++++++++ .../sources/session-c8f70505/47543094 | 28 + .../session-c8f70505/47543094-contents | 2892 +++++++++++++++++ .../session-c8f70505/4893F0C1-contents | 0 .../session-c8f70505/4D51366C-contents | 0 .../session-c8f70505/64B5319C-contents | 0 .../session-c8f70505/6ED4A462-contents | 0 .../session-c8f70505/8559DAA4-contents | 0 .../session-c8f70505/86D3BA27-contents | 0 .../session-c8f70505/8E98A6AC-contents | 0 .../session-c8f70505/97D02FCF-contents | 0 .../session-c8f70505/9A672A7E-contents | 0 .../session-c8f70505/9CAC830E-contents | 1171 +++++++ .../session-c8f70505/A184C1A3-contents | 0 .../session-c8f70505/A4E06B42-contents | 51 + .../session-c8f70505/AD13DB6C-contents | 0 .../session-c8f70505/ADC82D47-contents | 0 .../sources/session-c8f70505/AFA288F2 | 27 + .../session-c8f70505/AFA288F2-contents | 54 + .../session-c8f70505/B56AC04E-contents | 0 .../session-c8f70505/C2562822-contents | 0 .../session-c8f70505/CA43EAA6-contents | 0 .../session-c8f70505/CAA6E781-contents | 0 .../session-c8f70505/CF6D7617-contents | 0 .../session-c8f70505/D0721A67-contents | 0 .../session-c8f70505/E68D9B8B-contents | 45 + .../session-c8f70505/EE965DC3-contents | 0 .../session-c8f70505/F3CBFA8F-contents | 0 .../session-c8f70505/FA393B55-contents | 0 .../sources/session-c8f70505/lock_file | 0 .../shared/notebooks/patch-chunk-names | 0 .Rproj.user/shared/notebooks/paths | 5 + Doc_BioassayReport.Rmd | 432 +++ NewApp.Rproj | 14 + Tests3Plates.numbers | Bin 0 -> 789343 bytes Tests3Plates.xlsx | Bin 0 -> 11720 bytes app.R | 2892 +++++++++++++++++ logo.png | Bin 0 -> 23092 bytes www/logo.png | Bin 0 -> 23092 bytes 64 files changed, 10354 insertions(+) create mode 100644 .DS_Store create mode 100644 .Rhistory create mode 100644 .Rproj.user/1804966C/assistant_options create mode 100644 .Rproj.user/1804966C/build_options create mode 100644 .Rproj.user/1804966C/pcs/files-pane.pper create mode 100644 .Rproj.user/1804966C/pcs/source-pane.pper create mode 100644 .Rproj.user/1804966C/pcs/windowlayoutstate.pper create mode 100644 .Rproj.user/1804966C/pcs/workbench-pane.pper create mode 100644 .Rproj.user/1804966C/rmd-outputs create mode 100644 .Rproj.user/1804966C/rstudio-prefs.json create mode 100644 .Rproj.user/1804966C/saved_source_markers create mode 100644 .Rproj.user/1804966C/sources/prop/0498AE4A create mode 100644 .Rproj.user/1804966C/sources/prop/1F7C96C9 create mode 100644 .Rproj.user/1804966C/sources/prop/2E42830B create mode 100644 .Rproj.user/1804966C/sources/prop/690ECC06 create mode 100644 .Rproj.user/1804966C/sources/prop/75D6CC68 create mode 100644 .Rproj.user/1804966C/sources/prop/D28532A3 create mode 100644 .Rproj.user/1804966C/sources/prop/E0EFE663 create mode 100644 .Rproj.user/1804966C/sources/prop/INDEX create mode 100644 .Rproj.user/1804966C/sources/session-c8f70505/00336B5B create mode 100644 .Rproj.user/1804966C/sources/session-c8f70505/00336B5B-contents create mode 100644 .Rproj.user/1804966C/sources/session-c8f70505/0A0A1958-contents create mode 100644 .Rproj.user/1804966C/sources/session-c8f70505/24304C96-contents create mode 100644 .Rproj.user/1804966C/sources/session-c8f70505/26A61C2B-contents create mode 100644 .Rproj.user/1804966C/sources/session-c8f70505/2D702BEF create mode 100644 .Rproj.user/1804966C/sources/session-c8f70505/2D702BEF-contents create mode 100644 .Rproj.user/1804966C/sources/session-c8f70505/47543094 create mode 100644 .Rproj.user/1804966C/sources/session-c8f70505/47543094-contents create mode 100644 .Rproj.user/1804966C/sources/session-c8f70505/4893F0C1-contents create mode 100644 .Rproj.user/1804966C/sources/session-c8f70505/4D51366C-contents create mode 100644 .Rproj.user/1804966C/sources/session-c8f70505/64B5319C-contents create mode 100644 .Rproj.user/1804966C/sources/session-c8f70505/6ED4A462-contents create mode 100644 .Rproj.user/1804966C/sources/session-c8f70505/8559DAA4-contents create mode 100644 .Rproj.user/1804966C/sources/session-c8f70505/86D3BA27-contents create mode 100644 .Rproj.user/1804966C/sources/session-c8f70505/8E98A6AC-contents create mode 100644 .Rproj.user/1804966C/sources/session-c8f70505/97D02FCF-contents create mode 100644 .Rproj.user/1804966C/sources/session-c8f70505/9A672A7E-contents create mode 100644 .Rproj.user/1804966C/sources/session-c8f70505/9CAC830E-contents create mode 100644 .Rproj.user/1804966C/sources/session-c8f70505/A184C1A3-contents create mode 100644 .Rproj.user/1804966C/sources/session-c8f70505/A4E06B42-contents create mode 100644 .Rproj.user/1804966C/sources/session-c8f70505/AD13DB6C-contents create mode 100644 .Rproj.user/1804966C/sources/session-c8f70505/ADC82D47-contents create mode 100644 .Rproj.user/1804966C/sources/session-c8f70505/AFA288F2 create mode 100644 .Rproj.user/1804966C/sources/session-c8f70505/AFA288F2-contents create mode 100644 .Rproj.user/1804966C/sources/session-c8f70505/B56AC04E-contents create mode 100644 .Rproj.user/1804966C/sources/session-c8f70505/C2562822-contents create mode 100644 .Rproj.user/1804966C/sources/session-c8f70505/CA43EAA6-contents create mode 100644 .Rproj.user/1804966C/sources/session-c8f70505/CAA6E781-contents create mode 100644 .Rproj.user/1804966C/sources/session-c8f70505/CF6D7617-contents create mode 100644 .Rproj.user/1804966C/sources/session-c8f70505/D0721A67-contents create mode 100644 .Rproj.user/1804966C/sources/session-c8f70505/E68D9B8B-contents create mode 100644 .Rproj.user/1804966C/sources/session-c8f70505/EE965DC3-contents create mode 100644 .Rproj.user/1804966C/sources/session-c8f70505/F3CBFA8F-contents create mode 100644 .Rproj.user/1804966C/sources/session-c8f70505/FA393B55-contents create mode 100644 .Rproj.user/1804966C/sources/session-c8f70505/lock_file create mode 100644 .Rproj.user/shared/notebooks/patch-chunk-names create mode 100644 .Rproj.user/shared/notebooks/paths create mode 100644 Doc_BioassayReport.Rmd create mode 100644 NewApp.Rproj create mode 100644 Tests3Plates.numbers create mode 100644 Tests3Plates.xlsx create mode 100644 app.R create mode 100644 logo.png create mode 100644 www/logo.png diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..1f2a61bfaf266428c178c0e00c6938298e6535fc GIT binary patch literal 8196 zcmZQzU|@7AO)+F(kYHe7;9!8z0^AH(0Z1N%F(jFwBCH_u7#IW?iVKo*@{<@C7uu5=%;pof3KCBdA;Dzwv zWDf%a1JpYy#mPBI`T04Z0s|_PQ(Wc@8KGb{O)7x+@D|L6oLt;Iyiy^dVc|TH@d83+ znW^Re1tppJdBtI=Ma7x{@bE-srljVT zWTs`N7KN5)rj%qvCKe~B=A~rjrH7Yg7H1~qq=w`r=B5fV>Tq&`bxBA{Nkx<977@PuS%=A{S}L#;9}L*kfwOBNbi-31ks#w7Q&PZw5E2mNmkN*y;t;sR5icN+nOBxsk_d`ENV?}x zhJ-u=gR+AbgsFTWAHo0!D5tW60ffuI!63_E#NfiDv| zV-jOBV+vy~V-aHsV<}@9V?ARlV>@F9V<+Pz##xMW80Rw1V_eR-fpH__CdS>2rx?#L zo@G48c%AVP<737rjBgqLGchnRGI249Fo`mWG08J2Fex!9Gnp}&GdVDMG6gY(GetmL z&IHObAZ8SZKwzdsMDEHdE`tvCF|EU%m1NvKJiT~)hD=tv$p^_iqGI9-pd4jk>j+PL zkkkrGpvcJ{oYqlt2so{S(*jyLy&@qgB`qV%BM-}g=s7bqGcP5zf&-K%1=t~~m3UM* z1X4H!SRq_>9!(AbZ%zR=2vd2ULatJU&I95D1 zoC3w10xS@&ERO>xrvL+(BjYUN${}!qLx6)?srx3wBZe0Y9~k~HGBWZp3NuPDsxule zS}@u%dNBGi`ZESG1~Y~-#xce-CNd_0({vtV0b?O!F=Gv5En_`n17j0oH)9WDA7ek` zM8;W+vl-`r)AkC+Rg9|{*D`Kn+|IazaTnuZ#v_c!7>_faWIV-qneh(eQ^r?}uOaCb zo`!uPd>G021(Al!f{XHU^7GQc%~6P;L49pde>wr`eNg)V)E#F8^~)jpKuSPedvJH05i+R=R?Wx&>B%!PKzj0w Z3=ANx12+(Wt0_HN|Bu%H;1oMD2mlyUR=5BF literal 0 HcmV?d00001 diff --git a/.Rhistory b/.Rhistory new file mode 100644 index 0000000..e69de29 diff --git a/.Rproj.user/1804966C/assistant_options b/.Rproj.user/1804966C/assistant_options new file mode 100644 index 0000000..f563ed6 --- /dev/null +++ b/.Rproj.user/1804966C/assistant_options @@ -0,0 +1,4 @@ +assistant="default" +chat_provider="default" +copilot_enabled="-1" +copilot_indexing_enabled="-1" diff --git a/.Rproj.user/1804966C/build_options b/.Rproj.user/1804966C/build_options new file mode 100644 index 0000000..df12568 --- /dev/null +++ b/.Rproj.user/1804966C/build_options @@ -0,0 +1,7 @@ +auto_roxygenize_for_build_and_reload="1" +auto_roxygenize_for_build_package="1" +auto_roxygenize_for_check="1" +live_preview_website="0" +makefile_args="" +preview_website="1" +website_output_format="all" diff --git a/.Rproj.user/1804966C/pcs/files-pane.pper b/.Rproj.user/1804966C/pcs/files-pane.pper new file mode 100644 index 0000000..5b555a4 --- /dev/null +++ b/.Rproj.user/1804966C/pcs/files-pane.pper @@ -0,0 +1,9 @@ +{ + "sortOrder": [ + { + "columnIndex": 2, + "ascending": true + } + ], + "path": "~/plateflow/NewApp" +} \ No newline at end of file diff --git a/.Rproj.user/1804966C/pcs/source-pane.pper b/.Rproj.user/1804966C/pcs/source-pane.pper new file mode 100644 index 0000000..28a3c2e --- /dev/null +++ b/.Rproj.user/1804966C/pcs/source-pane.pper @@ -0,0 +1,3 @@ +{ + "activeTab": 3 +} \ No newline at end of file diff --git a/.Rproj.user/1804966C/pcs/windowlayoutstate.pper b/.Rproj.user/1804966C/pcs/windowlayoutstate.pper new file mode 100644 index 0000000..670897f --- /dev/null +++ b/.Rproj.user/1804966C/pcs/windowlayoutstate.pper @@ -0,0 +1,14 @@ +{ + "left": { + "splitterpos": 349, + "topwindowstate": "NORMAL", + "panelheight": 872, + "windowheight": 910 + }, + "right": { + "splitterpos": 493, + "topwindowstate": "NORMAL", + "panelheight": 872, + "windowheight": 910 + } +} \ No newline at end of file diff --git a/.Rproj.user/1804966C/pcs/workbench-pane.pper b/.Rproj.user/1804966C/pcs/workbench-pane.pper new file mode 100644 index 0000000..8c9ff0d --- /dev/null +++ b/.Rproj.user/1804966C/pcs/workbench-pane.pper @@ -0,0 +1,6 @@ +{ + "TabSet1": 0, + "TabSet2": 3, + "TabZoom": {}, + "Sidebar": 0 +} \ No newline at end of file diff --git a/.Rproj.user/1804966C/rmd-outputs b/.Rproj.user/1804966C/rmd-outputs new file mode 100644 index 0000000..3f2ff2d --- /dev/null +++ b/.Rproj.user/1804966C/rmd-outputs @@ -0,0 +1,5 @@ + + + + + diff --git a/.Rproj.user/1804966C/rstudio-prefs.json b/.Rproj.user/1804966C/rstudio-prefs.json new file mode 100644 index 0000000..23a5687 --- /dev/null +++ b/.Rproj.user/1804966C/rstudio-prefs.json @@ -0,0 +1,3 @@ +{ + "file_monitor_use_gitignore": true +} \ No newline at end of file diff --git a/.Rproj.user/1804966C/saved_source_markers b/.Rproj.user/1804966C/saved_source_markers new file mode 100644 index 0000000..2b1bef1 --- /dev/null +++ b/.Rproj.user/1804966C/saved_source_markers @@ -0,0 +1 @@ +{"active_set":"","sets":[]} \ No newline at end of file diff --git a/.Rproj.user/1804966C/sources/prop/0498AE4A b/.Rproj.user/1804966C/sources/prop/0498AE4A new file mode 100644 index 0000000..e49d8be --- /dev/null +++ b/.Rproj.user/1804966C/sources/prop/0498AE4A @@ -0,0 +1,6 @@ +{ + "source_window_id": "", + "Source": "Source", + "cursorPosition": "149,33", + "scrollLine": "0" +} \ No newline at end of file diff --git a/.Rproj.user/1804966C/sources/prop/1F7C96C9 b/.Rproj.user/1804966C/sources/prop/1F7C96C9 new file mode 100644 index 0000000..b5e3a76 --- /dev/null +++ b/.Rproj.user/1804966C/sources/prop/1F7C96C9 @@ -0,0 +1,7 @@ +{ + "tempName": "Untitled1", + "source_window_id": "", + "Source": "Source", + "cursorPosition": "53,0", + "scrollLine": "32" +} \ No newline at end of file diff --git a/.Rproj.user/1804966C/sources/prop/2E42830B b/.Rproj.user/1804966C/sources/prop/2E42830B new file mode 100644 index 0000000..7125d40 --- /dev/null +++ b/.Rproj.user/1804966C/sources/prop/2E42830B @@ -0,0 +1,8 @@ +{ + "source_window_id": "", + "Source": "Source", + "cursorPosition": "2155,38", + "scrollLine": "2145", + "docOutlineVisible": "1", + "docOutlineSize": "118" +} \ No newline at end of file diff --git a/.Rproj.user/1804966C/sources/prop/690ECC06 b/.Rproj.user/1804966C/sources/prop/690ECC06 new file mode 100644 index 0000000..d943323 --- /dev/null +++ b/.Rproj.user/1804966C/sources/prop/690ECC06 @@ -0,0 +1,6 @@ +{ + "source_window_id": "", + "Source": "Source", + "cursorPosition": "43,17", + "scrollLine": "18" +} \ No newline at end of file diff --git a/.Rproj.user/1804966C/sources/prop/75D6CC68 b/.Rproj.user/1804966C/sources/prop/75D6CC68 new file mode 100644 index 0000000..b5e3a76 --- /dev/null +++ b/.Rproj.user/1804966C/sources/prop/75D6CC68 @@ -0,0 +1,7 @@ +{ + "tempName": "Untitled1", + "source_window_id": "", + "Source": "Source", + "cursorPosition": "53,0", + "scrollLine": "32" +} \ No newline at end of file diff --git a/.Rproj.user/1804966C/sources/prop/D28532A3 b/.Rproj.user/1804966C/sources/prop/D28532A3 new file mode 100644 index 0000000..3382712 --- /dev/null +++ b/.Rproj.user/1804966C/sources/prop/D28532A3 @@ -0,0 +1,7 @@ +{ + "source_window_id": "", + "Source": "Source", + "docOutlineVisible": "1", + "cursorPosition": "470,1", + "scrollLine": "456" +} \ No newline at end of file diff --git a/.Rproj.user/1804966C/sources/prop/E0EFE663 b/.Rproj.user/1804966C/sources/prop/E0EFE663 new file mode 100644 index 0000000..bf73869 --- /dev/null +++ b/.Rproj.user/1804966C/sources/prop/E0EFE663 @@ -0,0 +1,6 @@ +{ + "source_window_id": "", + "Source": "Source", + "cursorPosition": "917,0", + "scrollLine": "911" +} \ No newline at end of file diff --git a/.Rproj.user/1804966C/sources/prop/INDEX b/.Rproj.user/1804966C/sources/prop/INDEX new file mode 100644 index 0000000..8776f5a --- /dev/null +++ b/.Rproj.user/1804966C/sources/prop/INDEX @@ -0,0 +1,7 @@ +~%2Fplateflow%2FNewApp%2Fapp.R="2E42830B" +~%2Fplateflow%2Fwizard%2Fserver.R="D28532A3" +~%2Fplateflow%2Fwizard%2Fui.R="0498AE4A" +~%2Fplateflow%2FwizardNew%2FDataGenerator.R="75D6CC68" +~%2Fplateflow%2FwizardNew%2FUntitled.R="1F7C96C9" +~%2Fplateflow%2FwizardNew%2Fserver.R="E0EFE663" +~%2Fplateflow%2FwizardNew%2Fui.R="690ECC06" diff --git a/.Rproj.user/1804966C/sources/session-c8f70505/00336B5B b/.Rproj.user/1804966C/sources/session-c8f70505/00336B5B new file mode 100644 index 0000000..1acac31 --- /dev/null +++ b/.Rproj.user/1804966C/sources/session-c8f70505/00336B5B @@ -0,0 +1,26 @@ +{ + "id": "00336B5B", + "path": "~/plateflow/wizard/ui.R", + "project_path": null, + "type": "r_source", + "hash": "0", + "contents": "", + "dirty": false, + "created": 1777315188063.0, + "source_on_save": false, + "relative_order": 3, + "properties": { + "source_window_id": "", + "Source": "Source", + "cursorPosition": "149,33", + "scrollLine": "0" + }, + "folds": "", + "lastKnownWriteTime": 1776610618, + "encoding": "UTF-8", + "collab_server": "", + "source_window": "", + "last_content_update": 1776610618, + "read_only": false, + "read_only_alternatives": [] +} \ No newline at end of file diff --git a/.Rproj.user/1804966C/sources/session-c8f70505/00336B5B-contents b/.Rproj.user/1804966C/sources/session-c8f70505/00336B5B-contents new file mode 100644 index 0000000..f5632f9 --- /dev/null +++ b/.Rproj.user/1804966C/sources/session-c8f70505/00336B5B-contents @@ -0,0 +1,277 @@ +library(shiny) +library(shinyjs) +library(shinyAce) +library(bslib) + +version <- "1.0.0" + +function(req) { + fluidPage( + useShinyjs(), + titlePanel("Dilution Wizard"), + tags$head(tags$style((".shiny-notification {position: fixed; top: 20%;left: 50%; margin-top: -100px; + margin-left: -250px; color: blue;font-size: 20px; font-style: italic;}")), + tabsetPanel(id="toptab", + tabPanel("Data entry", + wellPanel( + fluidRow( + tags$head(tags$style(HTML("label {font-size:80%;margin-bottom: 3px;margin-top: 3px;}"))), + column(2, + tags$image(src="logo.png", class="adv_logo"), + h4("upload EXCEL"), + fileInput(inputId = "iFile", label = "", accept="ms-excel"), + uiOutput(outputId = "sheetName"), + div(checkboxInput("PureErr", "Should pure error be used for calculation of CIs?", FALSE), + style = "font-size: 24px !important;color: red"), + verbatimTextOutput("stats"), + h5("\n\n\n Author: Franz Innerbichler, InnerAnalytics")), + div(id="parameter", + column(1,style = "background: lightgrey", + #actionButton("StartCalc", "Click, when calculations to be started"), + h4("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) + ), + column(1,style = "background: lightgrey", + 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) + ), + column(1,style = "background: lightgreen", + h4("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) + ), + column(1,style = "background: lightgreen", + + numericInput("CONC7", "7th concentration",0.00469), + numericInput("CONC8", "8thd concentration",0.00235), + numericInput("CONC9", "9thd concentration",NA), + numericInput("CONC10", "10th concentration",NA), + numericInput("CONC11", "11th concentration",NA), + + numericInput("CONC12", "lowest concentration",NA) + ), + column(1,style = "background: lightblue", + h4("geometric dilution scheme"), + numericInput("ConcStart", "starting concentration",NA), + numericInput("dilutionFac", "dilution factor",NA), + numericInput("NoDil", "no. of dilutions",NA), + numericInput("NoDilSer", "no. of dil. series",NA), + verbatimTextOutput("dilutions") + ), + column(4, + h4("log-dilution scheme"), + verbatimTextOutput("logdil"), + h4("User help"), + h5("If new dilutions are entered, please adjust EC50 to avoid calculation errors")) + ) + ) + )), + + #### XLSX diagnostics ---- + tabPanel ("XLSX diagnostics", + tags$style(HTML("pre { color: black; background-color: #FFE1FF; + font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;font-size: 12px;} ")), + wellPanel( + fluidRow( + column(2, + h5("Diagnostics only shown if EXCEL is uploaded"), + htmlOutput("PureErrW2"), + tags$head(tags$style("#PureErrW2{color: red; + font-size: 16px; + font_style: italic;}")), + tableOutput("FileSAmpl"), + downloadButton("downloadXLReport", label="Download PDF report", class="butt"), + tags$style(type="text/css","#downloadXLReport {background-color: orange; color: black;font-family: COurier New}"), + plotOutput("relpotTestPlot", width="300px", height="150px"), + h4("Akaike Information Criterion"), + tableOutput("AIC"), + h5("First row: restricted model; 2nd row: unrestricted model"), + h5("Smaller values of AIC indicate better fit to the data"), + tableOutput("VarDiagn") + ), + column(4, + plotOutput("XLplot"), + column(6, + br(), + "Regression results restricted", + tableOutput("coeffs_r"), + "Bend points restricted", + tableOutput("coeffs_r2")), + column(6, + br(), + "Regression results unrestricted", + tableOutput("coeffs_unr"))), + column(4, + plotOutput("diagnplot"), + column(6, + tableOutput("logcoeffs_r"), + tableOutput("coeffs_unr2")), + column(6, + tableOutput("logcoeffs_unr"))), + column(2, + tableOutput("ANOVAXLS"), + DT::renderDataTable("EQtests")) + ) + )), + #### 4pl fits ---- + tabPanel("4pl-fit", + wellPanel( + fluidRow( + column(6, + tags$style(span(htmlOutput("PureErrW3"), style="color: red")), + htmlOutput("PureErrW3"), + tags$head(tags$style("#PureErrW2{color: red; + font-size: 16px; + font_style: italic;}")), + plotOutput("plot"), + DT::dataTableOutput("pottab4pl"), + "Footnote: test performed on absolute CIs."), + column(6, + DT::dataTableOutput("secondary"), # SSTs + h5("*...The estimate for F-test on regression and on non-linearity is the p-value"), + h5("F-test on regression passes if F-value > F-crit and thus p < 0.05"), + h5("F-test on non-linearity passes if F-value < F-crit and thus p > 0.05"), + h5("Test results outcome: 0 ... test passed (for EQ tests: CI within limits); + 1 ... test failed (for EQ tests CI not within limits); + -1 ... calculations unbound/denominator too close to 0"), + #plotOutput("CIplot, height=50%") + ) + )) + ), + #### Linear PLA ---- + tabPanel("Linear PLA", + wellPanel( + fluidRow( + column(6, + htmlOutput("PureErrW3"), + tags$head(tags$style("#PureErrW2{color: red; + font-size: 16px; + font_style: italic;}")), + plotOutput("plotLin"), + "Delta method is used for potency CIs", + DT::dataTableOutput("pottab"), + h4("Unrestricted linear model (SSSI):"), + tableOutput("SummaryModABu"), + h4("Restricted linear model (CSSI):"), + tableOutput("SummaryModAB")), + column(3, + h3("Tests for linear PLA):"), + DT::dataTableOutput("TESTSlin"), + 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"), + "SST CI for difference of slopes:", + tableOutput("SlopeDiffCI")), + column(3, + h3("ANOVA for parallel line assay"), + DT::dataTableOutput("ANOVAlin")) + ) + )), + #### Dilution simulator ---- + tabPanel("Dilution simulator", + wellPanel( + fluidRow( + column(4, + h3("Confidence intervals"), + tableOutput("CIs"), + "The confidence intrval table is interaactive for changes in: variability slider (%SD), potency of test-slider, + and 'Adjust the dilutions'-slider", + tableOutput("optimalDils"), + selectInput(inputId="scenario", label= "Select an 'optimal' scenario:", choices = c("scenario 2","scenario 3","scenario 6","steep slope"))), + column(5, + plotOutput("plotfordilutions"), + h4("in grey: most extreme bend point lines of theoretical samples with 50% and 200% potency"), + sliderInput("dilslider", "Adjust the dilutions(+-change in %)", min = -100,max=100, value=0, step=1, round=0), + checkboxInput("fixupper","Fix highest concentration (if unticked, the center is fixed)",FALSE), + h5("Dilution factors"), + tableOutput("adjlogdil"), + "Short guidance: wider dilution ranges increase the CIs of rel. potency, and decrease the CIs of upper and lower asymptote ratios, as well as Hill's slope ratios", br(), + "Narrower dilution ranges decrease the CIs of rel. potency, and increase the CIs of upper and lower asymptote ratios, ands Hill's slope ratios",), + column(3, + h3("Bend points"), + tableOutput("bps"), + tableOutput("extremebps"), + h4("Explanation of the plots") + ) + ) + )), + #### EQ limits simulation ---- + tabPanel("EQ-limit simulatioin", + wellPanel( + fluidRow( + column(1, style="background: lightblue", + numericInput("simN","number of datasets to simulate", 100, step=10, min=10, max=1000), + numericInput("lowQuant", "lower quantile", 1, min = 0.01,max=20), + numericInput("uppQuant", "upper quantile", 99, min = 801,max=99.99), + actionButton('goSim', "Start simulation",class="btn-success") + ), + column(4, + h4("estimation of EACs for slope ratio, dynamic range-ratio, upper asymptote ratio, and potency"), + plotOutput("plotHistuAs", width = "1400px", height = "400px")) + ) + )), + #### Documentation ---- + tabPanel("Documentation", + h4("Information on dilution setting"), + "(for details see:", a(href="ADONIS.pdf","Whitepaper", download=NA, target="_blank"),")",tags$br(), + "Bend points are calculated according to following formula:", + withMathJax(" $$bp_{1/2} = \\pm\\frac{1.31696}{Hill's slope}$$"))), + + #### setting lower panel ---- + wellPanel( + fluidRow( + column(2, + h3("Settings"), + helpText("Vary the slider to see the effect of special cause"), + sliderInput("sdfac","Variability as % of lower to upper asymptote", max=10, value=3, min=0.1, step=0.1), + checkboxInput("heterosked","heteroskedastic noise", FALSE), + sliderInput("potencydiff","potency of test (%)", max=200, min=50, value=100, step=1), + sliderInput("outlL","outlier in lower asymptote", min=0, max=1.5, value=0, step=0.1), + sliderInput("outlM","outlier in mid part", 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) + ), + column(1, + tags$table(id="dose-table", + 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), + 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), + 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) + )), + column(4, + "4 PL ANOVA unrestricted", + DT::dataTableOutput("ANOVA"), + h5("Please note that for the CIs of rel. potency the RSS of the restricted model is used"), + h5("RSS ... 'Residual error' in the SumSquares column"), + h5("MSE ... 'Residual error' in the MSs column"), + h5("SSE ... 'Pure error' in the SumSquares column"), + h5("RMSE ... Square root of the 'Residual Error' in the MS column"), + verbatimTextOutput("RMSE") + ), + column(5, + DT::dataTableOutput("Conctab")) + ) + ) + + + ) + ) +} \ No newline at end of file diff --git a/.Rproj.user/1804966C/sources/session-c8f70505/0A0A1958-contents b/.Rproj.user/1804966C/sources/session-c8f70505/0A0A1958-contents new file mode 100644 index 0000000..e69de29 diff --git a/.Rproj.user/1804966C/sources/session-c8f70505/24304C96-contents b/.Rproj.user/1804966C/sources/session-c8f70505/24304C96-contents new file mode 100644 index 0000000..e69de29 diff --git a/.Rproj.user/1804966C/sources/session-c8f70505/26A61C2B-contents b/.Rproj.user/1804966C/sources/session-c8f70505/26A61C2B-contents new file mode 100644 index 0000000..e69de29 diff --git a/.Rproj.user/1804966C/sources/session-c8f70505/2D702BEF b/.Rproj.user/1804966C/sources/session-c8f70505/2D702BEF new file mode 100644 index 0000000..8c3edb8 --- /dev/null +++ b/.Rproj.user/1804966C/sources/session-c8f70505/2D702BEF @@ -0,0 +1,27 @@ +{ + "id": "2D702BEF", + "path": "~/plateflow/wizard/server.R", + "project_path": null, + "type": "r_source", + "hash": "0", + "contents": "", + "dirty": false, + "created": 1777235022084.0, + "source_on_save": false, + "relative_order": 2, + "properties": { + "source_window_id": "", + "Source": "Source", + "docOutlineVisible": "1", + "cursorPosition": "470,1", + "scrollLine": "456" + }, + "folds": "", + "lastKnownWriteTime": 1777235902, + "encoding": "UTF-8", + "collab_server": "", + "source_window": "", + "last_content_update": 1777235902359, + "read_only": false, + "read_only_alternatives": [] +} \ No newline at end of file diff --git a/.Rproj.user/1804966C/sources/session-c8f70505/2D702BEF-contents b/.Rproj.user/1804966C/sources/session-c8f70505/2D702BEF-contents new file mode 100644 index 0000000..ff3da6b --- /dev/null +++ b/.Rproj.user/1804966C/sources/session-c8f70505/2D702BEF-contents @@ -0,0 +1,2307 @@ + + +library(shiny) +library(shinyjs) +library(shinyAce) +library(purrr) +library(gslnls) +library(tidyverse) +library(ggplot2) +library(reshape2) +library(openxlsx) +library(DT) +library(ggpubr) +library(gridExtra) +library(drc) +library(twopartm) +library(car) +library(dplyr) +library(tinytex) + +Dat <- reactiveValues() +REP <- reactiveValues() + +#### Functions ---- + +dilFUN2 <- function(cs_,dils,Faktor) { + av <- cs_ + dils_av <- dils_av + dils_avsc <- dils_av*Faktor + dils2 <- dils_avsc+av + dilfactors <- 1/exp(dils2-lag(dils2)) + return(dilfactors) +} + +plot_f <- function(dat, sigmoid,det_sig) { + CORdat <- cor(dat[,1],dat[,ncol(dat)]) +#browser() + all_l <- melt(data.frame(dat), 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) +#browser() + if(is.null(det_sig)) { + if (CORdat<0) { + startlist <- list(a=sigmoid[1], b=-sigmoid[5],cs=sigmoid[7], + d=sigmoid[3],r=sigmoid[8]) + } else { + + startlist <- list(a=sigmoid[1],b=sigmoid[5],cs=sigmoid[7], + d=sigmoid[3],r=sigmoid[8]) + } + } else { + startlist <- list(a=det_sig[5], b=det_sig[1],cs=det_sig[7], + d=det_sig[3],r=det_sig[7] - det_sig[8]) + } + + mr <- gsl_nls(fn = readout ~ a+(d-a)/(1+exp(b*(log_dose-(cs-r*isSample)))), + data=all_l, + start=startlist, + control=gsl_nls_control(xtol=1e-6,ftol=1e-6, gtol=1e-6)) + s_mr <- tryCatch({ + s_mr <- summary(mr) + }, + error = function(err) { + s_mr <- NULL + }) + + a <- s_mr$coefficients[1,1] + b <- s_mr$coefficients[2,1] + cs <- s_mr$coefficients[3,1] + d <- s_mr$coefficients[4,1] + r <- s_mr$coefficients[5,1] + + log_dose <- unique(all_l$log_dose) + seq_x <- seq(min(log_dose),max(log_dose),0.1) + SAMPLE <- a+(d-a)/(1+exp(b*(seq_x-(cs-r)))) + REF <- a+(d-a)/(1+exp(b*(seq_x-(cs)))) + + if (is.null(det_sig)) { + SAMPLEtrue <- sigmoid[2] + (sigmoid[4] -sigmoid[2])/(1+exp(sigmoid[6]*((sigmoid[7]-sigmoid[8]-seq_x)))) + REFtrue <- sigmoid[1] + (sigmoid[3] -sigmoid[1])/(1+exp(sigmoid[5]*((sigmoid[7]-seq_x)))) + } else { + SAMPLEtrue <- det_sig[4] + (det_sig[6] -det_sig[4])/(1+exp(det_sig[2]*(det_sig[8]-seq_x))) + REFtrue <- det_sig[3] + (det_sig[5] -det_sig[3])/(1+exp(det_sig[1]*(det_sig[7]-seq_x))) + } + #browser() + pl_df <- cbind(seq_x, SAMPLE, REF, SAMPLEtrue, REFtrue) + all_l2$readout[all_l2$readout < 0] <- 0.01 + all_l2$readouttrans <- log(all_l2$readout) + slopeEC50 <- b*(a-d)/4 + + Xbendl3 <- cs-(1.31696/b) + Xbendu3 <- cs+(1.31696/b) + XbendlT <- cs-r-(1.31696/b) + XbenduT <- cs-r+(1.31696/b) + bendpoints <- c(bendREF_lower = round(Xbendl3,3), bendREF_upper=round(Xbendu3,3), + bendSAMPLE_lower = round(XbendlT,3), bendSAMPLE_upper=round(XbenduT,3)) + Dat$bendpoints <- bendpoints + Dat$cfordils <- cs + + p <- ggplot(all_l2, aes(x=log_dose, y=readout, color=factor(isRef))) + + geom_point(shape=factor(isRef), alpha=0.8) + + labs(title = paste("restricted 4pl; bendp:", round(Xbendl3,3),round(Xbendu3,3),round(XbendlT,3),round(XbenduT,3)), + color="product") + + scale_color_manual(labels=c("test","reference"), values=c("red","blue")) + + scale_shape_manual(labels=c("test","reference")) + + theme_bw() + + theme(axis.text = element_text(size=14)) + + p2 <- p + geom_line(data=as.data.frame(pl_df), aes(x=seq_x, y=SAMPLE), color="red", + inherit.aes = F) + + geom_line(data=as.data.frame(pl_df), aes(x=seq_x, y=REF), color="blue", + inherit.aes = F) + + geom_line(data=as.data.frame(pl_df), aes(x=seq_x, y=SAMPLEtrue), color="red", linetype=2, alpha=0.4, + inherit.aes = F) + + geom_line(data=as.data.frame(pl_df), aes(x=seq_x, y=REFtrue), color="blue", linetype=2, alpha=0.4, + inherit.aes = F) + + geom_vline(xintercept=c(Xbendl3, Xbendu3), col="blue",linetype=2) + + geom_vline(xintercept=c(XbendlT, XbenduT), col="red",linetype=2) + + annotate("text", x=cs, y=a+(d-a)/2, label="0", size=5) + + theme(legend.position="none") + Dat$p2 <- p2 + + # transformed plots + p_rt <- ggplot(all_l2, aes(x=log_dose, y=readouttrans, color=factor(isRef))) + + geom_point(shape=factor(isRef), alpha=0.8) + + labs(title = paste("restricted transformed 4pl"), color="product") + + scale_color_manual(labels=c("test","reference"), values=c("red","blue")) + + theme_bw() + + mrt <- gsl_nls(fn = readouttrans ~ a+(d-a)/(1+exp(b*(log_dose-(cs-r*isSample)))), + data=all_l2, + start=startlist, + control=gsl_nls_control(xtol=1e-6,ftol=1e-6, gtol=1e-6)) + s_mrt <- summary(mrt) + a_trans <- s_mrt$coefficients[1,1] + b_trans <- s_mrt$coefficients[2,1] + cs_trans <- s_mrt$coefficients[3,1] + d_trans <- s_mrt$coefficients[4,1] + r_trans <- s_mrt$coefficients[5,1] + + XbendlTrans <- cs_trans-(1.31696/b_trans) + XbenduTrans <- cs_trans+(1.31696/b_trans) + XbendlTransT <- cs_trans-r_trans-(1.31696/b_trans) + XbenduTransT <- cs_trans-r_trans+(1.31696/b_trans) + bendpointsTRANS <- c(bendREF_lower = round(XbendlTrans,3), bendREF_upper=round(XbenduTrans,3), + bendSAMPLE_lower = round(XbendlTransT,3), bendSAMPLE_upper=round(XbenduTransT,3)) + Dat$bendpointsTRANS <- bendpointsTRANS + SAMPLEtrans <- a_trans+(d_trans-a_trans)/(1+exp(b_trans*(seq_x-(cs_trans-r_trans)))) + REFtrans <- a_trans+(d_trans-a_trans)/(1+exp(b_trans*(seq_x-(cs_trans)))) + + pl_df_trans <- cbind(seq_x, SAMPLEtrans, REFtrans) + p_rt2 <- p_rt + geom_line(data=as.data.frame(pl_df_trans), aes(x=seq_x, y=SAMPLEtrans), color="red", + inherit.aes = F) + + geom_line(data=as.data.frame(pl_df_trans), aes(x=seq_x, y=REFtrans), color="blue", + inherit.aes = F) + + geom_vline(xintercept=c(XbendlTrans, XbenduTrans), col="blue",linetype=2) + + geom_vline(xintercept=c(XbendlTransT, XbenduTransT), col="red",linetype=2) + + theme(legend.position = "none", axis.text=element_text(size=14)) + + if (is.null(det_sig)) { + unrestr <- drm(readout ~ exp(log_dose), isSample, data=all_l2, fct=LL.4(), + pmodels=data.frame(isSample, isSample,isSample,isSample)) + Sum_u <- summary(unrestr) + ast <- Sum_u$coefficients[3,1] + ate <- Sum_u$coefficients[4,1] + bst <- Sum_u$coefficients[1,1] + bte <- Sum_u$coefficients[2,1] + cst <- log(Sum_u$coefficients[7,1]) + cte <- log(Sum_u$coefficients[8,1]) + dst <- Sum_u$coefficients[5,1] + dte <- Sum_u$coefficients[6,1] + } else { + ast <- det_sig[5] + ate <- det_sig[6] + bst <- det_sig[1] + bte <- det_sig[2] + cst <- det_sig[7] + cte <- det_sig[8] + dst <- det_sig[3] + dte <- det_sig[4] + } + REFu <- ast + (dst-ast)/(1+exp(bst*(seq_x-cst))) + SAMPLEu <- ate + (dte-ate)/(1+exp(bte*(seq_x-cte))) + pl_df2 <- cbind(seq_x, SAMPLEu, REFu) +#browser() + pu <- ggplot(all_l2, aes(x=log_dose, y=readout, color=factor(isRef))) + + geom_point() + + labs(title="unrestricted 4_pl-Model", color="product") + + scale_color_manual(labels = c("test","reference"), values=c("red","blue")) + + theme_bw() + pu2 <- pu + geom_line(data=as.data.frame(pl_df2), aes(x=seq_x, y=SAMPLEu), + color="red", inherit.aes = F) + + geom_line(data=as.data.frame(pl_df2), aes(x=seq_x, y=REFu), + color="blue", inherit.aes = F, + show.legend = F) + pu2_ <- pu2 + + theme(legend.position = "none", axis.text = element_text(size=14)) + putrans <- ggplot(all_l2, aes(x=log_dose, y=readouttrans, color=factor(isRef))) + + geom_point() + + labs(title="unrestricted transformed 4_pl-Model", color="product") + + scale_color_manual(labels = c("test","reference"), values=c("red","blue")) + + theme_bw() + + unrestr_trans <- drm(readouttrans ~ exp(log_dose), isSample, data=all_l2, fct=LL.4(), + pmodels=data.frame(isSample, isSample,isSample,isSample)) + Sum_ut <- summary(unrestr_trans) + ast_t <- Sum_ut$coefficients[3,1] + ate_t <- Sum_ut$coefficients[4,1] + bst_t <- Sum_ut$coefficients[1,1] + bte_t <- Sum_ut$coefficients[2,1] + cst_t <- log(Sum_ut$coefficients[7,1]) + cte_t <- log(Sum_ut$coefficients[8,1]) + dst_t <- Sum_ut$coefficients[5,1] + dte_t <- Sum_ut$coefficients[6,1] + + REFu_trans <- ast_t + (dst_t-ast_t)/(1+exp(bst_t*(seq_x-cst_t))) + SAMPLEu_trans <- ate_t + (dte_t-ate_t)/(1+exp(bte_t*(seq_x-cte_t))) + pl_df2u_t <- cbind(seq_x, SAMPLEu_trans, REFu_trans) + + pu2_t <- putrans + geom_line(data=as.data.frame(pl_df2u_t), aes(x=seq_x, y=SAMPLEu_trans), + color="red", inherit.aes = F) + + geom_line(data=as.data.frame(pl_df2u_t), aes(x=seq_x, y=REFu_trans), + color="blue", inherit.aes = F, + show.legend = F) + pu3_t <- pu2_t + grid.arrange(p2,p_rt2,pu2_,pu3_t, nrow=2) +} + +Calc_DilRes <- function(as=3, bs=1, cs=-4, ds=10, at=3, bt=1, dt=10,r=0.0001,ct=cs-r, + sd_fac=0.1, gt=1, gs=1, log_conc, + heteroNoise=FALSE, noDilSeries, noDils) { + yAxfac <- (ds-as) + log_dose <- log_conc + isRef <- rep(c(1,0),1,each=length(log_conc)*noDilSeries) + isSample <- rep(c(0,1),1,each=length(log_conc)*noDilSeries) +#browser() + av <- as*isRef + at*isSample + (ds*isRef + dt*isSample - as*isRef - at*isSample)/ + (1+isRef*exp(bs*(cs - log_dose)) + isSample*exp(bt*(ct-log_dose))) + if (heteroNoise) { + # heterosc noise + ro_jit <- matrix(unlist(map(av, function(x) x+rnorm(1,0,x*sd_fac/100))), nrow=noDils, ncol=noDilSeries*2) + } else { + # homosc noise + ro_jit <- matrix(unlist(map(av, function(x) x+rnorm(1,0,sd_fac*yAxfac/100))), nrow=noDils, ncol=noDilSeries*2) + } + ro_jit <- abs(ro_jit) + + ro_jit2 <- cbind(ro_jit, log_dose) + if (noDilSeries==3) { + colnames(ro_jit2) <- c("R_dil1","R_dil2","R_dil3","T_dil1","T_dil2","T_dil3", "log_dose") + } else { + colnames(ro_jit2) <- c("R_dil1","R_dil2","T_dil1","T_dil2", "log_dose") + } + return(ro_jit2) +} + +LinPotTab <- function(circles, Lim, PureErrFlag) { + circ_ABl <- circles + circ_Al <- circ_ABl[circ_ABl$isSample ==1,] + circ_Al <- circ_ABl[circ_ABl$isSample ==0,] + # restr CSSI model + modAB <- lm(readout ~ log_dose + isSample, circ_ABl) + coeffs <- modAB$coefficients + SU_modAB <- tryCatch({ + SU_modAB <- summary(modAB) + }, error = function(msg) { + return(NA) + }) + # Intercept diff/slope modAB + linPot <- exp(modAB$coefficients[3]/modAB$coefficients[2]) + + if(PureErrFlag) { + FitAnova <- anova(lm(readout ~ factor(log_dose)*isSample, circ_ABl)) + meanPureErr <- FitAnova[4,3] + DFsPure <- FitAnova[4,1] + VCOV <- vcov(modAB) + V_V <- VCOV/SU_modAB$sigma^2 + VCOVpure <- V_V*meanPureErr + SEsPure <- sqrt(diag(V_V)*meanPureErr) + } + + log_pot_delta <- deltaMethod(modAB, "isSample/log_dose") + if (PureErrFlag) { + V_ <- log_pot_delta$SE^2/SU_modAB$sigma^2 + V_p <- V_*meanPureErr + potDeltaPureSE <- sqrt(V_p) + CI_log_low <- log_pot_delta$Estimate - qt(0.975, DFsPure)*potDeltaPureSE + CI_log_up <- log_pot_delta$Estimate + qt(0.975, DFsPure)*potDeltaPureSE + } else { + CI_log_low <- log_pot_delta$Estimate - qt(0.975, df.residual(modAB))*log_pot_delta$SE + CI_log_up <- log_pot_delta$Estimate + qt(0.975, df.residual(modAB))*log_pot_delta$SE + } + #browser() + ExpLinPot <- exp(c(log_pot_delta$Estimate, CI_log_low, CI_log_up)) + if (ExpLinPot[2]*100>Lim[[9]] & ExpLinPot[3]*100Lim[9] & ExpLinPot[3]*100>Lim[10]) test_potCI <- 0 else test_potCI <- 1 + + su_mod <- summary(modAB)$coefficients + su_mod2 <- cbind(data.frame(parameter = c("intercept REF","slope REF","intercepts diff.")), su_mod) + su_modU <- summary(modABu)$coefficients + su_modU2 <- cbind(data.frame(parameter = c("intercept REF","slope REF","intercepts diff.","slope difference")), su_modU) + + uCI_SloDiff <- su_modU[4,1] + qt(0.975,8)*su_modU[4,2] + lCI_SloDiff <- su_modU[4,1] - qt(0.975,8)*su_modU[4,2] + SlopeDiffCI <- c(su_modU[4,1], lCI_SloDiff,uCI_SloDiff) + + lenCirc <- nrow(circ_ABl) + dfTreat <- 3 + dfPrep <- 1 + dfReg <- 1 + dfnonP <- 1 + dfRMSE <- c(lenCirc-3-1) + dfTotal <- lenCirc-1 + dfPureE <- lenCirc-6 + dfNonLin <- dfRMSE-dfPureE + + RSS <- sum(resid(lm(readout ~ log_dose*isSample, circ_ABl))^2) + MSE <- RSS/dfRMSE + SSE <- sum(resid(lm(readout ~ factor(log_dose)*isSample, circ_ABl))^2) + MSpure <- SSE/dfPureE + + if (PureErrFlag) { + FitAnova <- anova(lm(readout ~ factor(log_dose)*isSample, circ_ABl)) + meanPureErr <- FitAnova[4,3] + SU_modAB <- tryCatch({ + SU_modAB <- summary(modAB) + }, error = function(msg) { + return(NA) + }) + if (length(SU_modAB)>1) s_modABcoeffs <- summary(modAB)$coefficients + + DFsPure <- FitAnova[4,1] + VCOV <- vcov(modAB) + V_V <- VCOV/SU_modAB$sigma^2 + VCOVpure <- V_V*meanPureErr + SEsPure <- sqrt(diag(V_V)*meanPureErr) + su_mod2[,3] <- SEsPure + su_mod2[,4] <- su_mod2[,2]/su_mod2[,3] + su_mod2[,5] <- 2*(1-pt(abs(su_mod[,4]), FitAnova[4,1])) + + s_mu <- summary(modABu)$coefficients + SU_modABu <- summary(modABu) + VCOVu <- vcov(modABu) + V_Vu <- VCOVu/SU_modABu$sigma^2 + SEsPureU <- sqrt(diag(V_Vu)*meanPureErr) + + su_modU2[,3] <- SEsPureU + su_modU2[,4] <- su_modU2[,2]/su_modU2[,3] + su_modU2[,5] <- 2*(1-pt(abs(su_modU2[,4]), FitAnova[4,1])) + + uCI_SloDiffP <- su_modU[4,1] + qt(0.975,8)*SEsPureU[4] + lCI_SloDiffP <- su_modU[4,1] - qt(0.975,8)*SEsPureU[4] + SlopeDiffCI <- c(su_modU[4,1], lCI_SloDiffP,uCI_SloDiffP) + + SSRes <- SSE + dfRes <- dfPureE + + } else { + SSRes <- RSS + dfRes <- dfRMSE + } + + # treatment + SStreat <- print(sum((predict(lm(readout ~ factor(log_dose)*isSample, circ_ABl))-mean(circ_ABl$readout))^2)) + F_treat <- (SStreat/dfTreat)/(SSRes/dfRes) + # Preparation + SSprep <- print(sum((predict(lm(readout ~ isSample, circ_ABl))-mean(circ_ABl$readout))^2)) + F_prep <- (SSprep/dfTreat)/(SSRes/dfRes) + # Regression + # ANOVA tape II SS of regression + SSreg <- Anova(lm(readout ~log_dose + isSample, circ_ABl))[1,1] + # Non-parallelism + # diff of RSS of restricted and unrestricted model + SSnonpar <- sum(resid(modAB)^2) - sum(resid(modABu)^2) + F_nonpar <- SSnonpar/(sum(resid(lm(readout ~ factor(log_dose)*isSample, circ_ABl))^2)/(lenCirc-4)) + + # non-linearity + SSnonlin <- sum((predict(modABu)-predict(lm(readout ~ as.factor(log_dose)*isSample, circ_ABl)))^2) + # = RSS-SSE + # Total SS + SStot <- sum((circ_ABl$readout-mean(circ_ABl$readout))^2) + # Significance of R^2 F-ratio + # MSR/MSE + # sample A + F_R2_A <- sum((predict(lm(readout ~ log_dose+ I(log_dose^2), circ_Al)) - mean(predict(modA)))^2 - (predict(modA) - mean(circ_Al$readout))^2)/ + (sum((predict(lm(readout ~ log_dose+ I(log_dose^2), circ_Al)) - circ_Al$readout)^2)/(nrow(circ_Al)-3)) + pFR2_A <- round(pf(F_R2_A,1,6),4) + # sample B + F_R2_B <- sum((predict(lm(readout ~ log_dose+ I(log_dose^2), circ_Bl)) - mean(predict(modB)))^2 - (predict(modB) - mean(circ_Bl$readout))^2)/ + (sum((predict(lm(readout ~ log_dose+ I(log_dose^2), circ_Bl)) - circ_Bl$readout)^2)/(nrow(circ_Bl)-3)) + pFR2_B <- round(pf(F_R2_B,1,6),4) + # sign of non-lin with pure error: MSSnonlin/MSSE + F_nonlin <- (SSnonlin/2)/(SSE/dfPureE) + + # sign of slope + F_slope_B <- sum((predict(modB) - mean(circ_Bl$readout))^2)/(sum((circ_Bl$readout - predict(modB))^2)/(nrow(circ_Bl)-2)) + F_slope_A <- sum((predict(modA) - mean(circ_Al$readout))^2)/(sum((circ_Al$readout - predict(modA))^2)/(nrow(circ_Al)-2)) + # F-test on regression: MSSreg/MSSE + if (is.na(F_nonlin)) F_nonlin <- 0 + if (F_nonlin > 0) { + p_F_nonlin <- round(pf(F_nonlin,2,dfPureE, lower.tail = F),5) + } else { p_F_nonlin <- "SSnonlin neg or 0"; } + + # significances + F_regr <- (SSreg/1)/(SSRes/dfRes) + p_F_regr <- round(pf(F_regr,1,dfRes, lower.tail = F),3) + p_F_treat <- round(pf(F_treat,3,dfRes, lower.tail = F),3) + p_F_prep <- round(pf(F_prep,1,dfRes, lower.tail = F),3) + p_F_slope_A <- round(pf(F_slope_A,1,(nrow(circ_Al)-2), lower.tail = F),3) + p_F_slope_B <- round(pf(F_slope_B,1,(nrow(circ_Bl)-2), lower.tail = F),3) + p_F_nonp <- round(pf(F_nonpar,1,dfRes, lower.tail = F),3) + p_F_LoF <- p_F_nonlin + + res_tab_lin <- data.frame(test = c("F-test on sign. of regression", "F_test on non-lin", + "F-test on R^2 A","F_test on R^2 B", + "F-test on slope A","F-test on slope B", + "F-test on non-parallelism","F-test on preparation"), + test_results = c(ifelse(p_F_regr<0.05,0,1),ifelse(p_F_nonlin<0.05,1,0), + ifelse(pFR2_A<0.05,1,0),ifelse(pFR2_B<0.05,1,0), + ifelse(p_F_slope_A<0.05,0,1),ifelse(p_F_slope_B<0.05,0,1), + ifelse(p_F_nonp<0.05,1,0),ifelse(p_F_prep<0.05,0,1)), + estimate = c(p_F_regr, p_F_nonlin,pFR2_A,pFR2_B,p_F_slope_A, + p_F_slope_B,p_F_nonp,p_F_prep), + Source = c("Treatment","Preparation","Regression","Non-parallelism", + "Resid Error","Non-linearity","Pure error", "Total"), + df = c(dfTreat,1,1,1,dfRMSE,2,dfPureE,lenCirc-1), + SumSquares = c(round(SStreat,5),round(SSprep,5),round(SSreg,5), + round(SSnonpar,5),round(RSS,5),round(SSnonlin,5), + round(SSE,5),round(SStot,5)), + MS = c(round(SStreat/dfTreat,5),round(SSprep,5),round(SSreg,5), + round(SSnonpar,5),round(RSS/dfRMSE,5),round(SSnonlin/2,5), + round(SSE/dfPureE,5),round(SStot/dfTotal,5)), + "F-value" = c(round(F_treat,5), round(F_prep,5),round(F_regr,5), + round(F_nonpar,5),"",round(F_nonlin,5),"",""), + "p-value" = c(p_F_treat, p_F_prep, p_F_regr, p_F_nonp, "", p_F_LoF, "","")) + RET <- list(res_tab_lin, su_modU2, SlopeDiffCI, su_mod2) + return(RET) +} + +pot4plFUNC <- function(ro_new, PureErrFlag) { + all_l <- melt(data.frame(ro_new), 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_l$isRef <- isRef + all_l$isSample <- isSample + all_l$Conc <- exp(all_l$log_dose) + all_l$readout[all_l$readout < 0] <- 0.01 + all_l$readouttrans <- log(all_l$readout) + + CORdat <- cor(ro_new[,1],ro_new[,ncol(ro_new)]) + if (CORdat<0) SLOPE <- -1 else SLOPE <- 1 + + startlist <- list(a=min(ro_new[,2]), b=SLOPE, d=max(ro_new[,2]), cs=mean(all_l$log_dose),r=0) + tryCatch({ + mr <- gsl_nls(fn = readout ~ a+(d-a)/(1+exp(b*(cs-r*isSample-log_dose))), + data=all_l, + start=startlist, + control=gsl_nls_control(xtol=1e-6,ftol=1e-6, gtol=1e-6)) + }, + error = function(err) { + err$message + }) + + startlistmu <- list(as=max(ro_new[,2]), bs=SLOPE, ds=min(ro_new[,2]), cs=mean(all_l$log_dose), + at=max(ro_new[,2]), bt=SLOPE, dt=min(ro_new[,2]), r=0) + + tryCatch({ + 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)) + }, + error = function(err) { + err$message + }) + + if (!PureErrFlag) { + pot_est <- exp(confintd(mr, "r", method="asymptotic")) + potU_est <- exp(confintd(mu, "r", method="asymptotic")) + } else { + FitAnova <- anova(lm(readout ~ factor(Conc)*isSample, all_l)) + meanPureErr <- FitAnova[4,3] + SU_mr <- tryCatch({ + SU_mr <- summary(mr) + }, error = function(msg) { + return() + }) + + #browser() + if (length(SU_mr)>1) { + s_mr <- SU_mr$coefficients + } else { SU_mr <- rep(NA,5) } + + VCOV <- vcov(mr) + V_V <- VCOV/SU_mr$sigma^2 + SEsPure <- sqrt(diag(V_V)*meanPureErr) + pot_est <- c(exp(s_mr[5,1]),exp(s_mr[5,1]-qt(0.975,nrow(all_l)-5)*SEsPure[5]), + exp(s_mr[5,1]+qt(0.975,nrow(all_l)-5)*SEsPure[5])) + # unrestricted + s_mu <- summary(mu)$coefficients + SU_mu <- summary(mu) + VCOVu <- vcov(mu) + V_Vu <- VCOVu/SU_mu$sigma^2 + SEsPureU <- sqrt(diag(V_Vu)*meanPureErr) + potU_est <- c(exp(s_mu[7,1]),exp(s_mu[7,1]-qt(0.975,nrow(all_l)-8)*SEsPureU[7]), + exp(s_mu[7,1]+qt(0.975,nrow(all_l)-8)*SEsPureU[7])) + } # PureErrFlag + + startlistmr_log <- list(a=max(all_l$readouttrans), b=SLOPE, d=min(all_l$readouttrans), cs=mean(all_l$log_dose),r=0) + + tryCatch({ + mr_log <- gsl_nls(fn = readouttrans ~ a+(d-a)/(1+exp(b*(cs-r*isSample-log_dose))), + data=all_l, + start=startlistmr_log, + control=gsl_nls_control(xtol=1e-6,ftol=1e-6, gtol=1e-6)) + }, + error = function(err) { + err$message + }) + + + startlistmu_log <- list(as=max(ro_new[,2]), bs=SLOPE, ds=min(ro_new[,2]), cs=mean(all_l$log_dose), + at=max(ro_new[,2]), bt=SLOPE, dt=min(ro_new[,2]), r=0) + + tryCatch({ + mu_log <- gsl_nls(fn = readouttrans ~ 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_log, + control=gsl_nls_control(xtol=1e-6,ftol=1e-6, gtol=1e-6)) + }, + error = function(err) { + err$message + }) + + pot_est_log <- exp(confintd(mr_log, "r", method="asymptotic")) + potU_est_log <- exp(confintd(mu_log, "r", method="asymptotic")) + colnames(pot_est_log) <- c("estimate","lowerCI2","upperCI") + colnames(potU_est_log) <- c("estimate","lowerCI2","upperCI") + #browser() + su_mr_log <- summary(mr_log) + Dat$RMSE_Rlog <- su_mr_log$sigma + su_mu_log <- summary(mu_log) + Dat$RMSE_Ulog <- su_mu_log$sigma + Dat$up_lowAslog <- su_mu_log$coefficients[1,1] - su_mu_log$coefficients[4,1] + potALL <- rbind(pot_est, potU_est, pot_est_log, potU_est_log) + + potALL2 <- cbind(c("restricted","unrestricted","transformed restr","untransf restr"), potALL) + return(potALL2) +} + +ParamCI_F <- function(xt,xs,se_xt, se_xs, CoVarlog,DFs, Conf=0.975) { + log_xs <- log(abs(xs)) + log_xt <- log(abs(xt)) + var_log_xs <- (se_xs/xs)^2 # approximate variance of log(bs) + var_log_xt <- (se_xt/xt)^2 + se_log_ratio <- sqrt(var_log_xs + var_log_xt) #-2*CoVarlog) + + lower_log_ratio <- log_xt-log_xs - qt(Conf,DFs)*se_log_ratio + upper_log_ratio <- log_xt-log_xs + qt(Conf,DFs)*se_log_ratio + ci_ratio <- exp(c(lower_log_ratio, upper_log_ratio)) + return(ci_ratio) + } + +tests_FUNC <- function(ro_new, Lim, PureErrFlag) { + all_l <- melt(data.frame(ro_new), 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_l$isRef <- isRef + all_l$isSample <- isSample + all_l$Conc <- exp(all_l$log_dose) + all_l$readout[all_l$readout < 0] <- 0.01 + + pot <- drm(readout ~ Conc, isSample, data=all_l, fct=LL.4(names=c("b","d","a","c")), + pmodels=data.frame(1,1,1,isSample)) + compParm(pot, "c",display=T) + ED50 <- ED(pot,c(50), interval="delta") + PotEst <- ED50[1,1]/ED50[2,1] + potAll <- EDcomp(pot, percVec=c(50,50), interval="delta", display=FALSE) + potAll2 <- potAll[1:3] + + CORro <- cor(ro_new[,1], ro_new[,ncol(ro_new)]) + + if (CORro<0) SLOPE <- -1 else SLOPE <- 1 + startlist <- list(a=max(ro_new[,2]), b=SLOPE, d=min(ro_new[,2]), cs=mean(all_l$log_dose),r=0) + tryCatch({ + mr <- gsl_nls(fn = readout ~ a+(d-a)/(1+exp(b*(cs-r*isSample-log_dose))), + data=all_l, + start=startlist, + control=gsl_nls_control(xtol=1e-6,ftol=1e-6, gtol=1e-6)) + }, + error = function(err) { + err$message + }) + + startlistmu <- list(as=max(ro_new[,2]), bs=SLOPE, ds=min(ro_new[,2]), cs=mean(all_l$log_dose), + at=max(ro_new[,2]), bt=SLOPE, dt=min(ro_new[,2]), r=0) + tryCatch({ + 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)) + }, + error = function(err) { + err$message + }) + + smu <- tryCatch({ summary(mu) }, + error=function(err) { + return(0) + }) + + POTr_CI <- potAll2[2:3] + + FitAnova <- anova(lm(readout ~ factor(Conc)*isSample, all_l)) + # pure error + pureSS <- FitAnova[4,2] + pureSS_df <- FitAnova[4,1] + meanPureErr <- FitAnova[4,3] + vcovMU <- vcov(mu) + V_V <- vcovMU/smu$sigma^2 + SEsPure <- sqrt(diag(V_V)*meanPureErr) + VCOVpure <- V_V*meanPureErr + DFsPure <- FitAnova[4,1] + + + + testPOTr <- logical() + if (POTr_CI[1]*100>Lim[[9]] & POTr_CI[2]*100Lim[[9]]/100 & potAllU2[3] 0) { + p_F_nonlin <- round(pf(F_nonlin, AnovaDFs[6], ERR_df, lower.tail = F),5) + } else { p_F_nonlin <- "SSnonlin neg or single dilutions" } + + test_a <- test_b <- test_d <- test_ad <- logical() + + RSS_r <- round(sum(pot$predres[,2]^2),5) + MSE_r <- RSS_r/(nrow(all_l)-5) + RMSE_r <- round(sqrt(MSE_r),6) + Dat$RMSE_r <- RMSE_r + Dat$RMSE_pure <- RMSE_pure + Dat$RMSE_unr <- round(RMSEunr,6) +#browser() + ## EQ test on lower As diff + ds <- coeffs["ds"] + dt <- coeffs["dt"] + lAs_diff <- (dt-ds) + uCI_laDiff <- lAs_diff+qt(0.975,df.residual(mu))*sqrt(sum_potU$coefficients[3,2]^2+sum_potU$coefficients[4,2]^2) + lCI_laDiff <- lAs_diff-qt(0.975,df.residual(mu))*sqrt(sum_potU$coefficients[3,2]^2+sum_potU$coefficients[4,2]^2) + if (uCI_laDiff < Lim[[2]] & lCI_laDiff > Lim[[1]]) test_la_diff <- 0 else test_la_diff <- 1 + + #### EQ test on upper asymptote ratio ---- + as <- coeffs["as"] + at <- coeffs["at"] + uAsRatio <- compParm(potU, "a","/",display=F) + uAsCI <- c(uAsRatio[1]-qt(0.975,RSS_df)*uAsRatio[2], uAsRatio[1]+qt(0.975,RSS_df)*uAsRatio[2]) +#browser() + ds <- smu$coefficients["ds",1] + dt <- smu$coefficients["dt",1] + if (PureErrFlag) se_ds <- sqrt(VCOVpure["ds","ds"]) else se_ds <- smu$coefficients["ds",2] + if (PureErrFlag) se_dt <- sqrt(VCOVpure["dt","dt"]) else se_dt <- smu$coefficients["dt",2] + if (PureErrFlag) CoVarlog_d <- VCOVpure["dt","ds"] else CoVarlog_d <- vcovMU["dt","ds"] + if (PureErrFlag) DFs <- DFsPure else DFs <- nrow(all_l)-noConc + uAsCI2 <- ParamCI_F(dt,ds,se_dt, se_ds,CoVarlog_d, DFs, Conf=0.9975) + if (uAsCI2[1] > Lim[[7]] & uAsCI2[2] < Lim[[8]]) test_a <- 0 else test_a <- 1 + estUppA <- round(at/as,5) + + Dat$uAsCI <- uAsCI2 + + #### EQ test on slope ratio ---- + bs <- coeffs["bs"] + bt <- coeffs["bt"] + slopeRatio <- compParm(potU, "b","/",display=F) + slopeCI <- c(slopeRatio[1,1]-qt(0.975,RSS_df)*slopeRatio[1,2], slopeRatio[1,1]+qt(0.975,RSS_df)*slopeRatio[1,2]) + + bs <- smu$coefficients["bs",1] + bt <- smu$coefficients["bt",1] + if (PureErrFlag) se_bs <- sqrt(VCOVpure["bs","bs"]) else se_bs <- smu$coefficients["bs",2] + if (PureErrFlag) se_bt <- sqrt(VCOVpure["bt","bt"]) else se_bt <- smu$coefficients["bt",2] + if (PureErrFlag) CoVarlog_b <- VCOVpure["bt","bs"] else CoVarlog_b <- vcovMU["bt","bs"] + slopeCI2 <- ParamCI_F(bt,bs,se_bt, se_bs,CoVarlog_b, DFs, Conf=0.975) + if (slopeCI2[1] > Lim[[5]] & slopeCI2[2] < Lim[[6]]) test_b <- 0 else test_b <- 1 + estUppA <- round(at/as,5) + + Dat$slopeRatioCI <- slopeCI + + #### EQ test on lower As ratio ---- + + lAsRatio <- compParm(potU, "d","/",display=F) + slopeCI <- c(lAsRatio[1,1]-qt(0.975,RSS_df)*lAsRatio[1,2], lAsRatio[1,1]+qt(0.975,RSS_df)*lAsRatio[1,2]) + + as <- smu$coefficients["as",1] + at <- smu$coefficients["at",1] + if (PureErrFlag) se_as <- sqrt(VCOVpure["as","as"]) else se_as <- smu$coefficients["as",2] + if (PureErrFlag) se_at <- sqrt(VCOVpure["at","at"]) else se_at <- smu$coefficients["at",2] + if (PureErrFlag) CoVarlog_a <- VCOVpure["at","as"] else CoVarlog_a <- vcovMU["at","as"] + lAsCI2 <- ParamCI_F(at,as,se_at, se_as,CoVarlog_a, DFs, Conf=0.975) + if (lAsCI2[1] > Lim[[3]] & lAsCI2[2] < Lim[[4]]) test_d <- 0 else test_d <- 1 + estLowA <- round(at/as,5) + + Dat$lAsCI <- lAsCI2 + + #### EQtest on ratio of As difference ---- + AsDiffRatio <- (at-dt)/(as-ds) + + at_dt <- (at-dt) + as_ds <- (as-ds) + se_ds_asPure <- sqrt(VCOVpure["as","as"]+VCOVpure["ds","ds"]-2*VCOVpure["as","ds"]) + se_dt_atPure <- sqrt(VCOVpure["at","at"]+VCOVpure["dt","dt"]-2*VCOVpure["at","dt"]) + se_ds_asRMSE <- sqrt(vcovMU["as","as"]+vcovMU["ds","ds"]-2*vcovMU["as","ds"]) + se_dt_atRMSE <- sqrt(vcovMU["at","at"]+vcovMU["dt","dt"]-2*vcovMU["at","dt"]) + if (PureErrFlag) se_ds_as <- se_ds_asPure else se_ds_as <- se_ds_asRMSE + if (PureErrFlag) se_dt_at <- se_dt_atPure else se_dt_at <- se_dt_atRMSE + + AsDiffCI2 <- ParamCI_F(at_dt,as_ds,se_dt_at, se_ds_as,CoVarlog=0, DFs, Conf=0.975) + if (AsDiffCI2[1] > Lim[[11]] & AsDiffCI2[2] < Lim[[12]]) test_ad <- 0 else test_ad <- 1 + estLowA <- round(at/as,5) + + Dat$up_lowAs <- (as-ds) + + lowerCIlowerA <- lAsCI2[1]; lowerCIupperA <- uAsCI2[1]; upperCIlowerA <- lAsCI2[2]; upperCIupperA <- uAsCI2[2] + test_lowA <- test_d; test_uppA <- test_a + #browser() + res_tab <- data.frame(test= c("F-test on sign. of regression*", + "EQ test on lower asymptotes difference", + "EQ test ratio of lower asymptotes", + "EQ test ratio of Hill slopes", + "EQ test ratio of upper asymptotes", + "F-test on non-linearity*", + "EQ test ratio of asymptote difference", + "geom. rel. CI restr. model", + "geom. rel. CI unrestr. model"), + test_results = c(ifelse(p_F_regr<0.05,0,1), test_la_diff, test_lowA, test_b, test_uppA, + ifelse(p_F_nonlin>1,1, ifelse(p_F_nonlin<0.05,1,0)), test_ad, + testPOTr, test_c), + estimate = c(round(p_F_regr, 3), round(lAs_diff, 5), + estLowA, round(bs/bt,5), estUppA, p_F_nonlin, + round(at_dt/as_ds, 5), round(potAll2[1]*100,2),round(potAllU2[1]*100,2)), + lower_limit = c("-",Lim[[1]],Lim[[3]],Lim[[5]],Lim[[7]],"-",Lim[[11]],Lim[[9]],Lim[[9]]), + upper_limit = c("-",Lim[[2]],Lim[[4]],Lim[[6]],Lim[[8]],"-",Lim[[12]],Lim[[10]],Lim[[10]]), + lower_CI = c(RMSE_r, round(lCI_laDiff,3), round(lAsCI2[1],5), round(slopeCI2[1],5), + round(uAsCI2[1],5), "-", round(AsDiffCI2[1],5), round(potAll2[2],2), round(potAllU2[2],2)), + upper_CI = c(RMSE_pure, round(uCI_laDiff,3), round(lAsCI2[2],5), round(slopeCI2[2],5), + round(uAsCI2[2],5), "-", round(AsDiffCI2[2],5), round(potAll2[3],2), round(potAllU2[3],2)) + ) + return(res_tab) +} + +ANOVA4plUnresfunc <- function(ro_new, sigmoid) { + all_l <- melt(data.frame(ro_new), id.vars="log_dose", variable.name="replname", value.name = "readout") + all_len <- nrow(all_l) + isRef <- rep(c(1,0),1,each=all_len/2) + isSample <- rep(c(0,1),1,each=all_len/2) + all_l$isRef <- isRef + all_l$isSample <- isSample + all_l$Conc <- exp(all_l$log_dose) + all_l$readout[all_l$readout < 0] <- 0.01 + + pot <- drm(readout ~ Conc, isSample, data=all_l, fct=LL.4(names=c("b","d","a","c")), + pmodels=data.frame(1,1,1,isSample)) + potU <- drm(readout ~ Conc, isSample, data=all_l, fct=LL.4(names=c("b","d","a","c")), + pmodels=data.frame(isSample, isSample,isSample,isSample)) + SStreat <- round(sum((potU$predres[,1] - mean(all_l$readout))^2),5) + SStreat_df <- length(unique(all_l$log_dose))-1 + SSregr <- round(sum((predict(pot)-mean(all_l$readout))^2),5) + ## Non-parallel + SSnonparallel <- round(sum(resid(pot)^2) - sum(resid(potU)^2),5) + ## Preparation + SSprep <- round(sum((predict(lm(readout ~ isSample, all_l)) - mean(all_l$readout))^2),5) + ## Resid Err + RSS <- round(sum(potU$predres[,2]^2),5) + RSS_df <- nrow(all_l)-SStreat_df-1 + FitAnova <- anova(lm(readout ~ factor(Conc)*isSample, all_l)) + # PureErr + SSE <- FitAnova[4,3] + SSE_df <- FitAnova[4,1] + # Non-Linearity + SSnonlin <- round(sum((predict(lm(readout ~ factor(Conc)*isSample, all_l)) - predict(potU))^2),4) + LoF_df <- FitAnova[1,1]+FitAnova[2,1] + ## Total + SStot <- round(sum((all_l$readout -mean(all_l$readout))^2),5) + MSE <- RSS/RSS_df + noConc <- length(unique(all_l$Conc)) + AnovaDFs <- c(noConc-1, 1,3,noConc-4-1, nrow(all_l)-noConc, noConc, nrow(all_l)-noConc-noConc, nrow(all_l)-1) + p_SStreat <- round(pf((SStreat/AnovaDFs[1])/MSE, AnovaDFs[1],RSS_df, lower.tail = F),3) + p_SSprep <- round(pf((SSprep/AnovaDFs[2])/MSE, AnovaDFs[2],RSS_df, lower.tail = F),3) + p_SSregr <- round(pf((SSregr/AnovaDFs[3])/MSE, AnovaDFs[3],RSS_df, lower.tail = F),3) + p_SSnonp <- round(pf((SSnonparallel/AnovaDFs[4])/MSE, AnovaDFs[3],RSS_df, lower.tail = F),3) + p_SSLoF <- round(pf((SSnonlin/LoF_df)/(SSE/SSE_df), LoF_df,SSE_df, lower.tail = F),5) + + ANOVAtab <- data.frame(Source = c("Treatment","Preparation","Regression", + "Non-Parallelism","Residual Error","Non-linearity", + "Pure Error","Total"), + DF = AnovaDFs, + SumSquares = c(SStreat, SSprep,SSregr, SSnonparallel, + RSS, SSnonlin,SSE, SStot), + MeanSquares = c(round(SStreat/AnovaDFs[1],3), SSprep, round(SStreat/AnovaDFs[3],3),round(SSnonparallel/AnovaDFs[4],3), + round(MSE,5), round(SSnonlin/LoF_df,5), round(SSE/SSE_df,5),""), + "F-value" = c(round((SStreat/AnovaDFs[1])/MSE,5), round((SSprep/AnovaDFs[2])/MSE,5), + round((SSregr/AnovaDFs[3])/MSE,5),round((SSnonparallel/AnovaDFs[4])/MSE,5), + "",round((SSnonlin/LoF_df)/(SSE/SSE_df),5),"",""), + "p_value" = c(round(p_SStreat,3), p_SSprep, round(p_SSregr,3), p_SSnonp,"",p_SSLoF,"","") + ) + + return(ANOVAtab) +} + +perConcTab <- function(ro_new, noDilSeries) { + Reftab <- ro_new[,c(1:noDilSeries)] + Testtab <- ro_new[,c((noDilSeries+1):(2*noDilSeries))] + tReftab <- t(Reftab) + colnames(tReftab) <- round(ro_new[,ncol(ro_new)],5) + + avs <- apply(tReftab,2,mean) + sds <- apply(tReftab,2,sd) + cv <- sds/avs*100 + tReftab2 <- rbind(tReftab, avs,sds,cv) + + tTesttab <- t(Testtab) + colnames(tTesttab) <- round(ro_new[,ncol(ro_new)],5) + + avs_test <- apply(tTesttab,2,mean) + sds_test <- apply(tTesttab,2,sd) + cv_test <- sds_test/avs_test*100 + tTesttab2 <- rbind(tTesttab, avs_test,sds_test,cv_test) + concTab <- rbind(tReftab2, tTesttab2) + return(concTab) + +} + +divFUN <- function(x,Div,N,res,noDil) { + N <- N+1 + y <- x/Div + res <- c(res,y) + if (N==noDil) { return(res) } + divFUN(y,Div,N,res,noDil) +} + +#_______________________________________________________________________________ +#### Main function ---- +#_______________________________________________________________________________ + +function(input,output, session) { + v <- reactiveValues(num_dose=0, next.dose.t=0) + + sigmoid <- reactive({ + sig <- c(input$lowAsymptREF, input$lowAsymptTEST,input$uppAsymptREF,input$uppAsymptREF, + input$slopeREF,input$slopeTEST,input$EC50,input$potDiff) + sig + }) + + CONC <- reactive({ + Konz_ <- c(input$CONC1,input$CONC2,input$CONC3,input$CONC4, + input$CONC5,input$CONC6,input$CONC7,input$CONC8, + input$CONC9,input$CONC10,input$CONC11,input$CONC12) + if (any(na.omit(Konz_)==0)) Konz_[Konz_ ==0] <- 0.0000001 + Konz <- na.omit(Konz_) + }) + + Dils <- reactive({ + Dilutions <- c(input$ConcStart,input$dilutionFac,input$NoDil,input$NoDilSer) + }) + + #### input EXCEL file ---- + + observe({ + if (!is.null(input$iFile)) { + inFile <- input$iFile + ext <- tools::file_ext(inFile$name) + file.rename(inFile$datapath, paste(inFile$datapath, ".xlsx",sep="")) + t.filelocation <- gsub('\\\\','/',paste(inFile$datapath, ext,sep=".")) + sheets <- openxlsx::getSheetNames(t.filelocation) + dat <- lapply(sheets, openxlsx::read.xlsx, xlsxFile = t.filelocation) + names(dat) <- sheets + Dat$wb <- dat + names(Dat$wb) <- sheets + Dat$sheets <- sheets + Dat$FileName <- input$iFile[["name"]] + + } + }) + output$sheetName <- renderUI({ + if (!is.null(Dat$wb)) { + #browser() + cnSheets <- Dat$sheets + cnSheets2 <- c("please choose", cnSheets) + selectInput(inputId = "sheet", label="Select a sheet:",choices = cnSheets) + } + }) + observeEvent(input$sign_out, { + unlink(input$iFile$datapath) + reset(id = "") # from shinyjs package + }) + + + #### process XLSX file ---- + observe({ + if (!is.null(input$iFile)) { + if (!is.null(input$sheet)) { + if (input$sheet != "please choose") { + #browser() + + XLdat <- Dat$wb[input$sheet][[1]] + if (is.null(XLdat)) XLdat <- Dat$wb[Dat$sheets[1]][[1]] + cn <- colnames(XLdat) + logI <- grep("log", cn) + logDoseI <- grep("log_dose", cn) + if (length(logI)>0 & length(logDoseI)==0) { + XLdat$log_dose <- XLdat[,logI] + XLdat2 <- XLdat[,-logI] + CORro <- cor(XLdat$log_dose, XLdat[,3]) + } else if (length(logI)==0 & length(logDoseI)==0) { + Ind <- grep("dilu|dose|Dose|Conc|conc",cn) + XLdat$log_dose <- log(XLdat[,Ind]) + CORro <- cor(XLdat[,Ind], XLdat[,3]) + XLdat2 <- XLdat[,-Ind] + } else if (length(logI)>0 & length(logDoseI)>0) { + XLdat2 <- XLdat + CORro <- cor(XLdat[,logI], XLdat[,3]) + } + Dat$EXCEL <- XLdat2 + PureErrFlag <- input$PureErr + warning_text2 <- reactive({ + ifelse(PureErrFlag, 'Pure Error is selected', '') + }) + output$PureErrW2 <- renderText(warning_text2()) + + noDilSeries <-(ncol(XLdat2)-1)/2 + noDils <- nrow(XLdat2) + Dat$noDilSeriesXL <- noDilSeries + + all_l <- melt(data.frame(XLdat2), id.vars="log_dose",variable.name = "replname", value.name = "readout") + isRef <- rep(c(1,0),1,each=nrow(XLdat2)*noDilSeries) + isSample <- rep(c(0,1),1,each=nrow(XLdat2)*noDilSeries) + all_l$isRef <- isRef + all_l$isSample <- isSample + all_l$Conc <- exp(all_l$log_dose) + # all_l$readout[all_l$readout < 0] <- 0.01 + REP$all_l <- all_l + + #### XLSX eval ---- + if (CORro<0) SLOPE <- -1 else SLOPE <- 1 + ec50est <- (max(all_l$log_dose)+min(all_l$log_dose))/2 + startlist <- list(a=min(all_l$readout), b=SLOPE, d=max(all_l$readout), cs=ec50est,r=0) + tryCatch({ + mr <- gsl_nls(fn = readout ~ a+(d-a)/(1+exp(b*(cs-r*isSample-log_dose))), + data=all_l, + start=startlist, + control=gsl_nls_control(xtol=1e-6,ftol=1e-6, gtol=1e-6)) + }, + error = function(err) { + err$message + }) + + startlistmu <- list(as=min(all_l$readout), bs=SLOPE, ds=max(all_l$readout), cs=ec50est, + at=min(all_l$readout), bt=SLOPE, dt=max(all_l$readout), r=0) + tryCatch({ + 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)) + }, + error = function(err) { + err$message + }) + + Smr <- summary(mr) + Smu <- summary(mu) + coeffsMR <- Smr$coefficients[,1] + coeffsMU <- Smu$coefficients[,1] + Dat$coeffsMRes <- coeffsMR + names(coeffsMU) <- c("lowAsym REF", "slope REF","upperAsym REF","EC50 REF","lowAsym TEST","slope TEST","upperAsym TEST","r") + + if (!PureErrFlag) { + pot_est <- exp(confintd(mr, "r", method="asymptotic")) + potU_est <- exp(confintd(mu, "r", method="asymptotic")) + colnames(pot_est) <- c("estimate","lowerCI","upperCI") + colnames(potU_est) <- c("estimate","lowerCI","upperCI") + } else { + FitAnova <- anova(lm(readout ~ factor(log_dose)*isSample, all_l)) + meanPureErr <- FitAnova[4,3] + DFsPure <- FitAnova[4,1] + VCOV <- vcov(mr) + V_V <- VCOV/Smr$sigma^2 + VCOVpure <- V_V*meanPureErr + SEsPure <- sqrt(diag(V_V)*meanPureErr) + pot_est <- data.frame(estimate=exp(coeffsMR[5]), lowerCI = exp(coeffsMR[5]-qt(0.975,DFsPure)*SEsPure[5]), + upperCI = exp(coeffsMR[5]+qt(0.975,DFsPure)*SEsPure[5])) + VCOVu <- vcov(mu) + V_Vu <- VCOVu/Smu$sigma^2 + #VCOVpure <- V_Vu*meanPureErr + SEsPureU <- sqrt(diag(V_Vu)*meanPureErr) + potU_est <- data.frame(estimate=exp(coeffsMU[7]), lowerCI = exp(coeffsMU[7]-qt(0.975,DFsPure)*SEsPureU[7]), + upperCI = exp(coeffsMU[7]+qt(0.975,DFsPure)*SEsPureU[7])) + + } + + pot <- drm(readout ~ Conc, isSample, data=all_l, fct=LL.4(names=c("b","d","a","c")), + pmodels=data.frame(1,1,1,isSample)) + potU <- drm(readout ~ Conc, isSample, data=all_l, fct=LL.4(names=c("b","d","a","c")), + pmodels=data.frame(isSample, isSample,isSample,isSample)) + SR <- summary(pot) + SU <- summary(potU) + coeffs_UN <- potU$coefficients + coeffs_UN[1] <- ifelse(xor(CORro>0, coeffs_UN[1]>0), -coeffs_UN[1],coeffs_UN[1]) + coeffs_UN[2] <- ifelse(xor(CORro>0, coeffs_UN[2]>0), -coeffs_UN[2],coeffs_UN[2]) + coeffs_UN[7:8] <- log(coeffs_UN[7:8]) + POTU <- EDcomp(potU, percVec = c(50,50), interval="delta",display=F) + Dat$potDiffXL <- POTU[1]*100 + RMSE_unr_diagn <- sqrt(SU$resVar) + RMSE_res_diagn <- sqrt(SR$resVar) + up_lowDiffDiagn <- SU$coefficients[5,1] - SU$coefficients[3,1] + ProzSD_diagn <- RMSE_unr_diagn*100/up_lowDiffDiagn + Dat$ProzSD_XL <- ProzSD_diagn + + observe({ + pot_est3 <- data.frame(pot_est*100) + MaxPl <- max(input$upperPot, pot_est3$upperCI) + MinPl <- min(input$lowerPot, pot_est3$lowerCI) + MaxPl_ <- MaxPl*1.1 + MinPl_ <- MinPl*0.9 + + p_relCI <- ggplot(data=pot_est3, aes(xmin=lowerCI, xmax=upperCI, y=1)) + + geom_linerange(size=4, col="darkseagreen",alpha=0.5) + + geom_point(aes(x=estimate, y=1), col="grey15", shape=13, size=10) + + geom_vline(xintercept = c(input$lowerPot, input$upperPot), col="indianred") + + annotate("text", x=input$lowerPot-13, y=1.040, label=paste("lower EAC:", input$lowerPot), col="indianred") + + annotate("text", x=input$upperPot+13, y=1.040, label=paste("upper EAC:", input$lupperPot), col="indianred") + + annotate("text", x=pot_est3$lowerPot-10, y=1.020, label=paste("lower CL:", round(pot_est3$lowerCI,1)), col="darkgreen") + + annotate("text", x=pot_est3$upperPot+10, y=1.020, label=paste("upper CL:", round(pot_est3$upperCI,1)), col="darkgreen") + + annotate("text", x=pot_est3$estimate, y=0.98, label=paste("rel. potency:", round(pot_est3$estimate,1)), col="black") + + ylim(c(0.95, 1.05)) + + xlim(c(MinPl_,MaxPl_)) + + xlab("relative potency + confidence interval") + + theme_bw() + + theme(axis.title.y=element_blank(), + axis.text.y=element_blank(), + axis.ticks.y=element_blank()) + output$relpotTestPlot <- renderPlot({ + p_relCI + }) + REP$relpotTestPlot <- p_relCI + }) + + SStreat <- round(sum((potU$predres[,1] - mean(all_l$readout))^2),5) + SStreat_df <- length(unique(all_l$log_dose))-1 + SSregr <- round(sum((predict(pot)-mean(all_l$readout))^2),5) + ## Non-parallel + SSnonparallel <- round(sum(resid(pot)^2) - sum(resid(potU)^2),5) + ## Preparation + SSprep <- round(sum((predict(lm(readout ~ isSample, all_l)) - mean(all_l$readout))^2),5) + ## Resid Err + RSS <- round(sum(potU$predres[,2]^2),5) + RSS_df <- nrow(all_l)-SStreat_df-1 + FitAnova <- anova(lm(readout ~ factor(Conc)*isSample, all_l)) + # PureErr + SSE <- FitAnova[4,3] + SSE_df <- FitAnova[4,1] + # Non-Linearity + SSnonlin <- round(sum((predict(lm(readout ~ factor(Conc)*isSample, all_l)) - predict(potU))^2),4) + LoF_df <- FitAnova[1,1]+FitAnova[2,1] + ## Total + SStot <- round(sum((all_l$readout -mean(all_l$readout))^2),5) + MSE <- RSS/RSS_df + noConc <- length(unique(all_l$Conc)) + AnovaDFs <- c(noConc-1, 1,3,noConc-4-1, nrow(all_l)-noConc, noConc, nrow(all_l)-noConc-noConc, nrow(all_l)-1) + p_SStreat <- round(pf((SStreat/AnovaDFs[1])/MSE, AnovaDFs[1],RSS_df, lower.tail = F),3) + p_SSprep <- round(pf((SSprep/AnovaDFs[2])/MSE, AnovaDFs[2],RSS_df, lower.tail = F),3) + p_SSregr <- round(pf((SSregr/AnovaDFs[3])/MSE, AnovaDFs[3],RSS_df, lower.tail = F),3) + p_SSnonp <- round(pf((SSnonparallel/AnovaDFs[4])/MSE, AnovaDFs[3],RSS_df, lower.tail = F),3) + p_SSLoF <- round(pf((SSnonlin/LoF_df)/(SSE/SSE_df), LoF_df,SSE_df, lower.tail = F),5) + + ANOVAtab2 <- data.frame(Source = c("Treatment","Preparation","Regression", + "Non-Parallelism","Residual Error","Non-linearity", + "Pure Error","Total"), + DF = round(AnovaDFs,0), + SumSquares = c(SStreat, SSprep,SSregr, SSnonparallel, + RSS, SSnonlin,SSE, SStot), + MeanSquares = c(round(SStreat/AnovaDFs[1],3), SSprep, round(SStreat/AnovaDFs[3],3),round(SSnonparallel/AnovaDFs[4],3), + round(MSE,5), round(SSnonlin/LoF_df,5), round(SSE/SSE_df,5),""), + "F-value" = c(round((SStreat/AnovaDFs[1])/MSE,5), round((SSprep/AnovaDFs[2])/MSE,5), + round((SSregr/AnovaDFs[3])/MSE,5),round((SSnonparallel/AnovaDFs[4])/MSE,5), + "",round((SSnonlin/LoF_df)/(SSE/SSE_df),5),"",""), + "p_value" = c(round(p_SStreat,3), p_SSprep, round(p_SSregr,3), p_SSnonp,"",p_SSLoF,"","") + ) + + output$ANOVAXLS <- renderTable({ ANOVAtab2 }) + + REP$ANOVAXLS <- ANOVAtab2 + + #browser() + + startlistlog <- list(a=min(log(all_l$readout)), b=SLOPE, d=max(log(all_l$readout)), cs=ec50est,r=0) + tryCatch({ + mrlog <- gsl_nls(fn = log(readout) ~ a+(d-a)/(1+exp(b*(cs-r*isSample-log_dose))), + data=all_l, + start=startlistlog, + control=gsl_nls_control(xtol=1e-6,ftol=1e-6, gtol=1e-6)) + }, + error = function(err) { + print("Error in mrlog gsl_nls") + }) + + startlistmulog <- list(as=min(log(all_l$readout)), bs=SLOPE, ds=max(log(all_l$readout)), cs=ec50est, + at=min(log(all_l$readout)), bt=SLOPE, dt=max(log(all_l$readout)), r=0) + tryCatch({ + mulog <- gsl_nls(fn = log(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=startlistmulog, + control=gsl_nls_control(xtol=1e-6,ftol=1e-6, gtol=1e-6)) + }, + error = function(err) { + print("Error in murlog gsl_nls") + }) + logpot <- drm(log(readout) ~ Conc, isSample, data=all_l, fct=LL.4(names=c("b","d","a","c")), + pmodels=data.frame(1,1,1,isSample)) + logpotU <- drm(log(readout) ~ Conc, isSample, data=all_l, fct=LL.4(names=c("b","d","a","c")), + pmodels=data.frame(isSample, isSample,isSample,isSample)) + Smrlog <- summary(mrlog)$coefficients + Smulog <- summary(mulog)$coefficients + SUlog <- summary(logpotU) + SRlog <- summary(logpot) + RMSE_unrlog_diagn <- sqrt(SUlog$resVar) + RMSE_reslog_diagn <- sqrt(SRlog$resVar) + + up_lowDifflogDiagn <- SUlog$coefficients[5, 1] - SUlog$coefficients[3, 1] + ProzSDlog_diagn <- RMSE_unrlog_diagn * 100 / up_lowDifflogDiagn + + #### Diagnostic RMSE table #### + DiagnTable <- data.frame(parameter = c("RMSE unrestricted", "RMSE_restr.", "Diff_upper-lowerAsymp", "%SD (unrestricted)", + "RMSE log_unrestricted", "RMSE log_restr", "diff_up-lowAsymp_log", "%SD (log unrestricted)"), + result = c(round(RMSE_unr_diagn, 4), round(RMSE_res_diagn, 4), + round(up_lowDiffDiagn, 4), round(ProzSD_diagn, 4), + round(RMSE_unrlog_diagn, 4), round(RMSE_reslog_diagn, 4), + round(up_lowDifflogDiagn, 4), round(ProzSDlog_diagn, 4))) + + DatSDiagnTable <- DiagnTable + REPSDiagnTable <- DiagnTable + + logpotest <- exp(confintd(mrlog, "r", method = "asymptotic")) # compParm(logpot, "c") + logpotuest <- exp(confintd(mulog, "r", method = "asymptotic")) # compParm(logpotu, "c") + + # 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])) + colnames(logpotest) <- c("estimate", "lowerCI", "upperCI") + + colnames(logpotuest) <- c("estimate", "lowerCI", "upperCI") + + cnXL <- colnames(XLdat2) + Filesample <- data.frame(c("File name", "samples"), c(Dat$Filename, paste(cnXL[1], " vs ", cnXL[4], "\n"))) + colnames(Filesample) <- c("", "") + outputIFilesampl <- renderTable({ Filesample }) + + UnRPLAausw <- data.frame(Information = c("model", "lower asymptote Ref", "Hill's slope Ref", "upper asymptote Ref","EC50 Ref", + "lower asymptote Test", "Hill's slope Test", + "upper asymptote Test","EC50 Difference", + "relative potency", "lower CI", "upper CI"), + Results = unlist(c("UNRESTRICTED", round(coeffsMU, 3), round(potU_est, 3)))) # von psl_nls + + # "log relative potency", "log lower CI", "log upper CI", round(logpotest, 3), round(compParm(potu, "c", display = F), 3) + + output$coeffs_unr <- renderTable({ + UnRPLAausw + }) + + # browser() + UnRPLAausw2 <- data.frame(Dat$bendpointsTRANS) + if (length(UnRPLAausw2) > 0) colnames(UnRPLAausw2) <- c("bendpoints log") + + outputcoeffs_unr2 <- renderTable({ + UnRRPLAausw2 + }) + + REP$UnRPLAausw <- UnRPLAausw + REP$UnRPLAausw2 <- UnRPLAausw2 + + # browser() + coeffs_R <- coeffsMR # pot$coefficients + coeffs_R[5] <- coeffs_R[4] - coeffs_R[5] + 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 (Eingeschränktes Modell) --- + PLAAusw <- data.frame( + Information = c("model", "lower asymptote", "Hill's slope", "upper asymptote","EC50 Ref", + "EC50 Test", "relative potency", + "lower CI", "upper CI"), + Results = unlist(c("RESTRICTED", round(coeffs_R, 3), + round(pot_est[1, ] * 100, 3)))) # von gs1_nls + output$coeffs_r <- renderTable({ PLAAusw }) + + PLAAusw2 <- data.frame(Dat$bendpoints) + output$coeffs_r2 <- renderTable({ PLAAusw2 }, digits = 3, rownames = T) + + REP$PLAausw <- PLAAusw + REP$PLBend <- PLAAusw2 + + # --- Koeffizienten-Extraktion --- + logcoeffs_R <- Smrlog[, 1] # logpot$coefficients + names(logcoeffs_R) <- c("lower A", "Hill's slope", "upper A", "EC50 REF","EC50 DIFF") + + # --- Ergebnistabelle: LOG RESTRICTED --- + + LogPLAAusw <- data.frame( + Information = c("model", "lower asymptote", "Hill's slope", "upper asymptote","EC50 Ref", + "EC50 difference", "log relative potency", + "log lower CI", "log upper CI"), + Results = unlist(c("LOG RESTRICTED", round(logcoeffs_R, 3), + round(logpotest * 100, 3)))) # von gs1_nls + + output$logcoeffs_r <- renderTable({ LogPLAAusw }) + REP$LogPLAausw <- LogPLAAusw + + logcoeffs_UNR <- Smulog[,1] + names(logcoeffs_UNR) <- c("lower asymptote Ref", "Hill's slope Ref", "upper asymptote Ref","EC50 Ref", + "lower asymptote Test", "Hill's slope Test", "upper asymptote Test","EC50 Diff" + ) + + # --- Ergebnistabelle: LOG UNRESTRICTED --- + + LogUnrPLAAusw <- data.frame( + Information = c("model", "lower asymptote Ref", "Hill's slope Ref", "upper asymptote Ref","EC50 Ref", + "lower asymptote Test", "Hill's slope Test", "upper asymptote Test","EC50 Diff" , + "relative potency", "lower CI", "upper CI"), + + Results = unlist(c("LOG UNRESTRICTED", round(logcoeffs_UNR, 3), + round(logpotest * 100, 3)))) # von gs1_nls + + output$logcoeffs_unr <- renderTable({ + LogUnrPLAAusw + }) + REP$LogUnrPLAausw <- LogUnrPLAAusw + #browser() + Dat$coeffs_UN <- coeffs_UN + + + if (exists("Ind")) { + Dat$dilution <- XLdat[,Ind] + } else Dat$dilution <- exp(XLdat[,logI]) + # --- Plot-Ausgabe --- + output$XLplot <- renderPlot({ + plot_f(XLdat2, sigmoid = NULL, det_sig = coeffs_UN) + }) + + REP$XLdat2 <- XLdat2 + + # --- Diagnose-Plots (Residualanalyse) --- + output$diagnplot <- renderPlot({ + op <- par(mfrow = c(1, 2), mar = c(3.2, 3.2, 2, .5), mgp = c(2, .7, 0)) + + # 1. Residuals vs Fitted + plot(residuals(pot) ~ fitted(pot), main = "Residuals restricted") + abline(h = 0) + qqnorm(residuals(pot)) + qqline(residuals(pot)) + plot(residuals(potU) ~ fitted(potU), main = "Residuals unrestricted") + abline(h = 0) + + qqnorm(residuals(potU)) + qqline(residuals(potU)) + + par(op) # Parameter zurücksetzen + }) + + output$AIC <- renderTable({ + AIC <- AIC(pot, potU) + }) + + output$VarDiagn <- renderTable({ + DiagnTable + }, digits=4) + + output$relpotplot <- renderPlot({ + relpot(potU, intervall="fieller", bty="l", + main="Quality of rel. potency over response") + }) + + + + } # !please choose + } # input$sheet + } # inout$iFile + }) + + #### make geomDils reactive ---- + observe({ + #browser() + if (!is.na(input$ConcStart) & !is.na(input$dilutionFac) &!is.na(input$NoDil) &!is.na(input$NoDilSer)) { + upR <- input$ConcStart + noDil <- input$NoDil + noDilSer <- input$NoDilSer + Div <- input$dilutionFac + res <- c() + N_ <- 1 + Conc <- c(upR, divFUN(upR,Div,N=N_,res,noDil)) + + Dat$MetaConc <- Conc + } + }) + + #### updateSlider on XLSX ---- + observe({ + if (!is.null(Dat$potDiffXL)) { + updateSliderInput(session, "potencydiff", + value=round(as.numeric(Dat$potDiffXL[[1]]),5)) + } + }) + observeEvent(input$potencydiff, { + if (!is.null(Dat$potDiffXL)) { + updateSliderInput(session, "potencydiff", + value=round(as.numeric(input$potencydiff),5)) + } + }) + observe({ + if (!is.null(Dat$ProzSD_XL)) { + updateSliderInput(session, "sdfacf", + value=round(as.numeric(Dat$ProzSD_XL[[1]]),5)) + } + }) + observeEvent(input$sdfac, { + if (!is.null(Dat$ProzSD_XL)) { + updateSliderInput(session, "sdfac", + value=round(as.numeric(Dat$ProzSD_XL[[1]]),5)) + } + }) + + #### updaterNumeric Input ---- + observe({ + if(!is.null(Dat$coeffs_UN)) { + updateNumericInput(session, "lowAsymptREF", + value=round(as.numeric(Dat$coeffs_UN[3]),5), min=0) + updateNumericInput(session, "lowAsymptTEST", + value=round(as.numeric(Dat$coeffs_UN[4]),5), min=0) + updateNumericInput(session, "uppAsymptREF", + value=round(as.numeric(Dat$coeffs_UN[5]),5), min=0) + updateNumericInput(session, "uppAsymptTEST", + value=round(as.numeric(Dat$coeffs_UN[6]),5), min=0) + updateNumericInput(session, "slopeREF", + value=round(as.numeric(Dat$coeffs_UN[1]),5)) + updateNumericInput(session, "slopeTEST", + value=round(as.numeric(Dat$coeffs_UN[2]),5)) + updateNumericInput(session, "EC50", + value=round(as.numeric(Dat$coeffs_UN[7]),5)) + updateNumericInput(session, "potDiff", + value=round(as.numeric(Dat$coeffs_UN[7])- as.numeric(Dat$coeffs_UN[8]),5)) + } + }) + + observe({ + if(!is.null(Dat$dilution)) { + updateNumericInput(session, "CONC1", + value=as.numeric(Dat$dilution[1])) + updateNumericInput(session, "CONC2", + value=as.numeric(Dat$dilution[2])) + updateNumericInput(session, "CONC3", + value=as.numeric(Dat$dilution[3])) + updateNumericInput(session, "CONC4", + value=as.numeric(Dat$dilution[4])) + updateNumericInput(session, "CONC5", + value=as.numeric(Dat$dilution[5])) + updateNumericInput(session, "CONC6", + value=as.numeric(Dat$dilution[6])) + updateNumericInput(session, "CONC7", + value=as.numeric(Dat$dilution[7])) + updateNumericInput(session, "CONC8", + value=as.numeric(Dat$dilution[8])) + updateNumericInput(session, "CONC9", + value=as.numeric(Dat$dilution[9])) + updateNumericInput(session, "CONC10", + value=as.numeric(Dat$dilution[10])) + updateNumericInput(session, "CONC11", + value=as.numeric(Dat$dilution[11])) + updateNumericInput(session, "CONC12", + value=as.numeric(Dat$dilution[12])) + + } + }) + + observe({ + if(!is.null(Dat$MetaConc)) { + updateNumericInput(session, "CONC1", + value=as.numeric(Dat$MetaConc[1])) + updateNumericInput(session, "CONC2", + value=as.numeric(Dat$MetaConc[2])) + updateNumericInput(session, "CONC3", + value=as.numeric(Dat$MetaConc[3])) + updateNumericInput(session, "CONC4", + value=as.numeric(Dat$MetaConc[4])) + updateNumericInput(session, "CONC5", + value=as.numeric(Dat$MetaConc[5])) + updateNumericInput(session, "CONC6", + value=as.numeric(Dat$MetaConc[6])) + updateNumericInput(session, "CONC7", + value=as.numeric(Dat$MetaConc[7])) + updateNumericInput(session, "CONC8", + value=as.numeric(Dat$MetaConc[8])) + updateNumericInput(session, "CONC9", + value=as.numeric(Dat$MetaConc[9])) + updateNumericInput(session, "CONC10", + value=as.numeric(Dat$MetaConc[10])) + updateNumericInput(session, "CONC11", + value=as.numeric(Dat$MetaConc[11])) + updateNumericInput(session, "CONC12", + value=as.numeric(Dat$MetaConc[12])) + + } + }) + + #### render logDilsText ---- + output$logdil <- renderText({ + if (!is.null(Dat$MetaConc)) { + Conc <- Dat$MetaConc + } else Conc <- CONC() + logdilu <-log(Conc) + logdilu + }) + + + #### reactive dataset sim ---- + + sim <- reactive({ + + sd_fac_ <- as.numeric(input$sdfac) + r_ <- log(as.numeric(input$potencydiff)/100) + as = sigmoid()[1]; bs = sigmoid()[5];cs = sigmoid()[7];ds = sigmoid()[3];at = sigmoid()[2]; + bt = sigmoid()[6];r = sigmoid()[8]; ct = cs-r_; dt = sigmoid()[4]; + if (!is.null(Dat$MetaConc)) Conc <- Dat$MetaConc else Conc <- CONC() + log_conc <- log(Conc) + av_test <- as + (ds-as)/(1+exp(bs*(cs - log_conc))) + av_ref <- at + (dt-at)/(1+exp(bt*(ct - log_conc))) + #browser() + if (!is.na(input$NoDilSer)) { + noDilSer <- input$NoDilSer + } else if (!is.null(Dat$noDilSeriesXL)) noDilSer <- Dat$noDilSeriesXL else noDilSer <- 3 + if (!is.na(input$NoDil)) noDil <- input$NoDil else noDil <- length(log_conc) + isRef <- rep(c(1,0), 1,each=noDilSer*noDil) + isSample <- rep(c(0,1), 1,each=noDilSer*noDil) + + if (is.null(Dat$EXCEL)) { + ro_new <- Calc_DilRes(as=as,at=at,ds=ds,dt=dt,cs=cs,ct=ct,r=r_,bt=bt,bs=bs, log_conc = log_conc, + sd_fac=sd_fac_, + # auslenkU=outlierU, + # auslenkM=outlierM, + # auslenkL=outlierL, + heteroNoise = input$heterosked, noDilSeries = noDilSer, noDils = noDil) + } else ro_new <- Dat$EXCEL + }) + # }) + + ####sim2 ---- + sim2 <- reactive({ + tab <- sim() + if (is.null(Dat$EXCEL)) return(tab) else return(Dat$EXCEL) + }) + + + #### Plot 4pl ---- + output$plot <- renderPlot({ + #browser() + sigmoid <- sigmoid() + det_sig=NULL + plot_f(sim2(),sigmoid, det_sig) + }) + + #### Testergebnisse ---- + observe({ + #observeEvent(input$StartCalc,{ + PureErrFlag <- input$PureErr + warning_text3 <- reactive({ + ifelse(PureErrFlag, 'Pure error selected','') + }) + + + output$PureErrW3 <- renderText(warning_text3()) + + Limite <- 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), + as.numeric(input$lEACratioAdiff), as.numeric(input$uEACratioAdiff)) + Dat$limite <- Limite + + + tab <- tests_FUNC(sim2(), Limite, PureErrFlag = PureErrFlag) + + tab[1,6:7] <- c("-","-") + Dat$tests_FUNC <- tab + REP$testsTab <- tab + tab2 <- tab[1:7,] + + dat <- datatable(tab2,options = list( + paging=TRUE, + dom="t", + rownames=FALSE + )) %>% formatStyle("test_results", + target='row', + backgroundColor = styleEqual(c(-1,0,1), + c("pink",'lightgreen','lightgrey'))) + #browser() + output$secondary <- DT::renderDataTable({ dat}) + + output$EQtests <- DT::renderDataTable( dat, options = list(lengthChange=FALSE) ) + + }) # observe + + ####plot CIs ---- + observe({ + tab <- Dat$tests_FUNC + if (is.null(tab)) return(NULL) + + tab2 <- tab[-c(1,2,3,6),] + tab2[,3:7] <- apply(tab2[,3:7],2,as.numeric) + tab2[4:5,3:7] <- tab2[4:5,3:7]/100 + + p_CIs <- ggplot(tab2,aes(x=test,y=estimate, color=test,group=test)) + + geom_point() + + geom_errorbar(aes(ymin=lower_CI, ymax=upper_CI), width=0.4) + + geom_crossbar(aes(ymin=lower_limit, ymax=upper_limit), size=0.8) + + coord_flip() + + theme_bw() + + theme(legend.position = "none",text = element_text(size=20)) + + output$CIplot <- renderPlot({ p_CIs}, height=200) + + REP$CIplot <- p_CIs + }) + + output$simdat <- DT::renderDataTable({ + tab <- sim2() + if (is.character(tab)) stop(tab) + + tab2 <- round(tab, 5) + colnames(tab2) <- c(paste("T", seq(1,(ncol(tab2)-1)/2)), + paste("R", seq(1,(ncol(tab2)-1)/2)), "log_conc" ) + dat <- datatable(tab2, options=list( + paging=T, + pageLength=20, + dom="t" + )) + }) + + output$Conctab <- 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) + }) + + #### linear Plot output ---- + + output$plotLin <- renderPlot({ + tab <- sim2() + if (is.character(tab)) stop(tab) + + if (!is.na(Dils()[4])) noDilSer <- Dils()[4] else noDilSer = (ncol(tab)-1)/2 + Conc <- CONC() + Conctab <- Dat$Conctab + if (!is.na(Dils()[3])) noDil <- Dils()[3] else noDil = length(Conc) + + 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) + + Dat$circles <- circle + sigmoid <- sigmoid() + log_dose <- unique(all_l$log_dose) + seq_x <- seq(min(log_dose), max(log_dose),0.1) + SAMPLEtrue <- sigmoid[2] + (sigmoid[4]-sigmoid[2])/(1+exp(sigmoid[6]*((sigmoid[7]-log(input$potencydiff/100)-seq_x)))) + 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 ---- + output$TESTSlin <- DT::renderDataTable({ + tab <- sim2() + if (is.character(tab)) stop(tab) + Conc <- CONC() + Limite <- 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), + as.numeric(input$lEACratioAdiff), as.numeric(input$uEACratioAdiff)) + + circles <- Dat$circles + PureErrFlag <- input$PureErr + warning_text <- reactive({ + ifelse(PureErrFlag, 'Pure error is selected','') + }) + output$PureErrW <- renderText(warning_text()) + + LIN <- ANOVAlintests(tab,circles,Limite,PureErrFlag=PureErrFlag) + df <- LIN[[1]] + su_modU <- LIN[[2]] + su_mod2 <- LIN[[4]] + + output$SummaryModABu <- renderTable({ su_modU }, digits=5) + output$SummaryModAB <- renderTable({ su_mod2 }, digits=5) + + slopeDiffCI <- t(data.frame(LIN[[3]])) + colnames(slopeDiffCI) <- c("slope difference","lower CI","upper CI") + output$SlopeDiffCI <- renderTable({ slopeDiffCI },digits=5) +#browser() + Dat$ANOVA <- df[,4:length(df)] + dat <- datatable(df[,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"))) + + }) + + #### output 4PL ANOVA tests --- + output$ANOVA <- DT::renderDataTable({ + sigmoid <- sigmoid() + tab <- ANOVA4plUnresfunc(sim2(),sigmoid) + #browser() + dat <- datatable(tab, + options=list( + dom="t",rownames=F + )) %>% formatStyle("p_value", target="row", + backgroundColor = styleEqual(c("p_value"), + c("lightgrey"))) + }) + + #### output RMSEs ---- + output$RMSE <- renderText({ + paste("RMSE (unrestricted model):", Dat$RMSE_unr, "(~ entered % upper-lower asymptote)\n", + "RMSE restricted model:", Dat$RMSE_r, "\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", + "RMSE (log restr. model): ", Dat$RMSE_Rlog, "\n", + "RMSE (log unrestr. model): ", Dat$RMSE_Ulog, "\n", + "%SDlog (unr model): ", Dat$RMSE_Ulog*100/Dat$up_lowAslog ) + }) + + output$ANOVAlin <- DT::renderDataTable({ + ANOVAlin <- Dat$ANOVA + dat <- datatable(ANOVAlin, + options=list( + dom="t",rownames=F + )) %>% formatStyle("p.value", target='cell', + backgroundColor = styleEqual(c("p.value"), + c("lightgrey"))) + }) + ### output pot tab ---- + output$pottab <- 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$circles + PureErrFlag <- input$PureErr + 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"))) + }) + + #### 4pl potency table ---- + output$pottab4pl <- DT::renderDataTable({ + ro_new <- sim2() + Dils_ <- Dils() + if (!is.na(Dils()[4])) noDilSer <- Dils()[4] else noDilSer <- 3 + PureErrFl <- input$PureErr + pottab4 <- pot4plFUNC(ro_new = ro_new, PureErrFlag = PureErrFl) + 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)) + if (as.numeric(pottab4[1,3])*100>Lim[[9]] & as.numeric(pottab4[1,4])*100Lim[[9]] & as.numeric(pottab4[2,4])*100Lim[[9]] & as.numeric(pottab4[3,4])*100Lim[[9]] & as.numeric(pottab4[4,4])*100% formatStyle("test_result", target="row",backgroundColor = styleEqual(c(0,1), + c("lightgreen","pink"))) + + }) + + #### Dilutions Simulator ---- + output$plotfordilutions <- renderPlot({ + tab <- sim() + + tab <- as.data.frame(tab) + dils <- tab$log_dose + min_y <- min(tab[,1:3]) + max_y <- max(tab[,1:3]) + + if (input$fixupper) { + dils_av <- dils-max(dils) + dils_av_ <- dils_av*(input$dilslider/100+1) + dils2 <- round(dils_av_ + max(dils),4) + dilfactors <- 1/exp(dils2-lag(dils2)) + } else { + if (!is.null(Dat$cfordils)) { + av <- Dat$cfordils + } else { av <- (min(dils) + max(dils))/2 } + dils_av <- dils-av + dils_avsc <- dils_av*(input$dilslider/100+1) + dils2 <- dils_avsc+av + dilfactors <- 1/exp(dils2-lag(dils2)) + } + + Dat$newDils <- dils2 + + sigmoid <- sigmoid() + + #browser() + BPs <- Dat$bendpoints + EC50REF <- (BPs[2]+BPs[1])/2 + Einh <- abs((BPs[2]-BPs[1])/5) + asyml <- EC50REF-2*(EC50REF-BPs[1]) + asymu <- EC50REF+2*(EC50REF-BPs[1]) + + det_sig <- Dat$coeffs_UN + + if (is.null(Dat$coeffs_UN)) { + SAMPLE50 <- sigmoid[1] + (sigmoid[3] - sigmoid[1])/(1+exp(sigmoid[5]*( (sigmoid[7]+0.693147)- dils2))) + SAMPLE200 <- sigmoid[1] + (sigmoid[3] - sigmoid[1])/(1+exp(sigmoid[5]*( (sigmoid[7]-0.693147)-dils2))) + Xbend50l <- sigmoid[7] + 0.693147-1.31696/sigmoid[5] + Xbend200l <- sigmoid[7] - 0.693147-1.31696/sigmoid[5] + Xbend50u <- sigmoid[7] + 0.693147+1.31696/sigmoid[5] + Xbend200u <- sigmoid[7] - 0.693147+1.31696/sigmoid[5] + Xbend50 <- max(Xbend50l, Xbend50u) + Xbend200 <- min(Xbend200l, Xbend200u) + dummy <- plot_f(tab,sigmoid,det_sig=NULL) + } else { + + #browser() + SAMPLE50 <- det_sig[3] + (det_sig[5] - det_sig[3])/(1+exp(det_sig[1]*(det_sig[7]+0.693147-dils2))) + SAMPLE200 <- det_sig[3] + (det_sig[5] - det_sig[3])/(1+exp(det_sig[1]*(det_sig[7]-0.693147-dils2))) + Xbend50l <- det_sig[7] + 0.693147-1.31696/det_sig[1] + Xbend200l <- det_sig[7] - 0.693147-1.31696/det_sig[1] + Xbend50u <- det_sig[7] + 0.693147+1.31696/det_sig[1] + Xbend200u <- det_sig[7] - 0.693147+1.31696/det_sig[1] + Xbend50 <- max(Xbend50l, Xbend50u) + Xbend200 <- min(Xbend200l, Xbend200u) + dummy <- plot_f(tab,sigmoid=NULL,det_sig=det_sig) + } + + + + + + pl_df <- cbind(dils2, SAMPLE50, SAMPLE200) + + #browser() + # scenario2 + eqSpac <- abs((BPs[1]-BPs[2])/5) + optdils <- c((asyml+BPs[1])/2, BPs[1], BPs[1]+1*eqSpac, BPs[1]+2*eqSpac,BPs[1]+3*eqSpac,BPs[1]+4*eqSpac,BPs[2], (asymu+BPs[2])/2) + # scenario 3 + eqSpac_3 <- abs((BPs[1]-BPs[2])/3) + optdils_3 <- c(BPs[1]-2*eqSpac_3, BPs[1]-eqSpac_3, BPs[1], BPs[1]+1*eqSpac_3, BPs[1]+2*eqSpac_3,BPs[2], BPs[2]+eqSpac_3, BPs[2]+2*eqSpac_3) + # scenario 6 + Einh2 <- abs(((BPs[2]-BPs[1])*0.7)/5) + eqSpac2 <- (2*0.7/Einh)/3 + optdils2 <- c((asyml+BPs[1])/2, BPs[1], EC50REF-1.5*Einh2, EC50REF-0.5*Einh2,EC50REF+0.5*Einh2,EC50REF+1.5*Einh2, BPs[2], (asymu+BPs[2])/2) + # steep slope + eqSpac3 <- (abs(Xbend200-Xbend50))/5 + optdils3 <- c(Xbend200-eqSpac3,Xbend200, Xbend200+1*eqSpac3, Xbend200+2*eqSpac3,Xbend200+3*eqSpac3,Xbend200+4*eqSpac3,Xbend50, Xbend50+eqSpac3) + + output$extremebps <- renderTable({ + ExtremeBPs <- c(Xbend50,Xbend200) + DF2 <- data.frame(sample=c("50% sample (right)", "200% sample (left)"), Extreme_BPs=ExtremeBPs) + DF2 + }) + + optD <- data.frame(cbind(optdils, optdils_3,optdils2, optdils3)) + colnames(optD) <- c("scenario2","scenario3","scenario6","steep slope") + + output$optimalDils <- renderTable({ optD }) + + output$adjlogdil <- renderTable({ + adjlogdilfactors <- round(dilfactors,3) + adjlogdils <- round(dils2,3) + adjdils <- round(exp(dils2),3) + DilsTable <- data.frame('adjusted ln(dilutions)' = adjlogdils, + 'adjusted ln_dilution_factors' = adjlogdilfactors, + 'adjusted dilutions' = adjdils) + DilsTable + }) + + if (!is.null(Dat$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("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))) + + geom_line(data=as.data.frame(pl_df),aes(x=dils2,y=SAMPLE50), color="grey15", linetype=2, + inherit.aes = F) + + geom_line(data=as.data.frame(pl_df),aes(x=dils2,y=SAMPLE200), color="grey15", linetype=2, + inherit.aes = F) + + geom_vline(xintercept=c(Xbend50,Xbend200), col="grey15", linetype=2) + + {if (input$scenario =="scenario 6") annotate("pointrange",x=optdils2,y=rep(min_y+(max_y-min_y)*0.2, length(optdils2)), + xmin=min(optdils2), xmax=max(optdils2), color="seagreen")} + + {if (input$scenario =="scenario 6") annotate("text",x=optdils2,y=rep(min_y+(max_y-min_y)*0.25, length(optdils2)), + label=as.character(round(optdils2,3)), color="seagreen")} + + {if (input$scenario =="scenario 2") annotate("pointrange",x=optdils,y=rep(min_y+(max_y-min_y)*0.2, length(optdils)), + xmin=min(optdils), xmax=max(optdils), color="seagreen")} + + {if (input$scenario =="scenario 2") annotate("text",x=optdils,y=rep(min_y+(max_y-min_y)*0.25, length(optdils)), + label=as.character(round(optdils,3)), color="seagreen")} + + {if (input$scenario =="scenario 3") annotate("pointrange",x=optdils_3,y=rep(min_y+(max_y-min_y)*0.2, length(optdils_3)), + xmin=min(optdils_3), xmax=max(optdils_3), color="seagreen")} + + {if (input$scenario =="scenario 3") annotate("text",x=optdils_3,y=rep(min_y+(max_y-min_y)*0.25, length(optdils_3)), + label=as.character(round(optdils_3,3)), color="seagreen")} + + {if (input$scenario =="steep slope") annotate("pointrange",x=optdils3,y=rep(min_y+(max_y-min_y)*0.2, length(optdils3)), + xmin=min(optdils3), xmax=max(optdils3), color="seagreen")} + + {if (input$scenario =="steep slope") annotate("text",x=optdils3,y=rep(min_y+(max_y-min_y)*0.25, length(optdils3)), + label=as.character(round(optdils3,3)), color="seagreen")} + + annotate("text",x=optdils[1],y=(max_y+min_y)*0.5, + label=paste("in green: optimal \n dilutions acc. to Whitepaper\n", input$scenario), color="seagreen", + size=14/.pt,fontface="bold") + } + print(p_dil) + + }) + + #### Dilutions CI table ---- + observe({ + + output$CIs <- renderTable({ + PureErrFlag <- input$PureErr + if (is.null(Dat$coeffs_UN)) { + # checks if an EXCEL was uploaded + sigmoid <- sigmoid() + det_sig=NULL + + ast = sigmoid()[1];bst = sigmoid()[5];cst = sigmoid()[7];dst = sigmoid()[3];ate = sigmoid()[2]; + bte = sigmoid()[6];r_ = sigmoid()[8]; + cte = cst-r_;dte = sigmoid()[4]; + } else { + sigmoid <- NULL + det_sig <- Dat$coeffs_UN + ast <- det_sig[3] + ate <- det_sig[4] + bst <- det_sig[1] + bte <- det_sig[2] + cst <- det_sig[7] + cte <- det_sig[7] -log(input$potencydiff/100) + dst <- det_sig[5] + dte <- det_sig[6] + r_ <- log(input$potencydiff/100) + + } + if (!is.na(input$NoDilSer)) { + noDilSer <- input$NoDilSer + } else if (!is.null(Dat$NoDilSeriesXL)) noDilSer <- Dat$noDilSeriesXL else noDilSer <- 3 + if (!is.na(input$NoDil)) noDil <- input$NoDil else noDil <- length(Dat$newDils) + #browser() + tab <- Calc_DilRes(as=ast,at=ate,ds=dst,dt=dte,cs=cst,ct=cte,r=r_,bt=bte,bs=bst, + sd_fac=input$sdfac,log_conc=Dat$newDils, + # auslenkU=outlierU, + # auslenkM=outlierM, + # auslenkL=outlierL, + heteroNoise = FALSE, noDilSeries = noDilSer, noDils = noDil) + Limite <- 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), + as.numeric(input$lEACratioAdiff), as.numeric(input$uEACratioAdiff)) + + CItable <- tests_FUNC(tab,Limite,PureErrFlag=PureErrFlag) + + CItable_ <- CItable[-c(1,2,6,8,9),-c(2,4,5)] + potAll <- pot4plFUNC(tab, input$PureErr) + restrPot <- potAll[1,1:4] + restrPot[2:4] <- round(as.numeric(restrPot[2:4]),5) + potAll_ <- rbind(CItable_, restrPot) + potAll_$CIwidth <- as.numeric(potAll_[,4])-as.numeric(potAll_[,3]) + potAll_[,1] <- c("ratio of lower asymptotes","ratio of slopes","ratio of upper asymptotes", "ratio of asympt. differences","restricted potency") + + output$bps <- renderTable({ + DF <- data.frame(sample=names(Dat$bendpoints),BPs=Dat$bendpoints) + DF + }) + return(potAll_) + }) + }) + + #### simulations ---- + observe({ + observeEvent(input$goSim,{ + sd_fac_ <- as.numeric(input$sdfac) + + r_ <- log(as.numeric(input$potencydiff)/100) + Conc <- Dat$MetaConc + as = sigmoid()[1]; bs = sigmoid()[5];cs = sigmoid()[7];ds = sigmoid()[3];at = sigmoid()[2]; + bt = sigmoid()[6];r = sigmoid()[8]; ct = cs-r_; dt = sigmoid()[4] + + if (!is.null(Dat$MetaConc)) { + Conc <- Dat$MetaConc + } else { + Conc <- CONC() + } + log_dose <- log(Conc) + yAxfac <- (ds-as) + + if (!is.na(input$NoDilSer)) { + noDilSer <- input$NoDilSer + } else if (!is.null(Dat$NoDilSeriesXL)) noDilSer <- Dat$noDilSeriesXL else noDilSer <- 3 + if (!is.na(input$NoDil)) noDil <- input$NoDil else noDil <- length(Conc) + isRef <- rep(c(1,0),1,each=noDilSer*noDil) + isSample <- rep(c(0,1),1,each=noDilSer*noDil) + N <- as.numeric(input$simN) + + av <- as*isRef + at*isSample + (ds*isRef + dt*isSample - as*isRef - at*isSample)/ + (1+isRef*exp(bs*(cs - log_dose)) + isSample*exp(bt*(ct-log_dose))) + + resHist <- matrix(NA,nrow=N, ncol=13) + residualsList <- list() + start.time2 <- Sys.time() + withProgress(message = 'Making plot', value=0, { + for (i in 1:N) { + if (input$heterosked) { + # heterosc noise + ro_jit <- matrix(unlist(map(av, function(x) x+rnorm(1,0,x*sd_fac_/100))), nrow=noDil, ncol=noDilSer*2) + } else { + # homosc noise + ro_jit <- matrix(unlist(map(av, function(x) x+rnorm(1,0,sd_fac_*yAxfac/100))), nrow=noDil, ncol=noDilSer*2) + } + # browser() + ro_jit <- abs(ro_jit) + ro_new <- cbind(ro_jit, log_dose) + all_l <- melt(data.frame(ro_new), id.vars="log_dose", variable.name = "replname", value.name = "readout") + all_l$isRef <- isRef + all_l$isSample <- isSample + all_l$Conc <- exp(all_l$log_dose) + pot <- drm(readout ~ Conc, isSample, data=all_l, fct=LL.4(names=c("b","d","a","c")), + pmodels=data.frame(1,1,1,isSample)) + potAll <- EDcomp(pot, percVec=c(50,50), interval="delta", display=FALSE) + potAll2 <- potAll[1:3] + RSS <- sum(pot$predres[,2]^2) + dfreed <- nrow(all_l)-5 + MSE <- RSS/dfreed + + potU <- drm(readout ~ Conc, isSample, data=all_l, fct=LL.4(names=c("b","d","a","c")), + pmodels=data.frame(isSample, isSample,isSample,isSample)) + DF_U <- nrow(all_l)-8 + + uAsratio <- compParm(potU, "a",display=F) + uCIuAs <- uAsratio[1]+qt(0.975,DF_U)*uAsratio[2] + lCIuAs <- uAsratio[1]-qt(0.975,DF_U)*uAsratio[2] + lAsratio <- compParm(potU, "d",display=F) + uCIlAs <- lAsratio[1]+qt(0.975,DF_U)*lAsratio[2] + lCIlAs <- lAsratio[1]-qt(0.975,DF_U)*lAsratio[2] + Sloperatio <- compParm(potU, "b",display=F) + uCISlo <- Sloperatio[1]+qt(0.975,DF_U)*Sloperatio[2] + lCISlo <- Sloperatio[1]-qt(0.975,DF_U)*Sloperatio[2] + su <- summary(potU) + + v <- vcov(potU)[c(5,6),c(5,6)] + Vd <- vcov(potU)[c(3,4),c(3,4)] + Va_d <- v+Vd + + A_DTEST <- su$coefficients[6,1]-su$coefficients[4,1] + A_DREF <- su$coefficients[5,1]-su$coefficients[3,1] + if (abs(at/(sqrt(Va_d[2,2]/3))) > qt(0.95,2)) { + try(Fie_ad <- round(FiellerRatio(A_DREF,A_DTEST, Va_d),5)) + } + if (!exists("Fie_ad")) Fie_ad <- NA + + resHist[i,] <- c(potAll2, sqrt(MSE),Sloperatio[1],lCISlo, uCISlo, + uAsratio[1], lCIuAs, uCIuAs, Fie_ad[1],Fie_ad[2],Fie_ad[3]) + colnames(resHist) <- c("pot4pl","lCI4pl","uCI4pl","RMSE","estSlope_ratio", + "lCISlope_ratio","uCISlope_ratio","estuAs_ratio", + "lCIuAs_ratio","uCIuAs_ratio","estAsyDiff_ratio", + "lCIAsyDiff_ratio", "uCIAsyDiff_ratio") + + incProgress(1/N, detail=paste("Doing simulations",i)) + } # withProgress + + }) + end.time2 <- Sys.time() + + Dat$resHist <- resHist + }) + }) + + + #### simulation Histograms output ---- + + output$plotHistuAs <- renderPlot({ + if (!is.null(Dat$resHist)) { + + resHist <- Dat$resHist + #browser() + resHistuAs <- as.data.frame(resHist[,8:10]) + resHistuAs_l <- melt(data.frame(resHistuAs), variable.name="ratio_CIs", value.name = "readout") + #browser() + lowquant_uAs <- quantile(resHistuAs[,2], probs=as.numeric(input$lowQuant)/100) + upquant_uAs <- quantile(resHistuAs[,3], probs=as.numeric(input$uppQuant)/100) + + p_uAs <- ggplot(resHistuAs_l) + + geom_histogram(aes(readout, fill=ratio_CIs),alpha=0.5,position="identity") + + labs(title = paste("upper asymptote ratio EACs:", round(lowquant_uAs,3), " to ", round(upquant_uAs,3))) + + geom_vline(xintercept = c(lowquant_uAs, upquant_uAs), color="black", linetype="dashed", linewidth=1) + + geom_vline(xintercept = c(input$lEACratioua , input$uEACratioua), color="red", linetype="dashed", linewidth=1) + + theme_bw() + + # asympt diff ratio + resHistAsDiff <- as.data.frame(resHist[,11:13]) + resHistAsDiff_l <- melt(data.frame(resHistAsDiff), variable.name="ratio_CIs", value.name = "readout") + + lowquant_AsDiff <- quantile(resHistAsDiff[,2], probs=as.numeric(input$lowQuant)/100) + upquant_AsDiff <- quantile(resHistAsDiff[,3], probs=as.numeric(input$uppQuant)/100) + + p_AsDiff <- ggplot(resHistAsDiff_l, aes(readout, fill=ratio_CIs)) + + geom_histogram(alpha=0.5,position="identity") + + labs(title = paste("asymptote diff. ratio EACs:", round(lowquant_AsDiff,3), " to ", round(upquant_AsDiff,3))) + + geom_vline(xintercept = c(lowquant_AsDiff, upquant_AsDiff), color="black", linetype="dashed", linewidth=1) + + geom_vline(xintercept = c(input$lEACratioAdiff , input$uEACratioAdiff), color="red", linetype="dashed", linewidth=1) + + theme_bw() + + # Slope ratio + resHistSlo <- as.data.frame(resHist[,5:7]) + resHistSlo_l <- melt(data.frame(resHistSlo), variable.name="ratio_CIs", value.name = "readout") + + lowquant_Slo <- quantile(resHistSlo[,2], probs=as.numeric(input$lowQuant)/100) + upquant_Slo <- quantile(resHistSlo[,3], probs=as.numeric(input$uppQuant)/100) + + p_Slo <- ggplot(resHistSlo_l, aes(readout, fill=ratio_CIs)) + + geom_histogram(alpha=0.5,position="identity") + + labs(title = paste("Slope ratio EACs:", round(lowquant_Slo,3), " to ", round(upquant_Slo,3))) + + geom_vline(xintercept = c(lowquant_Slo, upquant_Slo), color="black", linetype="dashed", linewidth=1) + + geom_vline(xintercept = c(input$lEACratioSlope , input$uEACratioSlope), color="red", linetype="dashed", linewidth=1) + + theme_bw() + + # poency ratio + resHistPot <- as.data.frame(resHist[,1:3]) + resHistPot_l <- melt(data.frame(resHistPot), variable.name="ratio_CIs", value.name = "readout") + + lowquant_Pot <- quantile(resHistPot[,2], probs=as.numeric(input$lowQuant)/100) + upquant_Pot <- quantile(resHistPot[,3], probs=as.numeric(input$uppQuant)/100) + #browser() + p_Pot <- ggplot(resHistPot_l, aes(readout, fill=ratio_CIs)) + + geom_histogram(alpha=0.5,position="identity") + + labs(title = paste("Poency ratio EACs:", round(lowquant_Pot,3), " to ", round(upquant_Pot,3))) + + geom_vline(xintercept = c(lowquant_Pot, upquant_Pot), color="black", linetype="dashed", linewidth=1) + + geom_vline(xintercept = c(input$lowerPot/100, input$upperPot/100), color="red", linetype="dashed", linewidth=1) + + theme_bw() + + grid.arrange(p_Slo, p_AsDiff, p_uAs, p_Pot, nrow=1) + + } + }) + + #### download XL report---- + + output$downloadXLReport <- downloadHandler( + filename= paste0("Report_4PLEvaluation", Dat$FileName,".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,"logo.png") + file.copy("logo.png", tempReportc, overwrite = T) + + rmarkdown::render(tempReport, output_file = file, + params = list(FileName = Dat$FileName, + author = Dat$author, + REP = REP, + coeffs = Dat$coeffs_UN), + envir = new.env(parent = globalenv())) + + } + ) + + + # observe({ + # pfad <- getwd() + # Z <- read.csv('./Zaehlfile.csv') + # Z[,3] <- sapply(Z[,3], as.character) + # nrowsZ <- nrow(Z) + # + # Z[nrowsZ+1,1] <- Z[nrowsZ,1]+1 + # Z[nrowsZ+1,1] <- Sys.Date() + # Z[nrowsZ+1,1] <- NA + # write.csv(Z, file= './Zaahlfile.csv', row.names = F) + # }) + # observe({ + # Z <- read.csv('./Zaehlfile.csv') + # Dat$Zaehl <- read.csv('./Zaehlfile.csv') + # nrowsZ <- nrow(Z) + # message2 <- paste("No. of calls:", Z[nrowsZ,1]) + # output$stats <- renderPrint(cat(message2)) + # }) + # output$downloadZaehl <- downloadHandler( + # filename = function() { + # paste("Zaehlfile", Sys.Date(),".csv", sep="") + # + # }, + # content = function(file) { write.csv(Dat$Zaehl, file = file, row.names = F)}, + # contentType = "text/csv" + # ) +} # end of session function + + + + + + + diff --git a/.Rproj.user/1804966C/sources/session-c8f70505/47543094 b/.Rproj.user/1804966C/sources/session-c8f70505/47543094 new file mode 100644 index 0000000..b5ab204 --- /dev/null +++ b/.Rproj.user/1804966C/sources/session-c8f70505/47543094 @@ -0,0 +1,28 @@ +{ + "id": "47543094", + "path": "~/plateflow/NewApp/app.R", + "project_path": "app.R", + "type": "r_source", + "hash": "2785151077", + "contents": "", + "dirty": false, + "created": 1777232335294.0, + "source_on_save": false, + "relative_order": 3, + "properties": { + "source_window_id": "", + "Source": "Source", + "cursorPosition": "2155,38", + "scrollLine": "2145", + "docOutlineVisible": "1", + "docOutlineSize": "118" + }, + "folds": "", + "lastKnownWriteTime": 1777839495, + "encoding": "UTF-8", + "collab_server": "", + "source_window": "", + "last_content_update": 1777839495532, + "read_only": false, + "read_only_alternatives": [] +} \ No newline at end of file diff --git a/.Rproj.user/1804966C/sources/session-c8f70505/47543094-contents b/.Rproj.user/1804966C/sources/session-c8f70505/47543094-contents new file mode 100644 index 0000000..b497040 --- /dev/null +++ b/.Rproj.user/1804966C/sources/session-c8f70505/47543094-contents @@ -0,0 +1,2892 @@ +library(shiny) +library(shinydashboard) +library(shinyjs) +library(shinyAce) +library(shinydashboard) +library(shinycssloaders) +library(shinyBS) +library(purrr) +library(gslnls) +library(tidyverse) +library(ggplot2) +library(reshape2) +library(openxlsx) +library(DT) +library(ggpubr) +library(gridExtra) +library(drc) +library(twopartm) +library(car) +library(dplyr) + + +#### reactive values ---- +Dat <- reactiveValues() +REP <- reactiveValues() + +#### functions ---- +dilFUN2 <- function(cs_,dils,Faktor) { + av <- cs_ + dils_av <- dils_av + dils_avsc <- dils_av*Faktor + dils2 <- dils_avsc+av + dilfactors <- 1/exp(dils2-lag(dils2)) + return(dilfactors) +} + +plot_f <- function(dat, sigmoid,det_sig, TransFlag=F) { + CORdat <- cor(dat[,1],dat[,ncol(dat)]) + #browser() + all_l <- melt(data.frame(dat), 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) + #browser() + if(is.null(det_sig)) { + + startlist <- list(a=sigmoid[1], b=sigmoid[5],cs=sigmoid[7], + d=sigmoid[3],r=sigmoid[8]) + + } else { + startlist <- list(a=det_sig[5], b=det_sig[1],cs=det_sig[7], + d=det_sig[3],r=det_sig[7] - det_sig[8]) + } + + mr <- gsl_nls(fn = readout ~ a+(d-a)/(1+exp(b*((cs-r*isSample)-log_dose))), + data=all_l, + start=startlist, + control=gsl_nls_control(xtol=1e-6,ftol=1e-6, gtol=1e-6)) + s_mr <- tryCatch({ + s_mr <- summary(mr) + }, + error = function(err) { + s_mr <- NULL + }) + + a <- s_mr$coefficients["a",1] + b <- s_mr$coefficients["b",1] + cs <- s_mr$coefficients["cs",1] + d <- s_mr$coefficients["d",1] + r <- s_mr$coefficients["r",1] + + log_dose <- unique(all_l$log_dose) + seq_x <- seq(min(log_dose),max(log_dose),0.1) + SAMPLE <- a+(d-a)/(1+exp(b*((cs-r)-seq_x))) + REF <- a+(d-a)/(1+exp(b*((cs)-seq_x))) + + if (is.null(det_sig)) { + SAMPLEtrue <- sigmoid[2] + (sigmoid[4] -sigmoid[2])/(1+exp(sigmoid[6]*((sigmoid[7]-sigmoid[8]-seq_x)))) + REFtrue <- sigmoid[1] + (sigmoid[3] -sigmoid[1])/(1+exp(sigmoid[5]*((sigmoid[7]-seq_x)))) + } else { + SAMPLEtrue <- det_sig[4] + (det_sig[6] -det_sig[4])/(1+exp(det_sig[2]*(det_sig[8]-seq_x))) + REFtrue <- det_sig[3] + (det_sig[5] -det_sig[3])/(1+exp(det_sig[1]*(det_sig[7]-seq_x))) + } + #browser() + pl_df <- cbind(seq_x, SAMPLE, REF, SAMPLEtrue, REFtrue) + all_l2$readout[all_l2$readout < 0] <- 0.01 + all_l2$readouttrans <- log(all_l2$readout) + slopeEC50 <- b*(d-a)/4 + Intercept <- a+(d-a)/2-b*(d-a)/4*cs +#browser() + Xbendl3 <- cs-(1.31696/b) + Xbendu3 <- cs+(1.31696/b) + XbendlT <- cs-r-(1.31696/b) + XbenduT <- cs-r+(1.31696/b) + XasymplS <- cs-(3/b) + XasympuS <- cs+(3/b) + XasymplT <- cs-r-(3/b) + XasympuT <- cs-r+(3/b) + bendpoints <- c(bendREF_lower = round(Xbendl3,3), bendREF_upper=round(Xbendu3,3), + bendSAMPLE_lower = round(XbendlT,3), bendSAMPLE_upper=round(XbenduT,3), + asympREF_lower = round(XasymplS,3), asympREF_upper=round(XasympuS,3), + asympSAMPLE_lower = round(XasymplT,3), asympSAMPLE_upper=round(XasympuT,3)) + Dat$bendpoints <- bendpoints + Dat$cfordils <- cs + + p <- ggplot(all_l2, aes(x=log_dose, y=readout, color=factor(isRef))) + + geom_point(shape=factor(isRef), alpha=0.8) + + labs(title = paste("restricted 4pl"), + color="product") + + scale_color_manual(labels=c("test","reference"), values=c("#C2173F","#4545BA")) + + scale_shape_manual(labels=c("test","reference")) + + theme_bw() + + theme(axis.text = element_text(size=14)) + + p2 <- p + geom_line(data=as.data.frame(pl_df), aes(x=seq_x, y=SAMPLE), color="#C2173F", + inherit.aes = F) + + geom_line(data=as.data.frame(pl_df), aes(x=seq_x, y=REF), color="#4545BA", + inherit.aes = F) + + geom_line(data=as.data.frame(pl_df), aes(x=seq_x, y=SAMPLEtrue), color="#C2173F", linetype=2, alpha=0.4, + inherit.aes = F) + + geom_line(data=as.data.frame(pl_df), aes(x=seq_x, y=REFtrue), color="#4545BA", linetype=2, alpha=0.4, + inherit.aes = F) + + geom_vline(xintercept=c(Xbendl3, Xbendu3), col="#4545BA",linetype=2) + + geom_vline(xintercept=c(XbendlT, XbenduT), col="#C2173F",linetype=2) + + geom_vline(xintercept=c( XasymplS, XasympuS), col="#4545BA55",linetype=2) + + geom_vline(xintercept=c(XasymplT, XasympuT), col="#C2173F55",linetype=2) + + annotate("text", x=cs, y=a+(d-a)/2, label="0", size=5) + + geom_abline(slope = slopeEC50, intercept = Intercept) + + theme(legend.position="none") + Dat$p2 <- p2 + + # transformed plots + p_rt <- ggplot(all_l2, aes(x=log_dose, y=readouttrans, color=factor(isRef))) + + geom_point(shape=factor(isRef), alpha=0.8) + + labs(title = paste("restricted transformed 4pl"), color="product") + + scale_color_manual(labels=c("test","reference"), values=c("#C2173F","#4545BA")) + + theme_bw() + + mrt <- gsl_nls(fn = readouttrans ~ a+(d-a)/(1+exp(b*((cs-r*isSample)-log_dose))), + data=all_l2, + start=startlist, + control=gsl_nls_control(xtol=1e-6,ftol=1e-6, gtol=1e-6)) + s_mrt <- summary(mrt) + a_trans <- s_mrt$coefficients["a",1] + b_trans <- s_mrt$coefficients["b",1] + cs_trans <- s_mrt$coefficients["cs",1] + d_trans <- s_mrt$coefficients["d",1] + r_trans <- s_mrt$coefficients["r",1] + + XbendlTrans <- cs_trans-(1.31696/b_trans) + XbenduTrans <- cs_trans+(1.31696/b_trans) + XbendlTransT <- cs_trans-r_trans-(1.31696/b_trans) + XbenduTransT <- cs_trans-r_trans+(1.31696/b_trans) + bendpointsTRANS <- c(bendREF_lower = round(XbendlTrans,3), bendREF_upper=round(XbenduTrans,3), + bendSAMPLE_lower = round(XbendlTransT,3), bendSAMPLE_upper=round(XbenduTransT,3)) + Dat$bendpointsTRANS <- bendpointsTRANS + SAMPLEtrans <- a_trans+(d_trans-a_trans)/(1+exp(b_trans*((cs_trans-r_trans)-seq_x))) + REFtrans <- a_trans+(d_trans-a_trans)/(1+exp(b_trans*((cs_trans)-seq_x))) + + pl_df_trans <- cbind(seq_x, SAMPLEtrans, REFtrans) + p_rt2 <- p_rt + geom_line(data=as.data.frame(pl_df_trans), aes(x=seq_x, y=SAMPLEtrans), color="#C2173F", + inherit.aes = F) + + geom_line(data=as.data.frame(pl_df_trans), aes(x=seq_x, y=REFtrans), color="#4545BA", + inherit.aes = F) + + geom_vline(xintercept=c(XbendlTrans, XbenduTrans), col="#4545BA",linetype=2) + + geom_vline(xintercept=c(XbendlTransT, XbenduTransT), col="#C2173F",linetype=2) + + theme(legend.position = "none", axis.text=element_text(size=14)) + + #browser() + if(is.null(det_sig)) { + + startlistmu <- list(as=sigmoid[1], bs=sigmoid[5],cs=sigmoid[7], + ds=sigmoid[3], at=sigmoid[2], bt=sigmoid[6], + dt=sigmoid[4],r=sigmoid[8]) + + } else { + startlistmu <- list(as=det_sig[5], bs=det_sig[1],cs=det_sig[7], + ds=det_sig[3],at=det_sig[6], bt=det_sig[2], + dt=det_sig[4],r=det_sig[7] - det_sig[8]) + } + tryCatch({ + 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)) + }, + error = function(msg){ + return(0) }) + + Sum_u <- tryCatch({ summary(mu) }, + error=function(msg){ + return(0) }) + #browser() + #if (is.null(det_sig)) { + ast <- Sum_u$coefficients["as",1] + ate <- Sum_u$coefficients["at",1] + bst <- Sum_u$coefficients["bs",1] + bte <- Sum_u$coefficients["bt",1] + cst <- Sum_u$coefficients["cs",1] + cte <- Sum_u$coefficients["cs",1]-Sum_u$coefficients["r",1] + dst <- Sum_u$coefficients["ds",1] + dte <- Sum_u$coefficients["dt",1] + # } else { + # ast <- det_sig[5] + # ate <- det_sig[6] + # bst <- det_sig[1] + # bte <- det_sig[2] + # cst <- det_sig[7] + # cte <- det_sig[8] + # dst <- det_sig[3] + # dte <- det_sig[4] + # } + REFu <- ast + (dst-ast)/(1+exp(bst*(cst-seq_x))) + SAMPLEu <- ate + (dte-ate)/(1+exp(bte*(cte-seq_x))) + pl_df2 <- cbind(seq_x, SAMPLEu, REFu) + #browser() + pu <- ggplot(all_l2, aes(x=log_dose, y=readout, color=factor(isRef))) + + geom_point() + + labs(title="unrestricted 4_pl-Model", color="product") + + scale_color_manual(labels = c("test","reference"), values=c("#C2173F","#4545BA")) + + theme_bw() + pu2 <- pu + geom_line(data=as.data.frame(pl_df2), aes(x=seq_x, y=SAMPLEu), + color="#C2173F", inherit.aes = F) + + geom_line(data=as.data.frame(pl_df2), aes(x=seq_x, y=REFu), + color="#4545BA", inherit.aes = F, + show.legend = F) + pu2_ <- pu2 + + theme(legend.position = "none", axis.text = element_text(size=14)) + putrans <- ggplot(all_l2, aes(x=log_dose, y=readouttrans, color=factor(isRef))) + + geom_point() + + labs(title="unrestricted transformed 4_pl-Model", color="product") + + scale_color_manual(labels = c("test","reference"), values=c("#C2173F","#4545BA")) + + theme_bw() + + unrestr_trans <- drm(readouttrans ~ exp(log_dose), isSample, data=all_l2, fct=LL.4(), + pmodels=data.frame(isSample, isSample,isSample,isSample)) + Sum_ut <- summary(unrestr_trans) + ast_t <- Sum_ut$coefficients[3,1] + ate_t <- Sum_ut$coefficients[4,1] + bst_t <- Sum_ut$coefficients[1,1] + bte_t <- Sum_ut$coefficients[2,1] + cst_t <- log(Sum_ut$coefficients[7,1]) + cte_t <- log(Sum_ut$coefficients[8,1]) + dst_t <- Sum_ut$coefficients[5,1] + dte_t <- Sum_ut$coefficients[6,1] + + REFu_trans <- ast_t + (dst_t-ast_t)/(1+exp(bst_t*(seq_x-cst_t))) + SAMPLEu_trans <- ate_t + (dte_t-ate_t)/(1+exp(bte_t*(seq_x-cte_t))) + pl_df2u_t <- cbind(seq_x, SAMPLEu_trans, REFu_trans) + + pu2_t <- putrans + geom_line(data=as.data.frame(pl_df2u_t), aes(x=seq_x, y=SAMPLEu_trans), + color="#C2173F", inherit.aes = F) + + geom_line(data=as.data.frame(pl_df2u_t), aes(x=seq_x, y=REFu_trans), + color="#4545BA", inherit.aes = F, + show.legend = F) + pu3_t <- pu2_t + if (TransFlag) grid.arrange(p_rt2,pu3_t, nrow=1) else grid.arrange(p2,pu2_, nrow=1) +} + +Calc_DilRes <- function(as=3, bs=1, cs=-4, ds=10, at=3, bt=1, dt=10,r=0.0001,ct=cs-r, + sd_fac=0.1, gt=1, gs=1, log_conc, + heteroNoise=FALSE, noDilSeries, noDils) { + yAxfac <- (ds-as) + log_dose <- log_conc + isRef <- rep(c(1,0),1,each=length(log_conc)*noDilSeries) + isSample <- rep(c(0,1),1,each=length(log_conc)*noDilSeries) + #browser() + av <- as*isRef + at*isSample + (ds*isRef + dt*isSample - as*isRef - at*isSample)/ + (1+isRef*exp(bs*(cs - log_dose)) + isSample*exp(bt*(ct-log_dose))) + if (heteroNoise) { + # heterosc noise + ro_jit <- matrix(unlist(map(av, function(x) x+rnorm(1,0,x*sd_fac/100))), nrow=noDils, ncol=noDilSeries*2) + } else { + # homosc noise + ro_jit <- matrix(unlist(map(av, function(x) x+rnorm(1,0,sd_fac*yAxfac/100))), nrow=noDils, ncol=noDilSeries*2) + } + ro_jit <- abs(ro_jit) + + ro_jit2 <- cbind(ro_jit, log_dose) + if (noDilSeries==3) { + colnames(ro_jit2) <- c("R_dil1","R_dil2","R_dil3","T_dil1","T_dil2","T_dil3", "log_dose") + } else { + colnames(ro_jit2) <- c("R_dil1","R_dil2","T_dil1","T_dil2", "log_dose") + } + return(ro_jit2) +} + +LinPotTab <- function(circles, Lim, PureErrFlag) { + circ_ABl <- circles + circ_Al <- circ_ABl[circ_ABl$isSample ==1,] + circ_Al <- circ_ABl[circ_ABl$isSample ==0,] + # restr CSSI model + modAB <- lm(readout ~ log_dose + isSample, circ_ABl) + coeffs <- modAB$coefficients + SU_modAB <- tryCatch({ + SU_modAB <- summary(modAB) + }, error = function(msg) { + return(NA) + }) + # Intercept diff/slope modAB + linPot <- exp(modAB$coefficients[3]/modAB$coefficients[2]) + + if(PureErrFlag) { + FitAnova <- anova(lm(readout ~ factor(log_dose)*isSample, circ_ABl)) + meanPureErr <- FitAnova[4,3] + DFsPure <- FitAnova[4,1] + VCOV <- vcov(modAB) + V_V <- VCOV/SU_modAB$sigma^2 + VCOVpure <- V_V*meanPureErr + SEsPure <- sqrt(diag(V_V)*meanPureErr) + } + + log_pot_delta <- deltaMethod(modAB, "isSample/log_dose") + if (PureErrFlag) { + V_ <- log_pot_delta$SE^2/SU_modAB$sigma^2 + V_p <- V_*meanPureErr + potDeltaPureSE <- sqrt(V_p) + CI_log_low <- log_pot_delta$Estimate - qt(0.975, DFsPure)*potDeltaPureSE + CI_log_up <- log_pot_delta$Estimate + qt(0.975, DFsPure)*potDeltaPureSE + } else { + CI_log_low <- log_pot_delta$Estimate - qt(0.975, df.residual(modAB))*log_pot_delta$SE + CI_log_up <- log_pot_delta$Estimate + qt(0.975, df.residual(modAB))*log_pot_delta$SE + } + #browser() + ExpLinPot <- exp(c(log_pot_delta$Estimate, CI_log_low, CI_log_up)) + if (ExpLinPot[2]*100>Lim[[9]] & ExpLinPot[3]*100Lim[9] & ExpLinPot[3]*100>Lim[10]) test_potCI <- 0 else test_potCI <- 1 + + su_mod <- summary(modAB)$coefficients + su_mod2 <- cbind(data.frame(parameter = c("intercept REF","slope REF","intercepts diff.")), su_mod) + su_modU <- summary(modABu)$coefficients + su_modU2 <- cbind(data.frame(parameter = c("intercept REF","slope REF","intercepts diff.","slope difference")), su_modU) + + uCI_SloDiff <- su_modU[4,1] + qt(0.975,8)*su_modU[4,2] + lCI_SloDiff <- su_modU[4,1] - qt(0.975,8)*su_modU[4,2] + SlopeDiffCI <- c(su_modU[4,1], lCI_SloDiff,uCI_SloDiff) + + lenCirc <- nrow(circ_ABl) + dfTreat <- 3 + dfPrep <- 1 + dfReg <- 1 + dfnonP <- 1 + dfRMSE <- c(lenCirc-3-1) + dfTotal <- lenCirc-1 + dfPureE <- lenCirc-6 + dfNonLin <- dfRMSE-dfPureE + + RSS <- sum(resid(lm(readout ~ log_dose*isSample, circ_ABl))^2) + MSE <- RSS/dfRMSE + SSE <- sum(resid(lm(readout ~ factor(log_dose)*isSample, circ_ABl))^2) + MSpure <- SSE/dfPureE + + if (PureErrFlag) { + FitAnova <- anova(lm(readout ~ factor(log_dose)*isSample, circ_ABl)) + meanPureErr <- FitAnova[4,3] + SU_modAB <- tryCatch({ + SU_modAB <- summary(modAB) + }, error = function(msg) { + return(NA) + }) + if (length(SU_modAB)>1) s_modABcoeffs <- summary(modAB)$coefficients + + DFsPure <- FitAnova[4,1] + VCOV <- vcov(modAB) + V_V <- VCOV/SU_modAB$sigma^2 + VCOVpure <- V_V*meanPureErr + SEsPure <- sqrt(diag(V_V)*meanPureErr) + su_mod2[,3] <- SEsPure + su_mod2[,4] <- su_mod2[,2]/su_mod2[,3] + su_mod2[,5] <- 2*(1-pt(abs(su_mod[,4]), FitAnova[4,1])) + + s_mu <- summary(modABu)$coefficients + SU_modABu <- summary(modABu) + VCOVu <- vcov(modABu) + V_Vu <- VCOVu/SU_modABu$sigma^2 + SEsPureU <- sqrt(diag(V_Vu)*meanPureErr) + + su_modU2[,3] <- SEsPureU + su_modU2[,4] <- su_modU2[,2]/su_modU2[,3] + su_modU2[,5] <- 2*(1-pt(abs(su_modU2[,4]), FitAnova[4,1])) + + uCI_SloDiffP <- su_modU[4,1] + qt(0.975,8)*SEsPureU[4] + lCI_SloDiffP <- su_modU[4,1] - qt(0.975,8)*SEsPureU[4] + SlopeDiffCI <- c(su_modU[4,1], lCI_SloDiffP,uCI_SloDiffP) + + SSRes <- SSE + dfRes <- dfPureE + + } else { + SSRes <- RSS + dfRes <- dfRMSE + } + + # treatment + SStreat <- print(sum((predict(lm(readout ~ factor(log_dose)*isSample, circ_ABl))-mean(circ_ABl$readout))^2)) + F_treat <- (SStreat/dfTreat)/(SSRes/dfRes) + # Preparation + SSprep <- print(sum((predict(lm(readout ~ isSample, circ_ABl))-mean(circ_ABl$readout))^2)) + F_prep <- (SSprep/dfTreat)/(SSRes/dfRes) + # Regression + # ANOVA tape II SS of regression + SSreg <- Anova(lm(readout ~log_dose + isSample, circ_ABl))[1,1] + # Non-parallelism + # diff of RSS of restricted and unrestricted model + SSnonpar <- sum(resid(modAB)^2) - sum(resid(modABu)^2) + F_nonpar <- SSnonpar/(sum(resid(lm(readout ~ factor(log_dose)*isSample, circ_ABl))^2)/(lenCirc-4)) + + # non-linearity + SSnonlin <- sum((predict(modABu)-predict(lm(readout ~ as.factor(log_dose)*isSample, circ_ABl)))^2) + # = RSS-SSE + # Total SS + SStot <- sum((circ_ABl$readout-mean(circ_ABl$readout))^2) + # Significance of R^2 F-ratio + # MSR/MSE + # sample A + F_R2_A <- sum((predict(lm(readout ~ log_dose+ I(log_dose^2), circ_Al)) - mean(predict(modA)))^2 - (predict(modA) - mean(circ_Al$readout))^2)/ + (sum((predict(lm(readout ~ log_dose+ I(log_dose^2), circ_Al)) - circ_Al$readout)^2)/(nrow(circ_Al)-3)) + pFR2_A <- round(pf(F_R2_A,1,6),4) + # sample B + F_R2_B <- sum((predict(lm(readout ~ log_dose+ I(log_dose^2), circ_Bl)) - mean(predict(modB)))^2 - (predict(modB) - mean(circ_Bl$readout))^2)/ + (sum((predict(lm(readout ~ log_dose+ I(log_dose^2), circ_Bl)) - circ_Bl$readout)^2)/(nrow(circ_Bl)-3)) + pFR2_B <- round(pf(F_R2_B,1,6),4) + # sign of non-lin with pure error: MSSnonlin/MSSE + F_nonlin <- (SSnonlin/2)/(SSE/dfPureE) + + # sign of slope + F_slope_B <- sum((predict(modB) - mean(circ_Bl$readout))^2)/(sum((circ_Bl$readout - predict(modB))^2)/(nrow(circ_Bl)-2)) + F_slope_A <- sum((predict(modA) - mean(circ_Al$readout))^2)/(sum((circ_Al$readout - predict(modA))^2)/(nrow(circ_Al)-2)) + # F-test on regression: MSSreg/MSSE + if (is.na(F_nonlin)) F_nonlin <- 0 + if (F_nonlin > 0) { + p_F_nonlin <- round(pf(F_nonlin,2,dfPureE, lower.tail = F),5) + } else { p_F_nonlin <- "SSnonlin neg or 0"; } + + # significances + F_regr <- (SSreg/1)/(SSRes/dfRes) + p_F_regr <- round(pf(F_regr,1,dfRes, lower.tail = F),3) + p_F_treat <- round(pf(F_treat,3,dfRes, lower.tail = F),3) + p_F_prep <- round(pf(F_prep,1,dfRes, lower.tail = F),3) + p_F_slope_A <- round(pf(F_slope_A,1,(nrow(circ_Al)-2), lower.tail = F),3) + p_F_slope_B <- round(pf(F_slope_B,1,(nrow(circ_Bl)-2), lower.tail = F),3) + p_F_nonp <- round(pf(F_nonpar,1,dfRes, lower.tail = F),3) + p_F_LoF <- p_F_nonlin + + res_tab_lin <- data.frame(test = c("F-test on sign. of regression", "F_test on non-lin", + "F-test on R^2 A","F_test on R^2 B", + "F-test on slope A","F-test on slope B", + "F-test on non-parallelism","F-test on preparation"), + test_results = c(ifelse(p_F_regr<0.05,0,1),ifelse(p_F_nonlin<0.05,1,0), + ifelse(pFR2_A<0.05,1,0),ifelse(pFR2_B<0.05,1,0), + ifelse(p_F_slope_A<0.05,0,1),ifelse(p_F_slope_B<0.05,0,1), + ifelse(p_F_nonp<0.05,1,0),ifelse(p_F_prep<0.05,0,1)), + estimate = c(p_F_regr, p_F_nonlin,pFR2_A,pFR2_B,p_F_slope_A, + p_F_slope_B,p_F_nonp,p_F_prep), + Source = c("Treatment","Preparation","Regression","Non-parallelism", + "Resid Error","Non-linearity","Pure error", "Total"), + df = c(dfTreat,1,1,1,dfRMSE,2,dfPureE,lenCirc-1), + SumSquares = c(round(SStreat,5),round(SSprep,5),round(SSreg,5), + round(SSnonpar,5),round(RSS,5),round(SSnonlin,5), + round(SSE,5),round(SStot,5)), + MS = c(round(SStreat/dfTreat,5),round(SSprep,5),round(SSreg,5), + round(SSnonpar,5),round(RSS/dfRMSE,5),round(SSnonlin/2,5), + round(SSE/dfPureE,5),round(SStot/dfTotal,5)), + "F-value" = c(round(F_treat,5), round(F_prep,5),round(F_regr,5), + round(F_nonpar,5),"",round(F_nonlin,5),"",""), + "p-value" = c(p_F_treat, p_F_prep, p_F_regr, p_F_nonp, "", p_F_LoF, "","")) + RET <- list(res_tab_lin, su_modU2, SlopeDiffCI, su_mod2) + return(RET) +} + +pot4plFUNC <- function(ro_new, PureErrFlag) { + all_l <- melt(data.frame(ro_new), 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_l$isRef <- isRef + all_l$isSample <- isSample + all_l$Conc <- exp(all_l$log_dose) + all_l$readout[all_l$readout < 0] <- 0.01 + all_l$readouttrans <- log(all_l$readout) + + CORdat <- cor(ro_new[,1],ro_new[,ncol(ro_new)]) + if (CORdat<0) SLOPE <- -1 else SLOPE <- 1 + + startlist <- list(a=min(ro_new[,2]), b=SLOPE, d=max(ro_new[,2]), cs=mean(all_l$log_dose),r=0) + tryCatch({ + mr <- gsl_nls(fn = readout ~ a+(d-a)/(1+exp(b*(cs-r*isSample-log_dose))), + data=all_l, + start=startlist, + control=gsl_nls_control(xtol=1e-6,ftol=1e-6, gtol=1e-6)) + }, + error = function(err) { + err$message + }) + + startlistmu <- list(as=max(ro_new[,2]), bs=SLOPE, ds=min(ro_new[,2]), cs=mean(all_l$log_dose), + at=max(ro_new[,2]), bt=SLOPE, dt=min(ro_new[,2]), r=0) + + tryCatch({ + 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)) + }, + error = function(err) { + err$message + }) + + if (!PureErrFlag) { + pot_est <- exp(confintd(mr, "r", method="asymptotic")) + potU_est <- exp(confintd(mu, "r", method="asymptotic")) + } else { + FitAnova <- anova(lm(readout ~ factor(Conc)*isSample, all_l)) + meanPureErr <- FitAnova[4,3] + SU_mr <- tryCatch({ + SU_mr <- summary(mr) + }, error = function(msg) { + return() + }) + + browser() + if (length(SU_mr)>1) { + s_mr <- SU_mr$coefficients + } else { SU_mr <- rep(NA,5) } + + VCOV <- vcov(mr) + V_V <- VCOV/SU_mr$sigma^2 + SEsPure <- sqrt(diag(V_V)*meanPureErr) + pot_est <- c(exp(s_mr['r',1]),exp(s_mr['r',1]-qt(0.975,nrow(all_l)-5)*SEsPure['r']), + exp(s_mr['r',1]+qt(0.975,nrow(all_l)-5)*SEsPure['r'])) + # unrestricted + s_mu <- summary(mu)$coefficients + SU_mu <- summary(mu) + VCOVu <- vcov(mu) + V_Vu <- VCOVu/SU_mu$sigma^2 + SEsPureU <- sqrt(diag(V_Vu)*meanPureErr) + potU_est <- c(exp(s_mu['r',1]),exp(s_mu['r',1]-qt(0.975,nrow(all_l)-8)*SEsPureU['r']), + + exp(s_mu['r',1]+qt(0.975,nrow(all_l)-8)*SEsPureU['r'])) + } # PureErrFlag + + startlistmr_log <- list(a=max(all_l$readouttrans), b=SLOPE, d=min(all_l$readouttrans), cs=mean(all_l$log_dose),r=0) + + tryCatch({ + mr_log <- gsl_nls(fn = readouttrans ~ a+(d-a)/(1+exp(b*(cs-r*isSample-log_dose))), + data=all_l, + start=startlistmr_log, + control=gsl_nls_control(xtol=1e-6,ftol=1e-6, gtol=1e-6)) + }, + error = function(err) { + err$message + }) + + + startlistmu_log <- list(as=max(ro_new[,2]), bs=SLOPE, ds=min(ro_new[,2]), cs=mean(all_l$log_dose), + at=max(ro_new[,2]), bt=SLOPE, dt=min(ro_new[,2]), r=0) + + tryCatch({ + mu_log <- gsl_nls(fn = readouttrans ~ 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_log, + control=gsl_nls_control(xtol=1e-6,ftol=1e-6, gtol=1e-6)) + }, + error = function(err) { + err$message + }) + + pot_est_log <- exp(confintd(mr_log, "r", method="asymptotic")) + potU_est_log <- exp(confintd(mu_log, "r", method="asymptotic")) + colnames(pot_est_log) <- c("estimate","lowerCI2","upperCI") + colnames(potU_est_log) <- c("estimate","lowerCI2","upperCI") + #browser() + su_mr_log <- summary(mr_log) + Dat$RMSE_Rlog <- su_mr_log$sigma + su_mu_log <- summary(mu_log) + Dat$RMSE_Ulog <- su_mu_log$sigma + Dat$up_lowAslog <- su_mu_log$coefficients[1,1] - su_mu_log$coefficients[4,1] + potALL <- rbind(pot_est, potU_est, pot_est_log, potU_est_log) + + potALL2 <- cbind(c("restricted","unrestricted","ln-transformed restr","ln-transformed unrestr"), potALL) + return(potALL2) +} + +ParamCI_F <- function(xt,xs,se_xt, se_xs, CoVarlog,DFs, Conf=0.975) { + log_xs <- log(abs(xs)) + log_xt <- log(abs(xt)) + var_log_xs <- (se_xs/xs)^2 # approximate variance of log(bs) + var_log_xt <- (se_xt/xt)^2 + se_log_ratio <- sqrt(var_log_xs + var_log_xt) #-2*CoVarlog) + + lower_log_ratio <- log_xt-log_xs - qt(Conf,DFs)*se_log_ratio + upper_log_ratio <- log_xt-log_xs + qt(Conf,DFs)*se_log_ratio + ci_ratio <- exp(c(lower_log_ratio, upper_log_ratio)) + return(ci_ratio) +} + +tests_FUNC <- function(ro_new, Lim, PureErrFlag) { + #browser() + all_l <- melt(data.frame(ro_new), 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_l$isRef <- isRef + all_l$isSample <- isSample + all_l$Conc <- exp(all_l$log_dose) + all_l$readout[all_l$readout < 0] <- 0.01 + tryCatch({ + pot <- drm(readout ~ Conc, isSample, data=all_l, fct=LL.4(names=c("b","d","a","c")), + pmodels=data.frame(1,1,1,isSample)) + }, + error = function(msg){ + return(0) }) + compParm(pot, "c",display=T) + ED50 <- ED(pot,c(50), interval="delta") + PotEst <- ED50[1,1]/ED50[2,1] + potAll <- EDcomp(pot, percVec=c(50,50), interval="delta", display=FALSE) + potAll2 <- potAll[1:3] + + CORro <- cor(ro_new[,1], ro_new[,ncol(ro_new)]) + + if (CORro<0) SLOPE <- -1 else SLOPE <- 1 + startlist <- list(a=max(ro_new[,2]), b=SLOPE, d=min(ro_new[,2]), cs=mean(all_l$log_dose),r=0) + tryCatch({ + mr <- gsl_nls(fn = readout ~ a+(d-a)/(1+exp(b*(cs-r*isSample-log_dose))), + data=all_l, + start=startlist, + control=gsl_nls_control(xtol=1e-6,ftol=1e-6, gtol=1e-6)) + }, + error = function(msg){ + return(0) }) + + startlistmu <- list(as=max(ro_new[,2]), bs=SLOPE, ds=min(ro_new[,2]), cs=mean(all_l$log_dose), + at=max(ro_new[,2]), bt=SLOPE, dt=min(ro_new[,2]), r=0) + tryCatch({ + 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)) + }, + error = function(msg){ + return(0) }) + + smu <- tryCatch({ summary(mu) }, + error=function(msg){ + return(0) }) + + POTr_CI <- potAll2[2:3] + + FitAnova <- anova(lm(readout ~ factor(Conc)*isSample, all_l)) + # pure error + pureSS <- FitAnova[4,2] + pureSS_df <- FitAnova[4,1] + meanPureErr <- FitAnova[4,3] + vcovMU <- vcov(mu) + V_V <- vcovMU/smu$sigma^2 + SEsPure <- sqrt(diag(V_V)*meanPureErr) + VCOVpure <- V_V*meanPureErr + DFsPure <- FitAnova[4,1] + + + + testPOTr <- logical() + if (POTr_CI[1]*100>Lim[[9]] & POTr_CI[2]*100Lim[[9]]/100 & potAllU2[3] 0) { + p_F_nonlin <- round(pf(F_nonlin, AnovaDFs[6], ERR_df, lower.tail = F),5) + } else { p_F_nonlin <- "SSnonlin neg or single dilutions" } + + test_a <- test_b <- test_d <- test_ad <- logical() + + RSS_r <- round(sum(pot$predres[,2]^2),5) + MSE_r <- RSS_r/(nrow(all_l)-5) + RMSE_r <- round(sqrt(MSE_r),6) + Dat$RMSE_r <- RMSE_r + Dat$RMSE_pure <- RMSE_pure + Dat$RMSE_unr <- round(RMSEunr,6) + #browser() + ## EQ test on lower As diff + ds <- coeffs["ds"] + dt <- coeffs["dt"] + lAs_diff <- (dt-ds) + uCI_laDiff <- lAs_diff+qt(0.975,df.residual(mu))*sqrt(sum_potU$coefficients[3,2]^2+sum_potU$coefficients[4,2]^2) + lCI_laDiff <- lAs_diff-qt(0.975,df.residual(mu))*sqrt(sum_potU$coefficients[3,2]^2+sum_potU$coefficients[4,2]^2) + if (uCI_laDiff < Lim[[2]] & lCI_laDiff > Lim[[1]]) test_la_diff <- 0 else test_la_diff <- 1 + + #### EQ test on upper asymptote ratio ---- + as <- coeffs["as"] + at <- coeffs["at"] + uAsRatio <- compParm(potU, "a","/",display=F) + uAsCI <- c(uAsRatio[1]-qt(0.975,RSS_df)*uAsRatio[2], uAsRatio[1]+qt(0.975,RSS_df)*uAsRatio[2]) + #browser() + ds <- smu$coefficients["ds",1] + dt <- smu$coefficients["dt",1] + if (PureErrFlag) se_ds <- sqrt(VCOVpure["ds","ds"]) else se_ds <- smu$coefficients["ds",2] + if (PureErrFlag) se_dt <- sqrt(VCOVpure["dt","dt"]) else se_dt <- smu$coefficients["dt",2] + if (PureErrFlag) CoVarlog_d <- VCOVpure["dt","ds"] else CoVarlog_d <- vcovMU["dt","ds"] + if (PureErrFlag) DFs <- DFsPure else DFs <- nrow(all_l)-noConc + uAsCI2 <- ParamCI_F(dt,ds,se_dt, se_ds,CoVarlog_d, DFs, Conf=0.9975) + if (uAsCI2[1] > Lim[[7]] & uAsCI2[2] < Lim[[8]]) test_a <- 0 else test_a <- 1 + estUppA <- round(at/as,5) + + Dat$uAsCI <- uAsCI2 + + #### EQ test on slope ratio ---- + bs <- coeffs["bs"] + bt <- coeffs["bt"] + slopeRatio <- compParm(potU, "b","/",display=F) + slopeCI <- c(slopeRatio[1,1]-qt(0.975,RSS_df)*slopeRatio[1,2], slopeRatio[1,1]+qt(0.975,RSS_df)*slopeRatio[1,2]) + + bs <- smu$coefficients["bs",1] + bt <- smu$coefficients["bt",1] + if (PureErrFlag) se_bs <- sqrt(VCOVpure["bs","bs"]) else se_bs <- smu$coefficients["bs",2] + if (PureErrFlag) se_bt <- sqrt(VCOVpure["bt","bt"]) else se_bt <- smu$coefficients["bt",2] + if (PureErrFlag) CoVarlog_b <- VCOVpure["bt","bs"] else CoVarlog_b <- vcovMU["bt","bs"] + slopeCI2 <- ParamCI_F(bt,bs,se_bt, se_bs,CoVarlog_b, DFs, Conf=0.975) + if (slopeCI2[1] > Lim[[5]] & slopeCI2[2] < Lim[[6]]) test_b <- 0 else test_b <- 1 + estUppA <- round(at/as,5) + + Dat$slopeRatioCI <- slopeCI + + #### EQ test on lower As ratio ---- + + lAsRatio <- compParm(potU, "d","/",display=F) + slopeCI <- c(lAsRatio[1,1]-qt(0.975,RSS_df)*lAsRatio[1,2], lAsRatio[1,1]+qt(0.975,RSS_df)*lAsRatio[1,2]) + + as <- smu$coefficients["as",1] + at <- smu$coefficients["at",1] + if (PureErrFlag) se_as <- sqrt(VCOVpure["as","as"]) else se_as <- smu$coefficients["as",2] + if (PureErrFlag) se_at <- sqrt(VCOVpure["at","at"]) else se_at <- smu$coefficients["at",2] + if (PureErrFlag) CoVarlog_a <- VCOVpure["at","as"] else CoVarlog_a <- vcovMU["at","as"] + lAsCI2 <- ParamCI_F(at,as,se_at, se_as,CoVarlog_a, DFs, Conf=0.975) + if (lAsCI2[1] > Lim[[3]] & lAsCI2[2] < Lim[[4]]) test_d <- 0 else test_d <- 1 + estLowA <- round(at/as,5) + + Dat$lAsCI <- lAsCI2 + + #### EQtest on ratio of As difference ---- + AsDiffRatio <- (at-dt)/(as-ds) + + at_dt <- (at-dt) + as_ds <- (as-ds) + se_ds_asPure <- sqrt(VCOVpure["as","as"]+VCOVpure["ds","ds"]-2*VCOVpure["as","ds"]) + se_dt_atPure <- sqrt(VCOVpure["at","at"]+VCOVpure["dt","dt"]-2*VCOVpure["at","dt"]) + se_ds_asRMSE <- sqrt(vcovMU["as","as"]+vcovMU["ds","ds"]-2*vcovMU["as","ds"]) + se_dt_atRMSE <- sqrt(vcovMU["at","at"]+vcovMU["dt","dt"]-2*vcovMU["at","dt"]) + if (PureErrFlag) se_ds_as <- se_ds_asPure else se_ds_as <- se_ds_asRMSE + if (PureErrFlag) se_dt_at <- se_dt_atPure else se_dt_at <- se_dt_atRMSE + + AsDiffCI2 <- ParamCI_F(at_dt,as_ds,se_dt_at, se_ds_as,CoVarlog=0, DFs, Conf=0.975) + if (AsDiffCI2[1] > Lim[[11]] & AsDiffCI2[2] < Lim[[12]]) test_ad <- 0 else test_ad <- 1 + estLowA <- round(at/as,5) + + Dat$up_lowAs <- abs(ds-as) + + lowerCIlowerA <- lAsCI2[1]; lowerCIupperA <- uAsCI2[1]; upperCIlowerA <- lAsCI2[2]; upperCIupperA <- uAsCI2[2] + test_lowA <- test_d; test_uppA <- test_a + #browser() + res_tab <- data.frame(test= c("F-test on sign. of regression*", + "EQ test on lower asymptotes difference", + "EQ test ratio of lower asymptotes", + "EQ test ratio of Hill slopes", + "EQ test ratio of upper asymptotes", + "F-test on non-linearity*", + "EQ test ratio of asymptote difference", + "geom. rel. CI restr. model", + "geom. rel. CI unrestr. model"), + test_results = c(ifelse(p_F_regr<0.05,0,1), test_la_diff, test_lowA, test_b, test_uppA, + ifelse(p_F_nonlin>1,1, ifelse(p_F_nonlin<0.05,1,0)), test_ad, + testPOTr, test_c), + estimate = c(round(p_F_regr, 3), round(lAs_diff, 5), + estLowA, round(bs/bt,5), estUppA, p_F_nonlin, + round(at_dt/as_ds, 5), round(potAll2[1]*100,2),round(potAllU2[1]*100,2)), + lower_limit = c("-",Lim[[1]],Lim[[3]],Lim[[5]],Lim[[7]],"-",Lim[[11]],Lim[[9]],Lim[[9]]), + upper_limit = c("-",Lim[[2]],Lim[[4]],Lim[[6]],Lim[[8]],"-",Lim[[12]],Lim[[10]],Lim[[10]]), + lower_CI = c(RMSE_r, round(lCI_laDiff,3), round(lAsCI2[1],5), round(slopeCI2[1],5), + round(uAsCI2[1],5), "-", round(AsDiffCI2[1],5), round(potAll2[2],2), round(potAllU2[2],2)), + upper_CI = c(RMSE_pure, round(uCI_laDiff,3), round(lAsCI2[2],5), round(slopeCI2[2],5), + round(uAsCI2[2],5), "-", round(AsDiffCI2[2],5), round(potAll2[3],2), round(potAllU2[3],2)) + ) + return(res_tab) +} + +ANOVA4plUnresfunc <- function(ro_new, sigmoid) { + all_l <- melt(data.frame(ro_new), id.vars="log_dose", variable.name="replname", value.name = "readout") + all_len <- nrow(all_l) + isRef <- rep(c(1,0),1,each=all_len/2) + isSample <- rep(c(0,1),1,each=all_len/2) + all_l$isRef <- isRef + all_l$isSample <- isSample + all_l$Conc <- exp(all_l$log_dose) + all_l$readout[all_l$readout < 0] <- 0.01 + + pot <- drm(readout ~ Conc, isSample, data=all_l, fct=LL.4(names=c("b","d","a","c")), + pmodels=data.frame(1,1,1,isSample)) + potU <- drm(readout ~ Conc, isSample, data=all_l, fct=LL.4(names=c("b","d","a","c")), + pmodels=data.frame(isSample, isSample,isSample,isSample)) + SStreat <- round(sum((potU$predres[,1] - mean(all_l$readout))^2),5) + SStreat_df <- length(unique(all_l$log_dose))-1 + SSregr <- round(sum((predict(pot)-mean(all_l$readout))^2),5) + ## Non-parallel + SSnonparallel <- round(sum(resid(pot)^2) - sum(resid(potU)^2),5) + ## Preparation + SSprep <- round(sum((predict(lm(readout ~ isSample, all_l)) - mean(all_l$readout))^2),5) + ## Resid Err + RSS <- round(sum(potU$predres[,2]^2),5) + RSS_df <- nrow(all_l)-SStreat_df-1 + FitAnova <- anova(lm(readout ~ factor(Conc)*isSample, all_l)) + # PureErr + SSE <- FitAnova[4,3] + SSE_df <- FitAnova[4,1] + # Non-Linearity + SSnonlin <- round(sum((predict(lm(readout ~ factor(Conc)*isSample, all_l)) - predict(potU))^2),4) + LoF_df <- FitAnova[1,1]+FitAnova[2,1] + ## Total + SStot <- round(sum((all_l$readout -mean(all_l$readout))^2),5) + MSE <- RSS/RSS_df + noConc <- length(unique(all_l$Conc)) + AnovaDFs <- c(noConc-1, 1,3,noConc-4-1, nrow(all_l)-noConc, noConc, nrow(all_l)-noConc-noConc, nrow(all_l)-1) + p_SStreat <- round(pf((SStreat/AnovaDFs[1])/MSE, AnovaDFs[1],RSS_df, lower.tail = F),3) + p_SSprep <- round(pf((SSprep/AnovaDFs[2])/MSE, AnovaDFs[2],RSS_df, lower.tail = F),3) + p_SSregr <- round(pf((SSregr/AnovaDFs[3])/MSE, AnovaDFs[3],RSS_df, lower.tail = F),3) + p_SSnonp <- round(pf((SSnonparallel/AnovaDFs[4])/MSE, AnovaDFs[3],RSS_df, lower.tail = F),3) + p_SSLoF <- round(pf((SSnonlin/LoF_df)/(SSE/SSE_df), LoF_df,SSE_df, lower.tail = F),5) + + ANOVAtab <- data.frame(Source = c("Treatment","Preparation","Regression", + "Non-Parallelism","Residual Error","Non-linearity", + "Pure Error","Total"), + DF = AnovaDFs, + SumSquares = c(SStreat, SSprep,SSregr, SSnonparallel, + RSS, SSnonlin,SSE, SStot), + MeanSquares = c(round(SStreat/AnovaDFs[1],3), SSprep, round(SStreat/AnovaDFs[3],3),round(SSnonparallel/AnovaDFs[4],3), + round(MSE,5), round(SSnonlin/LoF_df,5), round(SSE/SSE_df,5),""), + "F-value" = c(round((SStreat/AnovaDFs[1])/MSE,5), round((SSprep/AnovaDFs[2])/MSE,5), + round((SSregr/AnovaDFs[3])/MSE,5),round((SSnonparallel/AnovaDFs[4])/MSE,5), + "",round((SSnonlin/LoF_df)/(SSE/SSE_df),5),"",""), + "p_value" = c(round(p_SStreat,3), p_SSprep, round(p_SSregr,3), p_SSnonp,"",p_SSLoF,"","") + ) + + return(ANOVAtab) +} + +perConcTab <- function(ro_new, noDilSeries) { + Reftab <- ro_new[,c(1:noDilSeries)] + Testtab <- ro_new[,c((noDilSeries+1):(2*noDilSeries))] + tReftab <- t(Reftab) + colnames(tReftab) <- round(ro_new[,ncol(ro_new)],5) + + avs <- apply(tReftab,2,mean) + sds <- apply(tReftab,2,sd) + cv <- sds/avs*100 + tReftab2 <- rbind(tReftab, avs,sds,cv) + + tTesttab <- t(Testtab) + colnames(tTesttab) <- round(ro_new[,ncol(ro_new)],5) + + avs_test <- apply(tTesttab,2,mean) + sds_test <- apply(tTesttab,2,sd) + cv_test <- sds_test/avs_test*100 + tTesttab2 <- rbind(tTesttab, avs_test,sds_test,cv_test) + concTab <- rbind(tReftab2, tTesttab2) + return(concTab) + +} + +divFUN <- function(x,Div,N,res,noDil) { + N <- N+1 + y <- x/Div + res <- c(res,y) + if (N==noDil) { return(res) } + divFUN(y,Div,N,res,noDil) +} + + + +#### ui ---- + +ui <- dashboardPage( + dashboardHeader(title = "Plateflow"), + dashboardSidebar( + sidebarMenu( + img(src="logo.png", width=230), + menuItem("Home", tabName="home", icon=icon("home")), + menuItem("Data template", tabName = "template", icon=icon("table"), + menuSubItem( tags$li(a("EXCEL File", target="self",href="TestFile.xlsx"))) + ), + # menuItem("User Manual /Validation", tabName = "manual", icon=icon("book"), # tabName here and in dashboard body need to be identical + # menuSubItem(icon = NULL, tags$li(a("Document", target="self",href="UserManual.pdf"))) + # ), + menuItem("EXCEL upload", tabName="Dataupload", icon=icon("magnet", lib="glyphicon")), + menuItem("4PL + report", tabName="fourPL", icon=icon("chart-line", lib="font-awesome")), + #menuItem("XLSX diagnostics", tabName="XLdiagn", icon=icon("chart-bar", lib="font-awesome")), + menuItem("Linear regression + report", tabName="pla", icon=icon("pencil", lib="glyphicon")), + menuItem("Wizard", tabName="wizard", icon=icon("chart-column", lib="font-awesome")), + menuItem("Documentation", tabName="documentation", icon=icon("chart-area", lib="font-awesome")) + ), + tags$footer(HTML(paste(tags$strong(tags$u("InnerAnalytics")), paste(rep(" ",9), collapse=""), + "Developer:", paste(rep(" ",9), collapse=""), + "Host on:", paste(rep(" ",9), collapse=""), + "Version:")), + align="left", style= + "position:fixed; bottom:0;width=100%; background: #FFC337BB; font-family: Times New Roman; font-size:100%; + padding: 5px; color:#4545BA; box-sizing: border-box; z-index: 1000;")), + dashboardBody( + fluidPage( + tabItems( + tabItem(tabName = "home", htmlOutput("homePage")), + tabItem(tabName = "Dataupload", uiOutput("Dataupload")), + tabItem(tabName = "fourPL", uiOutput("fourPL")), + #tabItem(tabName = "XLdiagn", uiOutput("XLdiagn")), + tabItem(tabName = "pla", uiOutput("pla")), + tabItem(tabName = "wizard", uiOutput("wizard")), + tabItem(tabName = "documentation", uiOutput("docu")) + ) + + ) + ), skin="blue" +) + + +#### server ---- +server <- function(input, output, session) { + ReportParS <- reactiveValues() + IPReportParS <- reactiveValues() + + #### renderUIs ---- + output$homePage <- renderUI({ + navbarPage("Home", + tabPanel("Introduction", + tags$img(src="logo.png", class="adv_logo"), + h4("Introduction to the bioassay software"), + tags$mark("linear regression"), br(), + column(4, + tags$table(id="dose-table", + 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), + 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), + 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) + )) + + ), + tabPanel("Documentation", + h4("Introduction "), + h4("Information on dilution setting"), + "(for details see:", a(href="ADONIS.pdf","Whitepaper", download=NA, target="_blank"),")",tags$br(), + "Bend points are calculated according to following formula:", + withMathJax(" $$bp_{1/2} = \\pm\\frac{1.31696}{Hill's slope}$$")), + tabPanel("Configuration", + verbatimTextOutput("sessioninfo")) + ) + }) + + output$Dataupload <- renderUI({ + navbarPage(title="Information", + tabPanel(title = "Real data", + tabsetPanel( + tabPanel("Data input", + + + column(3, + #img(src="Screenshot.png", width=200), + box(title = "Upload", status="warning",solidHeader = T, width=12, "Please upload your EXCEL file here", + fileInput("iFile",'',accept=".xlsx")), + uiOutput(outputId = "sheetName"), + "For data format in the EXCEL file see Data template", + "If no data are uploaded, the settings to the right are used for calculations.", + + tags$head(tags$style(HTML("label {font-size:80%;margin-bottom: 3px;margin-top: 3px;}"))), + + div(checkboxInput("PureErr", "Should pure error be used for calculation of CIs?", FALSE), + style = "font-size: 24px !important;color: #C2173F"), + checkboxGroupInput("selectedSSTs", "Which suitability tests to be used?", choices= c("F-test on Regr."="1", + "EQ-test on lower asymptote difference"= "2", + "EQ-test on ratio of lower asymptote"= "3","EQ-test on ratio of Hill slopes"= "4", + "EQ-test on ratio of upper asymptote"= "5", "F-test on non-linearity"="6", + "EQ-test on ratio of asymptote differences"= "7"), + selected= c("1","2","3","4","5","6","7")), + #actionLink("selectall","SelectAll"), + h5("\n\n\n Author: Franz Innerbichler, InnerAnalytics")), + + ), + tabPanel("4pl-Analysis", + tags$style(HTML("pre { color: black; background-color: #FFE1FF; + font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;font-size: 12px;} ")), + + wellPanel( + fluidRow( + column(4, + #h5("Diagnostics only shown if EXCEL is uploaded"), + htmlOutput("PureErrW2"), + tags$head(tags$style("#PureErrW2{color: red; + font-size: 16px; + font_style: italic;}")), + tableOutput("Filesampl"), + tableOutput("relpotTestTab"), + plotOutput("relpotTestPlot", width="300px", height="150px"), # Pot CI plot + h4("Akaike Information Criterion"), + tableOutput("AIC"), + h5("First row: restricted model; 2nd row: unrestricted model"), + h5("Smaller values of AIC indicate better fit to the data"), + tableOutput("VarDiagn") + ), + column(8, + plotOutput("XLplot"), + + plotOutput("diagnplot"), + + tableOutput("ANOVAXLS"), + DTOutput("EQtests")) + + ))), + tabPanel("linear Analysis", + sidebarLayout( + sidebarPanel( + width=3, + fluidRow( + column(6, + numericInput("Limits",p("limit to be >", bsButton("q4",label="", icon=icon("info"), style="primary", size="extra-small")), + bsPopover(id="q4", title="", content="The calculated limits ..."))) + )), + mainPanel( + tabsetPanel(id="tabs", + tabPanel("linear PLA", + box(title="ANOVA table", status="primary",solidHeader = T, width=12, + tableOutput("Anovatab")), + column(6, + htmlOutput("PureErrW3"), + tags$head(tags$style("#PureErrW3{color: red; + font-size: 16px; + font_style: italic;}")), + plotOutput("plotLin"), + "Delta method is used for potency CIs", + DT::dataTableOutput("pottab"), + h4("Unrestricted linear model (SSSI):"), + tableOutput("SummaryModABu"), + h4("Restricted linear model (CSSI):"), + tableOutput("SummaryModAB")), + column(3, + h3("Tests for linear PLA):"), + DT::dataTableOutput("TESTSlin"), + 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"), + "SST CI for difference of slopes:", + tableOutput("SlopeDiffCI")), + column(3, + h3("ANOVA for parallel line assay"), + DT::dataTableOutput("ANOVAlin"))), + tabPanel("Report", + h4("Settings for report") + )) + ) + ) + ), + tabPanel("parameter estimates", + column(3,style = "background: #4FCBD922", + br(), + h4("Regression results restricted"), + tableOutput("coeffs_r"), + "Bend points restricted", + tableOutput("bends_r2")), + column(3,style = "background: #B5C74022", + br(), + h4("Regression results unrestricted"), + tableOutput("coeffs_unr")), + column(3,style = "background: #F9545422", + h4("Regression results (ln-transformed)"), + tableOutput("logcoeffs_r"), + tableOutput("bends_unr2"), + + tableOutput("logcoeffs_unr")) + ), + 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}"), + ) + ) + ) + ) + }) + + + + + output$fourPL <- renderUI({ + navbarPage(title="4PL", + tabPanel("Analysis and Plots", + #sidebarLayout( + # sidebarPanel( + # width=4, + # fluidRow( + # ) + # ), + mainPanel(width=12, + tabsetPanel(id="tabs", + tabPanel("Settings", + h4("Settings of 4PL regression"), + div(checkboxInput("PureErr4pl", "Should pure error be used for calculation of CIs?", FALSE), + style = "font-size: 24px !important;color: #C2173F"), + + h4("User help"), + h5("If new dilutions are entered, please adjust EC50 to avoid calculation errors"), + # numericInput("Limits",p("limit to be >", bsButton("q4",label="", icon=icon("info"), style="primary", size="extra-small")), + # bsPopover(id="q4", title="", content="The calculated limits ...")), + #h5("Diagnostics only shown if EXCEL is uploaded"), + column(2,style = "background: #7FAEFF", + #actionButton("StartCalc", "Click, when calculations to be started"), + h4("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) + ), + column(2,style = "background: #7FAEFF", + 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) + ), + column(2,style = "background: #627ADD", + h4("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) + ), + column(2,style = "background: #627ADD", + + 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) + ), + column(2,style = "background: #4FCBD9", + h4("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), + verbatimTextOutput("dilutions") + ), + + column(2, + h3("Settings"), + helpText("Vary the slider to see the effect of special cause"), + sliderInput("sdfac","Variability as % of lower to upper asymptote", max=10, value=3, min=0.1, step=0.1), + checkboxInput("heterosked","heteroskedastic noise", FALSE), + sliderInput("potencydiff","potency of test (%)", max=200, min=50, value=100, step=1), + sliderInput("outlL","outlier in lower asymptote", min=0, max=1.5, value=0, step=0.1), + sliderInput("outlM","outlier in mid part", 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"), + verbatimTextOutput("logdil") + + #) + ), + #### 4pl fits ---- + tabPanel("4pl-fit", + tags$head(tags$style("#PureErrW2{color: red; + font-size: 10px; + font_style: italic;}")), + wellPanel( + fluidRow( + column(10, + tags$style(span(htmlOutput("PureErrW3"), style="color: red")), + htmlOutput("PureErrW3"), + + plotOutput("plot", width = "80%"), + DT::dataTableOutput("pottab4pl"), + "Footnote: test performed on relative CIs.", + + DTOutput("EQtests4pl"), # SSTs + h5("*...The estimate for F-test on regression and on non-linearity is the p-value"), + h5("F-test on regression passes if F-value > F-crit and thus p < 0.05"), + h5("F-test on non-linearity passes if F-value < F-crit and thus p > 0.05"), + h5("Test results outcome: 0 ... test passed (for EQ tests: CI within limits); + 1 ... test failed (for EQ tests CI not within limits); + -1 ... calculations unbound/denominator too close to 0"), + #plotOutput("CIplot, height=50%") + ), + column(8, + "4 PL ANOVA unrestricted", + box(title = "ANOVA unrestricted", status="warning",solidHeader = T, width=12, "", + DT::dataTableOutput("ANOVA")), + h5("Please note that for the CIs of rel. potency the RSS of the restricted model is used"), + h5("RSS ... 'Residual error' in the SumSquares column"), + h5("MSE ... 'Residual error' in the MeanSquaress column"), + h5("SSE ... 'Pure error' in the SumSquares column"), + h5("RMSE ... Square root of the 'Residual Error' in the MeanSquares column"), + 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", + h4("ln-transformed y-axis plots"), + plotOutput("plot4plTrans", width = "80%"), + DT::dataTableOutput("pottab4plTrans"), + ), + 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}"), + ) + ) + ) + #) + ) + ) + }) + + + output$pla <- renderUI({ + navbarPage(title="pla", + tabPanel("Analysis and Plots", + + ) + ) + }) + + output$wizard <- renderUI({ + navbarPage(title="Dilution setting", + tabPanel("Plots", + sidebarLayout( + sidebarPanel( + width=3, + fluidRow( + column(6, + numericInput("Limits",p("limit to be >", bsButton("q4",label="", icon=icon("info"), style="primary", size="extra-small")), + bsPopover(id="q4", title="", content="The calculated limits ..."))) + )), + mainPanel( + tabsetPanel(id="tabs", + tabPanel("4pl", + box(title="ANOVA table", status="primary",solidHeader = T, width=12, + tableOutput("Anovatab")), + column(4, + h3("Confidence intervals"), + tableOutput("CIs"), + "The confidence intrval table is interaactive for changes in: variability slider (%SD), potency of test-slider, + and 'Adjust the dilutions'-slider", + tableOutput("optimalDils"), + selectInput(inputId="scenario", label= "Select an 'optimal' scenario:", choices = c("scenario 2","scenario 3","scenario 6","steep slope"))), + column(5, + plotOutput("plotfordilutions"), + h4("in grey: most extreme bend point lines of theoretical samples with 50% and 200% potency"), + sliderInput("dilslider", "Adjust the dilutions(+-change in %)", min = -100,max=100, value=0, step=1, round=0), + checkboxInput("fixupper","Fix highest concentration (if unticked, the center is fixed)",FALSE), + h5("Dilution factors"), + tableOutput("adjlogdil"), + "Short guidance: wider dilution ranges increase the CIs of rel. potency, and decrease the CIs of upper and lower asymptote ratios, as well as Hill's slope ratios", br(), + "Narrower dilution ranges decrease the CIs of rel. potency, and increase the CIs of upper and lower asymptote ratios, ands Hill's slope ratios",), + column(3, + h3("Bend points"), + tableOutput("bps"), + tableOutput("extremebps"), + h4("Explanation of the plots") + )), + tabPanel("Report", + h4("Settings for report") + )) + ) + ))) + }) + + + + v <- reactiveValues(num_dose=0, next.dose.t=0) + + sigmoid <- reactive({ + sig <- c(input$lowAsymptREF, input$lowAsymptTEST,input$uppAsymptREF,input$uppAsymptREF, + input$slopeREF,input$slopeTEST,input$EC50,input$potDiff) + sig + }) + + CONC <- reactive({ + Konz_ <- c(input$CONC1,input$CONC2,input$CONC3,input$CONC4, + input$CONC5,input$CONC6,input$CONC7,input$CONC8, + input$CONC9,input$CONC10,input$CONC11,input$CONC12) + if (any(na.omit(Konz_)==0)) Konz_[Konz_ ==0] <- 0.0000001 + Konz <- na.omit(Konz_) + }) + + Dils <- reactive({ + Dilutions <- c(input$ConcStart,input$dilutionFac,input$NoDil,input$NoDilSer) + }) + + #### input EXCEL file ---- + + observe({ + if (!is.null(input$iFile)) { + inFile <- input$iFile + ext <- tools::file_ext(inFile$name) + file.rename(inFile$datapath, paste(inFile$datapath, ".xlsx",sep="")) + t.filelocation <- gsub('\\\\','/',paste(inFile$datapath, ext,sep=".")) + sheets <- openxlsx::getSheetNames(t.filelocation) + dat <- lapply(sheets, openxlsx::read.xlsx, xlsxFile = t.filelocation) + names(dat) <- sheets + Dat$wb <- dat + names(Dat$wb) <- sheets + Dat$sheets <- sheets + Dat$FileName <- input$iFile[["name"]] + + } + }) + output$sheetName <- renderUI({ + if (!is.null(Dat$wb)) { + #browser() + cnSheets <- Dat$sheets + cnSheets2 <- c("please choose", cnSheets) + selectInput(inputId = "sheet", label="Select a sheet:",choices = cnSheets) + } + }) + observeEvent(input$sign_out, { + unlink(input$iFile$datapath) + reset(id = "") # from shinyjs package + }) + + + #### process XLSX file ---- + observe({ + if (!is.null(input$iFile)) { + if (!is.null(input$sheet)) { + if (input$sheet != "please choose") { + #browser() + + XLdat <- Dat$wb[input$sheet][[1]] + if (is.null(XLdat)) XLdat <- Dat$wb[Dat$sheets[1]][[1]] + cn <- colnames(XLdat) + logI <- grep("log", cn) + logDoseI <- grep("log_dose", cn) + if (length(logI)>0 & length(logDoseI)==0) { + XLdat$log_dose <- XLdat[,logI] + XLdat2 <- XLdat[,-logI] + CORro <- cor(XLdat$log_dose, XLdat[,3]) + } else if (length(logI)==0 & length(logDoseI)==0) { + Ind <- grep("dilu|dose|Dose|Conc|conc",cn) + XLdat$log_dose <- log(XLdat[,Ind]) + CORro <- cor(XLdat[,Ind], XLdat[,3]) + XLdat2 <- XLdat[,-Ind] + } else if (length(logI)>0 & length(logDoseI)>0) { + XLdat2 <- XLdat + CORro <- cor(XLdat[,logI], XLdat[,3]) + } + Dat$EXCEL <- XLdat2 + PureErrFlag <- input$PureErr + warning_text2 <- reactive({ + ifelse(PureErrFlag, 'Pure Error is selected', '') + }) + output$PureErrW2 <- renderText(warning_text2()) + + noDilSeries <-(ncol(XLdat2)-1)/2 + noDils <- nrow(XLdat2) + Dat$noDilSeriesXL <- noDilSeries + + all_l <- melt(data.frame(XLdat2), id.vars="log_dose",variable.name = "replname", value.name = "readout") + isRef <- rep(c(1,0),1,each=nrow(XLdat2)*noDilSeries) + isSample <- rep(c(0,1),1,each=nrow(XLdat2)*noDilSeries) + all_l$isRef <- isRef + all_l$isSample <- isSample + all_l$Conc <- exp(all_l$log_dose) + # all_l$readout[all_l$readout < 0] <- 0.01 + REP$all_l <- all_l + + #### XLSX eval ---- + if (CORro<0) SLOPE <- -1 else SLOPE <- 1 + ec50est <- (max(all_l$log_dose)+min(all_l$log_dose))/2 + startlist <- list(a=min(all_l$readout), b=SLOPE, d=max(all_l$readout), cs=ec50est,r=0) + tryCatch({ + mr <- gsl_nls(fn = readout ~ a+(d-a)/(1+exp(b*(cs-r*isSample-log_dose))), + data=all_l, + start=startlist, + control=gsl_nls_control(xtol=1e-6,ftol=1e-6, gtol=1e-6)) + }, + error = function(err) { + err$message + }) + + startlistmu <- list(as=min(all_l$readout), bs=SLOPE, ds=max(all_l$readout), cs=ec50est, + at=min(all_l$readout), bt=SLOPE, dt=max(all_l$readout), r=0) + tryCatch({ + 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)) + }, + error = function(err) { + err$message + }) + + Smr <- summary(mr) + Smu <- summary(mu) + coeffsMR <- Smr$coefficients[,1] + coeffsMU <- Smu$coefficients[,1] + Dat$coeffsMRes <- coeffsMR + names(coeffsMU) <- c("lowAsym REF", "slope REF","upperAsym REF","EC50 REF","lowAsym TEST","slope TEST","upperAsym TEST","r") + + if (!PureErrFlag) { + pot_est <- exp(confintd(mr, "r", method="asymptotic")) + potU_est <- exp(confintd(mu, "r", method="asymptotic")) + colnames(pot_est) <- c("estimate","lowerCI","upperCI") + colnames(potU_est) <- c("estimate","lowerCI","upperCI") + } else { + FitAnova <- anova(lm(readout ~ factor(log_dose)*isSample, all_l)) + meanPureErr <- FitAnova[4,3] + DFsPure <- FitAnova[4,1] + VCOV <- vcov(mr) + V_V <- VCOV/Smr$sigma^2 + VCOVpure <- V_V*meanPureErr + SEsPure <- sqrt(diag(V_V)*meanPureErr) + pot_est <- data.frame(estimate=exp(coeffsMR[5]), lowerCI = exp(coeffsMR[5]-qt(0.975,DFsPure)*SEsPure[5]), + upperCI = exp(coeffsMR[5]+qt(0.975,DFsPure)*SEsPure[5])) + VCOVu <- vcov(mu) + V_Vu <- VCOVu/Smu$sigma^2 + #VCOVpure <- V_Vu*meanPureErr + SEsPureU <- sqrt(diag(V_Vu)*meanPureErr) + potU_est <- data.frame(estimate=exp(coeffsMU[7]), lowerCI = exp(coeffsMU[7]-qt(0.975,DFsPure)*SEsPureU[7]), + upperCI = exp(coeffsMU[7]+qt(0.975,DFsPure)*SEsPureU[7])) + + } + + pot <- drm(readout ~ Conc, isSample, data=all_l, fct=LL.4(names=c("b","d","a","c")), + pmodels=data.frame(1,1,1,isSample)) + potU <- drm(readout ~ Conc, isSample, data=all_l, fct=LL.4(names=c("b","d","a","c")), + pmodels=data.frame(isSample, isSample,isSample,isSample)) + SR <- summary(pot) + SU <- summary(potU) + coeffs_UN <- potU$coefficients + coeffs_UN[1] <- ifelse(xor(CORro>0, coeffs_UN[1]>0), -coeffs_UN[1],coeffs_UN[1]) + coeffs_UN[2] <- ifelse(xor(CORro>0, coeffs_UN[2]>0), -coeffs_UN[2],coeffs_UN[2]) + coeffs_UN[7:8] <- log(coeffs_UN[7:8]) + POTU <- EDcomp(potU, percVec = c(50,50), interval="delta",display=F) + Dat$potDiffXL <- POTU[1]*100 + RMSE_unr_diagn <- sqrt(SU$resVar) + RMSE_res_diagn <- sqrt(SR$resVar) + up_lowDiffDiagn <- SU$coefficients[5,1] - SU$coefficients[3,1] + ProzSD_diagn <- RMSE_unr_diagn*100/up_lowDiffDiagn + Dat$ProzSD_XL <- ProzSD_diagn + + observe({ + pot_est3 <- data.frame(pot_est*100) + MaxPl <- max(input$upperPot, pot_est3$upperCI) + MinPl <- min(input$lowerPot, pot_est3$lowerCI) + MaxPl_ <- MaxPl*1.2 + MinPl_ <- MinPl*0.8 + #browser() + p_relCI <- ggplot(data=pot_est3, aes(xmin=lowerCI, xmax=upperCI, y=1)) + + geom_linerange(size=4, col="darkseagreen",alpha=0.5) + + geom_point(aes(x=estimate, y=1), col="grey15", shape=13, size=10) + + geom_vline(xintercept = c(input$lowerPot, input$upperPot), col="indianred") + + annotate("text", x=input$lowerPot-13, y=1.040, label=paste("lower EAC:", input$lowerPot), col="indianred") + + annotate("text", x=input$upperPot+13, y=1.040, label=paste("upper EAC:", input$upperPot), col="indianred") + + annotate("text", x=pot_est3$lowerCI-10, y=1.020, label=paste("lower CL:", round(pot_est3$lowerCI,1)), col="darkgreen") + + annotate("text", x=pot_est3$upperCI+10, y=1.020, label=paste("upper CL:", round(pot_est3$upperCI,1)), col="darkgreen") + + annotate("text", x=pot_est3$estimate, y=0.98, label=paste("rel. potency:", round(pot_est3$estimate,1)), col="black") + + ylim(c(0.95, 1.05)) + + xlim(c(MinPl_,MaxPl_)) + + xlab("relative potency + confidence interval") + + theme_bw() + + theme(axis.title.y=element_blank(), + axis.text.y=element_blank(), + axis.ticks.y=element_blank()) + output$relpotTestPlot <- renderPlot({ + p_relCI + }) + REP$relpotTestPlot <- p_relCI + + output$relpotTestTab <- renderTable({ pot_est3 }) + }) + + SStreat <- round(sum((potU$predres[,1] - mean(all_l$readout))^2),5) + SStreat_df <- length(unique(all_l$log_dose))-1 + SSregr <- round(sum((predict(pot)-mean(all_l$readout))^2),5) + ## Non-parallel + SSnonparallel <- round(sum(resid(pot)^2) - sum(resid(potU)^2),5) + ## Preparation + SSprep <- round(sum((predict(lm(readout ~ isSample, all_l)) - mean(all_l$readout))^2),5) + ## Resid Err + RSS <- round(sum(potU$predres[,2]^2),5) + RSS_df <- nrow(all_l)-SStreat_df-1 + FitAnova <- anova(lm(readout ~ factor(Conc)*isSample, all_l)) + # PureErr + SSE <- FitAnova[4,3] + SSE_df <- FitAnova[4,1] + # Non-Linearity + SSnonlin <- round(sum((predict(lm(readout ~ factor(Conc)*isSample, all_l)) - predict(potU))^2),4) + LoF_df <- FitAnova[1,1]+FitAnova[2,1] + ## Total + SStot <- round(sum((all_l$readout -mean(all_l$readout))^2),5) + MSE <- RSS/RSS_df + noConc <- length(unique(all_l$Conc)) + AnovaDFs <- c(noConc-1, 1,3,noConc-4-1, nrow(all_l)-noConc, noConc, nrow(all_l)-noConc-noConc, nrow(all_l)-1) + p_SStreat <- round(pf((SStreat/AnovaDFs[1])/MSE, AnovaDFs[1],RSS_df, lower.tail = F),3) + p_SSprep <- round(pf((SSprep/AnovaDFs[2])/MSE, AnovaDFs[2],RSS_df, lower.tail = F),3) + p_SSregr <- round(pf((SSregr/AnovaDFs[3])/MSE, AnovaDFs[3],RSS_df, lower.tail = F),3) + p_SSnonp <- round(pf((SSnonparallel/AnovaDFs[4])/MSE, AnovaDFs[3],RSS_df, lower.tail = F),3) + p_SSLoF <- round(pf((SSnonlin/LoF_df)/(SSE/SSE_df), LoF_df,SSE_df, lower.tail = F),5) + + ANOVAtab2 <- data.frame(Source = c("Treatment","Preparation","Regression", + "Non-Parallelism","Residual Error","Non-linearity", + "Pure Error","Total"), + DF = round(AnovaDFs,0), + SumSquares = c(SStreat, SSprep,SSregr, SSnonparallel, + RSS, SSnonlin,SSE, SStot), + MeanSquares = c(round(SStreat/AnovaDFs[1],3), SSprep, round(SStreat/AnovaDFs[3],3),round(SSnonparallel/AnovaDFs[4],3), + round(MSE,5), round(SSnonlin/LoF_df,5), round(SSE/SSE_df,5),""), + "F-value" = c(round((SStreat/AnovaDFs[1])/MSE,5), round((SSprep/AnovaDFs[2])/MSE,5), + round((SSregr/AnovaDFs[3])/MSE,5),round((SSnonparallel/AnovaDFs[4])/MSE,5), + "",round((SSnonlin/LoF_df)/(SSE/SSE_df),5),"",""), + "p_value" = c(round(p_SStreat,3), p_SSprep, round(p_SSregr,3), p_SSnonp,"",p_SSLoF,"","") + ) + + output$ANOVAXLS <- renderTable({ ANOVAtab2 }) + + REP$ANOVAXLS <- ANOVAtab2 + + #browser() + + startlistlog <- list(a=min(log(all_l$readout)), b=SLOPE, d=max(log(all_l$readout)), cs=ec50est,r=0) + tryCatch({ + mrlog <- gsl_nls(fn = log(readout) ~ a+(d-a)/(1+exp(b*(cs-r*isSample-log_dose))), + data=all_l, + start=startlistlog, + control=gsl_nls_control(xtol=1e-6,ftol=1e-6, gtol=1e-6)) + }, + error = function(err) { + print("Error in mrlog gsl_nls") + }) + + startlistmulog <- list(as=min(log(all_l$readout)), bs=SLOPE, ds=max(log(all_l$readout)), cs=ec50est, + at=min(log(all_l$readout)), bt=SLOPE, dt=max(log(all_l$readout)), r=0) + tryCatch({ + mulog <- gsl_nls(fn = log(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=startlistmulog, + control=gsl_nls_control(xtol=1e-6,ftol=1e-6, gtol=1e-6)) + }, + error = function(err) { + print("Error in murlog gsl_nls") + }) + logpot <- drm(log(readout) ~ Conc, isSample, data=all_l, fct=LL.4(names=c("b","d","a","c")), + pmodels=data.frame(1,1,1,isSample)) + logpotU <- drm(log(readout) ~ Conc, isSample, data=all_l, fct=LL.4(names=c("b","d","a","c")), + pmodels=data.frame(isSample, isSample,isSample,isSample)) + Smrlog <- summary(mrlog)$coefficients + Smulog <- summary(mulog)$coefficients + SUlog <- summary(logpotU) + SRlog <- summary(logpot) + RMSE_unrlog_diagn <- sqrt(SUlog$resVar) + RMSE_reslog_diagn <- sqrt(SRlog$resVar) + + up_lowDifflogDiagn <- SUlog$coefficients[5, 1] - SUlog$coefficients[3, 1] + ProzSDlog_diagn <- RMSE_unrlog_diagn * 100 / up_lowDifflogDiagn + + #### Diagnostic RMSE table #### + DiagnTable <- data.frame(parameter = c("RMSE unrestricted", "RMSE_restr.", "Diff_upper-lowerAsymp", "%SD (unrestricted)", + "RMSE log_unrestricted", "RMSE log_restr", "diff_up-lowAsymp_log", "%SD (log unrestricted)"), + result = c(round(RMSE_unr_diagn, 4), round(RMSE_res_diagn, 4), + round(up_lowDiffDiagn, 4), round(ProzSD_diagn, 4), + round(RMSE_unrlog_diagn, 4), round(RMSE_reslog_diagn, 4), + round(up_lowDifflogDiagn, 4), round(ProzSDlog_diagn, 4))) + + Dat$DiagnTable <- DiagnTable + REP$DiagnTable <- DiagnTable + + logpotest <- exp(confintd(mrlog, "r", method = "asymptotic")) # compParm(logpot, "c") + logpotuest <- exp(confintd(mulog, "r", method = "asymptotic")) # compParm(logpotu, "c") + + # 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])) + colnames(logpotest) <- c("estimate", "lowerCI", "upperCI") + + colnames(logpotuest) <- c("estimate", "lowerCI", "upperCI") + #browser() + cnXL <- colnames(XLdat2) + Filesample <- data.frame(Test = c("File name", "samples"), Test2=c(Dat$FileName, paste(cnXL[1], " vs ", cnXL[4]))) + colnames(Filesample) <- c("", "") + output$Filesampl <- renderTable({ Filesample }, rownames = F) + + UnRPLAausw <- data.frame(Information = c("model", "lower asymptote Ref", "Hill's slope Ref", "upper asymptote Ref","EC50 Ref", + "lower asymptote Test", "Hill's slope Test", + "upper asymptote Test","EC50 Difference", + "relative potency", "lower CI", "upper CI"), + Results = unlist(c("UNRESTRICTED", round(coeffsMU, 3), round(potU_est*100, 3)))) # von psl_nls + + # "log relative potency", "log lower CI", "log upper CI", round(logpotest, 3), round(compParm(potu, "c", display = F), 3) + + output$coeffs_unr <- renderTable({ + UnRPLAausw + }) + + #browser() + UnRPLAausw2 <- data.frame(Dat$bendpointsTRANS) + if (length(UnRPLAausw2) > 0) { + colnames(UnRPLAausw2) <- c("bendpoints log") + UnrBendLog <- data.frame(Bendpoint = c("REF_lower","REF_upper", + "TEST_lower","REF_lower"), + bendpoints_logscale = UnRPLAausw2) + + output$bends_unr2 <- renderTable({ + UnrBendLog + }) + } + REP$UnRPLAausw <- UnRPLAausw + REP$UnRPLAausw2 <- UnRPLAausw2 + + # browser() + coeffs_R <- coeffsMR # pot$coefficients + coeffs_R[5] <- coeffs_R[4] - coeffs_R[5] + 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 (Eingeschränktes Modell) --- + PLAAusw <- data.frame( + Information = c("model", "lower asymptote", "Hill's slope", "upper asymptote","EC50 Ref", + "EC50 Test", "relative potency", + "lower CI", "upper CI"), + Results = unlist(c("RESTRICTED", round(coeffs_R, 3), + round(pot_est[1, ] * 100, 3)))) # von gs1_nls + output$coeffs_r <- renderTable({ PLAAusw }) + + PLAAusw2 <- data.frame(Dat$bendpoints) + output$bends_r2 <- renderTable({ PLAAusw2 }, digits = 3, rownames = T) + + REP$PLAausw <- PLAAusw + REP$PLBend <- PLAAusw2 + + # --- Koeffizienten-Extraktion --- + logcoeffs_R <- Smrlog[, 1] # logpot$coefficients + names(logcoeffs_R) <- c("lower A", "Hill's slope", "upper A", "EC50 REF","EC50 DIFF") + + # --- Ergebnistabelle: LOG RESTRICTED --- + + LogPLAAusw <- data.frame( + Information = c("model", "lower asymptote", "Hill's slope", "upper asymptote","EC50 Ref", + "EC50 difference", "log relative potency", + "log lower CI", "log upper CI"), + Results = unlist(c("LOG RESTRICTED", round(logcoeffs_R, 3), + round(logpotest * 100, 3)))) # von gs1_nls + + output$logcoeffs_r <- renderTable({ LogPLAAusw }) + REP$LogPLAausw <- LogPLAAusw + + logcoeffs_UNR <- Smulog[,1] + names(logcoeffs_UNR) <- c("lower asymptote Ref", "Hill's slope Ref", "upper asymptote Ref","EC50 Ref", + "lower asymptote Test", "Hill's slope Test", "upper asymptote Test","EC50 Diff" + ) + + # --- Ergebnistabelle: LOG UNRESTRICTED --- + + LogUnrPLAAusw <- data.frame( + Information = c("model", "lower asymptote Ref", "Hill's slope Ref", "upper asymptote Ref","EC50 Ref", + "lower asymptote Test", "Hill's slope Test", "upper asymptote Test","EC50 Diff" , + "relative potency", "lower CI", "upper CI"), + + Results = unlist(c("LOG UNRESTRICTED", round(logcoeffs_UNR, 3), + round(logpotest * 100, 3)))) # von gs1_nls + + output$logcoeffs_unr <- renderTable({ + LogUnrPLAAusw + }) + REP$LogUnrPLAausw <- LogUnrPLAAusw + #browser() + Dat$coeffs_UN <- coeffs_UN + + + if (exists("Ind")) { + Dat$dilution <- XLdat[,Ind] + } else Dat$dilution <- exp(XLdat[,logI]) + # --- Plot-Ausgabe --- + output$XLplot <- renderPlot({ + plot_f(XLdat2, sigmoid = NULL, det_sig = coeffs_UN, TransFlag=F) + }) + + REP$XLdat2 <- XLdat2 + + # --- Diagnose-Plots (Residualanalyse) --- + output$diagnplot <- renderPlot({ + op <- par(mfrow = c(2, 2), mar = c(3.2, 3.2, 2, .5), mgp = c(2, .7, 0)) + + # 1. Residuals vs Fitted + plot(residuals(pot) ~ fitted(pot), main = "Residuals restricted") + abline(h = 0) + qqnorm(residuals(pot)) + qqline(residuals(pot)) + plot(residuals(potU) ~ fitted(potU), main = "Residuals unrestricted") + abline(h = 0) + + qqnorm(residuals(potU)) + qqline(residuals(potU)) + + par(op) # Parameter zurücksetzen + }) + + output$AIC <- renderTable({ + AIC <- AIC(pot, potU) + }) + + output$VarDiagn <- renderTable({ + DiagnTable + }, digits=4) + + output$relpotplot <- renderPlot({ + relpot(potU, intervall="fieller", bty="l", + main="Quality of rel. potency over response") + }) + + + + } # !please choose + } # input$sheet + } # input$iFile + }) + + #### make geomDils reactive ---- + observe({ + #browser() + if (is.null(input$ConcStart)) return(NULL) + if (!is.na(input$ConcStart) & !is.na(input$dilutionFac) &!is.na(input$NoDil) &!is.na(input$NoDilSer)) { + upR <- input$ConcStart + noDil <- input$NoDil + noDilSer <- input$NoDilSer + Div <- input$dilutionFac + res <- c() + N_ <- 1 + Conc <- c(upR, divFUN(upR,Div,N=N_,res,noDil)) + + Dat$MetaConc <- Conc + } + }) + + #### updateSlider on XLSX ---- + observe({ + if (!is.null(Dat$potDiffXL)) { + updateSliderInput(session, "potencydiff", + value=round(as.numeric(Dat$potDiffXL[[1]]),5)) + } + }) + observeEvent(input$potencydiff, { + if (!is.null(Dat$potDiffXL)) { + updateSliderInput(session, "potencydiff", + value=round(as.numeric(input$potencydiff),5)) + } + }) + observe({ + if (!is.null(Dat$ProzSD_XL)) { + updateSliderInput(session, "sdfacf", + value=round(as.numeric(Dat$ProzSD_XL[[1]]),5)) + } + }) + observeEvent(input$sdfac, { + if (!is.null(Dat$ProzSD_XL)) { + updateSliderInput(session, "sdfac", + value=round(as.numeric(Dat$ProzSD_XL[[1]]),5)) + } + }) + + #### updaterNumeric Input ---- + observe({ + if(!is.null(Dat$coeffs_UN)) { + updateNumericInput(session, "lowAsymptREF", + value=round(as.numeric(Dat$coeffs_UN[3]),5), min=0) + updateNumericInput(session, "lowAsymptTEST", + value=round(as.numeric(Dat$coeffs_UN[4]),5), min=0) + updateNumericInput(session, "uppAsymptREF", + value=round(as.numeric(Dat$coeffs_UN[5]),5), min=0) + updateNumericInput(session, "uppAsymptTEST", + value=round(as.numeric(Dat$coeffs_UN[6]),5), min=0) + updateNumericInput(session, "slopeREF", + value=round(as.numeric(Dat$coeffs_UN[1]),5)) + updateNumericInput(session, "slopeTEST", + value=round(as.numeric(Dat$coeffs_UN[2]),5)) + updateNumericInput(session, "EC50", + value=round(as.numeric(Dat$coeffs_UN[7]),5)) + updateNumericInput(session, "potDiff", + value=round(as.numeric(Dat$coeffs_UN[7])- as.numeric(Dat$coeffs_UN[8]),5)) + } + }) + + observe({ + if(!is.null(Dat$dilution)) { + updateNumericInput(session, "CONC1", + value=as.numeric(Dat$dilution[1])) + updateNumericInput(session, "CONC2", + value=as.numeric(Dat$dilution[2])) + updateNumericInput(session, "CONC3", + value=as.numeric(Dat$dilution[3])) + updateNumericInput(session, "CONC4", + value=as.numeric(Dat$dilution[4])) + updateNumericInput(session, "CONC5", + value=as.numeric(Dat$dilution[5])) + updateNumericInput(session, "CONC6", + value=as.numeric(Dat$dilution[6])) + updateNumericInput(session, "CONC7", + value=as.numeric(Dat$dilution[7])) + updateNumericInput(session, "CONC8", + value=as.numeric(Dat$dilution[8])) + updateNumericInput(session, "CONC9", + value=as.numeric(Dat$dilution[9])) + updateNumericInput(session, "CONC10", + value=as.numeric(Dat$dilution[10])) + updateNumericInput(session, "CONC11", + value=as.numeric(Dat$dilution[11])) + updateNumericInput(session, "CONC12", + value=as.numeric(Dat$dilution[12])) + + } + }) + + observe({ + if(!is.null(Dat$MetaConc)) { + updateNumericInput(session, "CONC1", + value=as.numeric(Dat$MetaConc[1])) + updateNumericInput(session, "CONC2", + value=as.numeric(Dat$MetaConc[2])) + updateNumericInput(session, "CONC3", + value=as.numeric(Dat$MetaConc[3])) + updateNumericInput(session, "CONC4", + value=as.numeric(Dat$MetaConc[4])) + updateNumericInput(session, "CONC5", + value=as.numeric(Dat$MetaConc[5])) + updateNumericInput(session, "CONC6", + value=as.numeric(Dat$MetaConc[6])) + updateNumericInput(session, "CONC7", + value=as.numeric(Dat$MetaConc[7])) + updateNumericInput(session, "CONC8", + value=as.numeric(Dat$MetaConc[8])) + updateNumericInput(session, "CONC9", + value=as.numeric(Dat$MetaConc[9])) + updateNumericInput(session, "CONC10", + value=as.numeric(Dat$MetaConc[10])) + updateNumericInput(session, "CONC11", + value=as.numeric(Dat$MetaConc[11])) + updateNumericInput(session, "CONC12", + value=as.numeric(Dat$MetaConc[12])) + + } + }) + + #### render logDilsText ---- + output$logdil <- renderText({ + if (!is.null(Dat$MetaConc)) { + Conc <- Dat$MetaConc + } else Conc <- CONC() + logdilu <-log(Conc) + logdilu + }) + + + #### reactive dataset sim ---- + + sim <- reactive({ + #browser() + if(is.null(sigmoid())) return(NULL) + sd_fac_ <- as.numeric(input$sdfac) + r_ <- log(as.numeric(input$potencydiff)/100) + as = sigmoid()[1]; bs = sigmoid()[5];cs = sigmoid()[7];ds = sigmoid()[3];at = sigmoid()[2]; + bt = sigmoid()[6];r = sigmoid()[8]; ct = cs-r_; dt = sigmoid()[4]; + if (!is.null(Dat$MetaConc)) Conc <- Dat$MetaConc else Conc <- CONC() + log_conc <- log(Conc) + av_test <- as + (ds-as)/(1+exp(bs*(cs - log_conc))) + av_ref <- at + (dt-at)/(1+exp(bt*(ct - log_conc))) + #browser() + if (!is.na(input$NoDilSer)) { + noDilSer <- input$NoDilSer + } else if (!is.null(Dat$noDilSeriesXL)) noDilSer <- Dat$noDilSeriesXL else noDilSer <- 3 + if (!is.na(input$NoDil)) noDil <- input$NoDil else noDil <- length(log_conc) + isRef <- rep(c(1,0), 1,each=noDilSer*noDil) + isSample <- rep(c(0,1), 1,each=noDilSer*noDil) + + #if (is.null(Dat$EXCEL)) { + ro_new <- Calc_DilRes(as=as,at=at,ds=ds,dt=dt,cs=cs,ct=ct,r=r_,bt=bt,bs=bs, log_conc = log_conc, + sd_fac=sd_fac_, + # auslenkU=outlierU, + # auslenkM=outlierM, + # auslenkL=outlierL, + heteroNoise = input$heterosked, noDilSeries = noDilSer, noDils = noDil) + #} else ro_new <- Dat$EXCEL + }) + # }) + + ####sim2 ---- + sim2 <- reactive({ + tab <- sim() + if (is.null(Dat$EXCEL)) return(tab) else return(Dat$EXCEL) + }) + + + #### Plot 4pl ---- + output$plot <- renderPlot({ + #browser() + sigmoid <- sigmoid() + det_sig=NULL + plot_f(sim2(),sigmoid, det_sig, TransFlag = F) + }) + + #### Plot 4pl Transformed ---- + output$plot4plTrans <- renderPlot({ + #browser() + sigmoid <- sigmoid() + det_sig=NULL + plot_f(sim2(),sigmoid, det_sig, TransFlag = T) + }) + + + #### Testergebnisse für 4PL ---- + observe({ + if (is.null(sim2())) return(NULL) + if (is.null(input$PureErr4pl)) return(NULL) + #observeEvent(input$StartCalc,{ + PureErrFlag <- input$PureErr4pl + warning_text3 <- reactive({ + ifelse(PureErrFlag, 'Pure error selected','') + }) + + #browser() + output$PureErrW3 <- renderText(warning_text3()) + + Limite <- 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), + as.numeric(input$lEACratioAdiff), as.numeric(input$uEACratioAdiff)) + Dat$limite <- Limite + #browser() + + tab <- tests_FUNC(sim2(), Limite, PureErrFlag = PureErrFlag) + if (length(tab)>1) { + tab[1,6:7] <- c("-","-") + Dat$tests_FUNC <- tab + REP$testsTab <- tab + tab2 <- tab[1:7,] + + dat <- datatable(tab2,options = list( + paging=TRUE, + dom="t", + rownames=FALSE + )) %>% formatStyle("test_results", + target='row', + backgroundColor = styleEqual(c(-1,0,1), + c("pink",'lightgreen','lightgrey'))) + } else { dat <- datatable(data.frame(test_results = "Convergeance failed for the uploaded dataset")) } + #browser() + output$EQtests4pl <- renderDT({ dat}) + + }) # observe + + #### Testergebnisse für XLSX ---- + observe({ + if (is.null(Dat$EXCEL)) return(NULL) + if (is.null(input$PureErr)) return(NULL) + #observeEvent(input$StartCalc,{ + PureErrFlag <- input$PureErr + warning_text3 <- reactive({ + ifelse(PureErrFlag, 'Pure error selected','') + }) + + + output$PureErrW3 <- renderText(warning_text3()) + + Limite <- 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), + as.numeric(input$lEACratioAdiff), as.numeric(input$uEACratioAdiff)) + Dat$limite <- Limite + #browser() + SelTests <- as.numeric(input$selectedSSTs) + tab <- tests_FUNC(Dat$EXCEL, Limite, PureErrFlag = PureErrFlag) + + tab[1,6:7] <- c("-","-") + Dat$tests_FUNC <- tab + REP$testsTab <- tab + tab2 <- tab[SelTests,] + + dat <- datatable(tab2,options = list( + paging=TRUE, + dom="t", + rownames=FALSE + )) %>% formatStyle("test_results", + target='row', + backgroundColor = styleEqual(c(-1,0,1), + c("pink",'lightgreen','lightgrey'))) + + output$EQtests <- renderDT({ dat }) + + }) # observe + + ####plot CIs ---- + observe({ + tab <- Dat$tests_FUNC + if (is.null(tab)) return(NULL) + + tab2 <- tab[-c(1,2,3,6),] + tab2[,3:7] <- apply(tab2[,3:7],2,as.numeric) + tab2[4:5,3:7] <- tab2[4:5,3:7]/100 + + p_CIs <- ggplot(tab2,aes(x=test,y=estimate, color=test,group=test)) + + geom_point() + + geom_errorbar(aes(ymin=lower_CI, ymax=upper_CI), width=0.4) + + geom_crossbar(aes(ymin=lower_limit, ymax=upper_limit), size=0.8) + + coord_flip() + + theme_bw() + + theme(legend.position = "none",text = element_text(size=20)) + + output$CIplot <- renderPlot({ p_CIs}, height=200) + + REP$CIplot <- p_CIs + }) + + + output$simdat <- DT::renderDataTable({ + tab <- sim2() + if (is.character(tab)) stop(tab) + + tab2 <- round(tab, 5) + colnames(tab2) <- c(paste("T", seq(1,(ncol(tab2)-1)/2)), + paste("R", seq(1,(ncol(tab2)-1)/2)), "log_conc" ) + dat <- datatable(tab2, options=list( + paging=T, + pageLength=20, + dom="t" + )) + }) + + output$Conctab <- 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) + }) + + #### linear Plot output ---- + + output$plotLin <- renderPlot({ + tab <- Dat$EXCEL + + # tab <- sim2() + # if (is.character(tab)) stop(tab) + # #browser() + # if (!is.na(Dils()[4])) noDilSer <- Dils()[4] else noDilSer = (ncol(tab)-1)/2 + # Conc <- CONC() + # Conctab <- Dat$Conctab + # if (!is.na(Dils()[3])) noDil <- Dils()[3] else noDil = length(Conc) + # + # 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) + # + # Dat$circles <- circle + # sigmoid <- sigmoid() + # log_dose <- unique(all_l$log_dose) + # seq_x <- seq(min(log_dose), max(log_dose),0.1) + # SAMPLEtrue <- sigmoid[2] + (sigmoid[4]-sigmoid[2])/(1+exp(sigmoid[6]*((sigmoid[7]-log(input$potencydiff/100)-seq_x)))) + # 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) + }) + + + output$plotLin2 <- renderPlot({ + tab <- sim2() + if (is.character(tab)) stop(tab) + #browser() + if (!is.na(Dils()[4])) noDilSer <- Dils()[4] else noDilSer = (ncol(tab)-1)/2 + Conc <- CONC() + Conctab <- Dat$Conctab + if (!is.na(Dils()[3])) noDil <- Dils()[3] else noDil = length(Conc) + + 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) + + Dat$circles <- circle + sigmoid <- sigmoid() + log_dose <- unique(all_l$log_dose) + seq_x <- seq(min(log_dose), max(log_dose),0.1) + SAMPLEtrue <- sigmoid[2] + (sigmoid[4]-sigmoid[2])/(1+exp(sigmoid[6]*((sigmoid[7]-log(input$potencydiff/100)-seq_x)))) + 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 ---- + output$TESTSlin <- DT::renderDataTable({ + tab <- sim2() + if (is.character(tab)) stop(tab) + Conc <- CONC() + Limite <- 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), + as.numeric(input$lEACratioAdiff), as.numeric(input$uEACratioAdiff)) + + circles <- Dat$circles + PureErrFlag <- input$PureErr + warning_text <- reactive({ + ifelse(PureErrFlag, 'Pure error is selected','') + }) + output$PureErrW <- renderText(warning_text()) + + LIN <- ANOVAlintests(tab,circles,Limite,PureErrFlag=PureErrFlag) + df <- LIN[[1]] + su_modU <- LIN[[2]] + su_mod2 <- LIN[[4]] + + output$SummaryModABu <- renderTable({ su_modU }, digits=5) + output$SummaryModAB <- renderTable({ su_mod2 }, digits=5) + + slopeDiffCI <- t(data.frame(LIN[[3]])) + colnames(slopeDiffCI) <- c("slope difference","lower CI","upper CI") + output$SlopeDiffCI <- renderTable({ slopeDiffCI },digits=5) + #browser() + Dat$ANOVA <- df[,4:length(df)] + dat <- datatable(df[,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"))) + + }) + + #### output 4PL ANOVA tests --- + output$ANOVA <- DT::renderDataTable({ + sigmoid <- sigmoid() + 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$RMSE <- renderText({ + paste("RMSE (unrestricted model):", Dat$RMSE_unr, "(~ entered % upper-lower asymptote)\n", + "RMSE restricted model:", Dat$RMSE_r, "\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", + "RMSE (log restr. model): ", Dat$RMSE_Rlog, "\n", + "RMSE (log unrestr. model): ", Dat$RMSE_Ulog, "\n", + "%SDlog (unr model): ", Dat$RMSE_Ulog*100/Dat$up_lowAslog ) + }) + + output$ANOVAlin <- DT::renderDataTable({ + ANOVAlin <- Dat$ANOVA + dat <- datatable(ANOVAlin, + options=list( + dom="t",rownames=F + )) %>% formatStyle("p.value", target='cell', + backgroundColor = styleEqual(c("p.value"), + c("lightgrey"))) + }) + ### output pot tab ---- + output$pottab <- 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$circles + PureErrFlag <- input$PureErr + 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"))) + }) + + #### 4pl potency table ---- + observe({ + #browser() + if (is.null(sim2()) | is.null(Dils())) return(NULL) + ro_new <- sim2() + Dils_ <- Dils() + if (!is.na(Dils()[4])) noDilSer <- Dils()[4] else noDilSer <- 3 + PureErrFl <- input$PureErr4pl + 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 <- as.numeric(pottab4[,2])*100 + pottab4_$`lower95%CI` <- as.numeric(pottab4[,3])*100 + pottab4_$`upper95%CI` <- as.numeric(pottab4[,4])*100 + pottab4_$relative_lowerCL <- round(pottab4_[,6]/pottab4_[,5]*100,3) + pottab4_$relative_upperCL <- round(pottab4_[,7]/pottab4_[,5]*100,3) + + 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$pottab4pl <- DT::renderDataTable({ + dat <- datatable(pottab4_[1:2,], + options=list( + paging=T, dom="t",rownames=F + )) %>% formatStyle("test_result", target="row",backgroundColor = styleEqual(c(0,1), + c("lightgreen","pink"))) + }) + output$pottab4plTrans <- DT::renderDataTable({ + dat <- datatable(pottab4_[3:4,], + options=list( + paging=T, dom="t",rownames=F + )) %>% formatStyle("test_result", target="row",backgroundColor = styleEqual(c(0,1), + c("lightgreen","pink"))) + }) +}) + + #### Dilutions Simulator ---- + output$plotfordilutions <- renderPlot({ + tab <- sim2() + #browser() + tab <- as.data.frame(tab) + dils <- tab$log_dose + min_y <- min(tab[,1:3]) + max_y <- max(tab[,1:3]) + + if (input$fixupper) { + dils_av <- dils-max(dils) + dils_av_ <- dils_av*(input$dilslider/100+1) + dils2 <- round(dils_av_ + max(dils),4) + dilfactors <- 1/exp(dils2-lag(dils2)) + } else { + if (!is.null(Dat$cfordils)) { + av <- Dat$cfordils + } else { av <- (min(dils) + max(dils))/2 } + dils_av <- dils-av + dils_avsc <- dils_av*(input$dilslider/100+1) + dils2 <- dils_avsc+av + dilfactors <- 1/exp(dils2-lag(dils2)) + } + + Dat$newDils <- dils2 + + sigmoid <- sigmoid() + + #browser() + BPs <- Dat$bendpoints + EC50REF <- (BPs[2]+BPs[1])/2 + Einh <- abs((BPs[2]-BPs[1])/5) + asyml <- EC50REF-2*(EC50REF-BPs[1]) + asymu <- EC50REF+2*(EC50REF-BPs[1]) + + det_sig <- Dat$coeffs_UN + + if (is.null(Dat$coeffs_UN)) { + SAMPLE50 <- sigmoid[1] + (sigmoid[3] - sigmoid[1])/(1+exp(sigmoid[5]*( (sigmoid[7]+0.693147)- dils2))) + SAMPLE200 <- sigmoid[1] + (sigmoid[3] - sigmoid[1])/(1+exp(sigmoid[5]*( (sigmoid[7]-0.693147)-dils2))) + Xbend50l <- sigmoid[7] + 0.693147-1.31696/sigmoid[5] + Xbend200l <- sigmoid[7] - 0.693147-1.31696/sigmoid[5] + Xbend50u <- sigmoid[7] + 0.693147+1.31696/sigmoid[5] + Xbend200u <- sigmoid[7] - 0.693147+1.31696/sigmoid[5] + Xbend50 <- max(Xbend50l, Xbend50u) + Xbend200 <- min(Xbend200l, Xbend200u) + dummy <- plot_f(tab,sigmoid,det_sig=NULL) + } else { + + #browser() + SAMPLE50 <- det_sig[3] + (det_sig[5] - det_sig[3])/(1+exp(det_sig[1]*(det_sig[7]+0.693147-dils2))) + SAMPLE200 <- det_sig[3] + (det_sig[5] - det_sig[3])/(1+exp(det_sig[1]*(det_sig[7]-0.693147-dils2))) + Xbend50l <- det_sig[7] + 0.693147-1.31696/det_sig[1] + Xbend200l <- det_sig[7] - 0.693147-1.31696/det_sig[1] + Xbend50u <- det_sig[7] + 0.693147+1.31696/det_sig[1] + Xbend200u <- det_sig[7] - 0.693147+1.31696/det_sig[1] + Xbend50 <- max(Xbend50l, Xbend50u) + Xbend200 <- min(Xbend200l, Xbend200u) + dummy <- plot_f(tab,sigmoid=NULL,det_sig=det_sig) + } + + + + + + pl_df <- cbind(dils2, SAMPLE50, SAMPLE200) + + #browser() + # scenario2 + eqSpac <- abs((BPs[1]-BPs[2])/5) + optdils <- c((asyml+BPs[1])/2, BPs[1], BPs[1]+1*eqSpac, BPs[1]+2*eqSpac,BPs[1]+3*eqSpac,BPs[1]+4*eqSpac,BPs[2], (asymu+BPs[2])/2) + # scenario 3 + eqSpac_3 <- abs((BPs[1]-BPs[2])/3) + optdils_3 <- c(BPs[1]-2*eqSpac_3, BPs[1]-eqSpac_3, BPs[1], BPs[1]+1*eqSpac_3, BPs[1]+2*eqSpac_3,BPs[2], BPs[2]+eqSpac_3, BPs[2]+2*eqSpac_3) + # scenario 6 + Einh2 <- abs(((BPs[2]-BPs[1])*0.7)/5) + eqSpac2 <- (2*0.7/Einh)/3 + optdils2 <- c((asyml+BPs[1])/2, BPs[1], EC50REF-1.5*Einh2, EC50REF-0.5*Einh2,EC50REF+0.5*Einh2,EC50REF+1.5*Einh2, BPs[2], (asymu+BPs[2])/2) + # steep slope + eqSpac3 <- (abs(Xbend200-Xbend50))/5 + optdils3 <- c(Xbend200-eqSpac3,Xbend200, Xbend200+1*eqSpac3, Xbend200+2*eqSpac3,Xbend200+3*eqSpac3,Xbend200+4*eqSpac3,Xbend50, Xbend50+eqSpac3) + + output$extremebps <- renderTable({ + ExtremeBPs <- c(Xbend50,Xbend200) + DF2 <- data.frame(sample=c("50% sample (right)", "200% sample (left)"), Extreme_BPs=ExtremeBPs) + DF2 + }) + + optD <- data.frame(cbind(optdils, optdils_3,optdils2, optdils3)) + colnames(optD) <- c("scenario2","scenario3","scenario6","steep slope") + + output$optimalDils <- renderTable({ optD }) + + output$adjlogdil <- renderTable({ + adjlogdilfactors <- round(dilfactors,3) + adjlogdils <- round(dils2,3) + adjdils <- round(exp(dils2),3) + DilsTable <- data.frame('adjusted ln(dilutions)' = adjlogdils, + 'adjusted ln_dilution_factors' = adjlogdilfactors, + 'adjusted dilutions' = adjdils) + DilsTable + }) + + if (!is.null(Dat$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("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))) + + geom_line(data=as.data.frame(pl_df),aes(x=dils2,y=SAMPLE50), color="grey15", linetype=2, + inherit.aes = F) + + geom_line(data=as.data.frame(pl_df),aes(x=dils2,y=SAMPLE200), color="grey15", linetype=2, + inherit.aes = F) + + geom_vline(xintercept=c(Xbend50,Xbend200), col="grey15", linetype=2) + + {if (input$scenario =="scenario 6") annotate("pointrange",x=optdils2,y=rep(min_y+(max_y-min_y)*0.2, length(optdils2)), + xmin=min(optdils2), xmax=max(optdils2), color="seagreen")} + + {if (input$scenario =="scenario 6") annotate("text",x=optdils2,y=rep(min_y+(max_y-min_y)*0.25, length(optdils2)), + label=as.character(round(optdils2,3)), color="seagreen")} + + {if (input$scenario =="scenario 2") annotate("pointrange",x=optdils,y=rep(min_y+(max_y-min_y)*0.2, length(optdils)), + xmin=min(optdils), xmax=max(optdils), color="seagreen")} + + {if (input$scenario =="scenario 2") annotate("text",x=optdils,y=rep(min_y+(max_y-min_y)*0.25, length(optdils)), + label=as.character(round(optdils,3)), color="seagreen")} + + {if (input$scenario =="scenario 3") annotate("pointrange",x=optdils_3,y=rep(min_y+(max_y-min_y)*0.2, length(optdils_3)), + xmin=min(optdils_3), xmax=max(optdils_3), color="seagreen")} + + {if (input$scenario =="scenario 3") annotate("text",x=optdils_3,y=rep(min_y+(max_y-min_y)*0.25, length(optdils_3)), + label=as.character(round(optdils_3,3)), color="seagreen")} + + {if (input$scenario =="steep slope") annotate("pointrange",x=optdils3,y=rep(min_y+(max_y-min_y)*0.2, length(optdils3)), + xmin=min(optdils3), xmax=max(optdils3), color="seagreen")} + + {if (input$scenario =="steep slope") annotate("text",x=optdils3,y=rep(min_y+(max_y-min_y)*0.25, length(optdils3)), + label=as.character(round(optdils3,3)), color="seagreen")} + + annotate("text",x=optdils[1],y=(max_y+min_y)*0.5, + label=paste("in green: optimal \n dilutions acc. to Whitepaper\n", input$scenario), color="seagreen", + size=14/.pt,fontface="bold") + } + print(p_dil) + + }) + + #### Dilutions CI table ---- + observe({ + if (is.null(input$potencydiff)) return(NULL) + output$CIs <- renderTable({ + PureErrFlag <- input$PureErr + if (is.null(Dat$coeffs_UN)) { + # checks if an EXCEL was uploaded + sigmoid <- sigmoid() + det_sig=NULL + + ast = sigmoid()[1];bst = sigmoid()[5];cst = sigmoid()[7];dst = sigmoid()[3];ate = sigmoid()[2]; + bte = sigmoid()[6];r_ = sigmoid()[8]; + cte = cst-r_;dte = sigmoid()[4]; + } else { + sigmoid <- NULL + det_sig <- Dat$coeffs_UN + ast <- det_sig[3] + ate <- det_sig[4] + bst <- det_sig[1] + bte <- det_sig[2] + cst <- det_sig[7] + cte <- det_sig[7] -log(input$potencydiff/100) + dst <- det_sig[5] + dte <- det_sig[6] + r_ <- log(input$potencydiff/100) + + } + if (!is.na(input$NoDilSer)) { + noDilSer <- input$NoDilSer + } else if (!is.null(Dat$NoDilSeriesXL)) noDilSer <- Dat$noDilSeriesXL else noDilSer <- 3 + if (!is.na(input$NoDil)) noDil <- input$NoDil else noDil <- length(Dat$newDils) + #browser() + tab <- Calc_DilRes(as=ast,at=ate,ds=dst,dt=dte,cs=cst,ct=cte,r=r_,bt=bte,bs=bst, + sd_fac=input$sdfac,log_conc=Dat$newDils, + # auslenkU=outlierU, + # auslenkM=outlierM, + # auslenkL=outlierL, + heteroNoise = FALSE, noDilSeries = noDilSer, noDils = noDil) + Limite <- 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), + as.numeric(input$lEACratioAdiff), as.numeric(input$uEACratioAdiff)) + + CItable <- tests_FUNC(tab,Limite,PureErrFlag=PureErrFlag) + + CItable_ <- CItable[-c(1,2,6,8,9),-c(2,4,5)] + potAll <- pot4plFUNC(tab, input$PureErr) + restrPot <- potAll[1,1:4] + restrPot[2:4] <- round(as.numeric(restrPot[2:4]),5) + potAll_ <- rbind(CItable_, restrPot) + potAll_$CIwidth <- as.numeric(potAll_[,4])-as.numeric(potAll_[,3]) + potAll_[,1] <- c("ratio of lower asymptotes","ratio of slopes","ratio of upper asymptotes", "ratio of asympt. differences","restricted potency") + + output$bps <- renderTable({ + DF <- data.frame(sample=names(Dat$bendpoints),BPs=Dat$bendpoints) + DF + }) + return(potAll_) + }) + }) + + #### simulations ---- + observe({ + observeEvent(input$goSim,{ + sd_fac_ <- as.numeric(input$sdfac) + + r_ <- log(as.numeric(input$potencydiff)/100) + Conc <- Dat$MetaConc + as = sigmoid()[1]; bs = sigmoid()[5];cs = sigmoid()[7];ds = sigmoid()[3];at = sigmoid()[2]; + bt = sigmoid()[6];r = sigmoid()[8]; ct = cs-r_; dt = sigmoid()[4] + + if (!is.null(Dat$MetaConc)) { + Conc <- Dat$MetaConc + } else { + Conc <- CONC() + } + log_dose <- log(Conc) + yAxfac <- (ds-as) + + if (!is.na(input$NoDilSer)) { + noDilSer <- input$NoDilSer + } else if (!is.null(Dat$NoDilSeriesXL)) noDilSer <- Dat$noDilSeriesXL else noDilSer <- 3 + if (!is.na(input$NoDil)) noDil <- input$NoDil else noDil <- length(Conc) + isRef <- rep(c(1,0),1,each=noDilSer*noDil) + isSample <- rep(c(0,1),1,each=noDilSer*noDil) + N <- as.numeric(input$simN) + + av <- as*isRef + at*isSample + (ds*isRef + dt*isSample - as*isRef - at*isSample)/ + (1+isRef*exp(bs*(cs - log_dose)) + isSample*exp(bt*(ct-log_dose))) + + resHist <- matrix(NA,nrow=N, ncol=13) + residualsList <- list() + start.time2 <- Sys.time() + withProgress(message = 'Making plot', value=0, { + for (i in 1:N) { + if (input$heterosked) { + # heterosc noise + ro_jit <- matrix(unlist(map(av, function(x) x+rnorm(1,0,x*sd_fac_/100))), nrow=noDil, ncol=noDilSer*2) + } else { + # homosc noise + ro_jit <- matrix(unlist(map(av, function(x) x+rnorm(1,0,sd_fac_*yAxfac/100))), nrow=noDil, ncol=noDilSer*2) + } + # browser() + ro_jit <- abs(ro_jit) + ro_new <- cbind(ro_jit, log_dose) + all_l <- melt(data.frame(ro_new), id.vars="log_dose", variable.name = "replname", value.name = "readout") + all_l$isRef <- isRef + all_l$isSample <- isSample + all_l$Conc <- exp(all_l$log_dose) + pot <- drm(readout ~ Conc, isSample, data=all_l, fct=LL.4(names=c("b","d","a","c")), + pmodels=data.frame(1,1,1,isSample)) + potAll <- EDcomp(pot, percVec=c(50,50), interval="delta", display=FALSE) + potAll2 <- potAll[1:3] + RSS <- sum(pot$predres[,2]^2) + dfreed <- nrow(all_l)-5 + MSE <- RSS/dfreed + + potU <- drm(readout ~ Conc, isSample, data=all_l, fct=LL.4(names=c("b","d","a","c")), + pmodels=data.frame(isSample, isSample,isSample,isSample)) + DF_U <- nrow(all_l)-8 + + uAsratio <- compParm(potU, "a",display=F) + uCIuAs <- uAsratio[1]+qt(0.975,DF_U)*uAsratio[2] + lCIuAs <- uAsratio[1]-qt(0.975,DF_U)*uAsratio[2] + lAsratio <- compParm(potU, "d",display=F) + uCIlAs <- lAsratio[1]+qt(0.975,DF_U)*lAsratio[2] + lCIlAs <- lAsratio[1]-qt(0.975,DF_U)*lAsratio[2] + Sloperatio <- compParm(potU, "b",display=F) + uCISlo <- Sloperatio[1]+qt(0.975,DF_U)*Sloperatio[2] + lCISlo <- Sloperatio[1]-qt(0.975,DF_U)*Sloperatio[2] + su <- summary(potU) + + v <- vcov(potU)[c(5,6),c(5,6)] + Vd <- vcov(potU)[c(3,4),c(3,4)] + Va_d <- v+Vd + + A_DTEST <- su$coefficients[6,1]-su$coefficients[4,1] + A_DREF <- su$coefficients[5,1]-su$coefficients[3,1] + if (abs(at/(sqrt(Va_d[2,2]/3))) > qt(0.95,2)) { + try(Fie_ad <- round(FiellerRatio(A_DREF,A_DTEST, Va_d),5)) + } + if (!exists("Fie_ad")) Fie_ad <- NA + + resHist[i,] <- c(potAll2, sqrt(MSE),Sloperatio[1],lCISlo, uCISlo, + uAsratio[1], lCIuAs, uCIuAs, Fie_ad[1],Fie_ad[2],Fie_ad[3]) + colnames(resHist) <- c("pot4pl","lCI4pl","uCI4pl","RMSE","estSlope_ratio", + "lCISlope_ratio","uCISlope_ratio","estuAs_ratio", + "lCIuAs_ratio","uCIuAs_ratio","estAsyDiff_ratio", + "lCIAsyDiff_ratio", "uCIAsyDiff_ratio") + + incProgress(1/N, detail=paste("Doing simulations",i)) + } # withProgress + + }) + end.time2 <- Sys.time() + + Dat$resHist <- resHist + }) + }) + + + #### simulation Histograms output ---- + + output$plotHistuAs <- renderPlot({ + if (!is.null(Dat$resHist)) { + + resHist <- Dat$resHist + #browser() + resHistuAs <- as.data.frame(resHist[,8:10]) + resHistuAs_l <- melt(data.frame(resHistuAs), variable.name="ratio_CIs", value.name = "readout") + #browser() + lowquant_uAs <- quantile(resHistuAs[,2], probs=as.numeric(input$lowQuant)/100) + upquant_uAs <- quantile(resHistuAs[,3], probs=as.numeric(input$uppQuant)/100) + + p_uAs <- ggplot(resHistuAs_l) + + geom_histogram(aes(readout, fill=ratio_CIs),alpha=0.5,position="identity") + + labs(title = paste("upper asymptote ratio EACs:", round(lowquant_uAs,3), " to ", round(upquant_uAs,3))) + + geom_vline(xintercept = c(lowquant_uAs, upquant_uAs), color="black", linetype="dashed", linewidth=1) + + geom_vline(xintercept = c(input$lEACratioua , input$uEACratioua), color="red", linetype="dashed", linewidth=1) + + theme_bw() + + # asympt diff ratio + resHistAsDiff <- as.data.frame(resHist[,11:13]) + resHistAsDiff_l <- melt(data.frame(resHistAsDiff), variable.name="ratio_CIs", value.name = "readout") + + lowquant_AsDiff <- quantile(resHistAsDiff[,2], probs=as.numeric(input$lowQuant)/100) + upquant_AsDiff <- quantile(resHistAsDiff[,3], probs=as.numeric(input$uppQuant)/100) + + p_AsDiff <- ggplot(resHistAsDiff_l, aes(readout, fill=ratio_CIs)) + + geom_histogram(alpha=0.5,position="identity") + + labs(title = paste("asymptote diff. ratio EACs:", round(lowquant_AsDiff,3), " to ", round(upquant_AsDiff,3))) + + geom_vline(xintercept = c(lowquant_AsDiff, upquant_AsDiff), color="black", linetype="dashed", linewidth=1) + + geom_vline(xintercept = c(input$lEACratioAdiff , input$uEACratioAdiff), color="red", linetype="dashed", linewidth=1) + + theme_bw() + + # Slope ratio + resHistSlo <- as.data.frame(resHist[,5:7]) + resHistSlo_l <- melt(data.frame(resHistSlo), variable.name="ratio_CIs", value.name = "readout") + + lowquant_Slo <- quantile(resHistSlo[,2], probs=as.numeric(input$lowQuant)/100) + upquant_Slo <- quantile(resHistSlo[,3], probs=as.numeric(input$uppQuant)/100) + + p_Slo <- ggplot(resHistSlo_l, aes(readout, fill=ratio_CIs)) + + geom_histogram(alpha=0.5,position="identity") + + labs(title = paste("Slope ratio EACs:", round(lowquant_Slo,3), " to ", round(upquant_Slo,3))) + + geom_vline(xintercept = c(lowquant_Slo, upquant_Slo), color="black", linetype="dashed", linewidth=1) + + geom_vline(xintercept = c(input$lEACratioSlope , input$uEACratioSlope), color="red", linetype="dashed", linewidth=1) + + theme_bw() + + # poency ratio + resHistPot <- as.data.frame(resHist[,1:3]) + resHistPot_l <- melt(data.frame(resHistPot), variable.name="ratio_CIs", value.name = "readout") + + lowquant_Pot <- quantile(resHistPot[,2], probs=as.numeric(input$lowQuant)/100) + upquant_Pot <- quantile(resHistPot[,3], probs=as.numeric(input$uppQuant)/100) + #browser() + p_Pot <- ggplot(resHistPot_l, aes(readout, fill=ratio_CIs)) + + geom_histogram(alpha=0.5,position="identity") + + labs(title = paste("Poency ratio EACs:", round(lowquant_Pot,3), " to ", round(upquant_Pot,3))) + + geom_vline(xintercept = c(lowquant_Pot, upquant_Pot), color="black", linetype="dashed", linewidth=1) + + geom_vline(xintercept = c(input$lowerPot/100, input$upperPot/100), color="red", linetype="dashed", linewidth=1) + + theme_bw() + + grid.arrange(p_Slo, p_AsDiff, p_uAs, p_Pot, nrow=1) + + } + }) + + #### download XL report---- + + output$downloadXLReport <- downloadHandler( + filename= paste0("Report_4PLEvaluation", Dat$FileName,".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,"logo.png") + file.copy("logo.png", tempReportc, overwrite = T) + + rmarkdown::render(tempReport, output_file = file, + params = list(FileName = Dat$FileName, + author = Dat$author, + REP = REP, + coeffs = Dat$coeffs_UN), + envir = new.env(parent = globalenv())) + + } + ) + + +} + +shinyApp(ui, server) diff --git a/.Rproj.user/1804966C/sources/session-c8f70505/4893F0C1-contents b/.Rproj.user/1804966C/sources/session-c8f70505/4893F0C1-contents new file mode 100644 index 0000000..e69de29 diff --git a/.Rproj.user/1804966C/sources/session-c8f70505/4D51366C-contents b/.Rproj.user/1804966C/sources/session-c8f70505/4D51366C-contents new file mode 100644 index 0000000..e69de29 diff --git a/.Rproj.user/1804966C/sources/session-c8f70505/64B5319C-contents b/.Rproj.user/1804966C/sources/session-c8f70505/64B5319C-contents new file mode 100644 index 0000000..e69de29 diff --git a/.Rproj.user/1804966C/sources/session-c8f70505/6ED4A462-contents b/.Rproj.user/1804966C/sources/session-c8f70505/6ED4A462-contents new file mode 100644 index 0000000..e69de29 diff --git a/.Rproj.user/1804966C/sources/session-c8f70505/8559DAA4-contents b/.Rproj.user/1804966C/sources/session-c8f70505/8559DAA4-contents new file mode 100644 index 0000000..e69de29 diff --git a/.Rproj.user/1804966C/sources/session-c8f70505/86D3BA27-contents b/.Rproj.user/1804966C/sources/session-c8f70505/86D3BA27-contents new file mode 100644 index 0000000..e69de29 diff --git a/.Rproj.user/1804966C/sources/session-c8f70505/8E98A6AC-contents b/.Rproj.user/1804966C/sources/session-c8f70505/8E98A6AC-contents new file mode 100644 index 0000000..e69de29 diff --git a/.Rproj.user/1804966C/sources/session-c8f70505/97D02FCF-contents b/.Rproj.user/1804966C/sources/session-c8f70505/97D02FCF-contents new file mode 100644 index 0000000..e69de29 diff --git a/.Rproj.user/1804966C/sources/session-c8f70505/9A672A7E-contents b/.Rproj.user/1804966C/sources/session-c8f70505/9A672A7E-contents new file mode 100644 index 0000000..e69de29 diff --git a/.Rproj.user/1804966C/sources/session-c8f70505/9CAC830E-contents b/.Rproj.user/1804966C/sources/session-c8f70505/9CAC830E-contents new file mode 100644 index 0000000..55fafc6 --- /dev/null +++ b/.Rproj.user/1804966C/sources/session-c8f70505/9CAC830E-contents @@ -0,0 +1,1171 @@ + + +library(shiny) +#library(shinyjs) +#library(shinyAce) +library(shinydashboard) +#library(shinycssloaders) +library(purrr) +library(gslnls) +library(tidyverse) +library(ggplot2) +library(reshape2) +library(openxlsx) +library(DT) +library(ggpubr) +library(gridExtra) +library(drc) +library(twopartm) +library(car) +library(dplyr) + + +Dat <- reactiveValues() +REP <- reactiveValues() + +dilFUN2 <- function(cs_,dils,Faktor) { + av <- cs_ + dils_av <- dils_av + dils_avsc <- dils_av*Faktor + dils2 <- dils_avsc+av + dilfactors <- 1/exp(dils2-lag(dils2)) + return(dilfactors) +} + +plot_f <- function(dat, sigmoid,det_sig) { + CORdat <- cor(dat[,1],dat[,ncol(dat)]) + #browser() + all_l <- melt(data.frame(dat), 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) + #browser() + if(is.null(det_sig)) { + if (CORdat<0) { + startlist <- list(a=sigmoid[1], b=-sigmoid[5],cs=sigmoid[7], + d=sigmoid[3],r=sigmoid[8]) + } else { + + startlist <- list(a=sigmoid[1],b=sigmoid[5],cs=sigmoid[7], + d=sigmoid[3],r=sigmoid[8]) + } + } else { + startlist <- list(a=det_sig[5], b=det_sig[1],cs=det_sig[7], + d=det_sig[3],r=det_sig[7] - det_sig[8]) + } + + mr <- gsl_nls(fn = readout ~ a+(d-a)/(1+exp(b*(log_dose-(cs-r*isSample)))), + data=all_l, + start=startlist, + control=gsl_nls_control(xtol=1e-6,ftol=1e-6, gtol=1e-6)) + s_mr <- tryCatch({ + s_mr <- summary(mr) + }, + error = function(err) { + s_mr <- NULL + }) + + a <- s_mr$coefficients[1,1] + b <- s_mr$coefficients[2,1] + cs <- s_mr$coefficients[3,1] + d <- s_mr$coefficients[4,1] + r <- s_mr$coefficients[5,1] + + log_dose <- unique(all_l$log_dose) + seq_x <- seq(min(log_dose),max(log_dose),0.1) + SAMPLE <- a+(d-a)/(1+exp(b*(seq_x-(cs-r)))) + REF <- a+(d-a)/(1+exp(b*(seq_x-(cs)))) + + if (is.null(det_sig)) { + SAMPLEtrue <- sigmoid[2] + (sigmoid[4] -sigmoid[2])/(1+exp(sigmoid[6]*((sigmoid[7]-sigmoid[8]-seq_x)))) + REFtrue <- sigmoid[1] + (sigmoid[3] -sigmoid[1])/(1+exp(sigmoid[5]*((sigmoid[7]-seq_x)))) + } else { + SAMPLEtrue <- det_sig[4] + (det_sig[6] -det_sig[4])/(1+exp(det_sig[2]*(det_sig[8]-seq_x))) + REFtrue <- det_sig[3] + (det_sig[5] -det_sig[3])/(1+exp(det_sig[1]*(det_sig[7]-seq_x))) + } + #browser() + pl_df <- cbind(seq_x, SAMPLE, REF, SAMPLEtrue, REFtrue) + all_l2$readout[all_l2$readout < 0] <- 0.01 + all_l2$readouttrans <- log(all_l2$readout) + slopeEC50 <- b*(a-d)/4 + + Xbendl3 <- cs-(1.31696/b) + Xbendu3 <- cs+(1.31696/b) + XbendlT <- cs-r-(1.31696/b) + XbenduT <- cs-r+(1.31696/b) + bendpoints <- c(bendREF_lower = round(Xbendl3,3), bendREF_upper=round(Xbendu3,3), + bendSAMPLE_lower = round(XbendlT,3), bendSAMPLE_upper=round(XbenduT,3)) + Dat$bendpoints <- bendpoints + Dat$cfordils <- cs + + p <- ggplot(all_l2, aes(x=log_dose, y=readout, color=factor(isRef))) + + geom_point(shape=factor(isRef), alpha=0.8) + + labs(title = paste("restricted 4pl; bendp:", round(Xbendl3,3),round(Xbendu3,3),round(XbendlT,3),round(XbenduT,3)), + color="product") + + scale_color_manual(labels=c("test","reference"), values=c("red","blue")) + + scale_shape_manual(labels=c("test","reference")) + + theme_bw() + + theme(axis.text = element_text(size=14)) + + p2 <- p + geom_line(data=as.data.frame(pl_df), aes(x=seq_x, y=SAMPLE), color="red", + inherit.aes = F) + + geom_line(data=as.data.frame(pl_df), aes(x=seq_x, y=REF), color="blue", + inherit.aes = F) + + geom_line(data=as.data.frame(pl_df), aes(x=seq_x, y=SAMPLEtrue), color="red", linetype=2, alpha=0.4, + inherit.aes = F) + + geom_line(data=as.data.frame(pl_df), aes(x=seq_x, y=REFtrue), color="blue", linetype=2, alpha=0.4, + inherit.aes = F) + + geom_vline(xintercept=c(Xbendl3, Xbendu3), col="blue",linetype=2) + + geom_vline(xintercept=c(XbendlT, XbenduT), col="red",linetype=2) + + annotate("text", x=cs, y=a+(d-a)/2, label="0", size=5) + + theme(legend.position="none") + Dat$p2 <- p2 + + # transformed plots + p_rt <- ggplot(all_l2, aes(x=log_dose, y=readouttrans, color=factor(isRef))) + + geom_point(shape=factor(isRef), alpha=0.8) + + labs(title = paste("restricted transformed 4pl"), color="product") + + scale_color_manual(labels=c("test","reference"), values=c("red","blue")) + + theme_bw() + + mrt <- gsl_nls(fn = readouttrans ~ a+(d-a)/(1+exp(b*(log_dose-(cs-r*isSample)))), + data=all_l2, + start=startlist, + control=gsl_nls_control(xtol=1e-6,ftol=1e-6, gtol=1e-6)) + s_mrt <- summary(mrt) + a_trans <- s_mrt$coefficients[1,1] + b_trans <- s_mrt$coefficients[2,1] + cs_trans <- s_mrt$coefficients[3,1] + d_trans <- s_mrt$coefficients[4,1] + r_trans <- s_mrt$coefficients[5,1] + + XbendlTrans <- cs_trans-(1.31696/b_trans) + XbenduTrans <- cs_trans+(1.31696/b_trans) + XbendlTransT <- cs_trans-r_trans-(1.31696/b_trans) + XbenduTransT <- cs_trans-r_trans+(1.31696/b_trans) + bendpointsTRANS <- c(bendREF_lower = round(XbendlTrans,3), bendREF_upper=round(XbenduTrans,3), + bendSAMPLE_lower = round(XbendlTransT,3), bendSAMPLE_upper=round(XbenduTransT,3)) + Dat$bendpointsTRANS <- bendpointsTRANS + SAMPLEtrans <- a_trans+(d_trans-a_trans)/(1+exp(b_trans*(seq_x-(cs_trans-r_trans)))) + REFtrans <- a_trans+(d_trans-a_trans)/(1+exp(b_trans*(seq_x-(cs_trans)))) + + pl_df_trans <- cbind(seq_x, SAMPLEtrans, REFtrans) + p_rt2 <- p_rt + geom_line(data=as.data.frame(pl_df_trans), aes(x=seq_x, y=SAMPLEtrans), color="red", + inherit.aes = F) + + geom_line(data=as.data.frame(pl_df_trans), aes(x=seq_x, y=REFtrans), color="blue", + inherit.aes = F) + + geom_vline(xintercept=c(XbendlTrans, XbenduTrans), col="blue",linetype=2) + + geom_vline(xintercept=c(XbendlTransT, XbenduTransT), col="red",linetype=2) + + theme(legend.position = "none", axis.text=element_text(size=14)) + + if (is.null(det_sig)) { + unrestr <- drm(readout ~ exp(log_dose), isSample, data=all_l2, fct=LL.4(), + pmodels=data.frame(isSample, isSample,isSample,isSample)) + Sum_u <- summary(unrestr) + ast <- Sum_u$coefficients[3,1] + ate <- Sum_u$coefficients[4,1] + bst <- Sum_u$coefficients[1,1] + bte <- Sum_u$coefficients[2,1] + cst <- log(Sum_u$coefficients[7,1]) + cte <- log(Sum_u$coefficients[8,1]) + dst <- Sum_u$coefficients[5,1] + dte <- Sum_u$coefficients[6,1] + } else { + ast <- det_sig[5] + ate <- det_sig[6] + bst <- det_sig[1] + bte <- det_sig[2] + cst <- det_sig[7] + cte <- det_sig[8] + dst <- det_sig[3] + dte <- det_sig[4] + } + REFu <- ast + (dst-ast)/(1+exp(bst*(seq_x-cst))) + SAMPLEu <- ate + (dte-ate)/(1+exp(bte*(seq_x-cte))) + pl_df2 <- cbind(seq_x, SAMPLEu, REFu) + #browser() + pu <- ggplot(all_l2, aes(x=log_dose, y=readout, color=factor(isRef))) + + geom_point() + + labs(title="unrestricted 4_pl-Model", color="product") + + scale_color_manual(labels = c("test","reference"), values=c("red","blue")) + + theme_bw() + pu2 <- pu + geom_line(data=as.data.frame(pl_df2), aes(x=seq_x, y=SAMPLEu), + color="red", inherit.aes = F) + + geom_line(data=as.data.frame(pl_df2), aes(x=seq_x, y=REFu), + color="blue", inherit.aes = F, + show.legend = F) + pu2_ <- pu2 + + theme(legend.position = "none", axis.text = element_text(size=14)) + putrans <- ggplot(all_l2, aes(x=log_dose, y=readouttrans, color=factor(isRef))) + + geom_point() + + labs(title="unrestricted transformed 4_pl-Model", color="product") + + scale_color_manual(labels = c("test","reference"), values=c("red","blue")) + + theme_bw() + + unrestr_trans <- drm(readouttrans ~ exp(log_dose), isSample, data=all_l2, fct=LL.4(), + pmodels=data.frame(isSample, isSample,isSample,isSample)) + Sum_ut <- summary(unrestr_trans) + ast_t <- Sum_ut$coefficients[3,1] + ate_t <- Sum_ut$coefficients[4,1] + bst_t <- Sum_ut$coefficients[1,1] + bte_t <- Sum_ut$coefficients[2,1] + cst_t <- log(Sum_ut$coefficients[7,1]) + cte_t <- log(Sum_ut$coefficients[8,1]) + dst_t <- Sum_ut$coefficients[5,1] + dte_t <- Sum_ut$coefficients[6,1] + + REFu_trans <- ast_t + (dst_t-ast_t)/(1+exp(bst_t*(seq_x-cst_t))) + SAMPLEu_trans <- ate_t + (dte_t-ate_t)/(1+exp(bte_t*(seq_x-cte_t))) + pl_df2u_t <- cbind(seq_x, SAMPLEu_trans, REFu_trans) + + pu2_t <- putrans + geom_line(data=as.data.frame(pl_df2u_t), aes(x=seq_x, y=SAMPLEu_trans), + color="red", inherit.aes = F) + + geom_line(data=as.data.frame(pl_df2u_t), aes(x=seq_x, y=REFu_trans), + color="blue", inherit.aes = F, + show.legend = F) + pu3_t <- pu2_t + grid.arrange(p2,p_rt2,pu2_,pu3_t, nrow=2) +} + +Calc_DilRes <- function(as=3, bs=1, cs=-4, ds=10, at=3, bt=1, dt=10,r=0.0001,ct=cs-r, + sd_fac=0.1, gt=1, gs=1, log_conc, + heteroNoise=FALSE, noDilSeries, noDils) { + yAxfac <- (ds-as) + log_dose <- log_conc + isRef <- rep(c(1,0),1,each=length(log_conc)*noDilSeries) + isSample <- rep(c(0,1),1,each=length(log_conc)*noDilSeries) + #browser() + av <- as*isRef + at*isSample + (ds*isRef + dt*isSample - as*isRef - at*isSample)/ + (1+isRef*exp(bs*(cs - log_dose)) + isSample*exp(bt*(ct-log_dose))) + if (heteroNoise) { + # heterosc noise + ro_jit <- matrix(unlist(map(av, function(x) x+rnorm(1,0,x*sd_fac/100))), nrow=noDils, ncol=noDilSeries*2) + } else { + # homosc noise + ro_jit <- matrix(unlist(map(av, function(x) x+rnorm(1,0,sd_fac*yAxfac/100))), nrow=noDils, ncol=noDilSeries*2) + } + ro_jit <- abs(ro_jit) + + ro_jit2 <- cbind(ro_jit, log_dose) + if (noDilSeries==3) { + colnames(ro_jit2) <- c("R_dil1","R_dil2","R_dil3","T_dil1","T_dil2","T_dil3", "log_dose") + } else { + colnames(ro_jit2) <- c("R_dil1","R_dil2","T_dil1","T_dil2", "log_dose") + } + return(ro_jit2) +} + +LinPotTab <- function(circles, Lim, PureErrFlag) { + circ_ABl <- circles + circ_Al <- circ_ABl[circ_ABl$isSample ==1,] + circ_Al <- circ_ABl[circ_ABl$isSample ==0,] + # restr CSSI model + modAB <- lm(readout ~ log_dose + isSample, circ_ABl) + coeffs <- modAB$coefficients + SU_modAB <- tryCatch({ + SU_modAB <- summary(modAB) + }, error = function(msg) { + return(NA) + }) + # Intercept diff/slope modAB + linPot <- exp(modAB$coefficients[3]/modAB$coefficients[2]) + + if(PureErrFlag) { + FitAnova <- anova(lm(readout ~ factor(log_dose)*isSample, circ_ABl)) + meanPureErr <- FitAnova[4,3] + DFsPure <- FitAnova[4,1] + VCOV <- vcov(modAB) + V_V <- VCOV/SU_modAB$sigma^2 + VCOVpure <- V_V*meanPureErr + SEsPure <- sqrt(diag(V_V)*meanPureErr) + } + + log_pot_delta <- deltaMethod(modAB, "isSample/log_dose") + if (PureErrFlag) { + V_ <- log_pot_delta$SE^2/SU_modAB$sigma^2 + V_p <- V_*meanPureErr + potDeltaPureSE <- sqrt(V_p) + CI_log_low <- log_pot_delta$Estimate - qt(0.975, DFsPure)*potDeltaPureSE + CI_log_up <- log_pot_delta$Estimate + qt(0.975, DFsPure)*potDeltaPureSE + } else { + CI_log_low <- log_pot_delta$Estimate - qt(0.975, df.residual(modAB))*log_pot_delta$SE + CI_log_up <- log_pot_delta$Estimate + qt(0.975, df.residual(modAB))*log_pot_delta$SE + } + #browser() + ExpLinPot <- exp(c(log_pot_delta$Estimate, CI_log_low, CI_log_up)) + if (ExpLinPot[2]*100>Lim[[9]] & ExpLinPot[3]*100Lim[9] & ExpLinPot[3]*100>Lim[10]) test_potCI <- 0 else test_potCI <- 1 + + su_mod <- summary(modAB)$coefficients + su_mod2 <- cbind(data.frame(parameter = c("intercept REF","slope REF","intercepts diff.")), su_mod) + su_modU <- summary(modABu)$coefficients + su_modU2 <- cbind(data.frame(parameter = c("intercept REF","slope REF","intercepts diff.","slope difference")), su_modU) + + uCI_SloDiff <- su_modU[4,1] + qt(0.975,8)*su_modU[4,2] + lCI_SloDiff <- su_modU[4,1] - qt(0.975,8)*su_modU[4,2] + SlopeDiffCI <- c(su_modU[4,1], lCI_SloDiff,uCI_SloDiff) + + lenCirc <- nrow(circ_ABl) + dfTreat <- 3 + dfPrep <- 1 + dfReg <- 1 + dfnonP <- 1 + dfRMSE <- c(lenCirc-3-1) + dfTotal <- lenCirc-1 + dfPureE <- lenCirc-6 + dfNonLin <- dfRMSE-dfPureE + + RSS <- sum(resid(lm(readout ~ log_dose*isSample, circ_ABl))^2) + MSE <- RSS/dfRMSE + SSE <- sum(resid(lm(readout ~ factor(log_dose)*isSample, circ_ABl))^2) + MSpure <- SSE/dfPureE + + if (PureErrFlag) { + FitAnova <- anova(lm(readout ~ factor(log_dose)*isSample, circ_ABl)) + meanPureErr <- FitAnova[4,3] + SU_modAB <- tryCatch({ + SU_modAB <- summary(modAB) + }, error = function(msg) { + return(NA) + }) + if (length(SU_modAB)>1) s_modABcoeffs <- summary(modAB)$coefficients + + DFsPure <- FitAnova[4,1] + VCOV <- vcov(modAB) + V_V <- VCOV/SU_modAB$sigma^2 + VCOVpure <- V_V*meanPureErr + SEsPure <- sqrt(diag(V_V)*meanPureErr) + su_mod2[,3] <- SEsPure + su_mod2[,4] <- su_mod2[,2]/su_mod2[,3] + su_mod2[,5] <- 2*(1-pt(abs(su_mod[,4]), FitAnova[4,1])) + + s_mu <- summary(modABu)$coefficients + SU_modABu <- summary(modABu) + VCOVu <- vcov(modABu) + V_Vu <- VCOVu/SU_modABu$sigma^2 + SEsPureU <- sqrt(diag(V_Vu)*meanPureErr) + + su_modU2[,3] <- SEsPureU + su_modU2[,4] <- su_modU2[,2]/su_modU2[,3] + su_modU2[,5] <- 2*(1-pt(abs(su_modU2[,4]), FitAnova[4,1])) + + uCI_SloDiffP <- su_modU[4,1] + qt(0.975,8)*SEsPureU[4] + lCI_SloDiffP <- su_modU[4,1] - qt(0.975,8)*SEsPureU[4] + SlopeDiffCI <- c(su_modU[4,1], lCI_SloDiffP,uCI_SloDiffP) + + SSRes <- SSE + dfRes <- dfPureE + + } else { + SSRes <- RSS + dfRes <- dfRMSE + } + + # treatment + SStreat <- print(sum((predict(lm(readout ~ factor(log_dose)*isSample, circ_ABl))-mean(circ_ABl$readout))^2)) + F_treat <- (SStreat/dfTreat)/(SSRes/dfRes) + # Preparation + SSprep <- print(sum((predict(lm(readout ~ isSample, circ_ABl))-mean(circ_ABl$readout))^2)) + F_prep <- (SSprep/dfTreat)/(SSRes/dfRes) + # Regression + # ANOVA tape II SS of regression + SSreg <- Anova(lm(readout ~log_dose + isSample, circ_ABl))[1,1] + # Non-parallelism + # diff of RSS of restricted and unrestricted model + SSnonpar <- sum(resid(modAB)^2) - sum(resid(modABu)^2) + F_nonpar <- SSnonpar/(sum(resid(lm(readout ~ factor(log_dose)*isSample, circ_ABl))^2)/(lenCirc-4)) + + # non-linearity + SSnonlin <- sum((predict(modABu)-predict(lm(readout ~ as.factor(log_dose)*isSample, circ_ABl)))^2) + # = RSS-SSE + # Total SS + SStot <- sum((circ_ABl$readout-mean(circ_ABl$readout))^2) + # Significance of R^2 F-ratio + # MSR/MSE + # sample A + F_R2_A <- sum((predict(lm(readout ~ log_dose+ I(log_dose^2), circ_Al)) - mean(predict(modA)))^2 - (predict(modA) - mean(circ_Al$readout))^2)/ + (sum((predict(lm(readout ~ log_dose+ I(log_dose^2), circ_Al)) - circ_Al$readout)^2)/(nrow(circ_Al)-3)) + pFR2_A <- round(pf(F_R2_A,1,6),4) + # sample B + F_R2_B <- sum((predict(lm(readout ~ log_dose+ I(log_dose^2), circ_Bl)) - mean(predict(modB)))^2 - (predict(modB) - mean(circ_Bl$readout))^2)/ + (sum((predict(lm(readout ~ log_dose+ I(log_dose^2), circ_Bl)) - circ_Bl$readout)^2)/(nrow(circ_Bl)-3)) + pFR2_B <- round(pf(F_R2_B,1,6),4) + # sign of non-lin with pure error: MSSnonlin/MSSE + F_nonlin <- (SSnonlin/2)/(SSE/dfPureE) + + # sign of slope + F_slope_B <- sum((predict(modB) - mean(circ_Bl$readout))^2)/(sum((circ_Bl$readout - predict(modB))^2)/(nrow(circ_Bl)-2)) + F_slope_A <- sum((predict(modA) - mean(circ_Al$readout))^2)/(sum((circ_Al$readout - predict(modA))^2)/(nrow(circ_Al)-2)) + # F-test on regression: MSSreg/MSSE + if (is.na(F_nonlin)) F_nonlin <- 0 + if (F_nonlin > 0) { + p_F_nonlin <- round(pf(F_nonlin,2,dfPureE, lower.tail = F),5) + } else { p_F_nonlin <- "SSnonlin neg or 0"; } + + # significances + F_regr <- (SSreg/1)/(SSRes/dfRes) + p_F_regr <- round(pf(F_regr,1,dfRes, lower.tail = F),3) + p_F_treat <- round(pf(F_treat,3,dfRes, lower.tail = F),3) + p_F_prep <- round(pf(F_prep,1,dfRes, lower.tail = F),3) + p_F_slope_A <- round(pf(F_slope_A,1,(nrow(circ_Al)-2), lower.tail = F),3) + p_F_slope_B <- round(pf(F_slope_B,1,(nrow(circ_Bl)-2), lower.tail = F),3) + p_F_nonp <- round(pf(F_nonpar,1,dfRes, lower.tail = F),3) + p_F_LoF <- p_F_nonlin + + res_tab_lin <- data.frame(test = c("F-test on sign. of regression", "F_test on non-lin", + "F-test on R^2 A","F_test on R^2 B", + "F-test on slope A","F-test on slope B", + "F-test on non-parallelism","F-test on preparation"), + test_results = c(ifelse(p_F_regr<0.05,0,1),ifelse(p_F_nonlin<0.05,1,0), + ifelse(pFR2_A<0.05,1,0),ifelse(pFR2_B<0.05,1,0), + ifelse(p_F_slope_A<0.05,0,1),ifelse(p_F_slope_B<0.05,0,1), + ifelse(p_F_nonp<0.05,1,0),ifelse(p_F_prep<0.05,0,1)), + estimate = c(p_F_regr, p_F_nonlin,pFR2_A,pFR2_B,p_F_slope_A, + p_F_slope_B,p_F_nonp,p_F_prep), + Source = c("Treatment","Preparation","Regression","Non-parallelism", + "Resid Error","Non-linearity","Pure error", "Total"), + df = c(dfTreat,1,1,1,dfRMSE,2,dfPureE,lenCirc-1), + SumSquares = c(round(SStreat,5),round(SSprep,5),round(SSreg,5), + round(SSnonpar,5),round(RSS,5),round(SSnonlin,5), + round(SSE,5),round(SStot,5)), + MS = c(round(SStreat/dfTreat,5),round(SSprep,5),round(SSreg,5), + round(SSnonpar,5),round(RSS/dfRMSE,5),round(SSnonlin/2,5), + round(SSE/dfPureE,5),round(SStot/dfTotal,5)), + "F-value" = c(round(F_treat,5), round(F_prep,5),round(F_regr,5), + round(F_nonpar,5),"",round(F_nonlin,5),"",""), + "p-value" = c(p_F_treat, p_F_prep, p_F_regr, p_F_nonp, "", p_F_LoF, "","")) + RET <- list(res_tab_lin, su_modU2, SlopeDiffCI, su_mod2) + return(RET) +} + +pot4plFUNC <- function(ro_new, PureErrFlag) { + all_l <- melt(data.frame(ro_new), 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_l$isRef <- isRef + all_l$isSample <- isSample + all_l$Conc <- exp(all_l$log_dose) + all_l$readout[all_l$readout < 0] <- 0.01 + all_l$readouttrans <- log(all_l$readout) + + CORdat <- cor(ro_new[,1],ro_new[,ncol(ro_new)]) + if (CORdat<0) SLOPE <- -1 else SLOPE <- 1 + + startlist <- list(a=min(ro_new[,2]), b=SLOPE, d=max(ro_new[,2]), cs=mean(all_l$log_dose),r=0) + tryCatch({ + mr <- gsl_nls(fn = readout ~ a+(d-a)/(1+exp(b*(cs-r*isSample-log_dose))), + data=all_l, + start=startlist, + control=gsl_nls_control(xtol=1e-6,ftol=1e-6, gtol=1e-6)) + }, + error = function(err) { + err$message + }) + + startlistmu <- list(as=max(ro_new[,2]), bs=SLOPE, ds=min(ro_new[,2]), cs=mean(all_l$log_dose), + at=max(ro_new[,2]), bt=SLOPE, dt=min(ro_new[,2]), r=0) + + tryCatch({ + 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)) + }, + error = function(err) { + err$message + }) + + if (!PureErrFlag) { + pot_est <- exp(confintd(mr, "r", method="asymptotic")) + potU_est <- exp(confintd(mu, "r", method="asymptotic")) + } else { + FitAnova <- anova(lm(readout ~ factor(Conc)*isSample, all_l)) + meanPureErr <- FitAnova[4,3] + SU_mr <- tryCatch({ + SU_mr <- summary(mr) + }, error = function(msg) { + return() + }) + + #browser() + if (length(SU_mr)>1) { + s_mr <- SU_mr$coefficients + } else { SU_mr <- rep(NA,5) } + + VCOV <- vcov(mr) + V_V <- VCOV/SU_mr$sigma^2 + SEsPure <- sqrt(diag(V_V)*meanPureErr) + pot_est <- c(exp(s_mr[5,1]),exp(s_mr[5,1]-qt(0.975,nrow(all_l)-5)*SEsPure[5]), + exp(s_mr[5,1]+qt(0.975,nrow(all_l)-5)*SEsPure[5])) + # unrestricted + s_mu <- summary(mu)$coefficients + SU_mu <- summary(mu) + VCOVu <- vcov(mu) + V_Vu <- VCOVu/SU_mu$sigma^2 + SEsPureU <- sqrt(diag(V_Vu)*meanPureErr) + potU_est <- c(exp(s_mu[7,1]),exp(s_mu[7,1]-qt(0.975,nrow(all_l)-8)*SEsPureU[7]), + exp(s_mu[7,1]+qt(0.975,nrow(all_l)-8)*SEsPureU[7])) + } # PureErrFlag + + startlistmr_log <- list(a=max(all_l$readouttrans), b=SLOPE, d=min(all_l$readouttrans), cs=mean(all_l$log_dose),r=0) + + tryCatch({ + mr_log <- gsl_nls(fn = readouttrans ~ a+(d-a)/(1+exp(b*(cs-r*isSample-log_dose))), + data=all_l, + start=startlistmr_log, + control=gsl_nls_control(xtol=1e-6,ftol=1e-6, gtol=1e-6)) + }, + error = function(err) { + err$message + }) + + + startlistmu_log <- list(as=max(ro_new[,2]), bs=SLOPE, ds=min(ro_new[,2]), cs=mean(all_l$log_dose), + at=max(ro_new[,2]), bt=SLOPE, dt=min(ro_new[,2]), r=0) + + tryCatch({ + mu_log <- gsl_nls(fn = readouttrans ~ 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_log, + control=gsl_nls_control(xtol=1e-6,ftol=1e-6, gtol=1e-6)) + }, + error = function(err) { + err$message + }) + + pot_est_log <- exp(confintd(mr_log, "r", method="asymptotic")) + potU_est_log <- exp(confintd(mu_log, "r", method="asymptotic")) + colnames(pot_est_log) <- c("estimate","lowerCI2","upperCI") + colnames(potU_est_log) <- c("estimate","lowerCI2","upperCI") + #browser() + su_mr_log <- summary(mr_log) + Dat$RMSE_Rlog <- su_mr_log$sigma + su_mu_log <- summary(mu_log) + Dat$RMSE_Ulog <- su_mu_log$sigma + Dat$up_lowAslog <- su_mu_log$coefficients[1,1] - su_mu_log$coefficients[4,1] + potALL <- rbind(pot_est, potU_est, pot_est_log, potU_est_log) + + potALL2 <- cbind(c("restricted","unrestricted","transformed restr","untransf restr"), potALL) + return(potALL2) +} + +ParamCI_F <- function(xt,xs,se_xt, se_xs, CoVarlog,DFs, Conf=0.975) { + log_xs <- log(abs(xs)) + log_xt <- log(abs(xt)) + var_log_xs <- (se_xs/xs)^2 # approximate variance of log(bs) + var_log_xt <- (se_xt/xt)^2 + se_log_ratio <- sqrt(var_log_xs + var_log_xt) #-2*CoVarlog) + + lower_log_ratio <- log_xt-log_xs - qt(Conf,DFs)*se_log_ratio + upper_log_ratio <- log_xt-log_xs + qt(Conf,DFs)*se_log_ratio + ci_ratio <- exp(c(lower_log_ratio, upper_log_ratio)) + return(ci_ratio) +} + +tests_FUNC <- function(ro_new, Lim, PureErrFlag) { + all_l <- melt(data.frame(ro_new), 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_l$isRef <- isRef + all_l$isSample <- isSample + all_l$Conc <- exp(all_l$log_dose) + all_l$readout[all_l$readout < 0] <- 0.01 + + pot <- drm(readout ~ Conc, isSample, data=all_l, fct=LL.4(names=c("b","d","a","c")), + pmodels=data.frame(1,1,1,isSample)) + compParm(pot, "c",display=T) + ED50 <- ED(pot,c(50), interval="delta") + PotEst <- ED50[1,1]/ED50[2,1] + potAll <- EDcomp(pot, percVec=c(50,50), interval="delta", display=FALSE) + potAll2 <- potAll[1:3] + + CORro <- cor(ro_new[,1], ro_new[,ncol(ro_new)]) + + if (CORro<0) SLOPE <- -1 else SLOPE <- 1 + startlist <- list(a=max(ro_new[,2]), b=SLOPE, d=min(ro_new[,2]), cs=mean(all_l$log_dose),r=0) + tryCatch({ + mr <- gsl_nls(fn = readout ~ a+(d-a)/(1+exp(b*(cs-r*isSample-log_dose))), + data=all_l, + start=startlist, + control=gsl_nls_control(xtol=1e-6,ftol=1e-6, gtol=1e-6)) + }, + error = function(err) { + err$message + }) + + startlistmu <- list(as=max(ro_new[,2]), bs=SLOPE, ds=min(ro_new[,2]), cs=mean(all_l$log_dose), + at=max(ro_new[,2]), bt=SLOPE, dt=min(ro_new[,2]), r=0) + tryCatch({ + 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)) + }, + error = function(err) { + err$message + }) + + smu <- tryCatch({ summary(mu) }, + error=function(err) { + return(0) + }) + + POTr_CI <- potAll2[2:3] + + FitAnova <- anova(lm(readout ~ factor(Conc)*isSample, all_l)) + # pure error + pureSS <- FitAnova[4,2] + pureSS_df <- FitAnova[4,1] + meanPureErr <- FitAnova[4,3] + vcovMU <- vcov(mu) + V_V <- vcovMU/smu$sigma^2 + SEsPure <- sqrt(diag(V_V)*meanPureErr) + VCOVpure <- V_V*meanPureErr + DFsPure <- FitAnova[4,1] + + + + testPOTr <- logical() + if (POTr_CI[1]*100>Lim[[9]] & POTr_CI[2]*100Lim[[9]]/100 & potAllU2[3] 0) { + p_F_nonlin <- round(pf(F_nonlin, AnovaDFs[6], ERR_df, lower.tail = F),5) + } else { p_F_nonlin <- "SSnonlin neg or single dilutions" } + + test_a <- test_b <- test_d <- test_ad <- logical() + + RSS_r <- round(sum(pot$predres[,2]^2),5) + MSE_r <- RSS_r/(nrow(all_l)-5) + RMSE_r <- round(sqrt(MSE_r),6) + Dat$RMSE_r <- RMSE_r + Dat$RMSE_pure <- RMSE_pure + Dat$RMSE_unr <- round(RMSEunr,6) + #browser() + ## EQ test on lower As diff + ds <- coeffs["ds"] + dt <- coeffs["dt"] + lAs_diff <- (dt-ds) + uCI_laDiff <- lAs_diff+qt(0.975,df.residual(mu))*sqrt(sum_potU$coefficients[3,2]^2+sum_potU$coefficients[4,2]^2) + lCI_laDiff <- lAs_diff-qt(0.975,df.residual(mu))*sqrt(sum_potU$coefficients[3,2]^2+sum_potU$coefficients[4,2]^2) + if (uCI_laDiff < Lim[[2]] & lCI_laDiff > Lim[[1]]) test_la_diff <- 0 else test_la_diff <- 1 + + #### EQ test on upper asymptote ratio ---- + as <- coeffs["as"] + at <- coeffs["at"] + uAsRatio <- compParm(potU, "a","/",display=F) + uAsCI <- c(uAsRatio[1]-qt(0.975,RSS_df)*uAsRatio[2], uAsRatio[1]+qt(0.975,RSS_df)*uAsRatio[2]) + #browser() + ds <- smu$coefficients["ds",1] + dt <- smu$coefficients["dt",1] + if (PureErrFlag) se_ds <- sqrt(VCOVpure["ds","ds"]) else se_ds <- smu$coefficients["ds",2] + if (PureErrFlag) se_dt <- sqrt(VCOVpure["dt","dt"]) else se_dt <- smu$coefficients["dt",2] + if (PureErrFlag) CoVarlog_d <- VCOVpure["dt","ds"] else CoVarlog_d <- vcovMU["dt","ds"] + if (PureErrFlag) DFs <- DFsPure else DFs <- nrow(all_l)-noConc + uAsCI2 <- ParamCI_F(dt,ds,se_dt, se_ds,CoVarlog_d, DFs, Conf=0.9975) + if (uAsCI2[1] > Lim[[7]] & uAsCI2[2] < Lim[[8]]) test_a <- 0 else test_a <- 1 + estUppA <- round(at/as,5) + + Dat$uAsCI <- uAsCI2 + + #### EQ test on slope ratio ---- + bs <- coeffs["bs"] + bt <- coeffs["bt"] + slopeRatio <- compParm(potU, "b","/",display=F) + slopeCI <- c(slopeRatio[1,1]-qt(0.975,RSS_df)*slopeRatio[1,2], slopeRatio[1,1]+qt(0.975,RSS_df)*slopeRatio[1,2]) + + bs <- smu$coefficients["bs",1] + bt <- smu$coefficients["bt",1] + if (PureErrFlag) se_bs <- sqrt(VCOVpure["bs","bs"]) else se_bs <- smu$coefficients["bs",2] + if (PureErrFlag) se_bt <- sqrt(VCOVpure["bt","bt"]) else se_bt <- smu$coefficients["bt",2] + if (PureErrFlag) CoVarlog_b <- VCOVpure["bt","bs"] else CoVarlog_b <- vcovMU["bt","bs"] + slopeCI2 <- ParamCI_F(bt,bs,se_bt, se_bs,CoVarlog_b, DFs, Conf=0.975) + if (slopeCI2[1] > Lim[[5]] & slopeCI2[2] < Lim[[6]]) test_b <- 0 else test_b <- 1 + estUppA <- round(at/as,5) + + Dat$slopeRatioCI <- slopeCI + + #### EQ test on lower As ratio ---- + + lAsRatio <- compParm(potU, "d","/",display=F) + slopeCI <- c(lAsRatio[1,1]-qt(0.975,RSS_df)*lAsRatio[1,2], lAsRatio[1,1]+qt(0.975,RSS_df)*lAsRatio[1,2]) + + as <- smu$coefficients["as",1] + at <- smu$coefficients["at",1] + if (PureErrFlag) se_as <- sqrt(VCOVpure["as","as"]) else se_as <- smu$coefficients["as",2] + if (PureErrFlag) se_at <- sqrt(VCOVpure["at","at"]) else se_at <- smu$coefficients["at",2] + if (PureErrFlag) CoVarlog_a <- VCOVpure["at","as"] else CoVarlog_a <- vcovMU["at","as"] + lAsCI2 <- ParamCI_F(at,as,se_at, se_as,CoVarlog_a, DFs, Conf=0.975) + if (lAsCI2[1] > Lim[[3]] & lAsCI2[2] < Lim[[4]]) test_d <- 0 else test_d <- 1 + estLowA <- round(at/as,5) + + Dat$lAsCI <- lAsCI2 + + #### EQtest on ratio of As difference ---- + AsDiffRatio <- (at-dt)/(as-ds) + + at_dt <- (at-dt) + as_ds <- (as-ds) + se_ds_asPure <- sqrt(VCOVpure["as","as"]+VCOVpure["ds","ds"]-2*VCOVpure["as","ds"]) + se_dt_atPure <- sqrt(VCOVpure["at","at"]+VCOVpure["dt","dt"]-2*VCOVpure["at","dt"]) + se_ds_asRMSE <- sqrt(vcovMU["as","as"]+vcovMU["ds","ds"]-2*vcovMU["as","ds"]) + se_dt_atRMSE <- sqrt(vcovMU["at","at"]+vcovMU["dt","dt"]-2*vcovMU["at","dt"]) + if (PureErrFlag) se_ds_as <- se_ds_asPure else se_ds_as <- se_ds_asRMSE + if (PureErrFlag) se_dt_at <- se_dt_atPure else se_dt_at <- se_dt_atRMSE + + AsDiffCI2 <- ParamCI_F(at_dt,as_ds,se_dt_at, se_ds_as,CoVarlog=0, DFs, Conf=0.975) + if (AsDiffCI2[1] > Lim[[11]] & AsDiffCI2[2] < Lim[[12]]) test_ad <- 0 else test_ad <- 1 + estLowA <- round(at/as,5) + + Dat$up_lowAs <- (as-ds) + + lowerCIlowerA <- lAsCI2[1]; lowerCIupperA <- uAsCI2[1]; upperCIlowerA <- lAsCI2[2]; upperCIupperA <- uAsCI2[2] + test_lowA <- test_d; test_uppA <- test_a + #browser() + res_tab <- data.frame(test= c("F-test on sign. of regression*", + "EQ test on lower asymptotes difference", + "EQ test ratio of lower asymptotes", + "EQ test ratio of Hill slopes", + "EQ test ratio of upper asymptotes", + "F-test on non-linearity*", + "EQ test ratio of asymptote difference", + "geom. rel. CI restr. model", + "geom. rel. CI unrestr. model"), + test_results = c(ifelse(p_F_regr<0.05,0,1), test_la_diff, test_lowA, test_b, test_uppA, + ifelse(p_F_nonlin>1,1, ifelse(p_F_nonlin<0.05,1,0)), test_ad, + testPOTr, test_c), + estimate = c(round(p_F_regr, 3), round(lAs_diff, 5), + estLowA, round(bs/bt,5), estUppA, p_F_nonlin, + round(at_dt/as_ds, 5), round(potAll2[1]*100,2),round(potAllU2[1]*100,2)), + lower_limit = c("-",Lim[[1]],Lim[[3]],Lim[[5]],Lim[[7]],"-",Lim[[11]],Lim[[9]],Lim[[9]]), + upper_limit = c("-",Lim[[2]],Lim[[4]],Lim[[6]],Lim[[8]],"-",Lim[[12]],Lim[[10]],Lim[[10]]), + lower_CI = c(RMSE_r, round(lCI_laDiff,3), round(lAsCI2[1],5), round(slopeCI2[1],5), + round(uAsCI2[1],5), "-", round(AsDiffCI2[1],5), round(potAll2[2],2), round(potAllU2[2],2)), + upper_CI = c(RMSE_pure, round(uCI_laDiff,3), round(lAsCI2[2],5), round(slopeCI2[2],5), + round(uAsCI2[2],5), "-", round(AsDiffCI2[2],5), round(potAll2[3],2), round(potAllU2[3],2)) + ) + return(res_tab) +} + +ANOVA4plUnresfunc <- function(ro_new, sigmoid) { + all_l <- melt(data.frame(ro_new), id.vars="log_dose", variable.name="replname", value.name = "readout") + all_len <- nrow(all_l) + isRef <- rep(c(1,0),1,each=all_len/2) + isSample <- rep(c(0,1),1,each=all_len/2) + all_l$isRef <- isRef + all_l$isSample <- isSample + all_l$Conc <- exp(all_l$log_dose) + all_l$readout[all_l$readout < 0] <- 0.01 + + pot <- drm(readout ~ Conc, isSample, data=all_l2, fct=LL.4(names=c("b","d","a","c")), + pmodels=data.frame(1,1,1,isSample)) + potU <- drm(readout ~ Conc, isSample, data=all_l, fct=LL.4(names=c("b","d","a","c")), + pmodels=data.frame(isSample, isSample,isSample,isSample)) + SStreat <- round(sum((potU$predres[,1] - mean(all_l$readout))^2),5) + SStreat_df <- length(unique(all_l$log_dose))-1 + SSregr <- round(sum((predict(pot)-mean(all_l$readout))^2),5) + ## Non-parallel + SSnonparallel <- round(sum(resid(pot)^2) - sum(resid(potU)^2),5) + ## Preparation + SSprep <- round(sum((predict(lm(readout ~ isSample, all_l)) - mean(all_l$readout))^2),5) + ## Resid Err + RSS <- round(sum(potU$predres[,2]^2),5) + RSS_df <- nrow(all_l)-SStreat_df-1 + FitAnova <- anova(lm(readout ~ factor(Conc)*isSample, all_l)) + # PureErr + SSE <- FitAnova[4,3] + SSE_df <- FitAnova[4,1] + # Non-Linearity + SSnonlin <- round(sum((predict(lm(readout ~ factor(Conc)*isSample, all_l)) - predict(potU))^2),4) + LoF_df <- FitAnova[1,1]+FitAnova[2,1] + ## Total + SStot <- round(sum((all_l$readout -mean(all_l$readout))^2),5) + MSE <- RSS/RSS_df + noConc <- length(unique(all_l$Conc)) + AnovaDFs <- c(noConc-1, 1,3,noConc-4-1, nrow(all_l)-noConc, noConc, nrow(all_l)-noConc-noConc, nrow(all_l)-1) + p_SStreat <- round(pf((SStreat/AnovaDFs[1])/MSE, AnovaDFs[1],RSS_df, lower.tail = F),3) + p_SSprep <- round(pf((SSprep/AnovaDFs[2])/MSE, AnovaDFs[2],RSS_df, lower.tail = F),3) + p_SSregr <- round(pf((SSregr/AnovaDFs[3])/MSE, AnovaDFs[3],RSS_df, lower.tail = F),3) + p_SSnonp <- round(pf((SSnonparallel/AnovaDFs[4])/MSE, AnovaDFs[3],RSS_df, lower.tail = F),3) + p_SSLoF <- round(pf((SSnonlin/LoF_df)/(SSE/SSE_df), LoF_df,SSE_df, lower.tail = F),5) + + ANOVAtab <- data.frame(Source = c("Treatment","Preparation","Regression", + "Non-Parallelism","Residual Error","Non-linearity", + "Pure Error","Total"), + DF = AnovaDFs, + SumSquares = c(SStreat, SSprep,SSregr, SSnonparallel, + RSS, SSnonlin,SSE, SStot), + MeanSquares = c(round(SStreat/AnovaDFs[1],3), SSprep, round(SStreat/AnovaDFs[3],3),round(SSnonparallel/AnovaDFs[4],3), + round(MSE,5), round(SSnonlin/LoF_df,5), round(SSE/SSE_df,5),""), + "F-value" = c(round((SStreat/AnovaDFs[1])/MSE,5), round((SSprep/AnovaDFs[2])/MSE,5), + round((SSregr/AnovaDFs[3])/MSE,5),round((SSnonparallel/AnovaDFs[4])/MSE,5), + "",round((SSnonlin/LoF_df)/(SSE/SSE_df),5),"",""), + "p_value" = c(round(p_SStreat,3), p_SSprep, round(p_SSregr,3), p_SSnonp,"",p_SSLoF,"","") + ) + + return(ANOVAtab) +} + +perConcTab <- function(ro_new, noDilSeries) { + Reftab <- ro_new[,c(1:noDilSeries)] + Testtab <- ro_new[,c((noDilSeries+1):(2*noDilSeries))] + tReftab <- t(Reftab) + colnames(tReftab) <- round(ro_new[,ncol(ro_new)],5) + + avs <- apply(tReftab,2,mean) + sds <- apply(tReftab,2,sd) + cv <- sds/avs*100 + tReftab2 <- rbind(tReftab, avs,sds,cv) + + tTesttab <- t(Testtab) + colnames(tTesttab) <- round(ro_new[,ncol(ro_new)],5) + + avs_test <- apply(tTesttab,2,mean) + sds_test <- apply(tTesttab,2,sd) + cv_test <- sds_test/avs_test*100 + tTesttab2 <- rbind(tTesttab, avs_test,sds_test,cv_test) + concTab <- rbind(tReftab2, tTesttab2) + return(concTab) + +} + +divFUN <- function(x,Div,N,res,noDil) { + N <- N+1 + y <- x/Div + res <- c(res,y) + if (N==noDil) { return(res) } + divFUN(y,Div,N,res,noDil) +} + + + + + +server = function(input,output,session) { + ReportParS <- reactiveValues() + IPReportParS <- reactiveValues() + + + output$homePage <- renderUI({ + navbarPage("Home", + tabPanel("Introduction", + tags$img(src="logo.png", class="adv_logo"), + h4("Introduction to the bioassay software"), + tags$mark("linear regression"), br(), + + ), + tabPanel("Documentation", + h4("Introduction "), + h4("Information on dilution setting"), + "(for details see:", a(href="ADONIS.pdf","Whitepaper", download=NA, target="_blank"),")",tags$br(), + "Bend points are calculated according to following formula:", + withMathJax(" $$bp_{1/2} = \\pm\\frac{1.31696}{Hill's slope}$$")), + tabPanel("Configuration", + verbatimTextOutput("sessioninfo")) + ) + }) + + output$Dataupload <- renderUI({ + navbarPage(title="Information", + tabPanel(title = "Upload all worksheets", + box(title = "Upload", status="warning",solidHeader = T, width=4, "Please upload your EXCEL file here", + fileInput("XLfile",'',accept=".xlsx")), + "Two possibilities of data structures...", + img(src="Screenshot.png", width=400), + tags$head(tags$style(HTML("label {font-size:80%;margin-bottom: 3px;margin-top: 3px;}"))), + column(2, + tags$image(src="logo.png", class="adv_logo"), + h4("upload EXCEL"), + fileInput(inputId = "iFile", label = "", accept="ms-excel"), + uiOutput(outputId = "sheetName"), + div(checkboxInput("PureErr", "Should pure error be used for calculation of CIs?", FALSE), + style = "font-size: 24px !important;color: red"), + verbatimTextOutput("stats"), + h5("\n\n\n Author: Franz Innerbichler, InnerAnalytics")), + div(id="parameter", + column(1,style = "background: lightgrey", + #actionButton("StartCalc", "Click, when calculations to be started"), + h4("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) + ), + column(1,style = "background: lightgrey", + 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) + ), + column(1,style = "background: lightgreen", + h4("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) + ), + column(1,style = "background: lightgreen", + + numericInput("CONC7", "7th concentration",0.00469), + numericInput("CONC8", "8thd concentration",0.00235), + numericInput("CONC9", "9thd concentration",NA), + numericInput("CONC10", "10th concentration",NA), + numericInput("CONC11", "11th concentration",NA), + + numericInput("CONC12", "lowest concentration",NA) + ), + column(1,style = "background: lightblue", + h4("geometric dilution scheme"), + numericInput("ConcStart", "starting concentration",NA), + numericInput("dilutionFac", "dilution factor",NA), + numericInput("NoDil", "no. of dilutions",NA), + numericInput("NoDilSer", "no. of dil. series",NA), + verbatimTextOutput("dilutions") + ), + column(4, + h4("log-dilution scheme"), + verbatimTextOutput("logdil"), + h4("User help"), + h5("If new dilutions are entered, please adjust EC50 to avoid calculation errors")) + ) + + )) + }) + + output$fourPL <- renderUI({ + navbarPage(title="4PL", + tabPanel("Analysis and Plots", + sidebarLayout( + sidebarPanel( + width=3, + fluidRow( + column(6, + numericInput("Limits",p("limit to be >", bsButton("q4",label="", icon=icon("info"), style="primary", size="extra-small")), + bsPopover(id="q4", title="", content="The calculated limits ..."))) + )), + mainPanel( + tabsetPanel(id="tabs", + tabPanel("4pl", + box(title="ANOVA table", status="primary",solidHeader = T, width=12, + tableOutput("Anovatab")), + column(2, + h5("Diagnostics only shown if EXCEL is uploaded"), + htmlOutput("PureErrW2"), + tags$head(tags$style("#PureErrW2{color: red; + font-size: 16px; + font_style: italic;}")), + tableOutput("FileSAmpl"), + downloadButton("downloadXLReport", label="Download PDF report", class="butt"), + tags$style(type="text/css","#downloadXLReport {background-color: orange; color: black;font-family: COurier New}"), + plotOutput("relpotTestPlot", width="300px", height="150px"), + h4("Akaike Information Criterion"), + tableOutput("AIC"), + h5("First row: restricted model; 2nd row: unrestricted model"), + h5("Smaller values of AIC indicate better fit to the data"), + tableOutput("VarDiagn") + ), + column(4, + plotOutput("XLplot"), + column(6, + br(), + "Regression results restricted", + tableOutput("coeffs_r"), + "Bend points restricted", + tableOutput("coeffs_r2")), + column(6, + br(), + "Regression results unrestricted", + tableOutput("coeffs_unr"))), + column(4, + plotOutput("diagnplot"), + column(6, + tableOutput("logcoeffs_r"), + tableOutput("coeffs_unr2")), + column(6, + tableOutput("logcoeffs_unr"))), + column(2, + tableOutput("ANOVAXLS"), + DT::renderDataTable("EQtests")) + ), + tabPanel("Report", + h4("Settings for report"), + )) + ) + ))) + }) + + output$pla <- renderUI({ + navbarPage(title="pla", + tabPanel("Analysis and Plots", + sidebarLayout( + sidebarPanel( + width=3, + fluidRow( + column(6, + numericInput("Limits",p("limit to be >", bsButton("q4",label="", icon=icon("info"), style="primary", size="extra-small")), + bsPopover(id="q4", title="", content="The calculated limits ..."))) + )), + mainPanel( + tabsetPanel(id="tabs", + tabPanel("4pl", + box(title="ANOVA table", status="primary",solidHeader = T, width=12, + tableOutput("Anovatab")), + column(6, + htmlOutput("PureErrW3"), + tags$head(tags$style("#PureErrW2{color: red; + font-size: 16px; + font_style: italic;}")), + plotOutput("plotLin"), + "Delta method is used for potency CIs", + DT::dataTableOutput("pottab"), + h4("Unrestricted linear model (SSSI):"), + tableOutput("SummaryModABu"), + h4("Restricted linear model (CSSI):"), + tableOutput("SummaryModAB")), + column(3, + h3("Tests for linear PLA):"), + DT::dataTableOutput("TESTSlin"), + 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"), + "SST CI for difference of slopes:", + tableOutput("SlopeDiffCI")), + column(3, + h3("ANOVA for parallel line assay"), + DT::dataTableOutput("ANOVAlin"))), + tabPanel("Report", + h4("Settings for report") + )) + ) + ))) + }) + + output$wizard <- renderUI({ + navbarPage(title="Dilution setting", + tabPanel("Plots", + sidebarLayout( + sidebarPanel( + width=3, + fluidRow( + column(6, + numericInput("Limits",p("limit to be >", bsButton("q4",label="", icon=icon("info"), style="primary", size="extra-small")), + bsPopover(id="q4", title="", content="The calculated limits ..."))) + )), + mainPanel( + tabsetPanel(id="tabs", + tabPanel("4pl", + box(title="ANOVA table", status="primary",solidHeader = T, width=12, + tableOutput("Anovatab")), + column(4, + h3("Confidence intervals"), + tableOutput("CIs"), + "The confidence intrval table is interaactive for changes in: variability slider (%SD), potency of test-slider, + and 'Adjust the dilutions'-slider", + tableOutput("optimalDils"), + selectInput(inputId="scenario", label= "Select an 'optimal' scenario:", choices = c("scenario 2","scenario 3","scenario 6","steep slope"))), + column(5, + plotOutput("plotfordilutions"), + h4("in grey: most extreme bend point lines of theoretical samples with 50% and 200% potency"), + sliderInput("dilslider", "Adjust the dilutions(+-change in %)", min = -100,max=100, value=0, step=1, round=0), + checkboxInput("fixupper","Fix highest concentration (if unticked, the center is fixed)",FALSE), + h5("Dilution factors"), + tableOutput("adjlogdil"), + "Short guidance: wider dilution ranges increase the CIs of rel. potency, and decrease the CIs of upper and lower asymptote ratios, as well as Hill's slope ratios", br(), + "Narrower dilution ranges decrease the CIs of rel. potency, and increase the CIs of upper and lower asymptote ratios, ands Hill's slope ratios",), + column(3, + h3("Bend points"), + tableOutput("bps"), + tableOutput("extremebps"), + h4("Explanation of the plots") + )), + tabPanel("Report", + h4("Settings for report") + )) + ) + ))) + }) + + +} + + diff --git a/.Rproj.user/1804966C/sources/session-c8f70505/A184C1A3-contents b/.Rproj.user/1804966C/sources/session-c8f70505/A184C1A3-contents new file mode 100644 index 0000000..e69de29 diff --git a/.Rproj.user/1804966C/sources/session-c8f70505/A4E06B42-contents b/.Rproj.user/1804966C/sources/session-c8f70505/A4E06B42-contents new file mode 100644 index 0000000..87ff5ec --- /dev/null +++ b/.Rproj.user/1804966C/sources/session-c8f70505/A4E06B42-contents @@ -0,0 +1,51 @@ +# +# This is a Shiny web application. You can run the application by clicking +# the 'Run App' button above. +# +# Find out more about building applications with Shiny here: +# +# https://shiny.posit.co/ +# + +library(shiny) + +# Define UI for application that draws a histogram +ui <- fluidPage( + + # Application title + titlePanel("Old Faithful Geyser Data"), + + # Sidebar with a slider input for number of bins + sidebarLayout( + sidebarPanel( + sliderInput("bins", + "Number of bins:", + min = 1, + max = 50, + value = 30) + ), + + # Show a plot of the generated distribution + mainPanel( + plotOutput("distPlot") + ) + ) +) + +# Define server logic required to draw a histogram +server <- function(input, output) { + + output$distPlot <- renderPlot({ + # generate bins based on input$bins from ui.R + x <- faithful[, 2] + bins <- seq(min(x), max(x), length.out = input$bins + 1) + + # draw the histogram with the specified number of bins + hist(x, breaks = bins, col = 'darkgray', border = 'white', + xlab = 'Waiting time to next eruption (in mins)', + main = 'Histogram of waiting times') + }) +} + +# Run the application +shinyApp(ui = ui, server = server) diff --git a/.Rproj.user/1804966C/sources/session-c8f70505/AD13DB6C-contents b/.Rproj.user/1804966C/sources/session-c8f70505/AD13DB6C-contents new file mode 100644 index 0000000..e69de29 diff --git a/.Rproj.user/1804966C/sources/session-c8f70505/ADC82D47-contents b/.Rproj.user/1804966C/sources/session-c8f70505/ADC82D47-contents new file mode 100644 index 0000000..e69de29 diff --git a/.Rproj.user/1804966C/sources/session-c8f70505/AFA288F2 b/.Rproj.user/1804966C/sources/session-c8f70505/AFA288F2 new file mode 100644 index 0000000..ec9862f --- /dev/null +++ b/.Rproj.user/1804966C/sources/session-c8f70505/AFA288F2 @@ -0,0 +1,27 @@ +{ + "id": "AFA288F2", + "path": "~/plateflow/wizardNew/DataGenerator.R", + "project_path": null, + "type": "r_source", + "hash": "0", + "contents": "", + "dirty": false, + "created": 1777554257099.0, + "source_on_save": false, + "relative_order": 4, + "properties": { + "tempName": "Untitled1", + "source_window_id": "", + "Source": "Source", + "cursorPosition": "53,0", + "scrollLine": "32" + }, + "folds": "", + "lastKnownWriteTime": 1777557164, + "encoding": "UTF-8", + "collab_server": "", + "source_window": "", + "last_content_update": 1777557164367, + "read_only": false, + "read_only_alternatives": [] +} \ No newline at end of file diff --git a/.Rproj.user/1804966C/sources/session-c8f70505/AFA288F2-contents b/.Rproj.user/1804966C/sources/session-c8f70505/AFA288F2-contents new file mode 100644 index 0000000..331bcf1 --- /dev/null +++ b/.Rproj.user/1804966C/sources/session-c8f70505/AFA288F2-contents @@ -0,0 +1,54 @@ +Calc_DilRes <- function(as=3, bs=1, cs=-4, ds=10, at=3, bt=1, dt=10,r=0.0001,ct=cs-r, + sd_fac=0.1, gt=1, gs=1, log_conc, + heteroNoise=FALSE, noDilSeries, noDils) { + yAxfac <- (ds-as) + log_dose <- log_conc + isRef <- rep(c(1,0),1,each=length(log_conc)*noDilSeries) + isSample <- rep(c(0,1),1,each=length(log_conc)*noDilSeries) + browser() + av <- as*isRef + at*isSample + (ds*isRef + dt*isSample - as*isRef - at*isSample)/ + (1+isRef*exp(bs*(cs - log_dose)) + isSample*exp(bt*(ct-log_dose))) + if (heteroNoise) { + # heterosc noise + ro_jit <- matrix(unlist(map(av, function(x) x+rnorm(1,0,x*sd_fac/100))), nrow=noDils, ncol=noDilSeries*2) + } else { + # homosc noise + ro_jit <- matrix(unlist(map(av, function(x) x+rnorm(1,0,sd_fac*yAxfac/100))), nrow=noDils, ncol=noDilSeries*2) + } + ro_jit <- abs(ro_jit) + + ro_jit2 <- cbind(ro_jit, log_dose) + if (noDilSeries==3) { + colnames(ro_jit2) <- c("R_dil1","R_dil2","R_dil3","T_dil1","T_dil2","T_dil3", "log_dose") + } else { + colnames(ro_jit2) <- c("R_dil1","R_dil2","T_dil1","T_dil2", "log_dose") + } + return(ro_jit2) +} + +library(openxlsx) +Conc <- 9*1/(3^(1:11)) +Conc_ <- c(9, Conc) + +ro_new <- list() +ro_new[[1]] <- Calc_DilRes(as=1000, bs=-2, cs=-4, ds=10000, at=1000, bt=-2, dt=10000, log_conc = log(Conc_), + sd_fac=3.3, + # auslenkU=outlierU, + # auslenkM=outlierM, + # auslenkL=outlierL, + heteroNoise = F, noDilSeries = 2, noDils = 12) +ro_new[[2]] <- Calc_DilRes(as=1000, bs=-2, cs=-4, ds=10000, at=1000, bt=-2, dt=10000, log_conc = log(Conc_), + sd_fac=3.3,r=0.1, + # auslenkU=outlierU, + # auslenkM=outlierM, + # auslenkL=outlierL, + heteroNoise = F, noDilSeries = 2, noDils = 12) +ro_new[[3]] <- Calc_DilRes(as=1000, bs=-2, cs=-4, ds=10000, at=1000, bt=-2, dt=10000, log_conc = log(Conc_), + sd_fac=3.2, r=-0.3, + # auslenkU=outlierU, + # auslenkM=outlierM, + # auslenkL=outlierL, + heteroNoise = F, noDilSeries = 2, noDils = 12) + +write.xlsx(ro_new, "~/plateflow/wizard/Tests3Plates.xlsx") + diff --git a/.Rproj.user/1804966C/sources/session-c8f70505/B56AC04E-contents b/.Rproj.user/1804966C/sources/session-c8f70505/B56AC04E-contents new file mode 100644 index 0000000..e69de29 diff --git a/.Rproj.user/1804966C/sources/session-c8f70505/C2562822-contents b/.Rproj.user/1804966C/sources/session-c8f70505/C2562822-contents new file mode 100644 index 0000000..e69de29 diff --git a/.Rproj.user/1804966C/sources/session-c8f70505/CA43EAA6-contents b/.Rproj.user/1804966C/sources/session-c8f70505/CA43EAA6-contents new file mode 100644 index 0000000..e69de29 diff --git a/.Rproj.user/1804966C/sources/session-c8f70505/CAA6E781-contents b/.Rproj.user/1804966C/sources/session-c8f70505/CAA6E781-contents new file mode 100644 index 0000000..e69de29 diff --git a/.Rproj.user/1804966C/sources/session-c8f70505/CF6D7617-contents b/.Rproj.user/1804966C/sources/session-c8f70505/CF6D7617-contents new file mode 100644 index 0000000..e69de29 diff --git a/.Rproj.user/1804966C/sources/session-c8f70505/D0721A67-contents b/.Rproj.user/1804966C/sources/session-c8f70505/D0721A67-contents new file mode 100644 index 0000000..e69de29 diff --git a/.Rproj.user/1804966C/sources/session-c8f70505/E68D9B8B-contents b/.Rproj.user/1804966C/sources/session-c8f70505/E68D9B8B-contents new file mode 100644 index 0000000..3c4a53d --- /dev/null +++ b/.Rproj.user/1804966C/sources/session-c8f70505/E68D9B8B-contents @@ -0,0 +1,45 @@ + +library(shiny) +library(shinydashboard) +library(fontawesome) + +ui <- dashboardPage( + dashboardHeader("wizard"), + dashboardSidebar( + sidebarMenu( + img(src="logo.png", width=230), + menuItem("Home", tabName="home", icon=icon("home")), + menuItem("Data template", tabName = "template", icon=icon("table"), + menuSubItem( tags$li(a("EXCEL File", target="self",href="TestFIle.xlsx"))) + ), + menuItem("User Manual /Validation", tabName = "manual", icon=icon("book"), + menuSubItem(icon = NULL, tags$li(a("Document", target="self",href="UserManual.pdf"))) + ), + menuItem("EXCEL upload", tabName="Dataupload", icon=icon("magnet", lib="glyphicon")), + menuItem("4PL + report", tabName="4PL", icon=icon("chart-line", lib="font-awesome")), + menuItem("Linear regression + report", tabName="pla", icon=icon("pencil", lib="glyphicon")), + menuItem("Wizard", tabName="wizard", icon=icon("chart-column", lib="font-awesome")), + menuItem("Documentation", tabName="documentation", icon=icon("chart-area", lib="font-awesome")) + ), + tags$footer(HTML(paste("Owned by",tags$strong(tags$u("InnerAnalytics")), paste(rep(" ",9), collapse=""), + "Developer:", paste(rep(" ",9), collapse=""), + "Host on:", paste(rep(" ",9), collapse=""), + "Version:")), + align="left", style= + "position:fixed; bottom_=;;width=100%; background: #7FAEFF; font-family: Times New Roman; font-size:100%; + padding: 5px; color:#990000; box-sizing: border-box; z-index: 1000;") + ), + dashboardBody( + fluidPage( + tabItems( + tabItem(tabName = "home", htmlOutput("homePage")), + tabItem(tabName = "Datapload", uiOutput("Dataupload")), + tabItem(tabName = "fourPL", uiOutput("fourPL")), + tabItem(tabName = "pla", uiOutput("pla")), + tabItem(tabName = "wizard", uiOutput("wizard")) + + ) + + ) + ) , skin="blue" +) \ No newline at end of file diff --git a/.Rproj.user/1804966C/sources/session-c8f70505/EE965DC3-contents b/.Rproj.user/1804966C/sources/session-c8f70505/EE965DC3-contents new file mode 100644 index 0000000..e69de29 diff --git a/.Rproj.user/1804966C/sources/session-c8f70505/F3CBFA8F-contents b/.Rproj.user/1804966C/sources/session-c8f70505/F3CBFA8F-contents new file mode 100644 index 0000000..e69de29 diff --git a/.Rproj.user/1804966C/sources/session-c8f70505/FA393B55-contents b/.Rproj.user/1804966C/sources/session-c8f70505/FA393B55-contents new file mode 100644 index 0000000..e69de29 diff --git a/.Rproj.user/1804966C/sources/session-c8f70505/lock_file b/.Rproj.user/1804966C/sources/session-c8f70505/lock_file new file mode 100644 index 0000000..e69de29 diff --git a/.Rproj.user/shared/notebooks/patch-chunk-names b/.Rproj.user/shared/notebooks/patch-chunk-names new file mode 100644 index 0000000..e69de29 diff --git a/.Rproj.user/shared/notebooks/paths b/.Rproj.user/shared/notebooks/paths new file mode 100644 index 0000000..663dcc9 --- /dev/null +++ b/.Rproj.user/shared/notebooks/paths @@ -0,0 +1,5 @@ +/Users/franzinnerbichler/plateflow/NewApp/app.R="232C6386" +/Users/franzinnerbichler/plateflow/wizardNew/DataGenerator.R="038FF5B5" +/Users/franzinnerbichler/plateflow/wizardNew/Untitled.R="405C9157" +/Users/franzinnerbichler/plateflow/wizardNew/server.R="710F8608" +/Users/franzinnerbichler/plateflow/wizardNew/ui.R="CB737866" diff --git a/Doc_BioassayReport.Rmd b/Doc_BioassayReport.Rmd new file mode 100644 index 0000000..c1c9bdf --- /dev/null +++ b/Doc_BioassayReport.Rmd @@ -0,0 +1,432 @@ +--- +output: + pdf_document: + extra_dependencies: ["float"] + number_sections: true + toc: true + toc_depth: 3 +header_includes: + -\usepackage{fancyheadr} + -\setlength{\headheight}{22pt}% + -\usepackage{lastpage} + -\pagestyle{fancy} + -\usepackage{pdflscape} + -\usepackage{longtable} + -\rhead{\includegraphics[width=.15\textwidth]{`r getwd()`/logo.png}} +params: + FileName: NA + newTitle: NA + author: NA + REP: NA + coeffs: NA +author: "Author: `r params$author`" +title: | + | ![](logo.png){width=1in} + | 4PL bioassay evaluation +subtitle: | + `r params$FileName` + + Unique time: `r Sys.time()` +date: "`r paste(params$Subway, params$Version)`" + +--- + + + + + + +```{r setup, include=FALSE} + +knitr::opts_chunk$set(echo = TRUE) + +library(knitr) +library(DT) + +REP <- params$REP +author <- params$author +coeffs <- params$coeffs + +all_l <- REP$all_l +ANOVAXLS <- REP$ANOVAXLS +DiagnTable <- REP$DiagnTable +UnRPLAausw <- REP$UnRPLAausw +UnRPLBend <- REP$UnRPLBend +PLAausw <- REP$PLAausw +PLBend <- REP$PLBend +LogPLAausw <- REP$LogPLAausw +LogUnrPLAausw <- REP$LogUnrPLAausw + +XLdat2 <- REP$XLdat2 + +CIplot <- REP$CIplot +testsTab <- REP$testsTab +relpotTestPlot <- REP$relpotTestPlot + + + +``` + + +# Introduction + +Bioassay potency estimation uses statistical methods to quantify the strength of a biological product or drug by comparing its response to that of a reference standard. Because biological responses are inherently variable, affected by assay conditions, cell systems or organisms, and measurement noise, the 4-parametric logistic regression is used to obtain reliable potency values. The variance for confidence interval calculation is coming from the regression procedure itself and is an excellent predictor for the variability of any future potency determinations. +USP<1034> recommends calculation of standard errors of ratios of the parameters using Fieller's theorem [Finney D.J. 1978] or using the "delta" method (for a discussion about the "delta" method see [Ver Hoef 2012]). However, the presented gradient approach using the differences on the log-scale is methematically more stable und thus preferable compared to any ratio approach ([Franz, V.H. 2007]). + +# Results + +All data used for the 4PL evaluation is shown in table 1: + +```{r alll, echo=FALSE, warning=FALSE, results='asis'} + +kable(all_l, format = "markdown", caption= "Uploaded data (test and reference) in long format", digits=3) + +``` + +The following 4 plots show all 4 models: restricted and unrestricted, and log transformed, respectively. + +You can also embed plots, for example: + +```{r XLplot, echo=FALSE, warning=FALSE, fig.height=4, fig.width=6, fig.cap="Plot of models", fig.align='left'} + +plot_f <- function(dat, sigmoid,det_sig) { + CORdat <- cor(dat[,1],dat[,ncol(dat)]) + + all_l <- melt(data.frame(dat), 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) + + if(is.null(det_sig)) { + if (CORdat<0) { + startlist <- list(a=sigmoid[3], b=-sigmoid[5],cs=sigmoid[7], + d=sigmoid[1],r=sigmoid[8]) + } else { + startlist <- list(a=sigmoid[3],b=sigmoid[5],cs=sigmoid[7], + d=sigmoid[1],r=sigmoid[8]) + } + } else { + startlist <- list(a=det_sig[5], b=det_sig[1],cs=det_sig[7], + d=det_sig[3],r=det_sig[7] - det_sig[8]) + } + #browser() + tryCatch({ + mr <- gsl_nls(fn = readout ~ a+(d-a)/(1+exp(b*(log_dose-(cs-r*isSample)))), + data=all_l2, + start=startlist, + control=gsl_nls_control(xtol=1e-6,ftol=1e-6, gtol=1e-6)) + }, + error = function(err) { + err$message + }) + s_mr <- summary(mr) + a <- s_mr$coefficients[1,1] + b <- s_mr$coefficients[2,1] + cs <- s_mr$coefficients[3,1] + d <- s_mr$coefficients[4,1] + r <- s_mr$coefficients[5,1] + + log_dose <- unique(all_l$log_dose) + seq_x <- seq(min(log_dose),max(log_dose),0.1) + SAMPLE <- a+(d-a)/(1+exp(b*(seq_x-(cs-r)))) + REF <- a+(d-a)/(1+exp(b*(seq_x-(cs)))) + + if (is.null(det_sig)) { + SAMPLEtrue <- sigmoid[4] + (sigmoid[2] -sigmoid[4])/(1+exp(sigmoid[6]*(seq_x-(sigmoid[7]-sigmoid[8])))) + REFtrue <- sigmoid[3] + (sigmoid[1] -sigmoid[3])/(1+exp(sigmoid[5]*(seq_x-(sigmoid[7])))) + } else { + SAMPLEtrue <- det_sig[4] + (det_sig[6] -det_sig[4])/(1+exp(-det_sig[2]*(seq_x-(det_sig[8])))) + REFtrue <- det_sig[3] + (det_sig[5] -det_sig[3])/(1+exp(-det_sig[1]*(seq_x-(det_sig[7])))) + } + + pl_df <- cbind(seq_x, SAMPLE, REF, SAMPLEtrue, REFtrue) + all_l2$readout[all_l2$readout < 0] <- 0.01 + all_l2$readouttrans <- log(all_l2$readout) + slopeEC50 <- b*(a-d)/4 + + Xbendl3 <- cs-(1.31696/b) + Xbendu3 <- cs+(1.31696/b) + XbendlT <- cs-r-(1.31696/b) + XbenduT <- cs-r+(1.31696/b) + bendpoints <- c(bendREF_lower = round(Xbendl3,3), bendREF_upper=round(Xbendu3,3), + bendSAMPLE_lower = round(XbendlT,3), bendSAMPLE_upper=round(XbenduT,3)) + + p <- ggplot(all_l2, aes(x=log_dose, y=readout, color=factor(isRef))) + + geom_point(shape=factor(isRef), alpha=0.8) + + labs(title = paste("restricted 4pl; bendp:", round(Xbendl3,3),round(Xbendu3,3),round(XbendlT,3),round(XbenduT,3)), + color="product") + + scale_color_manual(labels=c("test","reference"), values=c("red","blue")) + + scale_shape_manual(labels=c("test","reference")) + + theme_bw() + + theme(axis.text = element_text(size=14)) + + p2 <- p + geom_line(data=as.data.frame(pl_df), aes(x=seq_x, y=SAMPLE), color="red", + inherit.aes = F) + + geom_line(data=as.data.frame(pl_df), aes(x=seq_x, y=REF), color="blue", + inherit.aes = F) + + geom_line(data=as.data.frame(pl_df), aes(x=seq_x, y=SAMPLEtrue), color="red", linetype=2, alpha=0.4, + inherit.aes = F) + + geom_line(data=as.data.frame(pl_df), aes(x=seq_x, y=REFtrue), color="blue", linetype=2, alpha=0.4, + inherit.aes = F) + + geom_vline(xintercept=c(Xbendl3, Xbendu3), col="blue",linetype=2) + + geom_vline(xintercept=c(XbendlT, XbenduT), col="red",linetype=2) + + annotate("text", x=cs, y=a+(d-a)/2, label="0", size=5) + + theme(legend.position="none") + + + # transformed plots + p_rt <- ggplot(all_l2, aes(x=log_dose, y=readouttrans, color=factor(isRef))) + + geom_point(shape=factor(isRef), alpha=0.8) + + labs(title = paste("restricted transformed 4pl"), color="product") + + scale_color_manual(labels=c("test","reference"), values=c("red","blue")) + + theme_bw() + + mrt <- gsl_nls(fn = readouttrans ~ a+(d-a)/(1+exp(b*(log_dose-(cs-r*isSample)))), + data=all_l2, + start=startlist, + control=gsl_nls_control(xtol=1e-6,ftol=1e-6, gtol=1e-6)) + s_mrt <- summary(mrt) + a_trans <- s_mrt$coefficients[1,1] + b_trans <- s_mrt$coefficients[2,1] + cs_trans <- s_mrt$coefficients[3,1] + d_trans <- s_mrt$coefficients[4,1] + r_trans <- s_mrt$coefficients[5,1] + + XbendlTrans <- cs_trans-(1.31696/b_trans) + XbenduTrans <- cs_trans+(1.31696/b_trans) + XbendlTransT <- cs_trans-r_trans-(1.31696/b_trans) + XbenduTransT <- cs_trans-r_trans+(1.31696/b_trans) + bendpointsTRANS <- c(bendREF_lower = round(XbendlTrans,3), bendREF_upper=round(XbenduTrans,3), + bendSAMPLE_lower = round(XbendlTransT,3), bendSAMPLE_upper=round(XbenduTransT,3)) + + SAMPLEtrans <- a_trans+(d_trans-a_trans)/(1+exp(b_trans*(seq_x-(cs_trans-r_trans)))) + REFtrans <- a_trans+(d_trans-a_trans)/(1+exp(b_trans*(seq_x-(cs_trans)))) + + pl_df_trans <- cbind(seq_x, SAMPLEtrans, REFtrans) + p_rt2 <- p_rt + geom_line(data=as.data.frame(pl_df_trans), aes(x=seq_x, y=SAMPLEtrans), color="red", + inherit.aes = F) + + geom_line(data=as.data.frame(pl_df_trans), aes(x=seq_x, y=REFtrans), color="blue", + inherit.aes = F) + + geom_vline(xintercept=c(XbendlTrans, XbenduTrans), col="blue",linetype=2) + + geom_vline(xintercept=c(XbendlTransT, XbenduTransT), col="red",linetype=2) + + theme(legend.position = "none", axis.text=element_text(size=14)) + + if (is.null(det_sig)) { + unrestr <- drm(readout ~ exp(log_dose), isSample, data=all_l2, fct=LL.4(), + pmodels=data.frame(isSample, isSample,isSample,isSample)) + Sum_u <- summary(unrestr) + ast <- Sum_u$coefficients[3,1] + ate <- Sum_u$coefficients[4,1] + bst <- Sum_u$coefficients[1,1] + bte <- Sum_u$coefficients[2,1] + cst <- log(Sum_u$coefficients[7,1]) + cte <- log(Sum_u$coefficients[8,1]) + dst <- Sum_u$coefficients[5,1] + dte <- Sum_u$coefficients[6,1] + } else { + ast <- det_sig[5] + ate <- det_sig[6] + bst <- det_sig[1] + bte <- det_sig[2] + cst <- det_sig[7] + cte <- det_sig[8] + dst <- det_sig[3] + dte <- det_sig[4] + } + REFu <- ast + (dst-ast)/(1+exp(bst*(seq_x-cst))) + SAMPLEu <- ate + (dte-ate)/(1+exp(bte*(seq_x-cte))) + pl_df2 <- cbind(seq_x, SAMPLEu, REFu) +#browser() + pu <- ggplot(all_l2, aes(x=log_dose, y=readout, color=factor(isRef))) + + geom_point() + + labs(title="unrestricted 4_pl-Model", color="product") + + scale_color_manual(labels = c("test","reference"), values=c("red","blue")) + + theme_bw() + pu2 <- pu + geom_line(data=as.data.frame(pl_df2), aes(x=seq_x, y=SAMPLEu), + color="red", inherit.aes = F) + + geom_line(data=as.data.frame(pl_df2), aes(x=seq_x, y=REFu), + color="blue", inherit.aes = F, + show.legend = F) + pu2_ <- pu2 + + theme(legend.position = "none", axis.text = element_text(size=14)) + putrans <- ggplot(all_l2, aes(x=log_dose, y=readouttrans, color=factor(isRef))) + + geom_point() + + labs(title="unrestricted transformed 4_pl-Model", color="product") + + scale_color_manual(labels = c("test","reference"), values=c("red","blue")) + + theme_bw() + + unrestr_trans <- drm(readouttrans ~ exp(log_dose), isSample, data=all_l2, fct=LL.4(), + pmodels=data.frame(isSample, isSample,isSample,isSample)) + Sum_ut <- summary(unrestr_trans) + ast_t <- Sum_ut$coefficients[3,1] + ate_t <- Sum_ut$coefficients[4,1] + bst_t <- Sum_ut$coefficients[1,1] + bte_t <- Sum_ut$coefficients[2,1] + cst_t <- log(Sum_ut$coefficients[7,1]) + cte_t <- log(Sum_ut$coefficients[8,1]) + dst_t <- Sum_ut$coefficients[5,1] + dte_t <- Sum_ut$coefficients[6,1] + + REFu_trans <- ast_t + (dst_t-ast_t)/(1+exp(bst_t*(seq_x-cst_t))) + SAMPLEu_trans <- ate_t + (dte_t-ate_t)/(1+exp(bte_t*(seq_x-cte_t))) + pl_df2u_t <- cbind(seq_x, SAMPLEu_trans, REFu_trans) + + pu2_t <- putrans + geom_line(data=as.data.frame(pl_df2u_t), aes(x=seq_x, y=SAMPLEu_trans), + color="red", inherit.aes = F) + + geom_line(data=as.data.frame(pl_df2u_t), aes(x=seq_x, y=REFu_trans), + color="blue", inherit.aes = F, + show.legend = F) + pu3_t <- pu2_t + grid.arrange(p2,p_rt2,pu2_,pu3_t, nrow=2) +} + +plot_f(XLdat2, sigmoid=NULL, det_sig=coeffs) + + +``` + +The ANOVA of the unconstrained model is listed in table 2: + +```{r anovaxls, echo=FALSE, warning=FALSE, results='asis'} + +kable(ANOVAXLS, format = "markdown", caption= "ANOVA table unrestricted", digits=3) + + +``` + + +```{r SST_ergebn, fig.align='center', fig.pos='htb!', echo=FALSE, cache=FALSE, warning=FALSE, message=FALSE, tidy=TRUE} + +kable(testsTab[1:7,], row.names = F, format = "markdown", caption="SST results") + + +``` + + +*...The estimate for F-test on regression and on non-linearity is the p-value + F-test on regression passes if F-value > F-crit and thus p < 0.05 + F-test on non-linearity passes if F-value < F-crit and thus p > 0.05 + Test results outcome: + + 0 ... test passed (for EQ tests: CI within limits); + + 1 ... test failed (for EQ tests CI not within limits); + + -1 ... calculations unbound/denominator too close to 0 + + + + + + + + + + + + + + + +## Fitting results of the 4 models with bend points + +The results of the non-linear fitting procedure for the restricted model (5 parameters) is listed in table 4: + +```{r PLAausw, echo=FALSE, warning=FALSE, results='asis'} + +kable(PLAausw, format = "markdown", caption= "Restricted 4PL evaluation", digits=3, row.names = F) + + +``` + + +A depiction of the CI and corresponding limits of relative potency is shown here: + +```{r, label='relpotPlot', echo=FALSE, warning=FALSE, fig.height=2, fig.width=3.5, fig.cap="Rel potency with CIs and limits", fig.align='left', results='asis'} + +print(relpotTestPlot) + + +``` + + +The bend points for test and reference sample are in table 5: + +```{r PLBend, echo=FALSE, warning=FALSE, results='asis'} + +kable(PLBend, format = "markdown", caption= "Bendpoints (Sebaugh) of restricted 4PL", digits=3) + + +``` + +The results of the non-linear fitting procedure for the unrestricted model (8 parameters) is listed in table 6: + +```{r UnRPLAausw, echo=FALSE, warning=FALSE, results='asis'} + +kable(UnRPLAausw, format = "markdown", caption= "UNrestricted 4PL evaluation", digits=3, row.names = F) + +``` + + +```{r UnRPLBend, echo=FALSE, warning=FALSE, results='asis'} + +kable(UnRPLBend, format = "markdown", caption= "Bend points of 4PL unrestricted", digits=3, row.names = F) + + +``` + + + +```{r LogPLAausw, echo=FALSE, warning=FALSE, results='asis'} + +kable(LogPLAausw, format = "markdown", caption= "Restricted 4PL evaluation with log-transformed response", digits=3) + + +``` + + + +```{r LogUnRPLAausw, echo=FALSE, warning=FALSE, results='asis'} + +kable(LogUnrPLAausw, format = "markdown", caption= "Unrestricted 4PL evaluation with log-transformed response", digits=3) + + +``` + + +# Appendix: Formulas + +## 4PL regression + +$$ +Y = D + \frac{A-D} {1+(\frac{C} {x})^B } + \epsilon +$$ + + +## log-logistic 4P regression + +$$ +Y = D + \frac{A-D} {1+e^{(B*(C - log(x))) }} + \epsilon +$$ + +where: x ... concentration of the analyte + +A: upper asymptote + +B: slope + +D: lower asymptote + +C ... EC50 + +# Literature + +Finney, D.J.: (1978) Statistical Method in Biological Assay, London: Charles Griffin House, 3rd edition (pp. 80-82) + +Franz, V.H.: Ratios: A short guide to confidence limits and proper use. arXiv:0710.2024v1, 10 Oct 2007 + +VerHoef, J.M.: Who invented the Delta Method? The American Statistician, 2012, 66:2, 124-127 DOI: 10.1080/00031305.2012.687494 + + + + diff --git a/NewApp.Rproj b/NewApp.Rproj new file mode 100644 index 0000000..0797796 --- /dev/null +++ b/NewApp.Rproj @@ -0,0 +1,14 @@ +Version: 1.0 +ProjectId: fefd72bf-0c95-489f-8910-ba6de9827a62 + +RestoreWorkspace: Default +SaveWorkspace: Default +AlwaysSaveHistory: Default + +EnableCodeIndexing: Yes +UseSpacesForTab: Yes +NumSpacesForTab: 2 +Encoding: UTF-8 + +RnwWeave: Sweave +LaTeX: pdfLaTeX diff --git a/Tests3Plates.numbers b/Tests3Plates.numbers new file mode 100644 index 0000000000000000000000000000000000000000..75c69d9eb1b7a35c80ef252378cdba4a6a9f1172 GIT binary patch literal 789343 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ⅈ_1C=LqUtszx=os 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 z8995N≺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

r{{1(-&>sKIP(aKY>M$H|{*w^5El1#+MBD zST}g=x$xUEg@OCp=1;V;if5$J=8!_Wd}zZNYs;fvtD@ zmVe$p|7+rVhE1%pF>P~K&ulnD9|;(W&hC!T_-vj!x_4S ze(<VzVl_xq4($c9K;yjvRZoFn$fXW=G>E858P!eVYtd_<fS?UzZyQ zv^8&8JM-}W(?Sl$44+unM*RCR^Zmsg(-vzB%)Pkr{H8@S7Mn#$b9`l;;IVPTiN(zm zb}wDZD6s0_l0|(_de-wj;$*lX6wWWPul>&IXR8$jHwSSlhg>+Fjyi+gWezrZL9F2U9=x;XL9)Xhuk1lAw!-M#+7#SKD<`V1dg zOFh>0H!o@XxqYFTz_gXm9_+nxY}F1%D~2zuvL26H=XO3g{%AR)z=WB%j(?x~Z%P-V zEW>ryaEZn*SKF>EyurumZ7^&5+DprKojx5MCB-o*mD{6vIW z-yKoqvod0}^mui9+vnNa4=xlJXuEvr;@q_hK7UP2V)!65L%`!nW6QOJ(-th6#3-A57{|eZ$c1>g=+6>C4w^CS6#ND6s3~{i9Rb_IzZtVwjkE!>48a)GJ3$JXm~| zQK0Ys$;R(<*PYzNxQ^ixYpKVr-rE=UeBZb5F{8kQ-d9&o?0$ER&rq1*z3Q}xS!<5I z?t1!unZCfj>Bm0I+0x(Y5+%bifi>LY%)FidS}#2S?bmDF+`R1Mo6YZqe#$fSv%ZLU zzkcD{Q}3rNwh-91d-9v}M}KV$ijv{zW3}>lcJas4NjGjRc*!U*fA77m&pK{C72=a% zxRClq;>y+S&nMk_#FuR-v#h)S+@^Cc4)OJGcHcUd`O$(IiwcP}y)m~wa3lAGJl z+~S+6$1q#SNs+a@$`T~{K|{Jdj* z-`q)$HZsbBcjP>M^zrD`mGjq~Vif3ZKeN7bV)rHAC@GG4ti>M9od-8e{@J%gP+-Hv zA72kYy!>CEPs)W=CZcEVzmMP6Ph4Uuu<-x0%lBS%e-ez6;nY zeD9)2f%eV6SG>M{>4#sG499KP_dee)pZ~CP$qUe?&pjvazC8B+{DYf}CmDXY&Tx6R z^x3oj4<;@O7uf%N<@$98_icB*#By<3qprll{!DtH`yG-vY0N2k|k3GAJ`V8yTB=lWhb z#xu-RJ?FD}&CI*qTicesWfW-rdFkY(|Gy@kWt_xt%QfC(*~A%VUfut-%tK)9@69`Y zw4RBFlj-{&p%7g&FE z-Gu)e`WsI&S~6@>wUd~8{OhKf{q1~D6lIQ1nR{wa(|awxBq3HyiHDOLoA+$*#Iaxcr!O#RBBqsK@ z?Yp+Ti?2>wX4UyObI*Ku{)?~DhhaUdrOTBUtDEQS?q6yu(Aj=t&HMk44)e_tVpzp0 z6Y=Hut>xQpwk)s`nA!Ma@%fLteoKMQhjF#{=$f`*)|%hDm+fT~Siktfk=A2d*R|eY zSj$@Mab{l6wK-d+FEAC@zxT|E2j7>@c%)duu##2QV_EN)&ui{)S^kVsV0!QO-bqLI zAK}yFWjLm49kFHNu?O9g-!5|!n18zSQOBz-+dxB>YgjEkdRk`hY2DeeFiW8AbMKx_ zn=kxX%oxV7f>qY%*WzUlW;DEC`jb&$-P^rS=RSP2qLMFF)m6#k;K2zqo2JcLs3ovv z^`HNi3-4B*r zWfW+fdb4T4fyQ@?mJCN!*Llo1_wdv5uRj(l2=v{5@p;3Z7mFkKUYoKOdCZu5?#GRd zKNl=x6zF~ab;_fKH#YOxh%;PNjdZy&d(qOXvwkje6~U?Bt>E`Gy zFTikw)!JjxrJvX5HU3^KEU@$M*By78zCW6#7{#)DM&e9~w%$EmN1GcT7RYRxzIw@- zWq(dMo@ZzmDmC?ZynWl^wx1Uk@d|9dy!346i-&7oD=IQf5jxKm^XbHsoUAy?f3X{=gGbk zUwW203UnMlbYaua)t{a+_A{Jk?e|!5=h?YWiytkQ7ihSBwyFJP|FbuYvJ8t^Wj$tJ zxOw9Fk&Vmb1-j4PUpMvZw5^~8iw9W4C4P1N`ZRU=4?bNHnb~W1G)?@w@DLxX0mEU} ziyl4Sez*UA{(jkP(B{Z*OST?3@k7W}m|>Z!y+^~-7rzdl{jhL1qrmRo(=C&4%wF|0 zm|+2HnMcc>U(ctVnX-UGVAAvp$DSSB_F#r0E5lybc$fPNW_{{8du%nUK;!@4r6vKR1PM2TX-oBZ9W7%?1fo&&$ZJ06d&0oF}Q-(dP>wLCe*!8&M(c1M77zHNJ z+&|-M-;p_qd|o1~vL5G8&N+Db(E3F|0=sAbKk;~L--fk}MGT8r!y+bLy#M-p^UFov z0^J`EFFt;C@-HFqcC(WTds`;HemL|0@>_g+bR@d&-r4(R)ptiVhMlUcK1aIe_nf@6 zeO(`;z|^Z>eomRT`SUwQIfm&%Dcl~rAGLk|)cs}YQAUATN6##|`hL#^p-W~A2U%aZ zd|P~V?aIj~7O{hN%6)I%eC!F|c5{X$tdm?Wx4mAx>f3@vsshaiXPiHN?9)>|V}6G2 zqoN+yTXyw){BdykV@82FpI`s@)N}A2pDQ=RJJl$c*Bj2RJ$3%xVo!k`PkX*}9{fL7 zXsI1TFRQFe&w)w5?k<_K)L&rYCQwk3NQ1!gus+ z7mogkxpZ~z=Wk0cEm_Jaue*}H)PG5_%SJx{-12Y}ergJS_7Zz0sw02+o`QXUmL)RSD8QutSb9watJ+NVC-{d9t7zKLY zo>?}(VZpRkKZf(HWghqYr#}61aMOYSffXCu_xyO;zjlh_E`~1FGcGR{Zd%(pH+KQS}D%zF3w(b+|R83m^P-8ALIxlI@AqNF(9yVk~>-`2hJ z>FZ<5v;=mpd~oV~--O3eQIZ^&X7J_kE?6-8-HR`W4lWlKSikd7%hX@5H4^5rWGQip zg#?EOIHr^(<|U`5fbQ24`{K(W#8*(SAjQnW$RK6IF>l!zjiZus#CT%BglD#9?GRfL0uSc*v^2XvfmJ zkXMRf5npBo%i;x$Y%ISQGO{uJVP#`j!YTy5qHF~#8^bDAHip%#Yz$9X%^23O@-RGO zZpJC-;SkKDCaE_ISVIwOK!+BO7hE1$I z3>R2=7&f!=Fr0!0$t6}EhNG-$4DVRe7|yZ^F>GL!V>k^8BG)3t1!|mWYD-fYuA8o6 zxFO1=HZhd}bSCF>)e?sDrYQ_BSOpj^hzc;gWEEhz$lAhij&%aVcc@jbSi2bBu(C0{ zWo2V{$I8a=o|TQ^11lTD1y(JF*Q`7YFIm|b`dHZ*KC*f+^t19Xd}8HcxWvlFaG8~j zVFIfJ!)I0=hB>U?7-q5xfx}`hs}RFHRyKx(tZWR6!LiK-j_qZvYz*^R*%+3C!^(zX z0V@x~LRKDzFRTd+Us>50zCrC?%qqw5ft8101*-wW8df2Nl?%-S7^0*(_6c1y_t^j7 z`HJUV+ZM_RteyUS-|Bx?7c5?QlwrS+yM@Q?wiOqTJUy^{4Wq!uh11VHZ@lwIs6dpV zMTj*r;@P9yS2r$rwwy^|@7YUBPMz3K?crq;F%i!`jeS7h`8+Y$4)Dvi5 zJ?G%#W77`aJ1E8Qh&3$c#MI|a=jU}U$r9K*^V6<9N7g(^kCNedu!!%Qw8!zTpS!RA z_`7Tkqd+y)Z3`LKOUyg4dFP~#^L#CqGTS~*e0#Lz>lGmzJ_gW=kQ>?9^sS7vX zK7M|}szSbX$_xt?l_oqtbYjlxw%d!l83j5%_wJhU=lOz=gt;tP>Ri$x!OpHhsVSw& zsR!jwYRUK(rw3J_Ah9KSq#{TcDNXvrwqFoALLeHNua4lyCDS1?G4`)atPCzY0z!aOfHtG0N~vV4UkIcAblF8n=ZN=#B=5c`QLJplb$18Ci3L_&M64w?1%bF`wu& z=i=bt7h>T!(Pu8e$jT$c#nHyApdrO2!NDjyZ>}upY7HG-5W|##p}{_Z5%nU3LXmXl zy^IVDAS}rs!r+?f#Wfo`V=f$KzudoOW^>m3YODzHkg4qQ{nPrJ3sbF?yv2STk zNoGJ|dTP9YP%-${P1p?yAO-OPf@zsKsc!j2xrrrV5JMu1GZKry+T#V(4Xmt)xqTsC zK*hw=(!|Nc+*sGtz|CCO#Kh4>*U`+)OxME6$<)Qf)xy!x#WY@ksJk5E1yl@O+?<_E z-5hm|%pFa2O^nQ4bsfzO%ybQ%oK0MfjV)bVolQ971yr0YO`V)AjE!^+T}(}NO`Ob} zbe+uITy-r?%`Kdqjg8D)EFHrPP4o=)42g6j0|$d7gA#*2gEfOYLoh=ILk&Y4!v==y z4F4Ea8Pynl8ACu3#K6GB2%#ASp){0YtVW~*(CsFi6V^UcVPIeYVQJ)a0E-9Dl+?VE z%(TqZB2Y>IDFc}VqlpPtR0}=+_p|vbW>1QFQTl4v7qKRRE`0g@8~e zA5UimC0%`e$AW^KRDFGy5Eq32AJ55D!t_V zT#&+ISmvk%-N>P9sAr&;Qj(%%$7KUC9mP3zTsDbCMTwPmT%0z=B}JKe>2?)4#T7RC zP!2-a7nA^W%?(Tp^bGXOjde{BYHakOX4vS1t+3-l1m*_Eg)zmwGMlC!Wn=(hZUzyC z0#N=-Ee936px6QlgF+2P|G)A70fT^-o2MHCBO?QY2ZIL#!~cg24z3lMX$%a$z6@Fn z3=A9$jP02WEDQ_`pdVgz3TpW;j~|WcvTN3>EUW@aW9W>!{^HH@{4Ow0@{f~-P{hK_8) zfr;!&g(60c6BlwQJ8e8D8g%i4ig8j=6DOCLxP+vXs+zinrk07RnYo3fm9vYho4bdn zS8zyZSa?KaRB}pcT6#uiR&hybS$RceRdY*gTYE=m*QCi)rcRqaW9F9X@jO*zpr5PhGlva%Ul^k9z6f_W^XJFkW?WbMk^O=HK-BxD>&_QS z^96o1ADSh4ZEO9~sJNwTx2<_Cd-U+qLoG=Q-mBgyu~c3g^mk@Wc>SaLp8W#*_$pSt zKlq^h>NmR0@vFXv-?CepYc^+B3*)-Q8IFCa z_jnrCpKhLe=i~eMiQD4Y|1)I$&Tq8muTK;Ik(ifTC--Bw%kDiNgR-YFoe#RS+pT&PoD-&)#{w)eyJBkNf+R_5)K-*oxd z#O#&+%O&4D+Sy-y@3>8|vCX7a2KSPgGgyAfzcpO_$M;9+N9~6lAJ#QKxT}3Y>U)2U z;lt{ea)+$XCI|n!KJ(}ytvyQ89?HF3?^vIeD>gb9+-W~D|K{VzeEa`1aIgQZ?(q3P z!$aL4^B?pJy!g-Xa$4uNwZ@+R&iqdK&tP)+^rtlD zkBU8V;f{B@HqRD)-Q6d-H_36ky;;6-?Jb6<^$%G-xc}w875P_}9 z;x6s~z{UShY1b+Z=Bc0Jl-pZ?e6XY&cSF)a* zs@UVjGhqtD)9wVezYEbF8b5Ux|C`c}+y~>CY%D+WAFSivczK^)h4isq(>vDk2uC_r zuFafowfE#?|K0oh{IxvtN^b58off>A(avYX`fH`vwrp4s6YH3-$M$2%EZdLUOLGh* zgAX25HeviMfAoC!ex`o{6^ng8*e!gp`@GPP$w3>Yhe^4&{;@EvzFn)wE_kxqrcmM2 z1EHFRCz}lvL;FQPg&*MW_?6zXPxg=QN3)gdoTYx8e$?J+GQ+&0=-ijrQYFDzLQ#?4 zDz8PR2`({M%^4`=xIr;S$bDap%LO~bAL8HU*~{+}uTZJ+x>)1+U`CC0X=di?$js|j zwQpO$Y!5h-vZthXZJMx1y?*gx&D`Y-<~@H5|IV|s%9IoSp`H8aJm10G)fLH)-gnf5 zK9X3Qzjo>Nt(Uj*zcrTmXgS4X?yMCV_T=5Zp51@iVR}Rl9Dz$b^?Fb z+6mR2jnn;b{os8L?)7p%CO?wz%+tN`N~&nz>_xAxUpMDmdGuTNinmW^pT42gx`b!F zLVAp{=J)kC`48_?{J`FL|KYjCAJ&Kcs7_tRy6fM?Yo>ekBllb{<=&RId)JQ1{yS!# zJ-mZo`GknOaFF&IkR!#J8;f!_@qrp<^*>LN5&o zVAn>=HT^#vZ3O=_IDMP?pP?b3{-fyCKnJ<_N9WlptZsWZdDn9Lbe>zj)GboyVNj6w z3&HD(Rz{PSlqgK7Sl{uVA^SfA|DT8-N!#jdf0RFZ%j|WrbidG#>ciK5iQMD8oOgD{ z)wH&Ak^62c=TB+Z)o|**p5`FA{(`<_{RyS}{|@c4|2IeX^@0Bk+4I}&jDF1h@cZyA z`Nl8*8QyB&=9j6658u&!u8ntERNX?6>qhTpJ`R3*Z0WY9$c?QmA01@RAGU8Pmy`VP z`sID0{E~X9SI3@th6nW@-d5!hAsM1#pWbp}c_vT!yOVc&3M21J*aUv?e^B2t`RG6M z3%OF#vtQ@x9XjoQDd^LGhQKTN5^Kb!P5XF!SL70fw}E|(Dh<5VQ;#iPe#@fo-7|@p z-h(L<117$1au@xS{xDwX!$-yhMz+Gy}!h}|K$F5%DRQv;68SBe`dZ&MVhp=Y`OQ=ACV8&=KF7) zck0$D&ac`#-!q>JO)6xLVR86zN1%jV^l6>O5C7lpf5LYBU0f5p?vIU})a*y5+-*h<=yQT77UN~r}=t6V(+pusY&}${_(WO zhw3{OmNnXiiKz=-PFy>;>vh=na3QD7r-jZJgs3DgnZOWX=;~_iemfp5Eo(pA-&pYP zLRI-&`;YpM)&Z9-rgg8pO0qO>TKd%GSP`+V#m4Y zuD^U3MLBv6qrGZTgJnEg5*MjQ%_ZwrbrDs$94LL?Hu1+~kB@!b54K<0W4var*DY(_ zuvoF{A>OLd*^((t*K#NBnCR2pdw{Lz&&2b`_iw)6T4(y>{iF82FY85rd_MfW%Kosw zg!{s~k;fm@8nIo|op$Tq%g;u3uY(>X&DWT)&Ybzye%C#={}~kPh5s|$2-E*-elxt` z-}(LgHt`SifhGC|5V>w=Tq_eq4-|HN!oiCW_SzgH^RpZH7d!{Mk>eQLZ zGef)@Cbt$CRn4zOFTNxGGjN;o76*PXo2lMmBdLD)_Y8qs%iEXi+PwR>?B1P*PODX0 zCPlw7Ts1W$f2v0iqr`eA+9m#Q<8?ob4_o@FdI7oQI4TBJS=8W3-f> z8qMC*P}LZ>FlK#6{S*C%{lB?R|7TeC`xe8Ga_^7#8}@L1JpFCrl{!tc+364R+kcfe zt$RDET4J6w(yzFl8JjcBSmDU9LTA#KeqnnO`h}d!)bV)$}-#`?hDdtm?buvgXxBX01ij5)Mpd>04JV-!os>&ge(< zRSGNNJQ_WTeT&oBx=6^q=U5b*&%1$L-nv@!Vp)xexc|*62#Tlv=qxE%Mp+xu-Tea;^4wmn_li z-Qci(t37IyHT+@zo0*l>A8uX$R`s#{XsmI>wJ*H>fxglQ-Sov@?rQCuxU!rxu_=R zhxdd1?e^Rz^+FXv-;dq1`RL!YWo=!o`r$Zv-|&!0ch@HVcK!3Bqf^A!TJ+AD-FK!s zcqr}Je{?^eeWpKKRNaO9-2dcjtecNn`5%k^8y$7=k5}nxZS89Pw|C97tyfp?NGmLe zx^w(rpR$`LH_s-$N4w|A{>cCM`ayi(AHk2ohwB(7AD;+b{Yj^N0LHUF}1g?)+d5+xL;Z zC-sDA06b6Uz@vK=@yBBWtmcIFHYve|`u=GCPuE%PY;XDRg>u;X^);Y<) zWxi;g){9%`kIWayloPmOqyOlv`Qdw7`TW@dlI!=~Of8ze?R!;C_<9+~gkAm?I(>@* zR1}OF>YD$kU9aP+$@&nwzTbv>afI*k^E%%)9WGzGbnV@xch|IOzFn6v$>5_ePgm&F z_8qDo>X-JTrLBqo&g|#^^1gjO@6!z%KG?oL{QRnE_S>k}9#_6@`^ftF&RvW9#f25= zJ9%{;GVfY*PUNd<|I~W%KOHq5(x^QH^2JZ19$8Xf7feu z0ym@n*v$KWBr3ma{d@C@Q_q50^WR*1drP~!+EHe*^noC!_5C^uDhzea8UGnJFMreh z@NeAdxC{RTUz%C<%`O&wI`@j4&<@Xp9gRmOp6JmvTGzL5N}r?Xm;66!QSN_!zuNyp z{fhlhx&5lSHj$6=yXCj;KWKkT>wCzq%^%ix*?6vh5yyM6XRV0);az3@Rc?!IEamrJ zdDrbV`?@yMA&+cxOcGbJ!vAiZoal({@ zqBV>%U4It+h+R{m{P6nQ{8awK{MIf+p$OKpU~gQ|77cK zU7K}oeeuV%-?1OQ?Opv^e`V~BD{sG^4YRK9HS%SyG}A5tIwh>x^&k`?Ie5M2#v&M z2l*xc89vO+l>hvG)qjQu^8@}fJgKsOXmrW``TfxU3u9{cLruD4&TQV;KlIsdzJ!K7F3j27J! zpKdh$al*t640ivB39WAXH2$`F5u5Daq7~W);|2c&KdR@+ifZyM*1fv-gl}buW!|!B z=gxWW41Cgh>+GVi5^j^sPntm%KbsHkGx!+aZvS9<9M9$t&o);tdsV0Yk@Lg)Z%2v^ z_iWjA)h4t!(`2Qg^)$!4NYT$zRRkOvF0j9zj+&%*&W;z$%ziBE_u$~lx3$K84s26v z;x$cQS~{{luuE)m;3;BM^|RBvv`_L!{kQVJ>uNYZe0~`6Yu?m{`JMatKgvj*n{jLE z-8)IYUCk~XT(LOjw6=RmSXs{rj&sGmM`r!Xe$akczU@B)$Jg~DKg=KQ_IW9lxn1h; z-B-r1rfo6vl+XlLNosZ$;D9Bj+~3F|8VtNj}PNBEWepZ<8uYvqb!`{t6eS#B;9A9n_{ zF=xn5Kek^kvtI0xbl+K72ji{>58aIr`(KeR~wWQzvKZS}Wrcgxz8AUq$Mf&< ze>$1QTqhQpacx#v@57as?t5=EFH`#W>(?{0D>}1YeLd5t;3_02CEQRp zap6bx!*YT@WGK-&SYzW9f%5{Wk8*r8j?+2TjwyZM}6@>w?Tlv3}>CRW9Dr z`>5cO*PG{a&wgg$zjFVF&zAn5->=qx@Ly5?$yOdcm;X#Y{7>lb%>5blH}@a1T03Re z6nn0c4)wiVhaQLSyPWLtrshRjcS!vfop;+N>9k&poXNcGQDlMtfm!Z-HPs)Uf7Ab% z`~C3m`@&Hb{>T3_h_*F;c;&HV+Vj}0ANrP;iYRV*T=Xb3^P1+h3)XGC3Izu?R5AQr zL`;@G`FeeqJa>J%f4jW+!ym~XULURJw$prR$MWxHle|c*>E~BsL3h?pvFfsVCI0QQ zcYdkSOzy5Q*)XCRa{#gDnp5w*F+kQ#?G1tM?xRQRpPwJ6_kMjZ_3z%r3axjy zkA&CB|0rKxQTFJl$xSg^q02$no|jGg&k*|eOImt$fv&Fdr)P|J?`S2?+jr*2$q(rd z^^e|Fy7^Bp^KJF=7jm^vig?{V`+66gu(@8oWkXSe^BqMlc+fS@cq%f>4%qHOD{P=xWb$MfDF z_z$nYrT_5o4}0g2$D3`ui$Cg}ip_r%-to>+Pr4YRctiXD{+BQodyJ+T%-i z+r-3eo#AJuRW3I2G&%FWNw92DWAyy(@~w4}Cl}WrN_@P&eV^@*i8ZrS|E`;!{xE#s zq|@HB`0sJAT)b^Zn}yoMW%4h1ChecjdEiiDgWYvv($VqBEB`a(|Iz(BL*LFKd)D>7 zfBYvO-VLc(9{S5y}`10jy-J$up6BUkZ=zV?W#l3{rvD**G-!i-X(Enh4 z_qKh)QrmW?F8t#(`LI3rmfpg=h5L8Tj%wm8d8?oM!Fy?&W=f`gZKu%vV!4I@_LpI; zkIw4p1|RXekd@-Q^4RO`Ui*?5Hg1WZp~JH9)I4c+35$a)FS2hfZ{8EQDE>$Ok*d&d zOP6L%yL9v3&AS=XFC8q*H<~iZQgCfYN~wxKg~IjO|IX}Vzxq$+kKL{h^E zKSN8)e}+Gu@xIHuw?s@#?zkAeBkU)H*W`hzZitUvr`aJ*FG|5)>n z^y9zD$FA>+UGmGnr{v{V{U7ds)GnG&nryP|^3SqN#*RCFEA!s`KB)d&x_o~=Ki8{$ zYJYqFGdxUNe?&Lxn=Jd`U9x8kUrhJTUz#00y*$jLRPvsQaE$VC#f)Sho^XyQzDE%O8jQJGXl$_p;1u)2b8=4rXTyEz*;` zIWPRaPH)rM)&K^(FT|v!Q~EzN>U*}n?~arB(f!~&+pEtn=ZX9p{`Py) zyXL$Wzdp|;$a&@3saqy)eIvH2r+@F&B>f%fprRm=P*E`FKf|WuhvHk~rT3@matHm` zUHPAZQ>=e!)~f7f&+1MJIBK$nv^=HBH12wE4yrVwW zzv=&IfBZh@ANw_TGXFD(*rYGI_oMjGw_j5a?E25p;_P_!feWYZ+Y1xbb~omwPnbDf z>va=@1jFBH#DrJZ{?CDkva)@D5Vg8EN8jm@*`_Wmw*xZFI0u4T7xcTg30y129K34=ot2m2=Uisj|n$GnnLR!3(o5p3e?Um@W5pJ98| zhyGjD59<%ai~NXs{7C;TzwOHp$D6mjUiqXU>-sb?!=JPL=Ok{KC2#dwOSxHfc5$xb z&er6Ahpftv#Oi+w{h%W+qO!j>$vb;?M{wxGrTg1`=RJ!w`LRxRU$Rn^i8K2Y2`9!F z2EK0hAEv(zDyqYFU*96%TIDu(#eG*BPIY+JBfZ|3AY-?Nj?R?OC#_?B6RlAe@n+bz|2qsV7HCsi&R@8fX2)x}!5{PvhEJ zL;qy2Jl%Cw?W!rarr34=c@ax@%w4OeV6^*iTHjfh@Koy$yed z?(H&;G1~a)Q)ok(CBt7;VzTTh{dTG6J%37nr`5>+`1xq{@7>z|oxk#XrJX+fnJn7v z|KZ%s>@<`4W&$4K=53FncUC<((`C3>bpFF$=7;AG&hNa{-t(U!bAIbSlTBCh|7m1R zk23H7&#*;pzGF+=t4rQXq&srA`WzNFTw!!eM5W=eVfAd_t@1J4j^m*!ge`G#*9c!2`9d%Xbe&D>TUI)c)XYUBEz53*K$kaPF2aH=8 z7;2wmL>%$}r1t062mdo{e%AQm^EdMk=B@usf7Bm~v)FO@iPXLI5AXAyueQB%t8e8q zuiR&C(lb)#aqFA72|m%@W$?t%^cVL7|DQrOw*MItR_p&2n8J89&{c$i0A~Du88Mdm ze7@Wtg^T;_>dprJQT)jI^w|8=NB;abqPN~%$Fspx=&(r;!ySXjxg^)@^x=yc+dlE;U4IikIc{QUNxISPRGY1W zi{`l()c$8U9H%qe$GL*@tbeQTFqIx zy;wpu+4_^hJ91`yXH1gRh!YTdJQt{_a|?BlqXyr}#}6{lk8gf8_J64xfDJ zp55fb`=ob#nDrvctT%hftSc59@lR2>(NULR)%@ky z;>VU-s=0f^!!E3Uvu3Sw<~qH+ypkIW+f*de%d0P}TE*t6!l2!D$v#8Aeb&FFZ2b%F z-^>dC?z@RQ+Be%}US%}PL*@R!wB!aq1{225{%!S1{6d*h^=)<%ujdOdzh);;VIJ2W zcgaTUmrY>&{+oJouP&YX9P;_jov7PqoO8uqTw)NJ%C+N{a?}sm{|ub^Z^a+J@B624 zZQu3u2Y;D9dtWe--}Kho);(wf_g}kNol%XzkLm19@Anihf4NOgVe?fJj;}Xl zzpS_?9o-$2x7J5rCeP7%uWYCKr9JgWEUNY1+QkPmi+7~f%$y$( z@#Msl+~ipd$F_e6f6FR>x~^p zFR$e6_|UNK{cPp89D8zAer3Hjcu{^S^F7DT=&d_1M=>+T{!5q;_eOL3v%7PW=RDe3 z%l$aN`A=Z-imZ8(6{Xd>%5$9_9S^(sE^+gN`SW^e z$FIkap6}W(6nylb$>tAF&$s=tEX`f$y!1w;I@%9ot#S-jTocrpdR<@A8)KtDah1u(q`P*(sg~A@;zh zZycJ_qHot|f6R9Lcy-CH_9or)9k~gUPfe@U4!V?|+~<>?Z6p3})r~iP+4_g?*>1hQ zCvpAR1us9p%1zEqUViUrdiip{Z_^Dg_wF-^O{s%w&U~OBtRBv~B^@6BPd)E{>T^C!k`SyvW*8-lG zc}?6h=lA-qeTEh32Uh3ZGk5*)VNcSw=b=}=bSoP3q_{tS#kr%WkFDymjrYgdhwkw- zU3z|u(L|$^Pgmv2S6`*GdKT>8-Etk7Ke*pLAI0#q?e;f?ogezTAH+sKZ0}!JlHak9 zYu|NK$(q0wFE?fhW(QYH-E-DAKPN0g{PZ-3WeSs;IRbmnehy#oBm7(5$K#Fv|cq&-+vQ zcm7h(b@yLv-*zj6?aMItAg&E60!13k&-^>=H?tqH{?E|4&*(?zhx|tgAJqTo z%r!gh|1oswu}-;-&rUBtaBV|eq{nx&{|sq6qRT#=3v;#Laa3R|txw>r*_$epP%zsA5V-^IIOjbGx+U4tsmPL zR0v(uelLBX#x~b_#-rJxSGLU7cvARB>+<~t$>$x4L$|)~`6u#W-PF`|KNg?9_~ovL zcI3VISG#Q2?mbb;vrIGfil_?D62UEVnm88lPy18)oA=(U``#|(zc294#&W@n z^0zCpC&j;P4z*L66nXDm#QRXaH63lB zRlX}<3f?&TEM@uhf?Exp-xD756gPJ<{5(;2Txxp1UQPD;e;4jq*qL7c6aSFYhM)J? z%%$#&qB5ggCjDL7BlfTKV)e9LAu~=ZPn^Ofo^dq$kLBMPb_y@|3)qN1{?E|!pF!CE zq0Q`v+vZj-{}FcUwrjt;N6P+&DF4c;)5S&C!}W7)Humd^t2RBE_03oN@%4tU4=ZlT z-d(oH9kKD5zusBbJv$~V7jF|upBzR)d*Ne*ecFG9u6xEG`&&!T z_um&$_&BZe!Q3$2Vy}xP`}y4$9xh&Wt4UYy{S)zUU&HM>u}VFz@-vua9_JR>Dg1#PUoI0+wS$t zJ>bXrhq1~>rrqPaTC-cX?(4+dEvtKj-MfC3O@7Dm_I`lS&YX{}mT!aO|HOZIHuaHo zJZIKKZrifo`8P{W_xgKueXG5rKb<+gQ(k@9Rm%nZ;vePTe3WmkGkkGh(oQ}*+2PW? z(+(fb?SD9RlV`4}w5`=Q!)1Gfes)}&bj!H)M5O4W*cn0I@^L?Ye>fibZVg zl`nlHpKMf^y05Y6&-R?6C%H1oDk+VV^k456NcgaCy4lW0xmvG1F0XAcj*E}WoObPF zQ-S$O)lZ9_%qgn6z&^Vs;qM$9!;j7nZ0eazx^M2$UjA}pX7-}HH{CYN+WCrkEZJ-q zJYmuzi4Y@0>FGAjZE}f=|DBmHzJ5==`qBLz{~5#-uhyh4`;qpa;qW|(J(u>Fv(3$3 zVzwaUWVPy+?dD1Ea!)KjT^7-B;`RyUm->8vJT`u;n<}>Zp{`YJzVD2Qvd`w$F1>qu zXB( zlJx3C`$_XPc4RtlD+*t*_C3#^)DPQx_13-FBO@HQV}r%+cAu*z-6wTVTKs)=c!i~( zn_YtC>U*j`7BBf>bk5fKm{?Ip*k&)qzFM#U3|?D0pDJu{tz3W6J2$9+uYmKdgS^y_ z>~G>9Tj#%dUjN&?V*8_6S+jJE53Z;v`|bbXRp#}mu*G~!)mEfUul;%{&h0vXzh+B? zW5Z2_{@5SYzpef_Z~bvR@#Epg@kg}lrLuR4b(Sv7*mf(eZIeEAOxE`B%Gl?b$!&yz*1}R_|Q2 z&3yu&*Szc(YxN(yw|qS>aOa1+tKloDx6|Hlc{y#@x_;9))_l@u8cms%a&2T*9Iu-4 zC;7vPj~*WkUH>z*Oz1uA{_pZ7`z>Z~@6X>{pHX?^_UGDrbG|I#=lt>fx5b}~AKO35 zAD(A&p-wwD5Qq{;2nveyIMIQFLs#+tvx^i~p|7|JGWp(kFh(cX!k0?dm%} z-ap)bD>!2J#$6xSk4f|Mt-Sd5jj49^elEuqhrWM&|G8A!=bp0)zhdI=PL+A8Tsz)H zUp1BQ2>a#wZvL`Yw?fZOy|-H1F)_cea_LdsJ1ch2RB+$NtIhgk6_dlW%{9RvvmHK| zZZV%{*6^e1-qSxTQm>Zks-3cw@1H7_{e|aFALChuiuyKCN!e-7{!i$K^+WeJe?Lmy zK0NK8Tz`Pn(tA4>sBKqUS-9f-x9K|>^VZt5_oYu+#q=Wd(DpkluYP!cv;N_p{Ne5& z=8sl~wa){Px}@S4@9j)iixRWrjz6SP2Uyf{xFnjmeXW0*h{(S4sW0q%Av*N`}bfq1)eGJ=}ms1jbv~%rO z?YZurZRb+wmLEx;`~FCtO8iWY1E0)-* zT{b$OH>q-yWbf6BpYLuv-o(_{mz{p#p7r*R^535AeK^s%?+1UXk;@ z^^Al#bLCx=Ae+>aK?MxY?M(ljjMMzl`N7`f@0@>f6~FEu+{b$Pi#4y%vwQCyrOv*+ zQk8t*+9&S$+arJa*tFhb$=x%l$hhm5^pSe;J(drC&-S(#J7VJb{&wz?sJ`V(qHGVB z9P!ruHQn;ff@{lmf8@J==vT_D>z!M6&sFwsSuyF|zt7&=wmUu1YMT`O)FHBiS$$HW zgG`Pc>yNv7oe#NVgCFJYyjqf5Y06vo?fBshx1HC$^nUi-@3+nNaJI{3PtJTib^cR| z#@)up@}l)==lkXh>@%v!esrz-W4YIb_9i`3&l>aPCm+1uUOUyaIxw?fx^R8A^S8-Q zo44-S@xkBgSMZT|p`04UrTex&x@%P{?AO_}_u1mwrMIG2n>(aT`xzj7TYc7i=O2yY zonLmCp67jO9<^6rcASb=El%uVVlAHtiEsmhWZ2hd+S6#y68SU z%kTE_c;`Z0_3p_&!m&qd-mLi^7e8AvEs4*4hSgWw>qq8qGX2;3n4h!aKf|};kG|6n z*G3=OCq4g=)45zx(^$3Vo;!AmuW7pdR_rWK({m$9A*W~yWy$lGc5OdmUCa7r@pY5c zb1lDWuXwX&+Plx*4R`K(A9CiXe)?Ip{-Nt>xkD>KoyGnKy|$(KQc-q|N#~TJ*9He% zTJz9Iz#~xQ`itEi>^;xB7=G@%{>|Z9j(vK+{2$4UKbi~XDgIcz=KkwCjgR5qk~HVl zCV99m*mlkETxZ_oXxArNKi3Hu=FeVQ{hy)ppX`riryuT{_`tvMpUUxJeD?e|Uw^Z*5i^@5I(7d{70&cT zmFe1Qw>xdF8=v@>$dKq(+`FXi^nF1a|Bv>E?S=j`WXN|K{J8l?ICE8WhE(0u1$O2_vqO(*PZd@rX<-S04|KCADyCHA{``ShyPy?Zn#nA=Q>*U~t7%u}?E zUnI-i;CONF!@YhHO9MWhn4EcL-5MiFkG%>_mMo`-kVfCh}dk z(%ZJ&XM6QAyH5VH>WBH?dZt}Zy0|vQ_|AWZtmwZBV@@i!ewv*3V9(o=uk4g-)c-F2 zlP!4B#J?x3PUfO1uim}mp}+N87f%i{=J>OF=bLp=zjL?WDvD%2ZrJcR+l;lUZR^MS z!}FxCuKB_*=wh-rIPmz5H|tAnmF_)zUZ`cWV#)sS$tnV7&F4ktY5X|&a6gN5=*K0= z4(4Zqu4K)cH!&?eu_4Uf>aY34iHDxASirCMqw}}!i+dV>=bG%l*?+L=%s!D1a~Hj= zs(q~@pS5fE#Wg9Odb%!65j8vW&5}I-yqwnfvyY(9H zJaV!oS!;)-^#+3s<|BK|Klnes*85@qk$67!A6u8+-g>WJZ1Tg^Z@CYC%y@kGkg4HJ zrAAZ9upIZT$pIHDQ_Gp>%?UrS{-*x%{hWU^`46oZt@!TvvHWml&imZbc>aF&wJpC^ z$Ge@@xgLIY<()l~Jl^gL%eb-QXVGGbU(Sd2i~q5FykytpgM$46YrEH!`!3C@a(&Tw z+d9md_4k|PEf35%4}Mu2Yy3!b-`3*#^u?Ls=HI1a{xhWR>$>*YdzN?P2kBEYgMQ3- za*#cnq3~9NUChq^3{CZQ=gaPk|6%`Ve<)7u!WV9T_WF#o#Y>_yyMlvu?+}pIZkv8K zQ2K@^x2OEO`-Sxnj~iF4|CadU|st_6ZPtI#y2~uX77Dhj`loy zcI(!suX-u|nkp{$pWHrnDfd;|zUB-2j4Ps#T5WyS_^@HtzLm?Lzby-sS~jt`IDbp4 zT~1&Y&&wtU>xO3?cE%M^&yVsys7{#lqt9mg#mga=qyqvL7oOd4#pYszQPCbQhUYcK zAFTh0@gMuoz)%x*V(aJnZA&)m%|1sxhC`1{ zFZ`JP*uJ$!ygYOHkK?B=tXuz|;qfJ2|B#Dsp6+-qzsqwgOZxNvDRNoIyXy3QR3ErD zA^yiL`5*3Y^Wsmp<%S1c%2_=1*ITz)f0^Z~n0y%=KPDfl7pw8jUwZz-{X4Ef~DCTp$FRDWXP!}q^gBkNzZtl9SQm0tgU z22Spb@5x>QwX5GAd+#H5KmGRZv!CnkZa#hc+?&TT&$ild{%25fZ{Pn$H1$8jBB2JW zRT_&LxCmhT|5uQvJn}p4v0vM#R(A@tM|eN)47b&f;+bMH!`z;pDfqkSv%jJHGYg*3 za)Xlx54?@H{CED>(e;PyyZ_1lP<;HpX`kqi%18SJe&jvzv}4Oc&b>|L z-rCkP=G47QlCQEnZpm={`pbv$KYai3W&RWWcjM|7<`o&&ICjlzFa2igc6FM?92?=> zg0)i*p4zl&(i#pGdAlFkzl}2NSU>(}_@f&y^ke%`d4ZZ}zWHjClUG(OdUr4X&1=m$ zHXCm_X69zIqy?>h<`K9gC%J&7iShID!|z+?@%@PY&%i3SXWNIldk>vnSEID|>R0dG zr&q4ed!N7jqX^e$Uz2z5jwh|sV9{FC8ou(8v>-c#5pg+%_z>6mN zazC1VubKK*2RDB8u4Q+em>YEJ(4j}i9;tR+V*M-|m2u|H@jj93FIen1-dz$e{^-Z8 z`(ky%Zmd$1Qescmc75|;OwBiJx%I#x+K8M=G|K_i;{8-*m6I^vq z<73_AhwEjtyjTBNd`K#8sp!7;)%R=WBGg~l=Fn*2QT~Yjq zy+v`_t8=pcP9MeQ%k*YfbDicry7YfADs= zX5!C#_mx!d@s857?nk1wEnnp+viQ-alK2-OD!{^^)KFC9!G7?b-Vgr| zlY{@R`X^jt^moo4)g>>g<{w%cxF`5=Zn@jmKIY{&yt$W1&cEU{NsSgYuOG#aS6TI-1yjV@($N4Tl7JrmJ9H;cLe9H8*OI}H39h-LT0ms?} z=2EFgHr`%lr2LuV9Op@926>Y|4jX!7b(nC}7_ZEZV*R^y@4d~-oyzrZ*WC6@GH%y-Z4!9oRm5WkjX3+G_8Za< zoh`cl@N9d#jrXJXY*97Z+h*zW-F_i{tx02@p2VK*lXTxsefIl!TADGBnWr-QEQTMm zkN#)iw^RS4{Umo!~PGWMPnZe1#75??BmUWswjN}P?s??Rl z{5X46+hhBn8k=1o?(JV$Mg9#G5xC_ zxJB#Q=ct(ITaH2!9J#X>=I^_C&dsPK{-*fhD7UGPj!!>sXTIlSc~9Tmzl$HcUrlb0 z@3PfAGHpZDN!C4KAEFoM-4$q9(m2CICYeEA;*b1A8+ZM;vLBBh+W(>5@q_*GIPD+V zB6SiU?#=l2>E(3+$LG<@Hs$A(9k^~7>oxIB#MH-rZ=9umP5vhR;mSYGADP(?YW*Mn zy?*#?`r%z>z00!0$_;Nbu6#A^b%9=~$FgmcLU;DPJ?C=Hd0JSIL6`r6KbC)|*VsPr z7kynXSXwXsWBsu>lWSj+AO2_f;ZgeghTNy)KKjpU=bg-5`}RR&%>`BU(`iP$H=i_L z`J?oKZ{>&Q;nz!aqmRWYd_1!0*30XfD=H>=XXY#Q?7frCv~}&?O%m5n-=F66^zO;z z2@LGdT92)M%p3ez{H^@Q#i2iJAMWqkCdYX#_2SamM`mpa^iN)tF-`Eyx2n`B-^??X zxmN0_mStQ^tKGA~^vm&Mr+Muk#UJA5`xE)Y^8>T%kCl~=?lUhblfSh&^IOr2U$JL5 z#oRnF;m&F?`ImY=VP|@0e0%qlKLId#WG37p<6g|L8u04}0hLFKW^ke=&<~ zG4HzB>$ofSG^Bg#KAmPZP4KBt!X#y-6gf}z`Ti;P3ro`QiD){G<6l)bct_?|xhS zsMh-6KGy4cxnl1;-w6MX_T9Rxr+c-@^qjUskIX!ToR##BmY!$Z_Xf1w>d8$z!TKAW z57+-SyM0}DRo%%tuKK1b{{#GN71NK(aeSCJGrK(9q>ALi91=|N{QpjGtCRg<{-1%%@BAbG{`uZ*zUFVF=6{>JcHi3NQJHD{YUi#! zx^{{+I?aR0YLm6mX5KqJ3^neLrhok2{huNGe&0Q{tv`Yv-tW5b$LjJQ`=u{0R4fkb zyJTy0EY~DUT;N8uXKF=nVYN=*vGh*|LOFM{wid+MeB3wxqxqxoL+iWtZ~lJht?{GY zqvsDrCfW0R^^Q>7_~G2N%ZA(bbVZ843G_|qxoJ40Pd#8VD|4#f9`O*1! zZT2I!nUDF!e<%lhjGN6i@lnPf{d(3VR(F@K+EVa$iGOavX`RBIovEFR3njJqE!W&l z|EBk&Zr8E)NBnJaDj(es^Ljgfc)P#lQa)Flqr|R@ZzZ-E+*$f`>n)Fu8&%T|OfNib zER(=|s6PFE%YLqZYIO(Yq&|eLt*n0}tA6

bUziPJf%LntV-R+Na1buTQ&7Fpj=) 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 Y1z~_UD;r1|F9R<_5HkZqf)Lim[[9]] & ExpLinPot[3]*100Lim[9] & ExpLinPot[3]*100>Lim[10]) test_potCI <- 0 else test_potCI <- 1 + + su_mod <- summary(modAB)$coefficients + su_mod2 <- cbind(data.frame(parameter = c("intercept REF","slope REF","intercepts diff.")), su_mod) + su_modU <- summary(modABu)$coefficients + su_modU2 <- cbind(data.frame(parameter = c("intercept REF","slope REF","intercepts diff.","slope difference")), su_modU) + + uCI_SloDiff <- su_modU[4,1] + qt(0.975,8)*su_modU[4,2] + lCI_SloDiff <- su_modU[4,1] - qt(0.975,8)*su_modU[4,2] + SlopeDiffCI <- c(su_modU[4,1], lCI_SloDiff,uCI_SloDiff) + + lenCirc <- nrow(circ_ABl) + dfTreat <- 3 + dfPrep <- 1 + dfReg <- 1 + dfnonP <- 1 + dfRMSE <- c(lenCirc-3-1) + dfTotal <- lenCirc-1 + dfPureE <- lenCirc-6 + dfNonLin <- dfRMSE-dfPureE + + RSS <- sum(resid(lm(readout ~ log_dose*isSample, circ_ABl))^2) + MSE <- RSS/dfRMSE + SSE <- sum(resid(lm(readout ~ factor(log_dose)*isSample, circ_ABl))^2) + MSpure <- SSE/dfPureE + + if (PureErrFlag) { + FitAnova <- anova(lm(readout ~ factor(log_dose)*isSample, circ_ABl)) + meanPureErr <- FitAnova[4,3] + SU_modAB <- tryCatch({ + SU_modAB <- summary(modAB) + }, error = function(msg) { + return(NA) + }) + if (length(SU_modAB)>1) s_modABcoeffs <- summary(modAB)$coefficients + + DFsPure <- FitAnova[4,1] + VCOV <- vcov(modAB) + V_V <- VCOV/SU_modAB$sigma^2 + VCOVpure <- V_V*meanPureErr + SEsPure <- sqrt(diag(V_V)*meanPureErr) + su_mod2[,3] <- SEsPure + su_mod2[,4] <- su_mod2[,2]/su_mod2[,3] + su_mod2[,5] <- 2*(1-pt(abs(su_mod[,4]), FitAnova[4,1])) + + s_mu <- summary(modABu)$coefficients + SU_modABu <- summary(modABu) + VCOVu <- vcov(modABu) + V_Vu <- VCOVu/SU_modABu$sigma^2 + SEsPureU <- sqrt(diag(V_Vu)*meanPureErr) + + su_modU2[,3] <- SEsPureU + su_modU2[,4] <- su_modU2[,2]/su_modU2[,3] + su_modU2[,5] <- 2*(1-pt(abs(su_modU2[,4]), FitAnova[4,1])) + + uCI_SloDiffP <- su_modU[4,1] + qt(0.975,8)*SEsPureU[4] + lCI_SloDiffP <- su_modU[4,1] - qt(0.975,8)*SEsPureU[4] + SlopeDiffCI <- c(su_modU[4,1], lCI_SloDiffP,uCI_SloDiffP) + + SSRes <- SSE + dfRes <- dfPureE + + } else { + SSRes <- RSS + dfRes <- dfRMSE + } + + # treatment + SStreat <- print(sum((predict(lm(readout ~ factor(log_dose)*isSample, circ_ABl))-mean(circ_ABl$readout))^2)) + F_treat <- (SStreat/dfTreat)/(SSRes/dfRes) + # Preparation + SSprep <- print(sum((predict(lm(readout ~ isSample, circ_ABl))-mean(circ_ABl$readout))^2)) + F_prep <- (SSprep/dfTreat)/(SSRes/dfRes) + # Regression + # ANOVA tape II SS of regression + SSreg <- Anova(lm(readout ~log_dose + isSample, circ_ABl))[1,1] + # Non-parallelism + # diff of RSS of restricted and unrestricted model + SSnonpar <- sum(resid(modAB)^2) - sum(resid(modABu)^2) + F_nonpar <- SSnonpar/(sum(resid(lm(readout ~ factor(log_dose)*isSample, circ_ABl))^2)/(lenCirc-4)) + + # non-linearity + SSnonlin <- sum((predict(modABu)-predict(lm(readout ~ as.factor(log_dose)*isSample, circ_ABl)))^2) + # = RSS-SSE + # Total SS + SStot <- sum((circ_ABl$readout-mean(circ_ABl$readout))^2) + # Significance of R^2 F-ratio + # MSR/MSE + # sample A + F_R2_A <- sum((predict(lm(readout ~ log_dose+ I(log_dose^2), circ_Al)) - mean(predict(modA)))^2 - (predict(modA) - mean(circ_Al$readout))^2)/ + (sum((predict(lm(readout ~ log_dose+ I(log_dose^2), circ_Al)) - circ_Al$readout)^2)/(nrow(circ_Al)-3)) + pFR2_A <- round(pf(F_R2_A,1,6),4) + # sample B + F_R2_B <- sum((predict(lm(readout ~ log_dose+ I(log_dose^2), circ_Bl)) - mean(predict(modB)))^2 - (predict(modB) - mean(circ_Bl$readout))^2)/ + (sum((predict(lm(readout ~ log_dose+ I(log_dose^2), circ_Bl)) - circ_Bl$readout)^2)/(nrow(circ_Bl)-3)) + pFR2_B <- round(pf(F_R2_B,1,6),4) + # sign of non-lin with pure error: MSSnonlin/MSSE + F_nonlin <- (SSnonlin/2)/(SSE/dfPureE) + + # sign of slope + F_slope_B <- sum((predict(modB) - mean(circ_Bl$readout))^2)/(sum((circ_Bl$readout - predict(modB))^2)/(nrow(circ_Bl)-2)) + F_slope_A <- sum((predict(modA) - mean(circ_Al$readout))^2)/(sum((circ_Al$readout - predict(modA))^2)/(nrow(circ_Al)-2)) + # F-test on regression: MSSreg/MSSE + if (is.na(F_nonlin)) F_nonlin <- 0 + if (F_nonlin > 0) { + p_F_nonlin <- round(pf(F_nonlin,2,dfPureE, lower.tail = F),5) + } else { p_F_nonlin <- "SSnonlin neg or 0"; } + + # significances + F_regr <- (SSreg/1)/(SSRes/dfRes) + p_F_regr <- round(pf(F_regr,1,dfRes, lower.tail = F),3) + p_F_treat <- round(pf(F_treat,3,dfRes, lower.tail = F),3) + p_F_prep <- round(pf(F_prep,1,dfRes, lower.tail = F),3) + p_F_slope_A <- round(pf(F_slope_A,1,(nrow(circ_Al)-2), lower.tail = F),3) + p_F_slope_B <- round(pf(F_slope_B,1,(nrow(circ_Bl)-2), lower.tail = F),3) + p_F_nonp <- round(pf(F_nonpar,1,dfRes, lower.tail = F),3) + p_F_LoF <- p_F_nonlin + + res_tab_lin <- data.frame(test = c("F-test on sign. of regression", "F_test on non-lin", + "F-test on R^2 A","F_test on R^2 B", + "F-test on slope A","F-test on slope B", + "F-test on non-parallelism","F-test on preparation"), + test_results = c(ifelse(p_F_regr<0.05,0,1),ifelse(p_F_nonlin<0.05,1,0), + ifelse(pFR2_A<0.05,1,0),ifelse(pFR2_B<0.05,1,0), + ifelse(p_F_slope_A<0.05,0,1),ifelse(p_F_slope_B<0.05,0,1), + ifelse(p_F_nonp<0.05,1,0),ifelse(p_F_prep<0.05,0,1)), + estimate = c(p_F_regr, p_F_nonlin,pFR2_A,pFR2_B,p_F_slope_A, + p_F_slope_B,p_F_nonp,p_F_prep), + Source = c("Treatment","Preparation","Regression","Non-parallelism", + "Resid Error","Non-linearity","Pure error", "Total"), + df = c(dfTreat,1,1,1,dfRMSE,2,dfPureE,lenCirc-1), + SumSquares = c(round(SStreat,5),round(SSprep,5),round(SSreg,5), + round(SSnonpar,5),round(RSS,5),round(SSnonlin,5), + round(SSE,5),round(SStot,5)), + MS = c(round(SStreat/dfTreat,5),round(SSprep,5),round(SSreg,5), + round(SSnonpar,5),round(RSS/dfRMSE,5),round(SSnonlin/2,5), + round(SSE/dfPureE,5),round(SStot/dfTotal,5)), + "F-value" = c(round(F_treat,5), round(F_prep,5),round(F_regr,5), + round(F_nonpar,5),"",round(F_nonlin,5),"",""), + "p-value" = c(p_F_treat, p_F_prep, p_F_regr, p_F_nonp, "", p_F_LoF, "","")) + RET <- list(res_tab_lin, su_modU2, SlopeDiffCI, su_mod2) + return(RET) +} + +pot4plFUNC <- function(ro_new, PureErrFlag) { + all_l <- melt(data.frame(ro_new), 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_l$isRef <- isRef + all_l$isSample <- isSample + all_l$Conc <- exp(all_l$log_dose) + all_l$readout[all_l$readout < 0] <- 0.01 + all_l$readouttrans <- log(all_l$readout) + + CORdat <- cor(ro_new[,1],ro_new[,ncol(ro_new)]) + if (CORdat<0) SLOPE <- -1 else SLOPE <- 1 + + startlist <- list(a=min(ro_new[,2]), b=SLOPE, d=max(ro_new[,2]), cs=mean(all_l$log_dose),r=0) + tryCatch({ + mr <- gsl_nls(fn = readout ~ a+(d-a)/(1+exp(b*(cs-r*isSample-log_dose))), + data=all_l, + start=startlist, + control=gsl_nls_control(xtol=1e-6,ftol=1e-6, gtol=1e-6)) + }, + error = function(err) { + err$message + }) + + startlistmu <- list(as=max(ro_new[,2]), bs=SLOPE, ds=min(ro_new[,2]), cs=mean(all_l$log_dose), + at=max(ro_new[,2]), bt=SLOPE, dt=min(ro_new[,2]), r=0) + + tryCatch({ + 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)) + }, + error = function(err) { + err$message + }) + + if (!PureErrFlag) { + pot_est <- exp(confintd(mr, "r", method="asymptotic")) + potU_est <- exp(confintd(mu, "r", method="asymptotic")) + } else { + FitAnova <- anova(lm(readout ~ factor(Conc)*isSample, all_l)) + meanPureErr <- FitAnova[4,3] + SU_mr <- tryCatch({ + SU_mr <- summary(mr) + }, error = function(msg) { + return() + }) + + browser() + if (length(SU_mr)>1) { + s_mr <- SU_mr$coefficients + } else { SU_mr <- rep(NA,5) } + + VCOV <- vcov(mr) + V_V <- VCOV/SU_mr$sigma^2 + SEsPure <- sqrt(diag(V_V)*meanPureErr) + pot_est <- c(exp(s_mr['r',1]),exp(s_mr['r',1]-qt(0.975,nrow(all_l)-5)*SEsPure['r']), + exp(s_mr['r',1]+qt(0.975,nrow(all_l)-5)*SEsPure['r'])) + # unrestricted + s_mu <- summary(mu)$coefficients + SU_mu <- summary(mu) + VCOVu <- vcov(mu) + V_Vu <- VCOVu/SU_mu$sigma^2 + SEsPureU <- sqrt(diag(V_Vu)*meanPureErr) + potU_est <- c(exp(s_mu['r',1]),exp(s_mu['r',1]-qt(0.975,nrow(all_l)-8)*SEsPureU['r']), + + exp(s_mu['r',1]+qt(0.975,nrow(all_l)-8)*SEsPureU['r'])) + } # PureErrFlag + + startlistmr_log <- list(a=max(all_l$readouttrans), b=SLOPE, d=min(all_l$readouttrans), cs=mean(all_l$log_dose),r=0) + + tryCatch({ + mr_log <- gsl_nls(fn = readouttrans ~ a+(d-a)/(1+exp(b*(cs-r*isSample-log_dose))), + data=all_l, + start=startlistmr_log, + control=gsl_nls_control(xtol=1e-6,ftol=1e-6, gtol=1e-6)) + }, + error = function(err) { + err$message + }) + + + startlistmu_log <- list(as=max(ro_new[,2]), bs=SLOPE, ds=min(ro_new[,2]), cs=mean(all_l$log_dose), + at=max(ro_new[,2]), bt=SLOPE, dt=min(ro_new[,2]), r=0) + + tryCatch({ + mu_log <- gsl_nls(fn = readouttrans ~ 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_log, + control=gsl_nls_control(xtol=1e-6,ftol=1e-6, gtol=1e-6)) + }, + error = function(err) { + err$message + }) + + pot_est_log <- exp(confintd(mr_log, "r", method="asymptotic")) + potU_est_log <- exp(confintd(mu_log, "r", method="asymptotic")) + colnames(pot_est_log) <- c("estimate","lowerCI2","upperCI") + colnames(potU_est_log) <- c("estimate","lowerCI2","upperCI") + #browser() + su_mr_log <- summary(mr_log) + Dat$RMSE_Rlog <- su_mr_log$sigma + su_mu_log <- summary(mu_log) + Dat$RMSE_Ulog <- su_mu_log$sigma + Dat$up_lowAslog <- su_mu_log$coefficients[1,1] - su_mu_log$coefficients[4,1] + potALL <- rbind(pot_est, potU_est, pot_est_log, potU_est_log) + + potALL2 <- cbind(c("restricted","unrestricted","ln-transformed restr","ln-transformed unrestr"), potALL) + return(potALL2) +} + +ParamCI_F <- function(xt,xs,se_xt, se_xs, CoVarlog,DFs, Conf=0.975) { + log_xs <- log(abs(xs)) + log_xt <- log(abs(xt)) + var_log_xs <- (se_xs/xs)^2 # approximate variance of log(bs) + var_log_xt <- (se_xt/xt)^2 + se_log_ratio <- sqrt(var_log_xs + var_log_xt) #-2*CoVarlog) + + lower_log_ratio <- log_xt-log_xs - qt(Conf,DFs)*se_log_ratio + upper_log_ratio <- log_xt-log_xs + qt(Conf,DFs)*se_log_ratio + ci_ratio <- exp(c(lower_log_ratio, upper_log_ratio)) + return(ci_ratio) +} + +tests_FUNC <- function(ro_new, Lim, PureErrFlag) { + #browser() + all_l <- melt(data.frame(ro_new), 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_l$isRef <- isRef + all_l$isSample <- isSample + all_l$Conc <- exp(all_l$log_dose) + all_l$readout[all_l$readout < 0] <- 0.01 + tryCatch({ + pot <- drm(readout ~ Conc, isSample, data=all_l, fct=LL.4(names=c("b","d","a","c")), + pmodels=data.frame(1,1,1,isSample)) + }, + error = function(msg){ + return(0) }) + compParm(pot, "c",display=T) + ED50 <- ED(pot,c(50), interval="delta") + PotEst <- ED50[1,1]/ED50[2,1] + potAll <- EDcomp(pot, percVec=c(50,50), interval="delta", display=FALSE) + potAll2 <- potAll[1:3] + + CORro <- cor(ro_new[,1], ro_new[,ncol(ro_new)]) + + if (CORro<0) SLOPE <- -1 else SLOPE <- 1 + startlist <- list(a=max(ro_new[,2]), b=SLOPE, d=min(ro_new[,2]), cs=mean(all_l$log_dose),r=0) + tryCatch({ + mr <- gsl_nls(fn = readout ~ a+(d-a)/(1+exp(b*(cs-r*isSample-log_dose))), + data=all_l, + start=startlist, + control=gsl_nls_control(xtol=1e-6,ftol=1e-6, gtol=1e-6)) + }, + error = function(msg){ + return(0) }) + + startlistmu <- list(as=max(ro_new[,2]), bs=SLOPE, ds=min(ro_new[,2]), cs=mean(all_l$log_dose), + at=max(ro_new[,2]), bt=SLOPE, dt=min(ro_new[,2]), r=0) + tryCatch({ + 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)) + }, + error = function(msg){ + return(0) }) + + smu <- tryCatch({ summary(mu) }, + error=function(msg){ + return(0) }) + + POTr_CI <- potAll2[2:3] + + FitAnova <- anova(lm(readout ~ factor(Conc)*isSample, all_l)) + # pure error + pureSS <- FitAnova[4,2] + pureSS_df <- FitAnova[4,1] + meanPureErr <- FitAnova[4,3] + vcovMU <- vcov(mu) + V_V <- vcovMU/smu$sigma^2 + SEsPure <- sqrt(diag(V_V)*meanPureErr) + VCOVpure <- V_V*meanPureErr + DFsPure <- FitAnova[4,1] + + + + testPOTr <- logical() + if (POTr_CI[1]*100>Lim[[9]] & POTr_CI[2]*100Lim[[9]]/100 & potAllU2[3] 0) { + p_F_nonlin <- round(pf(F_nonlin, AnovaDFs[6], ERR_df, lower.tail = F),5) + } else { p_F_nonlin <- "SSnonlin neg or single dilutions" } + + test_a <- test_b <- test_d <- test_ad <- logical() + + RSS_r <- round(sum(pot$predres[,2]^2),5) + MSE_r <- RSS_r/(nrow(all_l)-5) + RMSE_r <- round(sqrt(MSE_r),6) + Dat$RMSE_r <- RMSE_r + Dat$RMSE_pure <- RMSE_pure + Dat$RMSE_unr <- round(RMSEunr,6) + #browser() + ## EQ test on lower As diff + ds <- coeffs["ds"] + dt <- coeffs["dt"] + lAs_diff <- (dt-ds) + uCI_laDiff <- lAs_diff+qt(0.975,df.residual(mu))*sqrt(sum_potU$coefficients[3,2]^2+sum_potU$coefficients[4,2]^2) + lCI_laDiff <- lAs_diff-qt(0.975,df.residual(mu))*sqrt(sum_potU$coefficients[3,2]^2+sum_potU$coefficients[4,2]^2) + if (uCI_laDiff < Lim[[2]] & lCI_laDiff > Lim[[1]]) test_la_diff <- 0 else test_la_diff <- 1 + + #### EQ test on upper asymptote ratio ---- + as <- coeffs["as"] + at <- coeffs["at"] + uAsRatio <- compParm(potU, "a","/",display=F) + uAsCI <- c(uAsRatio[1]-qt(0.975,RSS_df)*uAsRatio[2], uAsRatio[1]+qt(0.975,RSS_df)*uAsRatio[2]) + #browser() + ds <- smu$coefficients["ds",1] + dt <- smu$coefficients["dt",1] + if (PureErrFlag) se_ds <- sqrt(VCOVpure["ds","ds"]) else se_ds <- smu$coefficients["ds",2] + if (PureErrFlag) se_dt <- sqrt(VCOVpure["dt","dt"]) else se_dt <- smu$coefficients["dt",2] + if (PureErrFlag) CoVarlog_d <- VCOVpure["dt","ds"] else CoVarlog_d <- vcovMU["dt","ds"] + if (PureErrFlag) DFs <- DFsPure else DFs <- nrow(all_l)-noConc + uAsCI2 <- ParamCI_F(dt,ds,se_dt, se_ds,CoVarlog_d, DFs, Conf=0.9975) + if (uAsCI2[1] > Lim[[7]] & uAsCI2[2] < Lim[[8]]) test_a <- 0 else test_a <- 1 + estUppA <- round(at/as,5) + + Dat$uAsCI <- uAsCI2 + + #### EQ test on slope ratio ---- + bs <- coeffs["bs"] + bt <- coeffs["bt"] + slopeRatio <- compParm(potU, "b","/",display=F) + slopeCI <- c(slopeRatio[1,1]-qt(0.975,RSS_df)*slopeRatio[1,2], slopeRatio[1,1]+qt(0.975,RSS_df)*slopeRatio[1,2]) + + bs <- smu$coefficients["bs",1] + bt <- smu$coefficients["bt",1] + if (PureErrFlag) se_bs <- sqrt(VCOVpure["bs","bs"]) else se_bs <- smu$coefficients["bs",2] + if (PureErrFlag) se_bt <- sqrt(VCOVpure["bt","bt"]) else se_bt <- smu$coefficients["bt",2] + if (PureErrFlag) CoVarlog_b <- VCOVpure["bt","bs"] else CoVarlog_b <- vcovMU["bt","bs"] + slopeCI2 <- ParamCI_F(bt,bs,se_bt, se_bs,CoVarlog_b, DFs, Conf=0.975) + if (slopeCI2[1] > Lim[[5]] & slopeCI2[2] < Lim[[6]]) test_b <- 0 else test_b <- 1 + estUppA <- round(at/as,5) + + Dat$slopeRatioCI <- slopeCI + + #### EQ test on lower As ratio ---- + + lAsRatio <- compParm(potU, "d","/",display=F) + slopeCI <- c(lAsRatio[1,1]-qt(0.975,RSS_df)*lAsRatio[1,2], lAsRatio[1,1]+qt(0.975,RSS_df)*lAsRatio[1,2]) + + as <- smu$coefficients["as",1] + at <- smu$coefficients["at",1] + if (PureErrFlag) se_as <- sqrt(VCOVpure["as","as"]) else se_as <- smu$coefficients["as",2] + if (PureErrFlag) se_at <- sqrt(VCOVpure["at","at"]) else se_at <- smu$coefficients["at",2] + if (PureErrFlag) CoVarlog_a <- VCOVpure["at","as"] else CoVarlog_a <- vcovMU["at","as"] + lAsCI2 <- ParamCI_F(at,as,se_at, se_as,CoVarlog_a, DFs, Conf=0.975) + if (lAsCI2[1] > Lim[[3]] & lAsCI2[2] < Lim[[4]]) test_d <- 0 else test_d <- 1 + estLowA <- round(at/as,5) + + Dat$lAsCI <- lAsCI2 + + #### EQtest on ratio of As difference ---- + AsDiffRatio <- (at-dt)/(as-ds) + + at_dt <- (at-dt) + as_ds <- (as-ds) + se_ds_asPure <- sqrt(VCOVpure["as","as"]+VCOVpure["ds","ds"]-2*VCOVpure["as","ds"]) + se_dt_atPure <- sqrt(VCOVpure["at","at"]+VCOVpure["dt","dt"]-2*VCOVpure["at","dt"]) + se_ds_asRMSE <- sqrt(vcovMU["as","as"]+vcovMU["ds","ds"]-2*vcovMU["as","ds"]) + se_dt_atRMSE <- sqrt(vcovMU["at","at"]+vcovMU["dt","dt"]-2*vcovMU["at","dt"]) + if (PureErrFlag) se_ds_as <- se_ds_asPure else se_ds_as <- se_ds_asRMSE + if (PureErrFlag) se_dt_at <- se_dt_atPure else se_dt_at <- se_dt_atRMSE + + AsDiffCI2 <- ParamCI_F(at_dt,as_ds,se_dt_at, se_ds_as,CoVarlog=0, DFs, Conf=0.975) + if (AsDiffCI2[1] > Lim[[11]] & AsDiffCI2[2] < Lim[[12]]) test_ad <- 0 else test_ad <- 1 + estLowA <- round(at/as,5) + + Dat$up_lowAs <- abs(ds-as) + + lowerCIlowerA <- lAsCI2[1]; lowerCIupperA <- uAsCI2[1]; upperCIlowerA <- lAsCI2[2]; upperCIupperA <- uAsCI2[2] + test_lowA <- test_d; test_uppA <- test_a + #browser() + res_tab <- data.frame(test= c("F-test on sign. of regression*", + "EQ test on lower asymptotes difference", + "EQ test ratio of lower asymptotes", + "EQ test ratio of Hill slopes", + "EQ test ratio of upper asymptotes", + "F-test on non-linearity*", + "EQ test ratio of asymptote difference", + "geom. rel. CI restr. model", + "geom. rel. CI unrestr. model"), + test_results = c(ifelse(p_F_regr<0.05,0,1), test_la_diff, test_lowA, test_b, test_uppA, + ifelse(p_F_nonlin>1,1, ifelse(p_F_nonlin<0.05,1,0)), test_ad, + testPOTr, test_c), + estimate = c(round(p_F_regr, 3), round(lAs_diff, 5), + estLowA, round(bs/bt,5), estUppA, p_F_nonlin, + round(at_dt/as_ds, 5), round(potAll2[1]*100,2),round(potAllU2[1]*100,2)), + lower_limit = c("-",Lim[[1]],Lim[[3]],Lim[[5]],Lim[[7]],"-",Lim[[11]],Lim[[9]],Lim[[9]]), + upper_limit = c("-",Lim[[2]],Lim[[4]],Lim[[6]],Lim[[8]],"-",Lim[[12]],Lim[[10]],Lim[[10]]), + lower_CI = c(RMSE_r, round(lCI_laDiff,3), round(lAsCI2[1],5), round(slopeCI2[1],5), + round(uAsCI2[1],5), "-", round(AsDiffCI2[1],5), round(potAll2[2],2), round(potAllU2[2],2)), + upper_CI = c(RMSE_pure, round(uCI_laDiff,3), round(lAsCI2[2],5), round(slopeCI2[2],5), + round(uAsCI2[2],5), "-", round(AsDiffCI2[2],5), round(potAll2[3],2), round(potAllU2[3],2)) + ) + return(res_tab) +} + +ANOVA4plUnresfunc <- function(ro_new, sigmoid) { + all_l <- melt(data.frame(ro_new), id.vars="log_dose", variable.name="replname", value.name = "readout") + all_len <- nrow(all_l) + isRef <- rep(c(1,0),1,each=all_len/2) + isSample <- rep(c(0,1),1,each=all_len/2) + all_l$isRef <- isRef + all_l$isSample <- isSample + all_l$Conc <- exp(all_l$log_dose) + all_l$readout[all_l$readout < 0] <- 0.01 + + pot <- drm(readout ~ Conc, isSample, data=all_l, fct=LL.4(names=c("b","d","a","c")), + pmodels=data.frame(1,1,1,isSample)) + potU <- drm(readout ~ Conc, isSample, data=all_l, fct=LL.4(names=c("b","d","a","c")), + pmodels=data.frame(isSample, isSample,isSample,isSample)) + SStreat <- round(sum((potU$predres[,1] - mean(all_l$readout))^2),5) + SStreat_df <- length(unique(all_l$log_dose))-1 + SSregr <- round(sum((predict(pot)-mean(all_l$readout))^2),5) + ## Non-parallel + SSnonparallel <- round(sum(resid(pot)^2) - sum(resid(potU)^2),5) + ## Preparation + SSprep <- round(sum((predict(lm(readout ~ isSample, all_l)) - mean(all_l$readout))^2),5) + ## Resid Err + RSS <- round(sum(potU$predres[,2]^2),5) + RSS_df <- nrow(all_l)-SStreat_df-1 + FitAnova <- anova(lm(readout ~ factor(Conc)*isSample, all_l)) + # PureErr + SSE <- FitAnova[4,3] + SSE_df <- FitAnova[4,1] + # Non-Linearity + SSnonlin <- round(sum((predict(lm(readout ~ factor(Conc)*isSample, all_l)) - predict(potU))^2),4) + LoF_df <- FitAnova[1,1]+FitAnova[2,1] + ## Total + SStot <- round(sum((all_l$readout -mean(all_l$readout))^2),5) + MSE <- RSS/RSS_df + noConc <- length(unique(all_l$Conc)) + AnovaDFs <- c(noConc-1, 1,3,noConc-4-1, nrow(all_l)-noConc, noConc, nrow(all_l)-noConc-noConc, nrow(all_l)-1) + p_SStreat <- round(pf((SStreat/AnovaDFs[1])/MSE, AnovaDFs[1],RSS_df, lower.tail = F),3) + p_SSprep <- round(pf((SSprep/AnovaDFs[2])/MSE, AnovaDFs[2],RSS_df, lower.tail = F),3) + p_SSregr <- round(pf((SSregr/AnovaDFs[3])/MSE, AnovaDFs[3],RSS_df, lower.tail = F),3) + p_SSnonp <- round(pf((SSnonparallel/AnovaDFs[4])/MSE, AnovaDFs[3],RSS_df, lower.tail = F),3) + p_SSLoF <- round(pf((SSnonlin/LoF_df)/(SSE/SSE_df), LoF_df,SSE_df, lower.tail = F),5) + + ANOVAtab <- data.frame(Source = c("Treatment","Preparation","Regression", + "Non-Parallelism","Residual Error","Non-linearity", + "Pure Error","Total"), + DF = AnovaDFs, + SumSquares = c(SStreat, SSprep,SSregr, SSnonparallel, + RSS, SSnonlin,SSE, SStot), + MeanSquares = c(round(SStreat/AnovaDFs[1],3), SSprep, round(SStreat/AnovaDFs[3],3),round(SSnonparallel/AnovaDFs[4],3), + round(MSE,5), round(SSnonlin/LoF_df,5), round(SSE/SSE_df,5),""), + "F-value" = c(round((SStreat/AnovaDFs[1])/MSE,5), round((SSprep/AnovaDFs[2])/MSE,5), + round((SSregr/AnovaDFs[3])/MSE,5),round((SSnonparallel/AnovaDFs[4])/MSE,5), + "",round((SSnonlin/LoF_df)/(SSE/SSE_df),5),"",""), + "p_value" = c(round(p_SStreat,3), p_SSprep, round(p_SSregr,3), p_SSnonp,"",p_SSLoF,"","") + ) + + return(ANOVAtab) +} + +perConcTab <- function(ro_new, noDilSeries) { + Reftab <- ro_new[,c(1:noDilSeries)] + Testtab <- ro_new[,c((noDilSeries+1):(2*noDilSeries))] + tReftab <- t(Reftab) + colnames(tReftab) <- round(ro_new[,ncol(ro_new)],5) + + avs <- apply(tReftab,2,mean) + sds <- apply(tReftab,2,sd) + cv <- sds/avs*100 + tReftab2 <- rbind(tReftab, avs,sds,cv) + + tTesttab <- t(Testtab) + colnames(tTesttab) <- round(ro_new[,ncol(ro_new)],5) + + avs_test <- apply(tTesttab,2,mean) + sds_test <- apply(tTesttab,2,sd) + cv_test <- sds_test/avs_test*100 + tTesttab2 <- rbind(tTesttab, avs_test,sds_test,cv_test) + concTab <- rbind(tReftab2, tTesttab2) + return(concTab) + +} + +divFUN <- function(x,Div,N,res,noDil) { + N <- N+1 + y <- x/Div + res <- c(res,y) + if (N==noDil) { return(res) } + divFUN(y,Div,N,res,noDil) +} + + + +#### ui ---- + +ui <- dashboardPage( + dashboardHeader(title = "Plateflow"), + dashboardSidebar( + sidebarMenu( + img(src="logo.png", width=230), + menuItem("Home", tabName="home", icon=icon("home")), + menuItem("Data template", tabName = "template", icon=icon("table"), + menuSubItem( tags$li(a("EXCEL File", target="self",href="TestFile.xlsx"))) + ), + # menuItem("User Manual /Validation", tabName = "manual", icon=icon("book"), # tabName here and in dashboard body need to be identical + # menuSubItem(icon = NULL, tags$li(a("Document", target="self",href="UserManual.pdf"))) + # ), + menuItem("EXCEL upload", tabName="Dataupload", icon=icon("magnet", lib="glyphicon")), + menuItem("4PL + report", tabName="fourPL", icon=icon("chart-line", lib="font-awesome")), + #menuItem("XLSX diagnostics", tabName="XLdiagn", icon=icon("chart-bar", lib="font-awesome")), + menuItem("Linear regression + report", tabName="pla", icon=icon("pencil", lib="glyphicon")), + menuItem("Wizard", tabName="wizard", icon=icon("chart-column", lib="font-awesome")), + menuItem("Documentation", tabName="documentation", icon=icon("chart-area", lib="font-awesome")) + ), + tags$footer(HTML(paste(tags$strong(tags$u("InnerAnalytics")), paste(rep(" ",9), collapse=""), + "Developer:", paste(rep(" ",9), collapse=""), + "Host on:", paste(rep(" ",9), collapse=""), + "Version:")), + align="left", style= + "position:fixed; bottom:0;width=100%; background: #FFC337BB; font-family: Times New Roman; font-size:100%; + padding: 5px; color:#4545BA; box-sizing: border-box; z-index: 1000;")), + dashboardBody( + fluidPage( + tabItems( + tabItem(tabName = "home", htmlOutput("homePage")), + tabItem(tabName = "Dataupload", uiOutput("Dataupload")), + tabItem(tabName = "fourPL", uiOutput("fourPL")), + #tabItem(tabName = "XLdiagn", uiOutput("XLdiagn")), + tabItem(tabName = "pla", uiOutput("pla")), + tabItem(tabName = "wizard", uiOutput("wizard")), + tabItem(tabName = "documentation", uiOutput("docu")) + ) + + ) + ), skin="blue" +) + + +#### server ---- +server <- function(input, output, session) { + ReportParS <- reactiveValues() + IPReportParS <- reactiveValues() + + #### renderUIs ---- + output$homePage <- renderUI({ + navbarPage("Home", + tabPanel("Introduction", + tags$img(src="logo.png", class="adv_logo"), + h4("Introduction to the bioassay software"), + tags$mark("linear regression"), br(), + column(4, + tags$table(id="dose-table", + 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), + 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), + 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) + )) + + ), + tabPanel("Documentation", + h4("Introduction "), + h4("Information on dilution setting"), + "(for details see:", a(href="ADONIS.pdf","Whitepaper", download=NA, target="_blank"),")",tags$br(), + "Bend points are calculated according to following formula:", + withMathJax(" $$bp_{1/2} = \\pm\\frac{1.31696}{Hill's slope}$$")), + tabPanel("Configuration", + verbatimTextOutput("sessioninfo")) + ) + }) + + output$Dataupload <- renderUI({ + navbarPage(title="Information", + tabPanel(title = "Real data", + tabsetPanel( + tabPanel("Data input", + + + column(3, + #img(src="Screenshot.png", width=200), + box(title = "Upload", status="warning",solidHeader = T, width=12, "Please upload your EXCEL file here", + fileInput("iFile",'',accept=".xlsx")), + uiOutput(outputId = "sheetName"), + "For data format in the EXCEL file see Data template", + "If no data are uploaded, the settings to the right are used for calculations.", + + tags$head(tags$style(HTML("label {font-size:80%;margin-bottom: 3px;margin-top: 3px;}"))), + + div(checkboxInput("PureErr", "Should pure error be used for calculation of CIs?", FALSE), + style = "font-size: 24px !important;color: #C2173F"), + checkboxGroupInput("selectedSSTs", "Which suitability tests to be used?", choices= c("F-test on Regr."="1", + "EQ-test on lower asymptote difference"= "2", + "EQ-test on ratio of lower asymptote"= "3","EQ-test on ratio of Hill slopes"= "4", + "EQ-test on ratio of upper asymptote"= "5", "F-test on non-linearity"="6", + "EQ-test on ratio of asymptote differences"= "7"), + selected= c("1","2","3","4","5","6","7")), + #actionLink("selectall","SelectAll"), + h5("\n\n\n Author: Franz Innerbichler, InnerAnalytics")), + + ), + tabPanel("4pl-Analysis", + tags$style(HTML("pre { color: black; background-color: #FFE1FF; + font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;font-size: 12px;} ")), + + wellPanel( + fluidRow( + column(4, + #h5("Diagnostics only shown if EXCEL is uploaded"), + htmlOutput("PureErrW2"), + tags$head(tags$style("#PureErrW2{color: red; + font-size: 16px; + font_style: italic;}")), + tableOutput("Filesampl"), + tableOutput("relpotTestTab"), + plotOutput("relpotTestPlot", width="300px", height="150px"), # Pot CI plot + h4("Akaike Information Criterion"), + tableOutput("AIC"), + h5("First row: restricted model; 2nd row: unrestricted model"), + h5("Smaller values of AIC indicate better fit to the data"), + tableOutput("VarDiagn") + ), + column(8, + plotOutput("XLplot"), + + plotOutput("diagnplot"), + + tableOutput("ANOVAXLS"), + DTOutput("EQtests")) + + ))), + tabPanel("linear Analysis", + sidebarLayout( + sidebarPanel( + width=3, + fluidRow( + column(6, + numericInput("Limits",p("limit to be >", bsButton("q4",label="", icon=icon("info"), style="primary", size="extra-small")), + bsPopover(id="q4", title="", content="The calculated limits ..."))) + )), + mainPanel( + tabsetPanel(id="tabs", + tabPanel("linear PLA", + box(title="ANOVA table", status="primary",solidHeader = T, width=12, + tableOutput("Anovatab")), + column(6, + htmlOutput("PureErrW3"), + tags$head(tags$style("#PureErrW3{color: red; + font-size: 16px; + font_style: italic;}")), + plotOutput("plotLin"), + "Delta method is used for potency CIs", + DT::dataTableOutput("pottab"), + h4("Unrestricted linear model (SSSI):"), + tableOutput("SummaryModABu"), + h4("Restricted linear model (CSSI):"), + tableOutput("SummaryModAB")), + column(3, + h3("Tests for linear PLA):"), + DT::dataTableOutput("TESTSlin"), + 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"), + "SST CI for difference of slopes:", + tableOutput("SlopeDiffCI")), + column(3, + h3("ANOVA for parallel line assay"), + DT::dataTableOutput("ANOVAlin"))), + tabPanel("Report", + h4("Settings for report") + )) + ) + ) + ), + tabPanel("parameter estimates", + column(3,style = "background: #4FCBD922", + br(), + h4("Regression results restricted"), + tableOutput("coeffs_r"), + "Bend points restricted", + tableOutput("bends_r2")), + column(3,style = "background: #B5C74022", + br(), + h4("Regression results unrestricted"), + tableOutput("coeffs_unr")), + column(3,style = "background: #F9545422", + h4("Regression results (ln-transformed)"), + tableOutput("logcoeffs_r"), + tableOutput("bends_unr2"), + + tableOutput("logcoeffs_unr")) + ), + 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}"), + ) + ) + ) + ) + }) + + + + + output$fourPL <- renderUI({ + navbarPage(title="4PL", + tabPanel("Analysis and Plots", + #sidebarLayout( + # sidebarPanel( + # width=4, + # fluidRow( + # ) + # ), + mainPanel(width=12, + tabsetPanel(id="tabs", + tabPanel("Settings", + h4("Settings of 4PL regression"), + div(checkboxInput("PureErr4pl", "Should pure error be used for calculation of CIs?", FALSE), + style = "font-size: 24px !important;color: #C2173F"), + + h4("User help"), + h5("If new dilutions are entered, please adjust EC50 to avoid calculation errors"), + # numericInput("Limits",p("limit to be >", bsButton("q4",label="", icon=icon("info"), style="primary", size="extra-small")), + # bsPopover(id="q4", title="", content="The calculated limits ...")), + #h5("Diagnostics only shown if EXCEL is uploaded"), + column(2,style = "background: #7FAEFF", + #actionButton("StartCalc", "Click, when calculations to be started"), + h4("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) + ), + column(2,style = "background: #7FAEFF", + 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) + ), + column(2,style = "background: #627ADD", + h4("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) + ), + column(2,style = "background: #627ADD", + + 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) + ), + column(2,style = "background: #4FCBD9", + h4("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), + verbatimTextOutput("dilutions") + ), + + column(2, + h3("Settings"), + helpText("Vary the slider to see the effect of special cause"), + sliderInput("sdfac","Variability as % of lower to upper asymptote", max=10, value=3, min=0.1, step=0.1), + checkboxInput("heterosked","heteroskedastic noise", FALSE), + sliderInput("potencydiff","potency of test (%)", max=200, min=50, value=100, step=1), + sliderInput("outlL","outlier in lower asymptote", min=0, max=1.5, value=0, step=0.1), + sliderInput("outlM","outlier in mid part", 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"), + verbatimTextOutput("logdil") + + #) + ), + #### 4pl fits ---- + tabPanel("4pl-fit", + tags$head(tags$style("#PureErrW2{color: red; + font-size: 10px; + font_style: italic;}")), + wellPanel( + fluidRow( + column(10, + tags$style(span(htmlOutput("PureErrW3"), style="color: red")), + htmlOutput("PureErrW3"), + + plotOutput("plot", width = "80%"), + DT::dataTableOutput("pottab4pl"), + "Footnote: test performed on relative CIs.", + + DTOutput("EQtests4pl"), # SSTs + h5("*...The estimate for F-test on regression and on non-linearity is the p-value"), + h5("F-test on regression passes if F-value > F-crit and thus p < 0.05"), + h5("F-test on non-linearity passes if F-value < F-crit and thus p > 0.05"), + h5("Test results outcome: 0 ... test passed (for EQ tests: CI within limits); + 1 ... test failed (for EQ tests CI not within limits); + -1 ... calculations unbound/denominator too close to 0"), + #plotOutput("CIplot, height=50%") + ), + column(8, + "4 PL ANOVA unrestricted", + box(title = "ANOVA unrestricted", status="warning",solidHeader = T, width=12, "", + DT::dataTableOutput("ANOVA")), + h5("Please note that for the CIs of rel. potency the RSS of the restricted model is used"), + h5("RSS ... 'Residual error' in the SumSquares column"), + h5("MSE ... 'Residual error' in the MeanSquaress column"), + h5("SSE ... 'Pure error' in the SumSquares column"), + h5("RMSE ... Square root of the 'Residual Error' in the MeanSquares column"), + 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", + h4("ln-transformed y-axis plots"), + plotOutput("plot4plTrans", width = "80%"), + DT::dataTableOutput("pottab4plTrans"), + ), + 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}"), + ) + ) + ) + #) + ) + ) + }) + + + output$pla <- renderUI({ + navbarPage(title="pla", + tabPanel("Analysis and Plots", + + ) + ) + }) + + output$wizard <- renderUI({ + navbarPage(title="Dilution setting", + tabPanel("Plots", + sidebarLayout( + sidebarPanel( + width=3, + fluidRow( + column(6, + numericInput("Limits",p("limit to be >", bsButton("q4",label="", icon=icon("info"), style="primary", size="extra-small")), + bsPopover(id="q4", title="", content="The calculated limits ..."))) + )), + mainPanel( + tabsetPanel(id="tabs", + tabPanel("4pl", + box(title="ANOVA table", status="primary",solidHeader = T, width=12, + tableOutput("Anovatab")), + column(4, + h3("Confidence intervals"), + tableOutput("CIs"), + "The confidence intrval table is interaactive for changes in: variability slider (%SD), potency of test-slider, + and 'Adjust the dilutions'-slider", + tableOutput("optimalDils"), + selectInput(inputId="scenario", label= "Select an 'optimal' scenario:", choices = c("scenario 2","scenario 3","scenario 6","steep slope"))), + column(5, + plotOutput("plotfordilutions"), + h4("in grey: most extreme bend point lines of theoretical samples with 50% and 200% potency"), + sliderInput("dilslider", "Adjust the dilutions(+-change in %)", min = -100,max=100, value=0, step=1, round=0), + checkboxInput("fixupper","Fix highest concentration (if unticked, the center is fixed)",FALSE), + h5("Dilution factors"), + tableOutput("adjlogdil"), + "Short guidance: wider dilution ranges increase the CIs of rel. potency, and decrease the CIs of upper and lower asymptote ratios, as well as Hill's slope ratios", br(), + "Narrower dilution ranges decrease the CIs of rel. potency, and increase the CIs of upper and lower asymptote ratios, ands Hill's slope ratios",), + column(3, + h3("Bend points"), + tableOutput("bps"), + tableOutput("extremebps"), + h4("Explanation of the plots") + )), + tabPanel("Report", + h4("Settings for report") + )) + ) + ))) + }) + + + + v <- reactiveValues(num_dose=0, next.dose.t=0) + + sigmoid <- reactive({ + sig <- c(input$lowAsymptREF, input$lowAsymptTEST,input$uppAsymptREF,input$uppAsymptREF, + input$slopeREF,input$slopeTEST,input$EC50,input$potDiff) + sig + }) + + CONC <- reactive({ + Konz_ <- c(input$CONC1,input$CONC2,input$CONC3,input$CONC4, + input$CONC5,input$CONC6,input$CONC7,input$CONC8, + input$CONC9,input$CONC10,input$CONC11,input$CONC12) + if (any(na.omit(Konz_)==0)) Konz_[Konz_ ==0] <- 0.0000001 + Konz <- na.omit(Konz_) + }) + + Dils <- reactive({ + Dilutions <- c(input$ConcStart,input$dilutionFac,input$NoDil,input$NoDilSer) + }) + + #### input EXCEL file ---- + + observe({ + if (!is.null(input$iFile)) { + inFile <- input$iFile + ext <- tools::file_ext(inFile$name) + file.rename(inFile$datapath, paste(inFile$datapath, ".xlsx",sep="")) + t.filelocation <- gsub('\\\\','/',paste(inFile$datapath, ext,sep=".")) + sheets <- openxlsx::getSheetNames(t.filelocation) + dat <- lapply(sheets, openxlsx::read.xlsx, xlsxFile = t.filelocation) + names(dat) <- sheets + Dat$wb <- dat + names(Dat$wb) <- sheets + Dat$sheets <- sheets + Dat$FileName <- input$iFile[["name"]] + + } + }) + output$sheetName <- renderUI({ + if (!is.null(Dat$wb)) { + #browser() + cnSheets <- Dat$sheets + cnSheets2 <- c("please choose", cnSheets) + selectInput(inputId = "sheet", label="Select a sheet:",choices = cnSheets) + } + }) + observeEvent(input$sign_out, { + unlink(input$iFile$datapath) + reset(id = "") # from shinyjs package + }) + + + #### process XLSX file ---- + observe({ + if (!is.null(input$iFile)) { + if (!is.null(input$sheet)) { + if (input$sheet != "please choose") { + #browser() + + XLdat <- Dat$wb[input$sheet][[1]] + if (is.null(XLdat)) XLdat <- Dat$wb[Dat$sheets[1]][[1]] + cn <- colnames(XLdat) + logI <- grep("log", cn) + logDoseI <- grep("log_dose", cn) + if (length(logI)>0 & length(logDoseI)==0) { + XLdat$log_dose <- XLdat[,logI] + XLdat2 <- XLdat[,-logI] + CORro <- cor(XLdat$log_dose, XLdat[,3]) + } else if (length(logI)==0 & length(logDoseI)==0) { + Ind <- grep("dilu|dose|Dose|Conc|conc",cn) + XLdat$log_dose <- log(XLdat[,Ind]) + CORro <- cor(XLdat[,Ind], XLdat[,3]) + XLdat2 <- XLdat[,-Ind] + } else if (length(logI)>0 & length(logDoseI)>0) { + XLdat2 <- XLdat + CORro <- cor(XLdat[,logI], XLdat[,3]) + } + Dat$EXCEL <- XLdat2 + PureErrFlag <- input$PureErr + warning_text2 <- reactive({ + ifelse(PureErrFlag, 'Pure Error is selected', '') + }) + output$PureErrW2 <- renderText(warning_text2()) + + noDilSeries <-(ncol(XLdat2)-1)/2 + noDils <- nrow(XLdat2) + Dat$noDilSeriesXL <- noDilSeries + + all_l <- melt(data.frame(XLdat2), id.vars="log_dose",variable.name = "replname", value.name = "readout") + isRef <- rep(c(1,0),1,each=nrow(XLdat2)*noDilSeries) + isSample <- rep(c(0,1),1,each=nrow(XLdat2)*noDilSeries) + all_l$isRef <- isRef + all_l$isSample <- isSample + all_l$Conc <- exp(all_l$log_dose) + # all_l$readout[all_l$readout < 0] <- 0.01 + REP$all_l <- all_l + + #### XLSX eval ---- + if (CORro<0) SLOPE <- -1 else SLOPE <- 1 + ec50est <- (max(all_l$log_dose)+min(all_l$log_dose))/2 + startlist <- list(a=min(all_l$readout), b=SLOPE, d=max(all_l$readout), cs=ec50est,r=0) + tryCatch({ + mr <- gsl_nls(fn = readout ~ a+(d-a)/(1+exp(b*(cs-r*isSample-log_dose))), + data=all_l, + start=startlist, + control=gsl_nls_control(xtol=1e-6,ftol=1e-6, gtol=1e-6)) + }, + error = function(err) { + err$message + }) + + startlistmu <- list(as=min(all_l$readout), bs=SLOPE, ds=max(all_l$readout), cs=ec50est, + at=min(all_l$readout), bt=SLOPE, dt=max(all_l$readout), r=0) + tryCatch({ + 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)) + }, + error = function(err) { + err$message + }) + + Smr <- summary(mr) + Smu <- summary(mu) + coeffsMR <- Smr$coefficients[,1] + coeffsMU <- Smu$coefficients[,1] + Dat$coeffsMRes <- coeffsMR + names(coeffsMU) <- c("lowAsym REF", "slope REF","upperAsym REF","EC50 REF","lowAsym TEST","slope TEST","upperAsym TEST","r") + + if (!PureErrFlag) { + pot_est <- exp(confintd(mr, "r", method="asymptotic")) + potU_est <- exp(confintd(mu, "r", method="asymptotic")) + colnames(pot_est) <- c("estimate","lowerCI","upperCI") + colnames(potU_est) <- c("estimate","lowerCI","upperCI") + } else { + FitAnova <- anova(lm(readout ~ factor(log_dose)*isSample, all_l)) + meanPureErr <- FitAnova[4,3] + DFsPure <- FitAnova[4,1] + VCOV <- vcov(mr) + V_V <- VCOV/Smr$sigma^2 + VCOVpure <- V_V*meanPureErr + SEsPure <- sqrt(diag(V_V)*meanPureErr) + pot_est <- data.frame(estimate=exp(coeffsMR[5]), lowerCI = exp(coeffsMR[5]-qt(0.975,DFsPure)*SEsPure[5]), + upperCI = exp(coeffsMR[5]+qt(0.975,DFsPure)*SEsPure[5])) + VCOVu <- vcov(mu) + V_Vu <- VCOVu/Smu$sigma^2 + #VCOVpure <- V_Vu*meanPureErr + SEsPureU <- sqrt(diag(V_Vu)*meanPureErr) + potU_est <- data.frame(estimate=exp(coeffsMU[7]), lowerCI = exp(coeffsMU[7]-qt(0.975,DFsPure)*SEsPureU[7]), + upperCI = exp(coeffsMU[7]+qt(0.975,DFsPure)*SEsPureU[7])) + + } + + pot <- drm(readout ~ Conc, isSample, data=all_l, fct=LL.4(names=c("b","d","a","c")), + pmodels=data.frame(1,1,1,isSample)) + potU <- drm(readout ~ Conc, isSample, data=all_l, fct=LL.4(names=c("b","d","a","c")), + pmodels=data.frame(isSample, isSample,isSample,isSample)) + SR <- summary(pot) + SU <- summary(potU) + coeffs_UN <- potU$coefficients + coeffs_UN[1] <- ifelse(xor(CORro>0, coeffs_UN[1]>0), -coeffs_UN[1],coeffs_UN[1]) + coeffs_UN[2] <- ifelse(xor(CORro>0, coeffs_UN[2]>0), -coeffs_UN[2],coeffs_UN[2]) + coeffs_UN[7:8] <- log(coeffs_UN[7:8]) + POTU <- EDcomp(potU, percVec = c(50,50), interval="delta",display=F) + Dat$potDiffXL <- POTU[1]*100 + RMSE_unr_diagn <- sqrt(SU$resVar) + RMSE_res_diagn <- sqrt(SR$resVar) + up_lowDiffDiagn <- SU$coefficients[5,1] - SU$coefficients[3,1] + ProzSD_diagn <- RMSE_unr_diagn*100/up_lowDiffDiagn + Dat$ProzSD_XL <- ProzSD_diagn + + observe({ + pot_est3 <- data.frame(pot_est*100) + MaxPl <- max(input$upperPot, pot_est3$upperCI) + MinPl <- min(input$lowerPot, pot_est3$lowerCI) + MaxPl_ <- MaxPl*1.2 + MinPl_ <- MinPl*0.8 + #browser() + p_relCI <- ggplot(data=pot_est3, aes(xmin=lowerCI, xmax=upperCI, y=1)) + + geom_linerange(size=4, col="darkseagreen",alpha=0.5) + + geom_point(aes(x=estimate, y=1), col="grey15", shape=13, size=10) + + geom_vline(xintercept = c(input$lowerPot, input$upperPot), col="indianred") + + annotate("text", x=input$lowerPot-13, y=1.040, label=paste("lower EAC:", input$lowerPot), col="indianred") + + annotate("text", x=input$upperPot+13, y=1.040, label=paste("upper EAC:", input$upperPot), col="indianred") + + annotate("text", x=pot_est3$lowerCI-10, y=1.020, label=paste("lower CL:", round(pot_est3$lowerCI,1)), col="darkgreen") + + annotate("text", x=pot_est3$upperCI+10, y=1.020, label=paste("upper CL:", round(pot_est3$upperCI,1)), col="darkgreen") + + annotate("text", x=pot_est3$estimate, y=0.98, label=paste("rel. potency:", round(pot_est3$estimate,1)), col="black") + + ylim(c(0.95, 1.05)) + + xlim(c(MinPl_,MaxPl_)) + + xlab("relative potency + confidence interval") + + theme_bw() + + theme(axis.title.y=element_blank(), + axis.text.y=element_blank(), + axis.ticks.y=element_blank()) + output$relpotTestPlot <- renderPlot({ + p_relCI + }) + REP$relpotTestPlot <- p_relCI + + output$relpotTestTab <- renderTable({ pot_est3 }) + }) + + SStreat <- round(sum((potU$predres[,1] - mean(all_l$readout))^2),5) + SStreat_df <- length(unique(all_l$log_dose))-1 + SSregr <- round(sum((predict(pot)-mean(all_l$readout))^2),5) + ## Non-parallel + SSnonparallel <- round(sum(resid(pot)^2) - sum(resid(potU)^2),5) + ## Preparation + SSprep <- round(sum((predict(lm(readout ~ isSample, all_l)) - mean(all_l$readout))^2),5) + ## Resid Err + RSS <- round(sum(potU$predres[,2]^2),5) + RSS_df <- nrow(all_l)-SStreat_df-1 + FitAnova <- anova(lm(readout ~ factor(Conc)*isSample, all_l)) + # PureErr + SSE <- FitAnova[4,3] + SSE_df <- FitAnova[4,1] + # Non-Linearity + SSnonlin <- round(sum((predict(lm(readout ~ factor(Conc)*isSample, all_l)) - predict(potU))^2),4) + LoF_df <- FitAnova[1,1]+FitAnova[2,1] + ## Total + SStot <- round(sum((all_l$readout -mean(all_l$readout))^2),5) + MSE <- RSS/RSS_df + noConc <- length(unique(all_l$Conc)) + AnovaDFs <- c(noConc-1, 1,3,noConc-4-1, nrow(all_l)-noConc, noConc, nrow(all_l)-noConc-noConc, nrow(all_l)-1) + p_SStreat <- round(pf((SStreat/AnovaDFs[1])/MSE, AnovaDFs[1],RSS_df, lower.tail = F),3) + p_SSprep <- round(pf((SSprep/AnovaDFs[2])/MSE, AnovaDFs[2],RSS_df, lower.tail = F),3) + p_SSregr <- round(pf((SSregr/AnovaDFs[3])/MSE, AnovaDFs[3],RSS_df, lower.tail = F),3) + p_SSnonp <- round(pf((SSnonparallel/AnovaDFs[4])/MSE, AnovaDFs[3],RSS_df, lower.tail = F),3) + p_SSLoF <- round(pf((SSnonlin/LoF_df)/(SSE/SSE_df), LoF_df,SSE_df, lower.tail = F),5) + + ANOVAtab2 <- data.frame(Source = c("Treatment","Preparation","Regression", + "Non-Parallelism","Residual Error","Non-linearity", + "Pure Error","Total"), + DF = round(AnovaDFs,0), + SumSquares = c(SStreat, SSprep,SSregr, SSnonparallel, + RSS, SSnonlin,SSE, SStot), + MeanSquares = c(round(SStreat/AnovaDFs[1],3), SSprep, round(SStreat/AnovaDFs[3],3),round(SSnonparallel/AnovaDFs[4],3), + round(MSE,5), round(SSnonlin/LoF_df,5), round(SSE/SSE_df,5),""), + "F-value" = c(round((SStreat/AnovaDFs[1])/MSE,5), round((SSprep/AnovaDFs[2])/MSE,5), + round((SSregr/AnovaDFs[3])/MSE,5),round((SSnonparallel/AnovaDFs[4])/MSE,5), + "",round((SSnonlin/LoF_df)/(SSE/SSE_df),5),"",""), + "p_value" = c(round(p_SStreat,3), p_SSprep, round(p_SSregr,3), p_SSnonp,"",p_SSLoF,"","") + ) + + output$ANOVAXLS <- renderTable({ ANOVAtab2 }) + + REP$ANOVAXLS <- ANOVAtab2 + + #browser() + + startlistlog <- list(a=min(log(all_l$readout)), b=SLOPE, d=max(log(all_l$readout)), cs=ec50est,r=0) + tryCatch({ + mrlog <- gsl_nls(fn = log(readout) ~ a+(d-a)/(1+exp(b*(cs-r*isSample-log_dose))), + data=all_l, + start=startlistlog, + control=gsl_nls_control(xtol=1e-6,ftol=1e-6, gtol=1e-6)) + }, + error = function(err) { + print("Error in mrlog gsl_nls") + }) + + startlistmulog <- list(as=min(log(all_l$readout)), bs=SLOPE, ds=max(log(all_l$readout)), cs=ec50est, + at=min(log(all_l$readout)), bt=SLOPE, dt=max(log(all_l$readout)), r=0) + tryCatch({ + mulog <- gsl_nls(fn = log(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=startlistmulog, + control=gsl_nls_control(xtol=1e-6,ftol=1e-6, gtol=1e-6)) + }, + error = function(err) { + print("Error in murlog gsl_nls") + }) + logpot <- drm(log(readout) ~ Conc, isSample, data=all_l, fct=LL.4(names=c("b","d","a","c")), + pmodels=data.frame(1,1,1,isSample)) + logpotU <- drm(log(readout) ~ Conc, isSample, data=all_l, fct=LL.4(names=c("b","d","a","c")), + pmodels=data.frame(isSample, isSample,isSample,isSample)) + Smrlog <- summary(mrlog)$coefficients + Smulog <- summary(mulog)$coefficients + SUlog <- summary(logpotU) + SRlog <- summary(logpot) + RMSE_unrlog_diagn <- sqrt(SUlog$resVar) + RMSE_reslog_diagn <- sqrt(SRlog$resVar) + + up_lowDifflogDiagn <- SUlog$coefficients[5, 1] - SUlog$coefficients[3, 1] + ProzSDlog_diagn <- RMSE_unrlog_diagn * 100 / up_lowDifflogDiagn + + #### Diagnostic RMSE table #### + DiagnTable <- data.frame(parameter = c("RMSE unrestricted", "RMSE_restr.", "Diff_upper-lowerAsymp", "%SD (unrestricted)", + "RMSE log_unrestricted", "RMSE log_restr", "diff_up-lowAsymp_log", "%SD (log unrestricted)"), + result = c(round(RMSE_unr_diagn, 4), round(RMSE_res_diagn, 4), + round(up_lowDiffDiagn, 4), round(ProzSD_diagn, 4), + round(RMSE_unrlog_diagn, 4), round(RMSE_reslog_diagn, 4), + round(up_lowDifflogDiagn, 4), round(ProzSDlog_diagn, 4))) + + Dat$DiagnTable <- DiagnTable + REP$DiagnTable <- DiagnTable + + logpotest <- exp(confintd(mrlog, "r", method = "asymptotic")) # compParm(logpot, "c") + logpotuest <- exp(confintd(mulog, "r", method = "asymptotic")) # compParm(logpotu, "c") + + # 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])) + colnames(logpotest) <- c("estimate", "lowerCI", "upperCI") + + colnames(logpotuest) <- c("estimate", "lowerCI", "upperCI") + #browser() + cnXL <- colnames(XLdat2) + Filesample <- data.frame(Test = c("File name", "samples"), Test2=c(Dat$FileName, paste(cnXL[1], " vs ", cnXL[4]))) + colnames(Filesample) <- c("", "") + output$Filesampl <- renderTable({ Filesample }, rownames = F) + + UnRPLAausw <- data.frame(Information = c("model", "lower asymptote Ref", "Hill's slope Ref", "upper asymptote Ref","EC50 Ref", + "lower asymptote Test", "Hill's slope Test", + "upper asymptote Test","EC50 Difference", + "relative potency", "lower CI", "upper CI"), + Results = unlist(c("UNRESTRICTED", round(coeffsMU, 3), round(potU_est*100, 3)))) # von psl_nls + + # "log relative potency", "log lower CI", "log upper CI", round(logpotest, 3), round(compParm(potu, "c", display = F), 3) + + output$coeffs_unr <- renderTable({ + UnRPLAausw + }) + + #browser() + UnRPLAausw2 <- data.frame(Dat$bendpointsTRANS) + if (length(UnRPLAausw2) > 0) { + colnames(UnRPLAausw2) <- c("bendpoints log") + UnrBendLog <- data.frame(Bendpoint = c("REF_lower","REF_upper", + "TEST_lower","REF_lower"), + bendpoints_logscale = UnRPLAausw2) + + output$bends_unr2 <- renderTable({ + UnrBendLog + }) + } + REP$UnRPLAausw <- UnRPLAausw + REP$UnRPLAausw2 <- UnRPLAausw2 + + # browser() + coeffs_R <- coeffsMR # pot$coefficients + coeffs_R[5] <- coeffs_R[4] - coeffs_R[5] + 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 (Eingeschränktes Modell) --- + PLAAusw <- data.frame( + Information = c("model", "lower asymptote", "Hill's slope", "upper asymptote","EC50 Ref", + "EC50 Test", "relative potency", + "lower CI", "upper CI"), + Results = unlist(c("RESTRICTED", round(coeffs_R, 3), + round(pot_est[1, ] * 100, 3)))) # von gs1_nls + output$coeffs_r <- renderTable({ PLAAusw }) + + PLAAusw2 <- data.frame(Dat$bendpoints) + output$bends_r2 <- renderTable({ PLAAusw2 }, digits = 3, rownames = T) + + REP$PLAausw <- PLAAusw + REP$PLBend <- PLAAusw2 + + # --- Koeffizienten-Extraktion --- + logcoeffs_R <- Smrlog[, 1] # logpot$coefficients + names(logcoeffs_R) <- c("lower A", "Hill's slope", "upper A", "EC50 REF","EC50 DIFF") + + # --- Ergebnistabelle: LOG RESTRICTED --- + + LogPLAAusw <- data.frame( + Information = c("model", "lower asymptote", "Hill's slope", "upper asymptote","EC50 Ref", + "EC50 difference", "log relative potency", + "log lower CI", "log upper CI"), + Results = unlist(c("LOG RESTRICTED", round(logcoeffs_R, 3), + round(logpotest * 100, 3)))) # von gs1_nls + + output$logcoeffs_r <- renderTable({ LogPLAAusw }) + REP$LogPLAausw <- LogPLAAusw + + logcoeffs_UNR <- Smulog[,1] + names(logcoeffs_UNR) <- c("lower asymptote Ref", "Hill's slope Ref", "upper asymptote Ref","EC50 Ref", + "lower asymptote Test", "Hill's slope Test", "upper asymptote Test","EC50 Diff" + ) + + # --- Ergebnistabelle: LOG UNRESTRICTED --- + + LogUnrPLAAusw <- data.frame( + Information = c("model", "lower asymptote Ref", "Hill's slope Ref", "upper asymptote Ref","EC50 Ref", + "lower asymptote Test", "Hill's slope Test", "upper asymptote Test","EC50 Diff" , + "relative potency", "lower CI", "upper CI"), + + Results = unlist(c("LOG UNRESTRICTED", round(logcoeffs_UNR, 3), + round(logpotest * 100, 3)))) # von gs1_nls + + output$logcoeffs_unr <- renderTable({ + LogUnrPLAAusw + }) + REP$LogUnrPLAausw <- LogUnrPLAAusw + #browser() + Dat$coeffs_UN <- coeffs_UN + + + if (exists("Ind")) { + Dat$dilution <- XLdat[,Ind] + } else Dat$dilution <- exp(XLdat[,logI]) + # --- Plot-Ausgabe --- + output$XLplot <- renderPlot({ + plot_f(XLdat2, sigmoid = NULL, det_sig = coeffs_UN, TransFlag=F) + }) + + REP$XLdat2 <- XLdat2 + + # --- Diagnose-Plots (Residualanalyse) --- + output$diagnplot <- renderPlot({ + op <- par(mfrow = c(2, 2), mar = c(3.2, 3.2, 2, .5), mgp = c(2, .7, 0)) + + # 1. Residuals vs Fitted + plot(residuals(pot) ~ fitted(pot), main = "Residuals restricted") + abline(h = 0) + qqnorm(residuals(pot)) + qqline(residuals(pot)) + plot(residuals(potU) ~ fitted(potU), main = "Residuals unrestricted") + abline(h = 0) + + qqnorm(residuals(potU)) + qqline(residuals(potU)) + + par(op) # Parameter zurücksetzen + }) + + output$AIC <- renderTable({ + AIC <- AIC(pot, potU) + }) + + output$VarDiagn <- renderTable({ + DiagnTable + }, digits=4) + + output$relpotplot <- renderPlot({ + relpot(potU, intervall="fieller", bty="l", + main="Quality of rel. potency over response") + }) + + + + } # !please choose + } # input$sheet + } # input$iFile + }) + + #### make geomDils reactive ---- + observe({ + #browser() + if (is.null(input$ConcStart)) return(NULL) + if (!is.na(input$ConcStart) & !is.na(input$dilutionFac) &!is.na(input$NoDil) &!is.na(input$NoDilSer)) { + upR <- input$ConcStart + noDil <- input$NoDil + noDilSer <- input$NoDilSer + Div <- input$dilutionFac + res <- c() + N_ <- 1 + Conc <- c(upR, divFUN(upR,Div,N=N_,res,noDil)) + + Dat$MetaConc <- Conc + } + }) + + #### updateSlider on XLSX ---- + observe({ + if (!is.null(Dat$potDiffXL)) { + updateSliderInput(session, "potencydiff", + value=round(as.numeric(Dat$potDiffXL[[1]]),5)) + } + }) + observeEvent(input$potencydiff, { + if (!is.null(Dat$potDiffXL)) { + updateSliderInput(session, "potencydiff", + value=round(as.numeric(input$potencydiff),5)) + } + }) + observe({ + if (!is.null(Dat$ProzSD_XL)) { + updateSliderInput(session, "sdfacf", + value=round(as.numeric(Dat$ProzSD_XL[[1]]),5)) + } + }) + observeEvent(input$sdfac, { + if (!is.null(Dat$ProzSD_XL)) { + updateSliderInput(session, "sdfac", + value=round(as.numeric(Dat$ProzSD_XL[[1]]),5)) + } + }) + + #### updaterNumeric Input ---- + observe({ + if(!is.null(Dat$coeffs_UN)) { + updateNumericInput(session, "lowAsymptREF", + value=round(as.numeric(Dat$coeffs_UN[3]),5), min=0) + updateNumericInput(session, "lowAsymptTEST", + value=round(as.numeric(Dat$coeffs_UN[4]),5), min=0) + updateNumericInput(session, "uppAsymptREF", + value=round(as.numeric(Dat$coeffs_UN[5]),5), min=0) + updateNumericInput(session, "uppAsymptTEST", + value=round(as.numeric(Dat$coeffs_UN[6]),5), min=0) + updateNumericInput(session, "slopeREF", + value=round(as.numeric(Dat$coeffs_UN[1]),5)) + updateNumericInput(session, "slopeTEST", + value=round(as.numeric(Dat$coeffs_UN[2]),5)) + updateNumericInput(session, "EC50", + value=round(as.numeric(Dat$coeffs_UN[7]),5)) + updateNumericInput(session, "potDiff", + value=round(as.numeric(Dat$coeffs_UN[7])- as.numeric(Dat$coeffs_UN[8]),5)) + } + }) + + observe({ + if(!is.null(Dat$dilution)) { + updateNumericInput(session, "CONC1", + value=as.numeric(Dat$dilution[1])) + updateNumericInput(session, "CONC2", + value=as.numeric(Dat$dilution[2])) + updateNumericInput(session, "CONC3", + value=as.numeric(Dat$dilution[3])) + updateNumericInput(session, "CONC4", + value=as.numeric(Dat$dilution[4])) + updateNumericInput(session, "CONC5", + value=as.numeric(Dat$dilution[5])) + updateNumericInput(session, "CONC6", + value=as.numeric(Dat$dilution[6])) + updateNumericInput(session, "CONC7", + value=as.numeric(Dat$dilution[7])) + updateNumericInput(session, "CONC8", + value=as.numeric(Dat$dilution[8])) + updateNumericInput(session, "CONC9", + value=as.numeric(Dat$dilution[9])) + updateNumericInput(session, "CONC10", + value=as.numeric(Dat$dilution[10])) + updateNumericInput(session, "CONC11", + value=as.numeric(Dat$dilution[11])) + updateNumericInput(session, "CONC12", + value=as.numeric(Dat$dilution[12])) + + } + }) + + observe({ + if(!is.null(Dat$MetaConc)) { + updateNumericInput(session, "CONC1", + value=as.numeric(Dat$MetaConc[1])) + updateNumericInput(session, "CONC2", + value=as.numeric(Dat$MetaConc[2])) + updateNumericInput(session, "CONC3", + value=as.numeric(Dat$MetaConc[3])) + updateNumericInput(session, "CONC4", + value=as.numeric(Dat$MetaConc[4])) + updateNumericInput(session, "CONC5", + value=as.numeric(Dat$MetaConc[5])) + updateNumericInput(session, "CONC6", + value=as.numeric(Dat$MetaConc[6])) + updateNumericInput(session, "CONC7", + value=as.numeric(Dat$MetaConc[7])) + updateNumericInput(session, "CONC8", + value=as.numeric(Dat$MetaConc[8])) + updateNumericInput(session, "CONC9", + value=as.numeric(Dat$MetaConc[9])) + updateNumericInput(session, "CONC10", + value=as.numeric(Dat$MetaConc[10])) + updateNumericInput(session, "CONC11", + value=as.numeric(Dat$MetaConc[11])) + updateNumericInput(session, "CONC12", + value=as.numeric(Dat$MetaConc[12])) + + } + }) + + #### render logDilsText ---- + output$logdil <- renderText({ + if (!is.null(Dat$MetaConc)) { + Conc <- Dat$MetaConc + } else Conc <- CONC() + logdilu <-log(Conc) + logdilu + }) + + + #### reactive dataset sim ---- + + sim <- reactive({ + #browser() + if(is.null(sigmoid())) return(NULL) + sd_fac_ <- as.numeric(input$sdfac) + r_ <- log(as.numeric(input$potencydiff)/100) + as = sigmoid()[1]; bs = sigmoid()[5];cs = sigmoid()[7];ds = sigmoid()[3];at = sigmoid()[2]; + bt = sigmoid()[6];r = sigmoid()[8]; ct = cs-r_; dt = sigmoid()[4]; + if (!is.null(Dat$MetaConc)) Conc <- Dat$MetaConc else Conc <- CONC() + log_conc <- log(Conc) + av_test <- as + (ds-as)/(1+exp(bs*(cs - log_conc))) + av_ref <- at + (dt-at)/(1+exp(bt*(ct - log_conc))) + #browser() + if (!is.na(input$NoDilSer)) { + noDilSer <- input$NoDilSer + } else if (!is.null(Dat$noDilSeriesXL)) noDilSer <- Dat$noDilSeriesXL else noDilSer <- 3 + if (!is.na(input$NoDil)) noDil <- input$NoDil else noDil <- length(log_conc) + isRef <- rep(c(1,0), 1,each=noDilSer*noDil) + isSample <- rep(c(0,1), 1,each=noDilSer*noDil) + + #if (is.null(Dat$EXCEL)) { + ro_new <- Calc_DilRes(as=as,at=at,ds=ds,dt=dt,cs=cs,ct=ct,r=r_,bt=bt,bs=bs, log_conc = log_conc, + sd_fac=sd_fac_, + # auslenkU=outlierU, + # auslenkM=outlierM, + # auslenkL=outlierL, + heteroNoise = input$heterosked, noDilSeries = noDilSer, noDils = noDil) + #} else ro_new <- Dat$EXCEL + }) + # }) + + ####sim2 ---- + sim2 <- reactive({ + tab <- sim() + if (is.null(Dat$EXCEL)) return(tab) else return(Dat$EXCEL) + }) + + + #### Plot 4pl ---- + output$plot <- renderPlot({ + #browser() + sigmoid <- sigmoid() + det_sig=NULL + plot_f(sim2(),sigmoid, det_sig, TransFlag = F) + }) + + #### Plot 4pl Transformed ---- + output$plot4plTrans <- renderPlot({ + #browser() + sigmoid <- sigmoid() + det_sig=NULL + plot_f(sim2(),sigmoid, det_sig, TransFlag = T) + }) + + + #### Testergebnisse für 4PL ---- + observe({ + if (is.null(sim2())) return(NULL) + if (is.null(input$PureErr4pl)) return(NULL) + #observeEvent(input$StartCalc,{ + PureErrFlag <- input$PureErr4pl + warning_text3 <- reactive({ + ifelse(PureErrFlag, 'Pure error selected','') + }) + + #browser() + output$PureErrW3 <- renderText(warning_text3()) + + Limite <- 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), + as.numeric(input$lEACratioAdiff), as.numeric(input$uEACratioAdiff)) + Dat$limite <- Limite + #browser() + + tab <- tests_FUNC(sim2(), Limite, PureErrFlag = PureErrFlag) + if (length(tab)>1) { + tab[1,6:7] <- c("-","-") + Dat$tests_FUNC <- tab + REP$testsTab <- tab + tab2 <- tab[1:7,] + + dat <- datatable(tab2,options = list( + paging=TRUE, + dom="t", + rownames=FALSE + )) %>% formatStyle("test_results", + target='row', + backgroundColor = styleEqual(c(-1,0,1), + c("pink",'lightgreen','lightgrey'))) + } else { dat <- datatable(data.frame(test_results = "Convergeance failed for the uploaded dataset")) } + #browser() + output$EQtests4pl <- renderDT({ dat}) + + }) # observe + + #### Testergebnisse für XLSX ---- + observe({ + if (is.null(Dat$EXCEL)) return(NULL) + if (is.null(input$PureErr)) return(NULL) + #observeEvent(input$StartCalc,{ + PureErrFlag <- input$PureErr + warning_text3 <- reactive({ + ifelse(PureErrFlag, 'Pure error selected','') + }) + + + output$PureErrW3 <- renderText(warning_text3()) + + Limite <- 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), + as.numeric(input$lEACratioAdiff), as.numeric(input$uEACratioAdiff)) + Dat$limite <- Limite + #browser() + SelTests <- as.numeric(input$selectedSSTs) + tab <- tests_FUNC(Dat$EXCEL, Limite, PureErrFlag = PureErrFlag) + + tab[1,6:7] <- c("-","-") + Dat$tests_FUNC <- tab + REP$testsTab <- tab + tab2 <- tab[SelTests,] + + dat <- datatable(tab2,options = list( + paging=TRUE, + dom="t", + rownames=FALSE + )) %>% formatStyle("test_results", + target='row', + backgroundColor = styleEqual(c(-1,0,1), + c("pink",'lightgreen','lightgrey'))) + + output$EQtests <- renderDT({ dat }) + + }) # observe + + ####plot CIs ---- + observe({ + tab <- Dat$tests_FUNC + if (is.null(tab)) return(NULL) + + tab2 <- tab[-c(1,2,3,6),] + tab2[,3:7] <- apply(tab2[,3:7],2,as.numeric) + tab2[4:5,3:7] <- tab2[4:5,3:7]/100 + + p_CIs <- ggplot(tab2,aes(x=test,y=estimate, color=test,group=test)) + + geom_point() + + geom_errorbar(aes(ymin=lower_CI, ymax=upper_CI), width=0.4) + + geom_crossbar(aes(ymin=lower_limit, ymax=upper_limit), size=0.8) + + coord_flip() + + theme_bw() + + theme(legend.position = "none",text = element_text(size=20)) + + output$CIplot <- renderPlot({ p_CIs}, height=200) + + REP$CIplot <- p_CIs + }) + + + output$simdat <- DT::renderDataTable({ + tab <- sim2() + if (is.character(tab)) stop(tab) + + tab2 <- round(tab, 5) + colnames(tab2) <- c(paste("T", seq(1,(ncol(tab2)-1)/2)), + paste("R", seq(1,(ncol(tab2)-1)/2)), "log_conc" ) + dat <- datatable(tab2, options=list( + paging=T, + pageLength=20, + dom="t" + )) + }) + + output$Conctab <- 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) + }) + + #### linear Plot output ---- + + output$plotLin <- renderPlot({ + tab <- Dat$EXCEL + + # tab <- sim2() + # if (is.character(tab)) stop(tab) + # #browser() + # if (!is.na(Dils()[4])) noDilSer <- Dils()[4] else noDilSer = (ncol(tab)-1)/2 + # Conc <- CONC() + # Conctab <- Dat$Conctab + # if (!is.na(Dils()[3])) noDil <- Dils()[3] else noDil = length(Conc) + # + # 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) + # + # Dat$circles <- circle + # sigmoid <- sigmoid() + # log_dose <- unique(all_l$log_dose) + # seq_x <- seq(min(log_dose), max(log_dose),0.1) + # SAMPLEtrue <- sigmoid[2] + (sigmoid[4]-sigmoid[2])/(1+exp(sigmoid[6]*((sigmoid[7]-log(input$potencydiff/100)-seq_x)))) + # 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) + }) + + + output$plotLin2 <- renderPlot({ + tab <- sim2() + if (is.character(tab)) stop(tab) + #browser() + if (!is.na(Dils()[4])) noDilSer <- Dils()[4] else noDilSer = (ncol(tab)-1)/2 + Conc <- CONC() + Conctab <- Dat$Conctab + if (!is.na(Dils()[3])) noDil <- Dils()[3] else noDil = length(Conc) + + 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) + + Dat$circles <- circle + sigmoid <- sigmoid() + log_dose <- unique(all_l$log_dose) + seq_x <- seq(min(log_dose), max(log_dose),0.1) + SAMPLEtrue <- sigmoid[2] + (sigmoid[4]-sigmoid[2])/(1+exp(sigmoid[6]*((sigmoid[7]-log(input$potencydiff/100)-seq_x)))) + 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 ---- + output$TESTSlin <- DT::renderDataTable({ + tab <- sim2() + if (is.character(tab)) stop(tab) + Conc <- CONC() + Limite <- 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), + as.numeric(input$lEACratioAdiff), as.numeric(input$uEACratioAdiff)) + + circles <- Dat$circles + PureErrFlag <- input$PureErr + warning_text <- reactive({ + ifelse(PureErrFlag, 'Pure error is selected','') + }) + output$PureErrW <- renderText(warning_text()) + + LIN <- ANOVAlintests(tab,circles,Limite,PureErrFlag=PureErrFlag) + df <- LIN[[1]] + su_modU <- LIN[[2]] + su_mod2 <- LIN[[4]] + + output$SummaryModABu <- renderTable({ su_modU }, digits=5) + output$SummaryModAB <- renderTable({ su_mod2 }, digits=5) + + slopeDiffCI <- t(data.frame(LIN[[3]])) + colnames(slopeDiffCI) <- c("slope difference","lower CI","upper CI") + output$SlopeDiffCI <- renderTable({ slopeDiffCI },digits=5) + #browser() + Dat$ANOVA <- df[,4:length(df)] + dat <- datatable(df[,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"))) + + }) + + #### output 4PL ANOVA tests --- + output$ANOVA <- DT::renderDataTable({ + sigmoid <- sigmoid() + 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$RMSE <- renderText({ + paste("RMSE (unrestricted model):", Dat$RMSE_unr, "(~ entered % upper-lower asymptote)\n", + "RMSE restricted model:", Dat$RMSE_r, "\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", + "RMSE (log restr. model): ", Dat$RMSE_Rlog, "\n", + "RMSE (log unrestr. model): ", Dat$RMSE_Ulog, "\n", + "%SDlog (unr model): ", Dat$RMSE_Ulog*100/Dat$up_lowAslog ) + }) + + output$ANOVAlin <- DT::renderDataTable({ + ANOVAlin <- Dat$ANOVA + dat <- datatable(ANOVAlin, + options=list( + dom="t",rownames=F + )) %>% formatStyle("p.value", target='cell', + backgroundColor = styleEqual(c("p.value"), + c("lightgrey"))) + }) + ### output pot tab ---- + output$pottab <- 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$circles + PureErrFlag <- input$PureErr + 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"))) + }) + + #### 4pl potency table ---- + observe({ + #browser() + if (is.null(sim2()) | is.null(Dils())) return(NULL) + ro_new <- sim2() + Dils_ <- Dils() + if (!is.na(Dils()[4])) noDilSer <- Dils()[4] else noDilSer <- 3 + PureErrFl <- input$PureErr4pl + 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 <- as.numeric(pottab4[,2])*100 + pottab4_$`lower95%CI` <- as.numeric(pottab4[,3])*100 + pottab4_$`upper95%CI` <- as.numeric(pottab4[,4])*100 + pottab4_$relative_lowerCL <- round(pottab4_[,6]/pottab4_[,5]*100,3) + pottab4_$relative_upperCL <- round(pottab4_[,7]/pottab4_[,5]*100,3) + + 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$pottab4pl <- DT::renderDataTable({ + dat <- datatable(pottab4_[1:2,], + options=list( + paging=T, dom="t",rownames=F + )) %>% formatStyle("test_result", target="row",backgroundColor = styleEqual(c(0,1), + c("lightgreen","pink"))) + }) + output$pottab4plTrans <- DT::renderDataTable({ + dat <- datatable(pottab4_[3:4,], + options=list( + paging=T, dom="t",rownames=F + )) %>% formatStyle("test_result", target="row",backgroundColor = styleEqual(c(0,1), + c("lightgreen","pink"))) + }) +}) + + #### Dilutions Simulator ---- + output$plotfordilutions <- renderPlot({ + tab <- sim2() + #browser() + tab <- as.data.frame(tab) + dils <- tab$log_dose + min_y <- min(tab[,1:3]) + max_y <- max(tab[,1:3]) + + if (input$fixupper) { + dils_av <- dils-max(dils) + dils_av_ <- dils_av*(input$dilslider/100+1) + dils2 <- round(dils_av_ + max(dils),4) + dilfactors <- 1/exp(dils2-lag(dils2)) + } else { + if (!is.null(Dat$cfordils)) { + av <- Dat$cfordils + } else { av <- (min(dils) + max(dils))/2 } + dils_av <- dils-av + dils_avsc <- dils_av*(input$dilslider/100+1) + dils2 <- dils_avsc+av + dilfactors <- 1/exp(dils2-lag(dils2)) + } + + Dat$newDils <- dils2 + + sigmoid <- sigmoid() + + #browser() + BPs <- Dat$bendpoints + EC50REF <- (BPs[2]+BPs[1])/2 + Einh <- abs((BPs[2]-BPs[1])/5) + asyml <- EC50REF-2*(EC50REF-BPs[1]) + asymu <- EC50REF+2*(EC50REF-BPs[1]) + + det_sig <- Dat$coeffs_UN + + if (is.null(Dat$coeffs_UN)) { + SAMPLE50 <- sigmoid[1] + (sigmoid[3] - sigmoid[1])/(1+exp(sigmoid[5]*( (sigmoid[7]+0.693147)- dils2))) + SAMPLE200 <- sigmoid[1] + (sigmoid[3] - sigmoid[1])/(1+exp(sigmoid[5]*( (sigmoid[7]-0.693147)-dils2))) + Xbend50l <- sigmoid[7] + 0.693147-1.31696/sigmoid[5] + Xbend200l <- sigmoid[7] - 0.693147-1.31696/sigmoid[5] + Xbend50u <- sigmoid[7] + 0.693147+1.31696/sigmoid[5] + Xbend200u <- sigmoid[7] - 0.693147+1.31696/sigmoid[5] + Xbend50 <- max(Xbend50l, Xbend50u) + Xbend200 <- min(Xbend200l, Xbend200u) + dummy <- plot_f(tab,sigmoid,det_sig=NULL) + } else { + + #browser() + SAMPLE50 <- det_sig[3] + (det_sig[5] - det_sig[3])/(1+exp(det_sig[1]*(det_sig[7]+0.693147-dils2))) + SAMPLE200 <- det_sig[3] + (det_sig[5] - det_sig[3])/(1+exp(det_sig[1]*(det_sig[7]-0.693147-dils2))) + Xbend50l <- det_sig[7] + 0.693147-1.31696/det_sig[1] + Xbend200l <- det_sig[7] - 0.693147-1.31696/det_sig[1] + Xbend50u <- det_sig[7] + 0.693147+1.31696/det_sig[1] + Xbend200u <- det_sig[7] - 0.693147+1.31696/det_sig[1] + Xbend50 <- max(Xbend50l, Xbend50u) + Xbend200 <- min(Xbend200l, Xbend200u) + dummy <- plot_f(tab,sigmoid=NULL,det_sig=det_sig) + } + + + + + + pl_df <- cbind(dils2, SAMPLE50, SAMPLE200) + + #browser() + # scenario2 + eqSpac <- abs((BPs[1]-BPs[2])/5) + optdils <- c((asyml+BPs[1])/2, BPs[1], BPs[1]+1*eqSpac, BPs[1]+2*eqSpac,BPs[1]+3*eqSpac,BPs[1]+4*eqSpac,BPs[2], (asymu+BPs[2])/2) + # scenario 3 + eqSpac_3 <- abs((BPs[1]-BPs[2])/3) + optdils_3 <- c(BPs[1]-2*eqSpac_3, BPs[1]-eqSpac_3, BPs[1], BPs[1]+1*eqSpac_3, BPs[1]+2*eqSpac_3,BPs[2], BPs[2]+eqSpac_3, BPs[2]+2*eqSpac_3) + # scenario 6 + Einh2 <- abs(((BPs[2]-BPs[1])*0.7)/5) + eqSpac2 <- (2*0.7/Einh)/3 + optdils2 <- c((asyml+BPs[1])/2, BPs[1], EC50REF-1.5*Einh2, EC50REF-0.5*Einh2,EC50REF+0.5*Einh2,EC50REF+1.5*Einh2, BPs[2], (asymu+BPs[2])/2) + # steep slope + eqSpac3 <- (abs(Xbend200-Xbend50))/5 + optdils3 <- c(Xbend200-eqSpac3,Xbend200, Xbend200+1*eqSpac3, Xbend200+2*eqSpac3,Xbend200+3*eqSpac3,Xbend200+4*eqSpac3,Xbend50, Xbend50+eqSpac3) + + output$extremebps <- renderTable({ + ExtremeBPs <- c(Xbend50,Xbend200) + DF2 <- data.frame(sample=c("50% sample (right)", "200% sample (left)"), Extreme_BPs=ExtremeBPs) + DF2 + }) + + optD <- data.frame(cbind(optdils, optdils_3,optdils2, optdils3)) + colnames(optD) <- c("scenario2","scenario3","scenario6","steep slope") + + output$optimalDils <- renderTable({ optD }) + + output$adjlogdil <- renderTable({ + adjlogdilfactors <- round(dilfactors,3) + adjlogdils <- round(dils2,3) + adjdils <- round(exp(dils2),3) + DilsTable <- data.frame('adjusted ln(dilutions)' = adjlogdils, + 'adjusted ln_dilution_factors' = adjlogdilfactors, + 'adjusted dilutions' = adjdils) + DilsTable + }) + + if (!is.null(Dat$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("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))) + + geom_line(data=as.data.frame(pl_df),aes(x=dils2,y=SAMPLE50), color="grey15", linetype=2, + inherit.aes = F) + + geom_line(data=as.data.frame(pl_df),aes(x=dils2,y=SAMPLE200), color="grey15", linetype=2, + inherit.aes = F) + + geom_vline(xintercept=c(Xbend50,Xbend200), col="grey15", linetype=2) + + {if (input$scenario =="scenario 6") annotate("pointrange",x=optdils2,y=rep(min_y+(max_y-min_y)*0.2, length(optdils2)), + xmin=min(optdils2), xmax=max(optdils2), color="seagreen")} + + {if (input$scenario =="scenario 6") annotate("text",x=optdils2,y=rep(min_y+(max_y-min_y)*0.25, length(optdils2)), + label=as.character(round(optdils2,3)), color="seagreen")} + + {if (input$scenario =="scenario 2") annotate("pointrange",x=optdils,y=rep(min_y+(max_y-min_y)*0.2, length(optdils)), + xmin=min(optdils), xmax=max(optdils), color="seagreen")} + + {if (input$scenario =="scenario 2") annotate("text",x=optdils,y=rep(min_y+(max_y-min_y)*0.25, length(optdils)), + label=as.character(round(optdils,3)), color="seagreen")} + + {if (input$scenario =="scenario 3") annotate("pointrange",x=optdils_3,y=rep(min_y+(max_y-min_y)*0.2, length(optdils_3)), + xmin=min(optdils_3), xmax=max(optdils_3), color="seagreen")} + + {if (input$scenario =="scenario 3") annotate("text",x=optdils_3,y=rep(min_y+(max_y-min_y)*0.25, length(optdils_3)), + label=as.character(round(optdils_3,3)), color="seagreen")} + + {if (input$scenario =="steep slope") annotate("pointrange",x=optdils3,y=rep(min_y+(max_y-min_y)*0.2, length(optdils3)), + xmin=min(optdils3), xmax=max(optdils3), color="seagreen")} + + {if (input$scenario =="steep slope") annotate("text",x=optdils3,y=rep(min_y+(max_y-min_y)*0.25, length(optdils3)), + label=as.character(round(optdils3,3)), color="seagreen")} + + annotate("text",x=optdils[1],y=(max_y+min_y)*0.5, + label=paste("in green: optimal \n dilutions acc. to Whitepaper\n", input$scenario), color="seagreen", + size=14/.pt,fontface="bold") + } + print(p_dil) + + }) + + #### Dilutions CI table ---- + observe({ + if (is.null(input$potencydiff)) return(NULL) + output$CIs <- renderTable({ + PureErrFlag <- input$PureErr + if (is.null(Dat$coeffs_UN)) { + # checks if an EXCEL was uploaded + sigmoid <- sigmoid() + det_sig=NULL + + ast = sigmoid()[1];bst = sigmoid()[5];cst = sigmoid()[7];dst = sigmoid()[3];ate = sigmoid()[2]; + bte = sigmoid()[6];r_ = sigmoid()[8]; + cte = cst-r_;dte = sigmoid()[4]; + } else { + sigmoid <- NULL + det_sig <- Dat$coeffs_UN + ast <- det_sig[3] + ate <- det_sig[4] + bst <- det_sig[1] + bte <- det_sig[2] + cst <- det_sig[7] + cte <- det_sig[7] -log(input$potencydiff/100) + dst <- det_sig[5] + dte <- det_sig[6] + r_ <- log(input$potencydiff/100) + + } + if (!is.na(input$NoDilSer)) { + noDilSer <- input$NoDilSer + } else if (!is.null(Dat$NoDilSeriesXL)) noDilSer <- Dat$noDilSeriesXL else noDilSer <- 3 + if (!is.na(input$NoDil)) noDil <- input$NoDil else noDil <- length(Dat$newDils) + #browser() + tab <- Calc_DilRes(as=ast,at=ate,ds=dst,dt=dte,cs=cst,ct=cte,r=r_,bt=bte,bs=bst, + sd_fac=input$sdfac,log_conc=Dat$newDils, + # auslenkU=outlierU, + # auslenkM=outlierM, + # auslenkL=outlierL, + heteroNoise = FALSE, noDilSeries = noDilSer, noDils = noDil) + Limite <- 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), + as.numeric(input$lEACratioAdiff), as.numeric(input$uEACratioAdiff)) + + CItable <- tests_FUNC(tab,Limite,PureErrFlag=PureErrFlag) + + CItable_ <- CItable[-c(1,2,6,8,9),-c(2,4,5)] + potAll <- pot4plFUNC(tab, input$PureErr) + restrPot <- potAll[1,1:4] + restrPot[2:4] <- round(as.numeric(restrPot[2:4]),5) + potAll_ <- rbind(CItable_, restrPot) + potAll_$CIwidth <- as.numeric(potAll_[,4])-as.numeric(potAll_[,3]) + potAll_[,1] <- c("ratio of lower asymptotes","ratio of slopes","ratio of upper asymptotes", "ratio of asympt. differences","restricted potency") + + output$bps <- renderTable({ + DF <- data.frame(sample=names(Dat$bendpoints),BPs=Dat$bendpoints) + DF + }) + return(potAll_) + }) + }) + + #### simulations ---- + observe({ + observeEvent(input$goSim,{ + sd_fac_ <- as.numeric(input$sdfac) + + r_ <- log(as.numeric(input$potencydiff)/100) + Conc <- Dat$MetaConc + as = sigmoid()[1]; bs = sigmoid()[5];cs = sigmoid()[7];ds = sigmoid()[3];at = sigmoid()[2]; + bt = sigmoid()[6];r = sigmoid()[8]; ct = cs-r_; dt = sigmoid()[4] + + if (!is.null(Dat$MetaConc)) { + Conc <- Dat$MetaConc + } else { + Conc <- CONC() + } + log_dose <- log(Conc) + yAxfac <- (ds-as) + + if (!is.na(input$NoDilSer)) { + noDilSer <- input$NoDilSer + } else if (!is.null(Dat$NoDilSeriesXL)) noDilSer <- Dat$noDilSeriesXL else noDilSer <- 3 + if (!is.na(input$NoDil)) noDil <- input$NoDil else noDil <- length(Conc) + isRef <- rep(c(1,0),1,each=noDilSer*noDil) + isSample <- rep(c(0,1),1,each=noDilSer*noDil) + N <- as.numeric(input$simN) + + av <- as*isRef + at*isSample + (ds*isRef + dt*isSample - as*isRef - at*isSample)/ + (1+isRef*exp(bs*(cs - log_dose)) + isSample*exp(bt*(ct-log_dose))) + + resHist <- matrix(NA,nrow=N, ncol=13) + residualsList <- list() + start.time2 <- Sys.time() + withProgress(message = 'Making plot', value=0, { + for (i in 1:N) { + if (input$heterosked) { + # heterosc noise + ro_jit <- matrix(unlist(map(av, function(x) x+rnorm(1,0,x*sd_fac_/100))), nrow=noDil, ncol=noDilSer*2) + } else { + # homosc noise + ro_jit <- matrix(unlist(map(av, function(x) x+rnorm(1,0,sd_fac_*yAxfac/100))), nrow=noDil, ncol=noDilSer*2) + } + # browser() + ro_jit <- abs(ro_jit) + ro_new <- cbind(ro_jit, log_dose) + all_l <- melt(data.frame(ro_new), id.vars="log_dose", variable.name = "replname", value.name = "readout") + all_l$isRef <- isRef + all_l$isSample <- isSample + all_l$Conc <- exp(all_l$log_dose) + pot <- drm(readout ~ Conc, isSample, data=all_l, fct=LL.4(names=c("b","d","a","c")), + pmodels=data.frame(1,1,1,isSample)) + potAll <- EDcomp(pot, percVec=c(50,50), interval="delta", display=FALSE) + potAll2 <- potAll[1:3] + RSS <- sum(pot$predres[,2]^2) + dfreed <- nrow(all_l)-5 + MSE <- RSS/dfreed + + potU <- drm(readout ~ Conc, isSample, data=all_l, fct=LL.4(names=c("b","d","a","c")), + pmodels=data.frame(isSample, isSample,isSample,isSample)) + DF_U <- nrow(all_l)-8 + + uAsratio <- compParm(potU, "a",display=F) + uCIuAs <- uAsratio[1]+qt(0.975,DF_U)*uAsratio[2] + lCIuAs <- uAsratio[1]-qt(0.975,DF_U)*uAsratio[2] + lAsratio <- compParm(potU, "d",display=F) + uCIlAs <- lAsratio[1]+qt(0.975,DF_U)*lAsratio[2] + lCIlAs <- lAsratio[1]-qt(0.975,DF_U)*lAsratio[2] + Sloperatio <- compParm(potU, "b",display=F) + uCISlo <- Sloperatio[1]+qt(0.975,DF_U)*Sloperatio[2] + lCISlo <- Sloperatio[1]-qt(0.975,DF_U)*Sloperatio[2] + su <- summary(potU) + + v <- vcov(potU)[c(5,6),c(5,6)] + Vd <- vcov(potU)[c(3,4),c(3,4)] + Va_d <- v+Vd + + A_DTEST <- su$coefficients[6,1]-su$coefficients[4,1] + A_DREF <- su$coefficients[5,1]-su$coefficients[3,1] + if (abs(at/(sqrt(Va_d[2,2]/3))) > qt(0.95,2)) { + try(Fie_ad <- round(FiellerRatio(A_DREF,A_DTEST, Va_d),5)) + } + if (!exists("Fie_ad")) Fie_ad <- NA + + resHist[i,] <- c(potAll2, sqrt(MSE),Sloperatio[1],lCISlo, uCISlo, + uAsratio[1], lCIuAs, uCIuAs, Fie_ad[1],Fie_ad[2],Fie_ad[3]) + colnames(resHist) <- c("pot4pl","lCI4pl","uCI4pl","RMSE","estSlope_ratio", + "lCISlope_ratio","uCISlope_ratio","estuAs_ratio", + "lCIuAs_ratio","uCIuAs_ratio","estAsyDiff_ratio", + "lCIAsyDiff_ratio", "uCIAsyDiff_ratio") + + incProgress(1/N, detail=paste("Doing simulations",i)) + } # withProgress + + }) + end.time2 <- Sys.time() + + Dat$resHist <- resHist + }) + }) + + + #### simulation Histograms output ---- + + output$plotHistuAs <- renderPlot({ + if (!is.null(Dat$resHist)) { + + resHist <- Dat$resHist + #browser() + resHistuAs <- as.data.frame(resHist[,8:10]) + resHistuAs_l <- melt(data.frame(resHistuAs), variable.name="ratio_CIs", value.name = "readout") + #browser() + lowquant_uAs <- quantile(resHistuAs[,2], probs=as.numeric(input$lowQuant)/100) + upquant_uAs <- quantile(resHistuAs[,3], probs=as.numeric(input$uppQuant)/100) + + p_uAs <- ggplot(resHistuAs_l) + + geom_histogram(aes(readout, fill=ratio_CIs),alpha=0.5,position="identity") + + labs(title = paste("upper asymptote ratio EACs:", round(lowquant_uAs,3), " to ", round(upquant_uAs,3))) + + geom_vline(xintercept = c(lowquant_uAs, upquant_uAs), color="black", linetype="dashed", linewidth=1) + + geom_vline(xintercept = c(input$lEACratioua , input$uEACratioua), color="red", linetype="dashed", linewidth=1) + + theme_bw() + + # asympt diff ratio + resHistAsDiff <- as.data.frame(resHist[,11:13]) + resHistAsDiff_l <- melt(data.frame(resHistAsDiff), variable.name="ratio_CIs", value.name = "readout") + + lowquant_AsDiff <- quantile(resHistAsDiff[,2], probs=as.numeric(input$lowQuant)/100) + upquant_AsDiff <- quantile(resHistAsDiff[,3], probs=as.numeric(input$uppQuant)/100) + + p_AsDiff <- ggplot(resHistAsDiff_l, aes(readout, fill=ratio_CIs)) + + geom_histogram(alpha=0.5,position="identity") + + labs(title = paste("asymptote diff. ratio EACs:", round(lowquant_AsDiff,3), " to ", round(upquant_AsDiff,3))) + + geom_vline(xintercept = c(lowquant_AsDiff, upquant_AsDiff), color="black", linetype="dashed", linewidth=1) + + geom_vline(xintercept = c(input$lEACratioAdiff , input$uEACratioAdiff), color="red", linetype="dashed", linewidth=1) + + theme_bw() + + # Slope ratio + resHistSlo <- as.data.frame(resHist[,5:7]) + resHistSlo_l <- melt(data.frame(resHistSlo), variable.name="ratio_CIs", value.name = "readout") + + lowquant_Slo <- quantile(resHistSlo[,2], probs=as.numeric(input$lowQuant)/100) + upquant_Slo <- quantile(resHistSlo[,3], probs=as.numeric(input$uppQuant)/100) + + p_Slo <- ggplot(resHistSlo_l, aes(readout, fill=ratio_CIs)) + + geom_histogram(alpha=0.5,position="identity") + + labs(title = paste("Slope ratio EACs:", round(lowquant_Slo,3), " to ", round(upquant_Slo,3))) + + geom_vline(xintercept = c(lowquant_Slo, upquant_Slo), color="black", linetype="dashed", linewidth=1) + + geom_vline(xintercept = c(input$lEACratioSlope , input$uEACratioSlope), color="red", linetype="dashed", linewidth=1) + + theme_bw() + + # poency ratio + resHistPot <- as.data.frame(resHist[,1:3]) + resHistPot_l <- melt(data.frame(resHistPot), variable.name="ratio_CIs", value.name = "readout") + + lowquant_Pot <- quantile(resHistPot[,2], probs=as.numeric(input$lowQuant)/100) + upquant_Pot <- quantile(resHistPot[,3], probs=as.numeric(input$uppQuant)/100) + #browser() + p_Pot <- ggplot(resHistPot_l, aes(readout, fill=ratio_CIs)) + + geom_histogram(alpha=0.5,position="identity") + + labs(title = paste("Poency ratio EACs:", round(lowquant_Pot,3), " to ", round(upquant_Pot,3))) + + geom_vline(xintercept = c(lowquant_Pot, upquant_Pot), color="black", linetype="dashed", linewidth=1) + + geom_vline(xintercept = c(input$lowerPot/100, input$upperPot/100), color="red", linetype="dashed", linewidth=1) + + theme_bw() + + grid.arrange(p_Slo, p_AsDiff, p_uAs, p_Pot, nrow=1) + + } + }) + + #### download XL report---- + + output$downloadXLReport <- downloadHandler( + filename= paste0("Report_4PLEvaluation", Dat$FileName,".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,"logo.png") + file.copy("logo.png", tempReportc, overwrite = T) + + rmarkdown::render(tempReport, output_file = file, + params = list(FileName = Dat$FileName, + author = Dat$author, + REP = REP, + coeffs = Dat$coeffs_UN), + envir = new.env(parent = globalenv())) + + } + ) + + +} + +shinyApp(ui, server) diff --git a/logo.png b/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..c6a6fc3b04057e92d1d7df16bde065c400d4d9c4 GIT binary patch literal 23092 zcmeAS@N?(olHy`uVBq!ia0y~yV0^{Ez_5UWje&vT@J;;|1_mCVOlRi+PiJR^fTH}g z%$!sP29M6E;p`E?C&lJP2Pv{}xHx#d@D-RS3@^vO7CcXNAV=q=W1Ba59$M4BuD2FaO=&_x9=kET7-mnaZ$W`{$*X zWI}`+Vm#;RsNI-vs;4>AwTe$*0rQLo7Pk+qMVjhbS~3pO7XRpA_!R3-0eKdNd?An2N(O+?csQqVvWvzvhd1mS{qx?XC>|+R+}3DU z;I}Ji{@icPe#h>cTxK)<`KQNm&8em5PcSC!G-G)7L|4>QcgiGw#_;rP!e|)5Ht$Bx+3V+Yr@0NSc+?QSa{9sJ%@aDbJufmLL~(#Det+#S)o zU+sP{b(K2Dhen1=K)-@bZ0FccGMuvZjf{Q1D*|GqfE6YYPlE3TO&%wM!> zF|)_}_ra@Dn$-oKHyKP|UN2hfHR&LS(1GL=9sdOd<;@t+D6*TS{@?$c{lHM{VCl7cy@?`sL_k-qN;pGvAkoMSAWG z?hRgkSv)j;UPjcsPl-?bruj|pG&cGiA@k#?z{U!p#>X7fHc#Fx&2Z{{|EsUx)ONk! z-DD8GulVzSh6BGV^7G$Md>`|okm1|T!{LV>zMsP@T^DtQ!JY)G)7yg#%i0VLgU>J~C&%ar zc^|uEC}}3Geavg4*BY_xmhV5cuJx5B$`>k~I}o{pIp&~Zg^k{U8b;yLj2Mv}Mm0img=(o4q=0*|zYvdu}mr?SFOaRoSbUuOg+bzkCDSpJjw(T*-{NSmC++g6>P1 zUoKUQd#BVj)OFrl>UnX?r6*aROw+T&GUTr9S$T8u(F;;bMORK;z11aq`8C$H>9YA0!T%EZ>bMIQMwYt0O)-JtW zoVzZUXqWWA+GcFHOmy<`Gl_c1@6zuj)Jdh8^cee?1xn?{(>Q&zGxT(!O?k zae3_f$#&lM0rt`Lt#y0<*)rcba8BV?!m5LA&Bko8hfCY4dBu73<@VM8c;B{S;oQWY zhdhVZw&}Lnx*c;n=oYlN)NOgsuAZ64>W)PoTix3)Sw73ar^e@q+G^jv**57fH(9Ka z36p$nvikOw3noWG5_cWla`nsRnOh_GL@vB3x4HURNb$DHT|cuvr+v=j7Vh3CW~`f~ zQ@4Fd#3o&1-Rn{FHrM2*=1$GndSTVQS2MTHGd;iSz^-Gz*72S_c0H}jcj;Nv=ta7> z&2E=9zfHBia_*|$<#mVNO|s2;pQgX>Sf`uIJf{GZ#0z zotM08@M~)K-tH5ri%;u@x4n+I-n#DWy7;?y?xy5z&71p9?A^+DukYq>D!mc-M)l2S zITrrBHk>TxQHlNHsKda9FnD;&L=aOGJ z-!i|Oetr5o?3djal-0DWIkq{SWj=>uOH1n-j-4lsA8}S(-SaNs`-RAb%MV{UoOJlq zVY#;3t)~x3A77O0e0-f$wfP|mk* z$&;2RZ%^7jW8WFt2R6a^%X~mGM6& z{_(2wm(tIzjoRLz9id&J_(gb~SXtK|S8Z4S%X=?}FS9@W;atSji!)!&j+}K<^;y^H zqw6<0Z8A&Ud%o|?y@_{cPoA+^efpf)v#KK&>7JZ6XI_p?<*g@XEB9{kxMg>=_|z=T zyPFJdmRTyzSI9qcxzYZYE|>IC|1S2Qc0Wab$}dy%u{H3`o|O`Hx@7mu?&bEn99ln8 z+3cJR7FRBNd8X1>{>-B@w~VA`&NbUz+4pk}Yq8Zcw)1OexzC+$`+mFA@8eet z`~TUzdcJ9X_4H->xv|f-}x^SwXSWO-a6fM&E|;hHFu|fI`iqZ=s(fwYtrlD_x$_I_OMM``mfowJfmA7 zn_gZ{`}iz6x@r5B(5TR9d8&D5@Bd1PKD4cP|AzXN_wqLEP5FIYc9QJdP{YvWtM9H} zT`u)5Can3IMwV6i(l@*ISSOS_uXTPq&Gw9~YW2amqxYWw4*GughWxhuKN)^IymdU? z{F>j8PxQKC>E+kEUK_u@Ej>x<7GJwuUf!21o020RPxPr>Ue>jEm-}?t#d6UFYra<; z{5Vhel5niLv7cSmyel=&uj~lE?&m%~&sMnX*`J#WHZMO{cuv;-eeJ%NP0w2o@849v zcK?gAjq8qXeR?5(-G14u((JXnpVX~CpZqH|r4=;`;|9q@3%RTSHyeW33l~I4s{EQ4v4|x9c`Q!QJdnWAraVPZ4@@w;7 z$KTpx^JDt`c-^~?cUi}sjQhGT?vva9vwhq3@@H2ss(QEobnW+_wIA94@`uXbls{kV z_2c#?l-IB{#~}+eEatBQ`0~Gu46S=aOc(%<_}fu3|mwfBns|($gaO7 z|4nkyt;^pOKg{2d#eXyX!}+CR|1P_iAKX8CHp82{Yz?AUmM>=zaAj6F$Gl*%JO8%E zy)pOq1!ubKFu!5*Fgq$w>WBHVTa*6@e7|5EuxeMs!sqpj6D~C?TKr%>$-uzClI-am zz{AVHn8*D1Jp%(nS89Z3ny)W|76StV2LlVE6ay;*0|O%i1A`r-G@R|msKLMt7H48$ zXwPI|0katx{1_l$0+bJ-nJ2X|urn|)2r)1)R4ibEsb+k&fEmVSSOC)K80_rn$-ux6 zoLrQenpd2WU$V@LH=BWhfwRCPvY3HEOcjI~J%dy}FfcG)%M6JqiSYHYO3u&KOH9d6 zO4X~#EdZIrU{hgLkz0_PT9T+xk(-lOY*k^a1Xf{{S8N3m)>l#hD=EpgRf_NpP;kyK zN>wn^Gte_ovg1-vP_QXVNwW%aaf50vN=dU-$|xx*u+rBrFE7_CH`dE9O4m2Ew6xSW zFw!?N(k)6!(=D#dD@m--%_~-h7y>iLCAB!YD6^m>Ge1uOWNu z2peq>IwKG|O)OD#BFUiZ3@uJAa?a1qP0cH@Lqr$UT4YJ6MjL&Q&yhj`63k%HAQv|~ zE*pJtgn%N)j!TKNK$n4mK_=71KZJpSfe9R`3=9Db3=A3!5ITT?K_S2R(p)bF1_f(R z7srqa#y7F-6(O$I?GzPdIXqvuei06ES>h=;L5?wyQLx^@#l>Nkyl<7DV;6_Uf+hv7 zCX2uP(}xpJ*!*&g)8*gjtAF(P@yjm&Q)DOO zc)Bbi?aH=|hEJr|{Wzv2rpNz%8hhHIc0Soj#}78MzdX_@{N;B3{y;akw(9zn3pWlO zKCF7Uudi>~=0bx{?Q&HeQQPx!FNkETci(O|v-`I1YU&l8T^qzt-Qhg`bfUGz?cd^h z{M8dT@s&S3#QN*y^7$M*l4m5-&rF!PMo=Sg5zEyTfz7MJ*X!}eIM2x|dGzh!JfTae zSKj^PJ${J8fN5VJL)x+3Wp5YFwJtyP_{z%QeSDqXKlP)wXk1+#-Y-}Gr!ecn0>;p_ zQB(i?{Ttgg+1^Zz>CB4WNWD2)ZVKm>Kb+Rzf8pEP+xdoRXBO=Bz3`~7qho^mLZ?;@ z3yT?_o}bt6Z)j++K9^8+fuWsA>Ptz%jCF_-l% zdQV%DbhPX4!5Pj@PBxR&p2#M}$t2vfIDYh~r>cd8z}4xBh}fyPVWwaL%M^}=#sg>4 zzP`FT$#S>%lDE&Fy9*q@wles+Sn|4{rCbLqIWFh2B+Ozvd9;z4{R!jS3X9T%zjp5C zhY$~od-iI^)9)K@vt2&c*eE>tyI_Lb+rLH+L=2eP z92sWa^q!`((6w9aWaMmZ&ePNNOto+ctJto%3DT2`|Dg$Yx^Zmx8rfKP`R_cGZOPcwLtb!UfR z>B~#5=eB&F#58|%rP-zOGb?&Sq~?gZDToU;OuED_U*q6CU2m#%xW(t}HO7bI#P#$J z&QZK|%vdd1al(ul9=EsUPL}#5(Q~lmOk@+E+tbW2h57sY`}(E)3lunv4bxxF ztA4jo&bBJx`@6dXmnDZU+9Y0M zd8%)at|57FCdcKwjSMEI4sIxvv9G(c(&ymr+s5Z@ocC6LpQcnaZIuP<;8K3G(FPwGE$yu{TTRUvc1hvFn z@)}GB1bx@X?R~LydR)@lI##=LHc4)8d9wcSDkl`MnC0E^2wv_t_16AAHPL9DCd0*x zTMrAW-FJC#VxsaToA;m3+pDMl*>bqQ>Uf`Q=7j~0Av=pw@3UO=-I?b0R!zZD%I&~y zj)cFJH#eo4ZEBby#O1h#CuK#FX-d+D zpB#6NFWUF_$K!s!CB3^hdZ4OncAEg=B-FOJInR*a{uxh zJ6#XA@ve;DUw7%cu}zzyAyc0c!^*Sm@^u=rPZ}Dnog_pS{d4@OV`Ow`qJOQCj&as} zow9Q!ac&IOI(z^B`~BtH?flC}yT#w0yzFN*arI`|pKvcz-pi#t1u%hH*5EA0LE>vfUX+1HI_hmSGdZE&cm*)!$WfzNZ5gXA;1 z_J2C1ZIW}t;G1q<7~h!{XAeB^c01s~aiCemrAyhpuf)T1P1)O9n-(9AJN%~NkcaB4 z>deMAi!Ddf&&~1NaB z+A=+X$vEiJ0DcC3aj}{__saZ{;9Uxff*bL^NV#JuZi5;cHqEU z#hiXFTW+1FKNihnHO{Ke;%rZ3vFTyB_VHN1yuN7RgB?fYvMwxWOu1mwyp3I#FWH3U zL3quhBb{4{o_g)x{-CF;Yf_MMMpv@!?eGrCt?Q?lJik1F%ch8%< z4s8G4Yz!&cE^Pd2_udxE`ZnhWe|~-r3gnTx`%U1Dm*L}MYLYkdCUpw#m@W9@_4@r! zj0CnEEiNj`NfVuYykY0>L$gecvu0myh&Nz*=gN?MeslWyX-d}BF?vpoYrBe7sNgvM+bq*%`LU zVrS!Kl{|dJP;SZep^U9Mt9bLePft$^Pq|o=I^8_&N_nN~^EZ{^jZdDWSZe?K@wor3 z7l+T<4cuba7SEJmbbDaN6um8H;<-`y}fm}u5x<3;o^O#xo2#CZp*Tv zTtDq%#N=zr85^4%?Z4kCu5$cotNdUy$ANcJJiA@H#q3%cjkD%!<(E9Ms{cnDecc6jMr0h+^AwMS{aLYPE=|ImdA;Ep=EHMrY%TyEgczSy7+Gvt>#Un2! zU}cc%-3>CJCUlKBW7?H{(ck72n=2Lk`jYwT>T2=adwU|y!!$bfem-Y?Wo58BRH+0b zq~R$@l_557xaPcm8xyqIV``E>9 zyl_WGb5zU?Opo0>)nrk_AD5)a{!T#y7N!pqt}OKyw<>)#C9P`1&A%rmCcpTqcsQ@p z@09$CpPc(mIGDEmQvS~%RCkScl1H=3;~x`sepQ?cwNgCSy7<#YVSo1E>GKwQ(T11E;|L6QV2|3>ofJCS`l>&HcgjIdqwlW3fj4 zzOM2mxmUM&tcskz^Q-Ivi8pEY`LC}yES$A@*VJgGmlvyI>Xs?}t~e(;%SJ173;X5C zv!BnncF-ih^2l8NpXX9p_MBR=y>6=KUaPpEv_&bJ^}iIib$pVwPhlzIW?bWVxaZaF z{QXydrrK#u+0XCF!l!C4v`B$_){i{LSAV=#91Y%QD#RqeS9`|!7a^-vp7MWKJpa7- z(gy-!?-}Rp-MudGx%%WaGq!N&KDgwYu?zu?QDWRhnlUULAKgsr4L!hQ*M0< zZ3|_RUpH<3wf8-ns@|>UXZz~0(Dd}B+_e4wFBC|bOxyeBCd-LV@wn70=eZ3p`#arP zvgl$kSHSnWJzM85)|>+ydq?6}^G+;!pn+bXs`%hnKgk-ru+A)z-DH9eF2=-4AlyaCvZMrty`H z$?mtdW=}tBP$4KI;>nsR)ylTz5>I+ndinmJE}oQ(#68;aozn51+PpEdd_aP31BRdG%aHUb$a)&19y6NrO(a1pzWlX zxHC#|Vf1_hso&ea&6>YBqC!i)Z`t9iALj6f3-0+`{eW|A-kZYJuAu%;>gj10|H)p> z{B}F@)Pjqye_p)hSAOyITb4Ildb+`>`8$6uTz`G_wqBu^AL_CT^Da+w+>$W$@uS4> z?&GmfHzs@&t;%lMs%D)tx85$k$H{r_^r)nr4_++H*?7%2WT~5iXxE0m)3HAbME%3} ze=oBuk^K7Z?ru$E;_FwW%WW2S4S1d2eD{-lu*$qs z?VA7YSQXpdY5y`&*?mRs?QLJ4&#%vN>+*fIvG(axZ^0{z!WISfba4FY^H}h1ul%A{ zsaK;OoiE{7SS~Jh>Cg1-aleZ8?wVHFtR)`a-QM1#?NA$E9%J(+%W~Ihn_s1#%l@z3 zcrB&=!$XE!JFIVAO?g%KeqGIrenl=$n zwR&gDsk3h~ec!wM2ut?chwO4(3w*0>?^{|mPtd=<+SxueaJO34#}AkOyIxA>l@;f= z4rY6Hf5&Q@SD`)udPhryqHgAMzRmHUy!+F`mnE-`zJFWu!YIq%=jZ;LQ#|j^5AJ5~ zp88?A?eaVCUmOwsc|kkIf6w!p9c@`?*mnos z=wEf>{(m;#pD%PwGwbHZNWHpY)cNhrmb4c?KmWei`6KC)={haBe7nz2t624;BZ{}G zXv*2CA31!eM|1m0*{6jMWB9JFT`*5zukm^T+uJuk&wBIjgnM4{`d{<6e_nWcMQCT) z*PCBHW}2kWs+#-0b9qzdJEO9aM_R}J>@{U7EG+zTr}+HEb91fN#?P|NytIUKZN$c= zMT_&#)df$=54fDgc`DM#u9@lV2hQ!KTE}>H_;`!On09~s_B73K@j8vPYd*&u7u@f5 zviY-gYsHVoQ%+2qj?WMhsJ?J}k6v?Cd06(Q`dW=y@3hZ*BPUGt@4_Ow@IlJ(*rsXBZ`YjjQbhVbqZ*BSi_>t<~?wOUbp8Kns z^QPk>w>+0Obvrsd58OPbHx4re1f5$INoxeg- zf6Jcjoqp$IG~G|vJiXg0_{E3)`>Xhjr|w_RX_V^deq}o z#Xs*srz}b1x+gEkos}7>vwSA#rq=Swf;-B81u{@?$!F$?_9lE z9zminT`bGAC2{?nCkZ5zk2U%K--moY9rwDM2$x?Z!-PEw&34VM2m zC{H%yVioz39Tys75>nZ06l8?NRkZ7K9^k?r4if1YQ2 z?L^1hW+?(vvpXLMt_i;X{$;CpoIq;+-OQPXT3cH$9%|)Y>D7eMfJxMh?Kg@7 zzC8?Dn4tEm$1+i%>)?v6gza2!^UEiQxw&Psuc|pD{qU3j<;=+|k|htF3-3sZOx2QI7keU+2(J3DXB zUA54{Y};mLofq|Y-jo|@1imnQ8Q9oVcg1VRtTy9Wx4tsZm8*DgKc3V2*Ll`{3muuA zDXH1lJ(sM`v8?YBymWuYHOCO=FNX8(Me1IcGNA6F}Sy~~xZeCna*#Ba-(wkXVGuK6A%jMoRjJs_2 z>)-G9%T2Sd1w1`9^}UCYRKe?C;!k=0_KE+$XLC=dLu~CiLU!7?6{?1>sRwt zKfcb(OiY&r+?(|+$)bBzGYwh(q8mT-M9DCzqYa)pZTWqa-sXD%Wd*^UjI*g z*Q0Gxx~59ul7?D`-Oo)1w(`m`hW}qg$fwUNyS(?QQQu3;b5UR4u8s}#^R_=QN4?i4 zG%4#}{n~7v7X}-OO4>K;zBbPM^LqNrJ-qkXqyC%hJ^ZHX$r7fPZErPCmAdWCc^E47 zbJnekoJV3b3T$Ut8uq67Zp@ogaG7HwUz+`Vj_0hG@B3Vq-I)ECTh>sj$$0V7Jrmr5 z?`>TFM!GpT^S|78ld?6nXX7OwUXq%j`^TWbs$!RhV+}X!0@3buTIsvZHM)h2*@L6L zX$6~2eSU3i^yNva-YWtWvp28&>6ByP*})&m^1iZQD#yn)U2>YD`qMde?(ZxPw}_UI zTq&#Y-=KchH@8_gcK_(wv_{A9(ysa?Zgq)|#1yBm6nH0^xcT4LXS1Izes=$At<40x z`zzjmJ~*x7M#y=E)XhueWc4n7>%I1$M`)f%KX|ym|8Cq^4B6hE3|a>UHOYe2lI>tKz*j$(Vdf}etmRH8vhP($h zT>tsE+dqEM-1`ycB0U)j?_Md3XoS3f%X-J=PWIu$bA{5Mwwfr-*A`!XdBs1?DY>?e z2JHtQW}jJMFVuTa^1STZO^XsVfkr&Sre{t*kG#|SmR=h2LmJ9p0RqS@|=foB_wTj3b z_`_ZnbNkQB-^(Fe(B}+d`iND+)QM!2R@t?L1>!Pgsg7l;N6%wU)#GCAzynn^x z>r6MUS@*11`157Qvb;DCd;Vi`rn%D-7F3 zS3LhbJ>&NOD|1sM8;@>dz9=G+Gy5i=_@f`9-B*||g+?pK=ADR=kX$P3u%9t0vV5C+ zaAjg|>A6Q7mNSfOjqU4o_H@pCZ8&4Uacpu}>&+Eeb88NG7#a(=cbTm{EAaYQR^d-} zZ>1Hfv#m?TLJD8lHj7zpxfsf_^3bdNMNiJu9@KeQ>C@4B*KtBi;(~=rYk#$wS-$c8 z{Z;RokMH7_!e4&NhFZO;z4m#3qRAuO(pmRJy;a|LstW6N33(lT@p-`w4IQhcn-oRl z^i^N3pX+>x;k2qp%3ar;r&cWN30Uhh$M@s)zWJ@6tECsY1h@Hfs>ys_QPnH$b2aEC zyV9a*P7fJgyFYcgvy}Dn4lR+J=Qu8W?=ao0KW&M&^s1Nj7XC9LC&axF%=+i?*-C%O zN8X1a^%D!$<##uzPN}$6#$)xf1WwzxG@K>#n@JR;wa6FS}}ex%q9A<9C6cTVgjK zZ@xY4wcC-O%WfEL?7m@jQS{QG6C7_DQm;g6#IC$kH0!x^m1b`=i{Q0r!v)QUB4$an zEUsOYd}NoI2y5VTos~;&JaAdMwznY4*g4q7oj>j3<$m>9dG9UsKrnn&00izdFgaL~z@eyjk2wHKKXK zSMRIcvd7?IboGnggNyFZOy7Oq@MvS*;;9lJ?x>frbWPur*;{P*Zdbv*NzT7pm=s0a z6B`$~zONTkoO<@mVTb9eZa!k`V>i!x;aDPf*=j}=AIIXXtyiwGt(g4dd)2}{?5e5J zCRs&{RZI8(UNgODYT)97rMZjWF&H-8{2v||{d3>fn$`f^vUYn2; z@qXjd7PFw9oazq2b$gdgxBFc2%9Lx#^xtiPu@7yvl#ORfndNx6_sf~`7row9_4U=3 zy1!Lgp{uT}O`j&7U~sne#BDL=3_X)*#Y@+fb&t+Ich@=dQFYeYsJ#`w@82Fh5&f3o zwEyfD+4Z`I5}2O0`EAT7+`8iG7u^~!{r@Vlv!rfr7VEaD*Jk@$m2$d=FVni_*tbtC zY`py9{lR<^(KfO^@^x|xzh|HQ{`g3mYxmJ*u3DSYzpXNz5MZc(wO(g_=2i2Ys3yh+ zxrIFL9jRuzRY5+h6i!~)ysPn>?Xs;oVc#b zU{~>xkBt*AcLXY!DFl>OsHOJQ9eQ`;qOMzGV)?=w%*B%4PRjQx_jIf?+yBzq_KyHx zS9`F%hDMHNeqW8SkdTI&n%gb!*^dnEw`X7X`}LZS_v*Zpesa1w{`W&?7qW5(nwvDf zEzIwpSpL`RRb=>CtHv!^yOXo4o>d;)D(7}DhrLRuQ|QpQnzkE{ZwCHly>Z-GCg-MM zR1&l1g`S_km|r(0HS8;E{rZVzOU1@53thK;OWF7RAH%O_8@_Fi`Y0zT-F#r~O0On{ zv(L^RdgSPD_4VoVmnJ)w&r-D7eRb8^Uu~%i-n-turks=gCug$CQy;PWhm=(%mfkCB zeOezN9`|-e&GDkF+0UJqREK!?7j1Y{@nv7d(jT`XXIIW>J14fNMn+*q^P#soe;9X6 z{wL4C@c;k4@(*tq7__E?mJz&-<(%VtRsMfs+M4Fbx4D~^sBlg6+Lq(Gsry9S%}IZj z<}6%tB4~<^s`n|4P2Fo+TXF(BoYIWHNhbf8|NiRSdB4wDe!utq-R$pibMHSl{(Num z_c_Jqf9@-O|9;N>S#PbBPbpPxdntKqgIaI(_UY|ym${ig6|LVnZ_RfHrN6&Uhh7h! zdB0oaw4;1&+=O>K^-Vs{xvC#uS2mOFi^XZ(xD_6JzaCzfcxQU=q{G|CPra|N4BV<> zRW+mkzV_k6E7R*g-)}Han`2$3()=pibIFyE@0zB6?*6&5uv#wg>g;o;Kb)S{yW(?q zC1))!@9x02S5^jx>@Lf-DtK_f_w5VzxmKl%US3`vY!))@!ok|`m4#njcFj7dpHkYl z$ZX!KYOcAefjI-%@!b27OTiFN?mKl4eOsPLyzBC7kmECzVdJ@+dyT_&o{oFKC^>kRiys% z*P7Aym+z^b_{?v=OMHIEq7xZroHEODB9E^4_-NPq3Y)ps)xFj&mfp%Me=YvxS@G^o z>9u2-Z&fpLmb|f5G%?nj#3lZfXUToOxTU+kt4qzk+IKpfXX#Pt#XGL|s59^Em)~1H z@m|f_JsVHoDm=Vw=ZnARxr)}`w6rX}<0@r*#|MKM6M5{f$QtU|Z+-vmy!VeE zA0JCi{`YqK{TAQyx3{L+{d%GNur%htpPWGTnPoYt{?_ez`;A+|^19E($P{$#n45Jd zZkPT4BlR!yZpk|z&HMP~sLJ6J_s<`UUO#_1|MB>e!%XU2B4_;K*K{rkN_F0GeeJwI zub-G^oryc+$@!=Jr1|W{FWzx|I$D+V$8=SVyUq7$`F>gsYpp-Vf2(Rezbtmq_1|+Z z^XLCMvYY8W&+acDmvozCP58aJxonpG(-uo z5t{caW|wN$sk_<#&5LtYEMH2wx>X*lkGcJ@_PmjsZgPv|jo)0>JvNn3R|mW~wo&`} z#c9okEpuCzw_J^Qd1C*Lt83RteeG(z<^E=w{66c(-$mNB;T*cZ^iGM?*Y<4kf5WwE zN{_lvRQRd0WfHsnMT}BQjQ;%l?q*T?{`>j9{|^o}hpdmYW!fwj*v==LajZvj3iD(i zr_bqe%N+Oq5E2dfox^$itc_Z{ht%x%_uuLqJ-au@X05FMf2F1@(+@eU`iD=Nd4JeEHz{juBF|5)XxexBUL2PPkIIhwNE)ZR7tAV;xU!>{jRmcEj6 z&c0qS@!^%V@9od`bIV*>zv*Y%HjSMXjeE;asa}}*WcGdbU%cu1eM_XazOfCjirqaw zUf*NszVk~9Ry$7O(2QLWG|ljpep>vp@TyPoEjL(o{wv-RSR&T#kE;OlnR)G8Ky`}nvsXY0RJzq@&v|J9_bgjSx|*}ha(*f%fo z{XXN^AGso-tF+>`c75pXJL`A5|47!zTcX#*YDVo7PuJ=xM zUSCmm)Wys4aQ#e^tZCh9^;z}mO1C|EB*gsA@6XBgOXd6ZUSFx_&tI7uyVpj4-@E=Z z=F5~^lIC}@TQ(>oGiFtEF~6P6vd+M}dJ=v;vSst^DvsAapRfPtSd)-aj$|X_)O4PS z%PrpAvew^gb?ct@{_NAnThb)sbuALp9IH0D>P40tt^d2>BiGi<33Dpn{7Pl4KBry% zVNUn6=yfqSGv3GN1gb<{_K_=YyjOep@7&%x+smr_dq2k2UDx~d<#+%6_=RGnKW`)? zny2*aEIF`Tc8bZo)Sh2grrpYGd+g}VK!-SFdp(h(2E z9>KSXK39eB?#$R1x>C+<{(7P0R#%=S*#X89nmRhtj=z{Q9m530!YBNQNwF#xyqXrY z&Tjp)&mN_US(iIMM;==t9pbwre#S<={(JL+8ltvL?>>@Z_3mJPTk!O_d2ju`{M%#w zhsjs&^}bKsyeE&TRp>lTS?zAjb;VBZM)6dsu*a|OSO3?S|5~j(|K^39Sn;=O&h*rz z{CH`7VaE=OtlQgkmoEKSF8|`igM-bPPfkpn_Dkn>V@B@Axq;%_oIkZB#Dss2``0J` zs%`4+vr9dW{XS*z>3MNM#{bZ&Ig&!3Rxl-Bh&Ob5E0TDS)9viy%=zvCbKQ!jG95W2 z+BNUlz75rTC-uikCB3bDaZ#-`Ot0|%)!T-4te+cldGZB$4gal@U!40g-_^QU;)dSM zl>g=v&YG`SxS&tyqFma1#>W1Ug>q#ul2U_do2R~2u*otULL9P*7}R)*B2L?U*5l? z%3Ku=n!#^o zZ0WaSj3+>W^xgJGD9Ust?{%`q+5;@y;@hw=+fm zaHR3(Pfz)r`|1uy)gMp8FyZ@q93H#x%&)t^zFbu&>^N)m+~@P`oFf)QFT8Q+rm6G3 zX|kUz{>|G`RKM3}nn9Lc9VI(ay>ec0>He zt7{&z)z20#OkV5z!QpN4>t83glnU1;IjKK4X=GfsbZ4^Vjg)e&L;SxMm(?!2*kRtr zv3u5BO;P(F514)Rb#+p9C>VKM>b6|C`?%AC>3jdQGQ2TLn4j40BJuOL<%`Rjtzz{L z_w7D%W80rYJht7|+a*K{w@1&Y=D%W*#$rC}VC|3YuK9h(gIt!F7QR`fnt5d}Z+uE_ z>bnE6D_$=4j5(~IBOtb}*T}T1SoU?{vt?g0D)%i(yt9SrONjLEZqq^2~AI#;SbM_5G%<*SW$|dfU<`lJUGoHIOl&OAIlyXnhM%MJjX*+#; zlh$s_-WoH_AnPXg$BVlxGp{KX*PdG-e(usA|2w)FZ+G~0I!x?*t9DMy!{223>(H-d z%v<|Ym45EF+Iv6pYi1hn>Ers%MxXc=**{9>-YqG1jA!bzGYg-coy~n(LjS>1w)+A1 znwU~Q1|2?qHu}|F!`5jvC({!iFBf03Z0(w}x_jkodOR+#j4V~Wa@(k`>a&c^5tobV zmSzGUCf+SMFsD-Lw~{qm@$J2b=Q5h)PMv+s-~9jCxOa8a#LgAgPrnmq)N<|Jwsn0! zntvwPAFA0{nIdM+aA{gv|Hr%E7x>5R(VX>8D?eZG`_<^SH z25-0NYRy;e+2#G&_{&?aeSRDDgYP(3=DTq$DV*@~V9%AtpI7+O_iep5!DD%s+1nqx z*^=bXFT3->_B)&W@>fZYZLKpqdVa(%_ZFFdYp!1U8o|(oH9tRHT;$rl!f&qCA)`Iq zvh%H+Ux$BwuEI2F&0SIF4JO~Gr984XmX&{h&#mW+(Z3qL2j_VvYWL4EC@9V~?`6HL z8E-M~G{c!0i|_I2{OSMm>Yv`m-4@KoyTm71^jS-NnXRneao>Bs&t8|qanIhrs@^kY zI$NK>>$=UhAY}}gal3wS7n+So+l8ySVUq3GW{V0cWkmSeH zJLVmjQBv)-dt3C4wJ%;|L~YBF3|$u!8PQhmxa_gZ&s}FEUUrJzJFEG3pMBm=r}=eH z{(U-9x?60oThEv32bbrcXH?pCHT~Eko2qH7haI+PEa#}$wqp93+;eA^i%)%UzWcl2 zj5QO_^vL!;Exa>n=kE_LEBI|Bma&#Uyy|#h+ODZWJ63JGJ!9{QPirsAMW%PJc_&|O zqkc9bLvO3ew@|bD3;0^10$hw<_84YNT+zG6W`AFf3(d@?8bj4Hg4(rtKZu!QwwSLn7f-0>`g{+<;a_>K?7hSwk z`6zU8wshky_Za$%xPyP7=u}_BFpA?nC|6E!xyX^AH+?TJuK3?>w zsOLXlNP5Y~S3e)gFnu}TdQ@v?Qp%dg=bt;IS>Eq| zJEv;1?3Cb^73m#yX(}vNZZ*B@l3DNosT;^Z#KMsu_-8X;li%B&hw35t$!B3tS7f>jHBn*}cvYriYZ~Za=h5_@sKkZ;j9Vf2;v(1F`(lsWI%Jt!Hw5SgT)36wdHlqU@_Kvr)BC-a zKA->awOi?StK|8%w(ss)wT9I`KKDdm13Ozxn#sJq?rNL9cTU{Wk)~s{NOH0Hwb{oX z)$Tv_sP1z|y36*mN~zMkgYguc=W2%fB>x590@bwsbhYxX{m}3vvzYbN@%xSUC#7E2w0s-7 z%kN#A)33L$udVgw7S~(yq2RZb4a?&OMIryzMce0JogcQQ`Kul4E1Bp6JvQt{hh^j{ z57$(@RkSnLZ)gjxt#4O9f5A=do{5l7)${cR>0gdj?T#p#uzW_KM1N1GTtaS4|4*O! z2@jomQ`CJ{Y}D&>ox~OqmTcG|yDwJgtoh7{`2ENIqc6XFd8;PICeZN3+h31`cfa|5 zJZ?#=PNDF53%~c1XWom`e|~cLc}devQxEVqx`#F0PhK9q(Zy!2Z=txeg<_cSTB(Qc zK7C#p;k|2-!@I}t+l^mr!hiZ^ILtr z19KkgDS1trSUFkeU(!_utqIR>Y;s-s#i{yV-!Hpu0xmL@>K@PPzC7H+vFdwEjDLq^ z!xFm*izH75GwXHCd9QhgWpWb*;ktUa0>gz z4X2Ep+*Z$G3O8KctrhwE-ww9w`RC5C&z@e$`jc4yVNTYj$r~Xd@t-2 zJ(J-y?JY}c!dy;mU%A>}r7X5F(f8KEp7brdb-NHe`pGq^NU8@JoW15uc+J4 zKV4YS`O`OF_(ZW!8atzX?Tfy-3Nxj63m=?a^JSu(_%{ukO^04oel1vct+un|i}_Ab z%bJ%HyC$kTl{y)91kB}Je%IW1o*TpDv*y~1viJO+_)L`NzQ=~%Mq391p-)T)GWyj; z4_25N*w^`AEyvpu#hRWA9vP3fzUs&_k|8=b%Tmuc~Y zTcR_k>K^YsmKW_eegFO}iQ1oQcb+hv@O;LZL*f;dsoaX6&N=M)#d~J)fu0nlD(#-Q zEC0HEW^I__DcaMrrBlMX?9hc(~t zo>ZyuL}Nyexr#9Ne)Gi&rkR;%jSMgR{=wIs{LfCk&vJuvmbr@2iL9u-Ri<0>?#`Mt z`6rvf3;&Ehj;O6_eOcGmybS#=a4tmb2E(E~;t@UR@fT;G@h|?TvyV|)Y>mgqEHMkk z3D0kYF1y*}s8$we^C{&2>sw+?#}s}^=C`Mr9_(Cx&^qS#!QXmZFItWW{}$%DSTn8X z#nyc_&Bp$RTBLq6n7U*6nf)>EgBP4PjAW4P zIXGD(=hqFvrX9lE0h8yQi|07tFa7UU+Lwx_E>A&xd4r^A+^=UViqM3EyKF?gXc$++f-?iGev-~BudgM1* zM|0Nk|J73Z|6xsu`zD)ZZzJr2^Iw#1JN5TX@^{X>GqpOq-3`77{+)jGciZecZ&WAB zEiEcJ%BH`j=*>aRm?`>VyGvdQmA<<(^V#|N@1xGXt$rudAK-H?)1;`TFzdY1`AV;j zq}J)iJkc&G(;^%~&Y!D{l#AK&+0grbPra}In&cG}x$eAC zTD&QHo6FIezna|*Qu5ATSzncPx=HY+>C|PRnJYK?CS0Cy^!;}>zn9ulfnOZEe zTW-{q2vb}xYa$lW-ww?{$jT>jp+7NXQ{kN69aB(f1?K3~yuT14#rN()5DMtXq_Nmc%-;;z2-)UQ^ zdPOyUN_%u9VP>+@#07%FJ912ul&Ye|^R*s<`goCd~EIf7f zP{zTm;$)kN(#xhkkPZ8#c-vCyb+xeCl^bGxt{-<4^8ULVz}wKMV5P8Tn&4x(L?72} znu~t6wO+fo|IPBW+D_IzQAbLS7&URNb8Wv96~pfF!)ud03)88DSzJ$EwS{Qq6f*J^BfmTo-byfq>#_+}D6W9l)UoetL9K8g2z z5NeWMv^|SwZ~ig=`G#4MO?j&izF!y~ak_BsCaKmF77^EzXS(j1s~~dlf_v>9gI|r- zQu+^?#0Aib0QCZa8=`T3G_d#C6$-_GvEnZ2iuvN z*yhx}#5$98^E~Q}v{S67>~|=$D!+Djt4BU_kL)|&l|EAwm*myX^ndTM(_jBp$A|4% zrTKf-e~ehBZZ_?!iO-6SvVSWa`Zu#^=Sns<+rPFgc7lwgkEFC(DY$;t!aI{`#G8anI>5LE#_Y$-d+X&*@%duubBmmQzjE8B4ju zb8r1Mbj}n?`xNt79bBHRdU>k$JD;iMWt)owY856;)%Yb|7MNz`_h#LM4rWfvo-0ek zqYVIX`0tmx(ng!Z&WD8GN~TBV8sr-FBMf3!m8qfh#sYySlmP zo!B<1+&kactE&GLPnmIoUvJ^|%bSiCZz;VQp!Th7`>iiu%#W>GXExjX#?S5(oeq|Z zwz)n}J!lo+{=`kVr8^x}4EW=pJc|Af1I+|H6G4gNgX+;nBZ z%I{UKEz4W)Z|K>>E3B0zZ57c``Br6?U@F@e)vy`-%+>Rjrs|mO31-PWGkbD=$2Zqp zr!)3Vk;l4)7IwUvIk&y`h_ugnUVfGM$^H^s&onq(){o|>(=VP|bSQl7tGOTVywNE8 z^oz||K2?~*P5C{Kwg2u2zp#8x{e@+7onL(aG0`ORQ*{ob!o9%O*4B$HoWdGr|2I2* zxA3n|p7?*co!#=!%CFzfs&)E)YsIb~u6B7*j7?rAJPukN-!R#6nnp|P7Vi^oEQj50 zbROVy{W4oDxy@lV-;CS4P8hg+GfFZ1JZ*#J&e^VyF6Ek5ysea0n{s_w9pABX-N;}5 z^Qs*5AOGTv;h(GdW?ArAt~C=*q&$ii-+ArBy4oqV$Njd6Ue4rCC{$Q5YqL{qN$zOvoge2A9R2cn&Ci#@Zo0)+H>`@UTYKJe*5Mwno{%ZFA+vLru$f#t zzVVFGUB9^d2``lM{~Rm6@bpZIU8jN3&I2xw!#H=%^x|&|k``mz{3LdN@Nd4{jO*)S zFTL7+zs_1WVnc&m#RJA7DSI7(+1DpVZ(Dy;GWm9_tCd2x`1&QW%ZoNX65r`@<-Lj9 zy1S*XEDLfkf3=<=row69Clsl=d)jfOeT>FcuTHtlShuj%^;l4vTSe9FeMbWJv)j48 zEGpF1w&5}OFPOk`eq+j9pBtQyX3E-F-8p;Mxn=6zDQhG)_gs=(-_n(J?MnBozm045 zuX}so?0Uz^F;_m_yd!tK&f&!EsX7@atJHpOG}8b2JGqeI-_^M{U9Y5A)ybrb{%i?M z4}E^Mc8)89{x#<6OPRl?m82O=^Glz!E|}}`>w^-^deIjREjg^yC1OHqEqsj4n)T{$ zZOOc{JwHBe=j(kNirywpR`bocwk9%U!-D)8-q`m`_pysHaTxD9E!-x+<7?NU!_;mVRp zJALO_754fW+vok@zaM49uDIy&<+nw%kGXCyl3#wxp}u#{v)kKa7P5%FGq-$s><>q3 z*t6Ei6+seZie}EDVmFo;85@;e+Vo4JINRAlADnOJa zY~!x#axUq;vPV~xs$5x~%d(*P-MzimM~@!$eBIX4av?f@uPbN|(X?Q3QKo}k4QEWx z=1rK8aMa=J?Q#wcx3|_g|F7yEHkb0Tva^e`Iwz#+l`-)IXxFsvay>1UCQ(KY&V;Gw zF8f=Hs+mM=4E$Th#&~qa+=CzOFMD};aeaMvcXrzOdAU~4#B`%Bw9D6d2nq@=OATdg zbudt3;O|n;Qn{qBv#nv`gR<=@#U@kt9=CZkZR0wtFpeEc3naE`OTF4H(kQAO7BF2e z_QjD-;Y&r8pPw!56jraAIxDD(xinBwK!L-j<}*{T{8Kqw!MnvqJ{b)>;iZTDL2g%n z(EM_nr>Ezvx}TH%?F`?Vt=akf++6RaUQ>;9S958wG)Xqf&-@sCyG>{H_0V#E&KAzt zjk-}%ZRRtMulqG`D~E>L+^rStckdo3NxV3B!U2A}#rzu9#z$+OP7TjE(jh1!^{P^d zcdzZ&l>!_oED5@IHpK~_N(tZB>C&*SKfd8EIvWjdwutn8DX5(?<93{RgxU69bbJfU~+wa>%;f= z3njJ|?@yh!<;jzl#*FGWH#UN|qCP$Ssb-r*3}_6jVBu8l@NZRX{Q3^RK38$EL8@K+ z!OsP&g7>?h-=?{x>1gvdr_@ue7ks8YUCqJW{z}BslyCX3$C=hyGV_$mi*1A5-oDrU zfA;RzKOVi0<=+_1h~ZCqt?1l#VP)|0e>)X^u>JjfVWG3BxNZw`Y15VW4_Ug-ZCzN` zU%$a+&GW3KLOb%p|4&gmHC$@rLr@u_qzjIUK>8tMruDAZ*{|gG7tpCnSsvf8? zot~z9`Ob=OZ*Qlsyjk`2)x{~A!5mhZu3U}(nV3#!eS7IXJww}Dq;SU4msgBWDPEE& zJ9{)TNGj#96Pwm@$uISc@uqISIW*jIX!l?rFz*B%N1>t=)7dZK_tN$?JUo+C{qeJw!vm z268dp2Dw~%(}C3mZ*Q4`7G@q>us#2N-p*!K?`c;Sb#2YLd8tS?G(d5IKmdmZ%O)|# zqboLx<-5Nxdw0iD_t>{5CnvwW9$&xpPFYEb$=+|bvcLTKe10{H)U?20R#7G{#@2>< zfr2@K$?4_a-b7|yUdG!!arR~V#lNQCFa7`TFUvEV>TfyEtPY)TJ>9IJrRDXx)h%UX z&CgFCyH*r~G&?yc3M6n?oLZsSq#M0$&9>d$y}egA>3@B5b268>o=n1FzJ2eOEL)cK z=xyfZWszkYFS$z!3NAE!ac^&RaK(;OuNFUEWCwPJgMq>Wjm2?03KUKA@BLX;*xuS2 z*e#~JqWJl_kj-hnPRCSTuL<7RRk~WtHRs=-pR<-6s`6blV}=A%@v-=Se}29V2~7o? z)8M4wAW$$RFnn#))Cb$Om0Y%icC>?fNL}LkdRpJ++xO?Bg0_cOetvebk(oW`G2@)y z-`}rKTzkp?R-1n)C=f-M7+V{Xd#e8a`g*JH=BXDG8ds{_j!j+;>Y+Bx__NFL6c@?Tr-f6J$4Vlri3-LK55hppl(+?v8nI(eFuXr zhy5ha`~>ZU{5K)(Qm|Io8i~^P_vUVJ&p|I^~xzH+X0xlqqRvz!|a(&l+frc4o8 zzpMFf@#AB?rn2>i+jvi|oH9AC)GIU$nu6ymJrH(V`(1+3GC{yJ`54d2i8JHwy%FB^ zcK5qo-5>}3EPucEd(cEB*E6ery|F4gb-Z8xy36&51q#Q^{s}a&T%WU`OH@1S%+B1~ z+gcJ-yF|dr*6G3i<_3Sst=c`+-``!8_;zP!@yjnSFRz=v=U-o}*`dTkw<7;*M{QY= zwuH^u^v~0?v#)=vJ&+M&lgzv*f@M$ z49ndrH@CKL?fVX%;GV?b65jkn>iXucQ`7a=8>UAbb}m}r0nMNyOp)hS#455Uw-jD| zbhO*_b-KUq{Mg$(%iebgh3ziOJzK%YR`Or8`+LH#-jH}mlHM=)L3^A z%GI0M+?bsHJ74L|13?kCYj3t@UA@%vBtc;r!VV=Crmn! zJm$Bm`LW?!`I8fZZzZNZ{rK_Yt@xy*MQJ+6R_B-Tt+bk0%cYmFLB)N6;NQ>ZtluxW zwA4HMc-q?)ub~NZfxrir#s%qD!q|8Xt?sN5;N)S9_+tO&$ivxhf3eRsH1d5}|9{$v zjIe^BRA_Qg_#p7Z-{94O=Gd=@aJVKA&~r=5Z`BmA|3G>BPg6tEmAb~*yCLuh8F`8h a{AUyho~Gw8-3@^vO7CcXNAV=q=W1Ba59$M4BuD2FaO=&_x9=kET7-mnaZ$W`{$*X zWI}`+Vm#;RsNI-vs;4>AwTe$*0rQLo7Pk+qMVjhbS~3pO7XRpA_!R3-0eKdNd?An2N(O+?csQqVvWvzvhd1mS{qx?XC>|+R+}3DU z;I}Ji{@icPe#h>cTxK)<`KQNm&8em5PcSC!G-G)7L|4>QcgiGw#_;rP!e|)5Ht$Bx+3V+Yr@0NSc+?QSa{9sJ%@aDbJufmLL~(#Det+#S)o zU+sP{b(K2Dhen1=K)-@bZ0FccGMuvZjf{Q1D*|GqfE6YYPlE3TO&%wM!> zF|)_}_ra@Dn$-oKHyKP|UN2hfHR&LS(1GL=9sdOd<;@t+D6*TS{@?$c{lHM{VCl7cy@?`sL_k-qN;pGvAkoMSAWG z?hRgkSv)j;UPjcsPl-?bruj|pG&cGiA@k#?z{U!p#>X7fHc#Fx&2Z{{|EsUx)ONk! z-DD8GulVzSh6BGV^7G$Md>`|okm1|T!{LV>zMsP@T^DtQ!JY)G)7yg#%i0VLgU>J~C&%ar zc^|uEC}}3Geavg4*BY_xmhV5cuJx5B$`>k~I}o{pIp&~Zg^k{U8b;yLj2Mv}Mm0img=(o4q=0*|zYvdu}mr?SFOaRoSbUuOg+bzkCDSpJjw(T*-{NSmC++g6>P1 zUoKUQd#BVj)OFrl>UnX?r6*aROw+T&GUTr9S$T8u(F;;bMORK;z11aq`8C$H>9YA0!T%EZ>bMIQMwYt0O)-JtW zoVzZUXqWWA+GcFHOmy<`Gl_c1@6zuj)Jdh8^cee?1xn?{(>Q&zGxT(!O?k zae3_f$#&lM0rt`Lt#y0<*)rcba8BV?!m5LA&Bko8hfCY4dBu73<@VM8c;B{S;oQWY zhdhVZw&}Lnx*c;n=oYlN)NOgsuAZ64>W)PoTix3)Sw73ar^e@q+G^jv**57fH(9Ka z36p$nvikOw3noWG5_cWla`nsRnOh_GL@vB3x4HURNb$DHT|cuvr+v=j7Vh3CW~`f~ zQ@4Fd#3o&1-Rn{FHrM2*=1$GndSTVQS2MTHGd;iSz^-Gz*72S_c0H}jcj;Nv=ta7> z&2E=9zfHBia_*|$<#mVNO|s2;pQgX>Sf`uIJf{GZ#0z zotM08@M~)K-tH5ri%;u@x4n+I-n#DWy7;?y?xy5z&71p9?A^+DukYq>D!mc-M)l2S zITrrBHk>TxQHlNHsKda9FnD;&L=aOGJ z-!i|Oetr5o?3djal-0DWIkq{SWj=>uOH1n-j-4lsA8}S(-SaNs`-RAb%MV{UoOJlq zVY#;3t)~x3A77O0e0-f$wfP|mk* z$&;2RZ%^7jW8WFt2R6a^%X~mGM6& z{_(2wm(tIzjoRLz9id&J_(gb~SXtK|S8Z4S%X=?}FS9@W;atSji!)!&j+}K<^;y^H zqw6<0Z8A&Ud%o|?y@_{cPoA+^efpf)v#KK&>7JZ6XI_p?<*g@XEB9{kxMg>=_|z=T zyPFJdmRTyzSI9qcxzYZYE|>IC|1S2Qc0Wab$}dy%u{H3`o|O`Hx@7mu?&bEn99ln8 z+3cJR7FRBNd8X1>{>-B@w~VA`&NbUz+4pk}Yq8Zcw)1OexzC+$`+mFA@8eet z`~TUzdcJ9X_4H->xv|f-}x^SwXSWO-a6fM&E|;hHFu|fI`iqZ=s(fwYtrlD_x$_I_OMM``mfowJfmA7 zn_gZ{`}iz6x@r5B(5TR9d8&D5@Bd1PKD4cP|AzXN_wqLEP5FIYc9QJdP{YvWtM9H} zT`u)5Can3IMwV6i(l@*ISSOS_uXTPq&Gw9~YW2amqxYWw4*GughWxhuKN)^IymdU? z{F>j8PxQKC>E+kEUK_u@Ej>x<7GJwuUf!21o020RPxPr>Ue>jEm-}?t#d6UFYra<; z{5Vhel5niLv7cSmyel=&uj~lE?&m%~&sMnX*`J#WHZMO{cuv;-eeJ%NP0w2o@849v zcK?gAjq8qXeR?5(-G14u((JXnpVX~CpZqH|r4=;`;|9q@3%RTSHyeW33l~I4s{EQ4v4|x9c`Q!QJdnWAraVPZ4@@w;7 z$KTpx^JDt`c-^~?cUi}sjQhGT?vva9vwhq3@@H2ss(QEobnW+_wIA94@`uXbls{kV z_2c#?l-IB{#~}+eEatBQ`0~Gu46S=aOc(%<_}fu3|mwfBns|($gaO7 z|4nkyt;^pOKg{2d#eXyX!}+CR|1P_iAKX8CHp82{Yz?AUmM>=zaAj6F$Gl*%JO8%E zy)pOq1!ubKFu!5*Fgq$w>WBHVTa*6@e7|5EuxeMs!sqpj6D~C?TKr%>$-uzClI-am zz{AVHn8*D1Jp%(nS89Z3ny)W|76StV2LlVE6ay;*0|O%i1A`r-G@R|msKLMt7H48$ zXwPI|0katx{1_l$0+bJ-nJ2X|urn|)2r)1)R4ibEsb+k&fEmVSSOC)K80_rn$-ux6 zoLrQenpd2WU$V@LH=BWhfwRCPvY3HEOcjI~J%dy}FfcG)%M6JqiSYHYO3u&KOH9d6 zO4X~#EdZIrU{hgLkz0_PT9T+xk(-lOY*k^a1Xf{{S8N3m)>l#hD=EpgRf_NpP;kyK zN>wn^Gte_ovg1-vP_QXVNwW%aaf50vN=dU-$|xx*u+rBrFE7_CH`dE9O4m2Ew6xSW zFw!?N(k)6!(=D#dD@m--%_~-h7y>iLCAB!YD6^m>Ge1uOWNu z2peq>IwKG|O)OD#BFUiZ3@uJAa?a1qP0cH@Lqr$UT4YJ6MjL&Q&yhj`63k%HAQv|~ zE*pJtgn%N)j!TKNK$n4mK_=71KZJpSfe9R`3=9Db3=A3!5ITT?K_S2R(p)bF1_f(R z7srqa#y7F-6(O$I?GzPdIXqvuei06ES>h=;L5?wyQLx^@#l>Nkyl<7DV;6_Uf+hv7 zCX2uP(}xpJ*!*&g)8*gjtAF(P@yjm&Q)DOO zc)Bbi?aH=|hEJr|{Wzv2rpNz%8hhHIc0Soj#}78MzdX_@{N;B3{y;akw(9zn3pWlO zKCF7Uudi>~=0bx{?Q&HeQQPx!FNkETci(O|v-`I1YU&l8T^qzt-Qhg`bfUGz?cd^h z{M8dT@s&S3#QN*y^7$M*l4m5-&rF!PMo=Sg5zEyTfz7MJ*X!}eIM2x|dGzh!JfTae zSKj^PJ${J8fN5VJL)x+3Wp5YFwJtyP_{z%QeSDqXKlP)wXk1+#-Y-}Gr!ecn0>;p_ zQB(i?{Ttgg+1^Zz>CB4WNWD2)ZVKm>Kb+Rzf8pEP+xdoRXBO=Bz3`~7qho^mLZ?;@ z3yT?_o}bt6Z)j++K9^8+fuWsA>Ptz%jCF_-l% zdQV%DbhPX4!5Pj@PBxR&p2#M}$t2vfIDYh~r>cd8z}4xBh}fyPVWwaL%M^}=#sg>4 zzP`FT$#S>%lDE&Fy9*q@wles+Sn|4{rCbLqIWFh2B+Ozvd9;z4{R!jS3X9T%zjp5C zhY$~od-iI^)9)K@vt2&c*eE>tyI_Lb+rLH+L=2eP z92sWa^q!`((6w9aWaMmZ&ePNNOto+ctJto%3DT2`|Dg$Yx^Zmx8rfKP`R_cGZOPcwLtb!UfR z>B~#5=eB&F#58|%rP-zOGb?&Sq~?gZDToU;OuED_U*q6CU2m#%xW(t}HO7bI#P#$J z&QZK|%vdd1al(ul9=EsUPL}#5(Q~lmOk@+E+tbW2h57sY`}(E)3lunv4bxxF ztA4jo&bBJx`@6dXmnDZU+9Y0M zd8%)at|57FCdcKwjSMEI4sIxvv9G(c(&ymr+s5Z@ocC6LpQcnaZIuP<;8K3G(FPwGE$yu{TTRUvc1hvFn z@)}GB1bx@X?R~LydR)@lI##=LHc4)8d9wcSDkl`MnC0E^2wv_t_16AAHPL9DCd0*x zTMrAW-FJC#VxsaToA;m3+pDMl*>bqQ>Uf`Q=7j~0Av=pw@3UO=-I?b0R!zZD%I&~y zj)cFJH#eo4ZEBby#O1h#CuK#FX-d+D zpB#6NFWUF_$K!s!CB3^hdZ4OncAEg=B-FOJInR*a{uxh zJ6#XA@ve;DUw7%cu}zzyAyc0c!^*Sm@^u=rPZ}Dnog_pS{d4@OV`Ow`qJOQCj&as} zow9Q!ac&IOI(z^B`~BtH?flC}yT#w0yzFN*arI`|pKvcz-pi#t1u%hH*5EA0LE>vfUX+1HI_hmSGdZE&cm*)!$WfzNZ5gXA;1 z_J2C1ZIW}t;G1q<7~h!{XAeB^c01s~aiCemrAyhpuf)T1P1)O9n-(9AJN%~NkcaB4 z>deMAi!Ddf&&~1NaB z+A=+X$vEiJ0DcC3aj}{__saZ{;9Uxff*bL^NV#JuZi5;cHqEU z#hiXFTW+1FKNihnHO{Ke;%rZ3vFTyB_VHN1yuN7RgB?fYvMwxWOu1mwyp3I#FWH3U zL3quhBb{4{o_g)x{-CF;Yf_MMMpv@!?eGrCt?Q?lJik1F%ch8%< z4s8G4Yz!&cE^Pd2_udxE`ZnhWe|~-r3gnTx`%U1Dm*L}MYLYkdCUpw#m@W9@_4@r! zj0CnEEiNj`NfVuYykY0>L$gecvu0myh&Nz*=gN?MeslWyX-d}BF?vpoYrBe7sNgvM+bq*%`LU zVrS!Kl{|dJP;SZep^U9Mt9bLePft$^Pq|o=I^8_&N_nN~^EZ{^jZdDWSZe?K@wor3 z7l+T<4cuba7SEJmbbDaN6um8H;<-`y}fm}u5x<3;o^O#xo2#CZp*Tv zTtDq%#N=zr85^4%?Z4kCu5$cotNdUy$ANcJJiA@H#q3%cjkD%!<(E9Ms{cnDecc6jMr0h+^AwMS{aLYPE=|ImdA;Ep=EHMrY%TyEgczSy7+Gvt>#Un2! zU}cc%-3>CJCUlKBW7?H{(ck72n=2Lk`jYwT>T2=adwU|y!!$bfem-Y?Wo58BRH+0b zq~R$@l_557xaPcm8xyqIV``E>9 zyl_WGb5zU?Opo0>)nrk_AD5)a{!T#y7N!pqt}OKyw<>)#C9P`1&A%rmCcpTqcsQ@p z@09$CpPc(mIGDEmQvS~%RCkScl1H=3;~x`sepQ?cwNgCSy7<#YVSo1E>GKwQ(T11E;|L6QV2|3>ofJCS`l>&HcgjIdqwlW3fj4 zzOM2mxmUM&tcskz^Q-Ivi8pEY`LC}yES$A@*VJgGmlvyI>Xs?}t~e(;%SJ173;X5C zv!BnncF-ih^2l8NpXX9p_MBR=y>6=KUaPpEv_&bJ^}iIib$pVwPhlzIW?bWVxaZaF z{QXydrrK#u+0XCF!l!C4v`B$_){i{LSAV=#91Y%QD#RqeS9`|!7a^-vp7MWKJpa7- z(gy-!?-}Rp-MudGx%%WaGq!N&KDgwYu?zu?QDWRhnlUULAKgsr4L!hQ*M0< zZ3|_RUpH<3wf8-ns@|>UXZz~0(Dd}B+_e4wFBC|bOxyeBCd-LV@wn70=eZ3p`#arP zvgl$kSHSnWJzM85)|>+ydq?6}^G+;!pn+bXs`%hnKgk-ru+A)z-DH9eF2=-4AlyaCvZMrty`H z$?mtdW=}tBP$4KI;>nsR)ylTz5>I+ndinmJE}oQ(#68;aozn51+PpEdd_aP31BRdG%aHUb$a)&19y6NrO(a1pzWlX zxHC#|Vf1_hso&ea&6>YBqC!i)Z`t9iALj6f3-0+`{eW|A-kZYJuAu%;>gj10|H)p> z{B}F@)Pjqye_p)hSAOyITb4Ildb+`>`8$6uTz`G_wqBu^AL_CT^Da+w+>$W$@uS4> z?&GmfHzs@&t;%lMs%D)tx85$k$H{r_^r)nr4_++H*?7%2WT~5iXxE0m)3HAbME%3} ze=oBuk^K7Z?ru$E;_FwW%WW2S4S1d2eD{-lu*$qs z?VA7YSQXpdY5y`&*?mRs?QLJ4&#%vN>+*fIvG(axZ^0{z!WISfba4FY^H}h1ul%A{ zsaK;OoiE{7SS~Jh>Cg1-aleZ8?wVHFtR)`a-QM1#?NA$E9%J(+%W~Ihn_s1#%l@z3 zcrB&=!$XE!JFIVAO?g%KeqGIrenl=$n zwR&gDsk3h~ec!wM2ut?chwO4(3w*0>?^{|mPtd=<+SxueaJO34#}AkOyIxA>l@;f= z4rY6Hf5&Q@SD`)udPhryqHgAMzRmHUy!+F`mnE-`zJFWu!YIq%=jZ;LQ#|j^5AJ5~ zp88?A?eaVCUmOwsc|kkIf6w!p9c@`?*mnos z=wEf>{(m;#pD%PwGwbHZNWHpY)cNhrmb4c?KmWei`6KC)={haBe7nz2t624;BZ{}G zXv*2CA31!eM|1m0*{6jMWB9JFT`*5zukm^T+uJuk&wBIjgnM4{`d{<6e_nWcMQCT) z*PCBHW}2kWs+#-0b9qzdJEO9aM_R}J>@{U7EG+zTr}+HEb91fN#?P|NytIUKZN$c= zMT_&#)df$=54fDgc`DM#u9@lV2hQ!KTE}>H_;`!On09~s_B73K@j8vPYd*&u7u@f5 zviY-gYsHVoQ%+2qj?WMhsJ?J}k6v?Cd06(Q`dW=y@3hZ*BPUGt@4_Ow@IlJ(*rsXBZ`YjjQbhVbqZ*BSi_>t<~?wOUbp8Kns z^QPk>w>+0Obvrsd58OPbHx4re1f5$INoxeg- zf6Jcjoqp$IG~G|vJiXg0_{E3)`>Xhjr|w_RX_V^deq}o z#Xs*srz}b1x+gEkos}7>vwSA#rq=Swf;-B81u{@?$!F$?_9lE z9zminT`bGAC2{?nCkZ5zk2U%K--moY9rwDM2$x?Z!-PEw&34VM2m zC{H%yVioz39Tys75>nZ06l8?NRkZ7K9^k?r4if1YQ2 z?L^1hW+?(vvpXLMt_i;X{$;CpoIq;+-OQPXT3cH$9%|)Y>D7eMfJxMh?Kg@7 zzC8?Dn4tEm$1+i%>)?v6gza2!^UEiQxw&Psuc|pD{qU3j<;=+|k|htF3-3sZOx2QI7keU+2(J3DXB zUA54{Y};mLofq|Y-jo|@1imnQ8Q9oVcg1VRtTy9Wx4tsZm8*DgKc3V2*Ll`{3muuA zDXH1lJ(sM`v8?YBymWuYHOCO=FNX8(Me1IcGNA6F}Sy~~xZeCna*#Ba-(wkXVGuK6A%jMoRjJs_2 z>)-G9%T2Sd1w1`9^}UCYRKe?C;!k=0_KE+$XLC=dLu~CiLU!7?6{?1>sRwt zKfcb(OiY&r+?(|+$)bBzGYwh(q8mT-M9DCzqYa)pZTWqa-sXD%Wd*^UjI*g z*Q0Gxx~59ul7?D`-Oo)1w(`m`hW}qg$fwUNyS(?QQQu3;b5UR4u8s}#^R_=QN4?i4 zG%4#}{n~7v7X}-OO4>K;zBbPM^LqNrJ-qkXqyC%hJ^ZHX$r7fPZErPCmAdWCc^E47 zbJnekoJV3b3T$Ut8uq67Zp@ogaG7HwUz+`Vj_0hG@B3Vq-I)ECTh>sj$$0V7Jrmr5 z?`>TFM!GpT^S|78ld?6nXX7OwUXq%j`^TWbs$!RhV+}X!0@3buTIsvZHM)h2*@L6L zX$6~2eSU3i^yNva-YWtWvp28&>6ByP*})&m^1iZQD#yn)U2>YD`qMde?(ZxPw}_UI zTq&#Y-=KchH@8_gcK_(wv_{A9(ysa?Zgq)|#1yBm6nH0^xcT4LXS1Izes=$At<40x z`zzjmJ~*x7M#y=E)XhueWc4n7>%I1$M`)f%KX|ym|8Cq^4B6hE3|a>UHOYe2lI>tKz*j$(Vdf}etmRH8vhP($h zT>tsE+dqEM-1`ycB0U)j?_Md3XoS3f%X-J=PWIu$bA{5Mwwfr-*A`!XdBs1?DY>?e z2JHtQW}jJMFVuTa^1STZO^XsVfkr&Sre{t*kG#|SmR=h2LmJ9p0RqS@|=foB_wTj3b z_`_ZnbNkQB-^(Fe(B}+d`iND+)QM!2R@t?L1>!Pgsg7l;N6%wU)#GCAzynn^x z>r6MUS@*11`157Qvb;DCd;Vi`rn%D-7F3 zS3LhbJ>&NOD|1sM8;@>dz9=G+Gy5i=_@f`9-B*||g+?pK=ADR=kX$P3u%9t0vV5C+ zaAjg|>A6Q7mNSfOjqU4o_H@pCZ8&4Uacpu}>&+Eeb88NG7#a(=cbTm{EAaYQR^d-} zZ>1Hfv#m?TLJD8lHj7zpxfsf_^3bdNMNiJu9@KeQ>C@4B*KtBi;(~=rYk#$wS-$c8 z{Z;RokMH7_!e4&NhFZO;z4m#3qRAuO(pmRJy;a|LstW6N33(lT@p-`w4IQhcn-oRl z^i^N3pX+>x;k2qp%3ar;r&cWN30Uhh$M@s)zWJ@6tECsY1h@Hfs>ys_QPnH$b2aEC zyV9a*P7fJgyFYcgvy}Dn4lR+J=Qu8W?=ao0KW&M&^s1Nj7XC9LC&axF%=+i?*-C%O zN8X1a^%D!$<##uzPN}$6#$)xf1WwzxG@K>#n@JR;wa6FS}}ex%q9A<9C6cTVgjK zZ@xY4wcC-O%WfEL?7m@jQS{QG6C7_DQm;g6#IC$kH0!x^m1b`=i{Q0r!v)QUB4$an zEUsOYd}NoI2y5VTos~;&JaAdMwznY4*g4q7oj>j3<$m>9dG9UsKrnn&00izdFgaL~z@eyjk2wHKKXK zSMRIcvd7?IboGnggNyFZOy7Oq@MvS*;;9lJ?x>frbWPur*;{P*Zdbv*NzT7pm=s0a z6B`$~zONTkoO<@mVTb9eZa!k`V>i!x;aDPf*=j}=AIIXXtyiwGt(g4dd)2}{?5e5J zCRs&{RZI8(UNgODYT)97rMZjWF&H-8{2v||{d3>fn$`f^vUYn2; z@qXjd7PFw9oazq2b$gdgxBFc2%9Lx#^xtiPu@7yvl#ORfndNx6_sf~`7row9_4U=3 zy1!Lgp{uT}O`j&7U~sne#BDL=3_X)*#Y@+fb&t+Ich@=dQFYeYsJ#`w@82Fh5&f3o zwEyfD+4Z`I5}2O0`EAT7+`8iG7u^~!{r@Vlv!rfr7VEaD*Jk@$m2$d=FVni_*tbtC zY`py9{lR<^(KfO^@^x|xzh|HQ{`g3mYxmJ*u3DSYzpXNz5MZc(wO(g_=2i2Ys3yh+ zxrIFL9jRuzRY5+h6i!~)ysPn>?Xs;oVc#b zU{~>xkBt*AcLXY!DFl>OsHOJQ9eQ`;qOMzGV)?=w%*B%4PRjQx_jIf?+yBzq_KyHx zS9`F%hDMHNeqW8SkdTI&n%gb!*^dnEw`X7X`}LZS_v*Zpesa1w{`W&?7qW5(nwvDf zEzIwpSpL`RRb=>CtHv!^yOXo4o>d;)D(7}DhrLRuQ|QpQnzkE{ZwCHly>Z-GCg-MM zR1&l1g`S_km|r(0HS8;E{rZVzOU1@53thK;OWF7RAH%O_8@_Fi`Y0zT-F#r~O0On{ zv(L^RdgSPD_4VoVmnJ)w&r-D7eRb8^Uu~%i-n-turks=gCug$CQy;PWhm=(%mfkCB zeOezN9`|-e&GDkF+0UJqREK!?7j1Y{@nv7d(jT`XXIIW>J14fNMn+*q^P#soe;9X6 z{wL4C@c;k4@(*tq7__E?mJz&-<(%VtRsMfs+M4Fbx4D~^sBlg6+Lq(Gsry9S%}IZj z<}6%tB4~<^s`n|4P2Fo+TXF(BoYIWHNhbf8|NiRSdB4wDe!utq-R$pibMHSl{(Num z_c_Jqf9@-O|9;N>S#PbBPbpPxdntKqgIaI(_UY|ym${ig6|LVnZ_RfHrN6&Uhh7h! zdB0oaw4;1&+=O>K^-Vs{xvC#uS2mOFi^XZ(xD_6JzaCzfcxQU=q{G|CPra|N4BV<> zRW+mkzV_k6E7R*g-)}Han`2$3()=pibIFyE@0zB6?*6&5uv#wg>g;o;Kb)S{yW(?q zC1))!@9x02S5^jx>@Lf-DtK_f_w5VzxmKl%US3`vY!))@!ok|`m4#njcFj7dpHkYl z$ZX!KYOcAefjI-%@!b27OTiFN?mKl4eOsPLyzBC7kmECzVdJ@+dyT_&o{oFKC^>kRiys% z*P7Aym+z^b_{?v=OMHIEq7xZroHEODB9E^4_-NPq3Y)ps)xFj&mfp%Me=YvxS@G^o z>9u2-Z&fpLmb|f5G%?nj#3lZfXUToOxTU+kt4qzk+IKpfXX#Pt#XGL|s59^Em)~1H z@m|f_JsVHoDm=Vw=ZnARxr)}`w6rX}<0@r*#|MKM6M5{f$QtU|Z+-vmy!VeE zA0JCi{`YqK{TAQyx3{L+{d%GNur%htpPWGTnPoYt{?_ez`;A+|^19E($P{$#n45Jd zZkPT4BlR!yZpk|z&HMP~sLJ6J_s<`UUO#_1|MB>e!%XU2B4_;K*K{rkN_F0GeeJwI zub-G^oryc+$@!=Jr1|W{FWzx|I$D+V$8=SVyUq7$`F>gsYpp-Vf2(Rezbtmq_1|+Z z^XLCMvYY8W&+acDmvozCP58aJxonpG(-uo z5t{caW|wN$sk_<#&5LtYEMH2wx>X*lkGcJ@_PmjsZgPv|jo)0>JvNn3R|mW~wo&`} z#c9okEpuCzw_J^Qd1C*Lt83RteeG(z<^E=w{66c(-$mNB;T*cZ^iGM?*Y<4kf5WwE zN{_lvRQRd0WfHsnMT}BQjQ;%l?q*T?{`>j9{|^o}hpdmYW!fwj*v==LajZvj3iD(i zr_bqe%N+Oq5E2dfox^$itc_Z{ht%x%_uuLqJ-au@X05FMf2F1@(+@eU`iD=Nd4JeEHz{juBF|5)XxexBUL2PPkIIhwNE)ZR7tAV;xU!>{jRmcEj6 z&c0qS@!^%V@9od`bIV*>zv*Y%HjSMXjeE;asa}}*WcGdbU%cu1eM_XazOfCjirqaw zUf*NszVk~9Ry$7O(2QLWG|ljpep>vp@TyPoEjL(o{wv-RSR&T#kE;OlnR)G8Ky`}nvsXY0RJzq@&v|J9_bgjSx|*}ha(*f%fo z{XXN^AGso-tF+>`c75pXJL`A5|47!zTcX#*YDVo7PuJ=xM zUSCmm)Wys4aQ#e^tZCh9^;z}mO1C|EB*gsA@6XBgOXd6ZUSFx_&tI7uyVpj4-@E=Z z=F5~^lIC}@TQ(>oGiFtEF~6P6vd+M}dJ=v;vSst^DvsAapRfPtSd)-aj$|X_)O4PS z%PrpAvew^gb?ct@{_NAnThb)sbuALp9IH0D>P40tt^d2>BiGi<33Dpn{7Pl4KBry% zVNUn6=yfqSGv3GN1gb<{_K_=YyjOep@7&%x+smr_dq2k2UDx~d<#+%6_=RGnKW`)? zny2*aEIF`Tc8bZo)Sh2grrpYGd+g}VK!-SFdp(h(2E z9>KSXK39eB?#$R1x>C+<{(7P0R#%=S*#X89nmRhtj=z{Q9m530!YBNQNwF#xyqXrY z&Tjp)&mN_US(iIMM;==t9pbwre#S<={(JL+8ltvL?>>@Z_3mJPTk!O_d2ju`{M%#w zhsjs&^}bKsyeE&TRp>lTS?zAjb;VBZM)6dsu*a|OSO3?S|5~j(|K^39Sn;=O&h*rz z{CH`7VaE=OtlQgkmoEKSF8|`igM-bPPfkpn_Dkn>V@B@Axq;%_oIkZB#Dss2``0J` zs%`4+vr9dW{XS*z>3MNM#{bZ&Ig&!3Rxl-Bh&Ob5E0TDS)9viy%=zvCbKQ!jG95W2 z+BNUlz75rTC-uikCB3bDaZ#-`Ot0|%)!T-4te+cldGZB$4gal@U!40g-_^QU;)dSM zl>g=v&YG`SxS&tyqFma1#>W1Ug>q#ul2U_do2R~2u*otULL9P*7}R)*B2L?U*5l? z%3Ku=n!#^o zZ0WaSj3+>W^xgJGD9Ust?{%`q+5;@y;@hw=+fm zaHR3(Pfz)r`|1uy)gMp8FyZ@q93H#x%&)t^zFbu&>^N)m+~@P`oFf)QFT8Q+rm6G3 zX|kUz{>|G`RKM3}nn9Lc9VI(ay>ec0>He zt7{&z)z20#OkV5z!QpN4>t83glnU1;IjKK4X=GfsbZ4^Vjg)e&L;SxMm(?!2*kRtr zv3u5BO;P(F514)Rb#+p9C>VKM>b6|C`?%AC>3jdQGQ2TLn4j40BJuOL<%`Rjtzz{L z_w7D%W80rYJht7|+a*K{w@1&Y=D%W*#$rC}VC|3YuK9h(gIt!F7QR`fnt5d}Z+uE_ z>bnE6D_$=4j5(~IBOtb}*T}T1SoU?{vt?g0D)%i(yt9SrONjLEZqq^2~AI#;SbM_5G%<*SW$|dfU<`lJUGoHIOl&OAIlyXnhM%MJjX*+#; zlh$s_-WoH_AnPXg$BVlxGp{KX*PdG-e(usA|2w)FZ+G~0I!x?*t9DMy!{223>(H-d z%v<|Ym45EF+Iv6pYi1hn>Ers%MxXc=**{9>-YqG1jA!bzGYg-coy~n(LjS>1w)+A1 znwU~Q1|2?qHu}|F!`5jvC({!iFBf03Z0(w}x_jkodOR+#j4V~Wa@(k`>a&c^5tobV zmSzGUCf+SMFsD-Lw~{qm@$J2b=Q5h)PMv+s-~9jCxOa8a#LgAgPrnmq)N<|Jwsn0! zntvwPAFA0{nIdM+aA{gv|Hr%E7x>5R(VX>8D?eZG`_<^SH z25-0NYRy;e+2#G&_{&?aeSRDDgYP(3=DTq$DV*@~V9%AtpI7+O_iep5!DD%s+1nqx z*^=bXFT3->_B)&W@>fZYZLKpqdVa(%_ZFFdYp!1U8o|(oH9tRHT;$rl!f&qCA)`Iq zvh%H+Ux$BwuEI2F&0SIF4JO~Gr984XmX&{h&#mW+(Z3qL2j_VvYWL4EC@9V~?`6HL z8E-M~G{c!0i|_I2{OSMm>Yv`m-4@KoyTm71^jS-NnXRneao>Bs&t8|qanIhrs@^kY zI$NK>>$=UhAY}}gal3wS7n+So+l8ySVUq3GW{V0cWkmSeH zJLVmjQBv)-dt3C4wJ%;|L~YBF3|$u!8PQhmxa_gZ&s}FEUUrJzJFEG3pMBm=r}=eH z{(U-9x?60oThEv32bbrcXH?pCHT~Eko2qH7haI+PEa#}$wqp93+;eA^i%)%UzWcl2 zj5QO_^vL!;Exa>n=kE_LEBI|Bma&#Uyy|#h+ODZWJ63JGJ!9{QPirsAMW%PJc_&|O zqkc9bLvO3ew@|bD3;0^10$hw<_84YNT+zG6W`AFf3(d@?8bj4Hg4(rtKZu!QwwSLn7f-0>`g{+<;a_>K?7hSwk z`6zU8wshky_Za$%xPyP7=u}_BFpA?nC|6E!xyX^AH+?TJuK3?>w zsOLXlNP5Y~S3e)gFnu}TdQ@v?Qp%dg=bt;IS>Eq| zJEv;1?3Cb^73m#yX(}vNZZ*B@l3DNosT;^Z#KMsu_-8X;li%B&hw35t$!B3tS7f>jHBn*}cvYriYZ~Za=h5_@sKkZ;j9Vf2;v(1F`(lsWI%Jt!Hw5SgT)36wdHlqU@_Kvr)BC-a zKA->awOi?StK|8%w(ss)wT9I`KKDdm13Ozxn#sJq?rNL9cTU{Wk)~s{NOH0Hwb{oX z)$Tv_sP1z|y36*mN~zMkgYguc=W2%fB>x590@bwsbhYxX{m}3vvzYbN@%xSUC#7E2w0s-7 z%kN#A)33L$udVgw7S~(yq2RZb4a?&OMIryzMce0JogcQQ`Kul4E1Bp6JvQt{hh^j{ z57$(@RkSnLZ)gjxt#4O9f5A=do{5l7)${cR>0gdj?T#p#uzW_KM1N1GTtaS4|4*O! z2@jomQ`CJ{Y}D&>ox~OqmTcG|yDwJgtoh7{`2ENIqc6XFd8;PICeZN3+h31`cfa|5 zJZ?#=PNDF53%~c1XWom`e|~cLc}devQxEVqx`#F0PhK9q(Zy!2Z=txeg<_cSTB(Qc zK7C#p;k|2-!@I}t+l^mr!hiZ^ILtr z19KkgDS1trSUFkeU(!_utqIR>Y;s-s#i{yV-!Hpu0xmL@>K@PPzC7H+vFdwEjDLq^ z!xFm*izH75GwXHCd9QhgWpWb*;ktUa0>gz z4X2Ep+*Z$G3O8KctrhwE-ww9w`RC5C&z@e$`jc4yVNTYj$r~Xd@t-2 zJ(J-y?JY}c!dy;mU%A>}r7X5F(f8KEp7brdb-NHe`pGq^NU8@JoW15uc+J4 zKV4YS`O`OF_(ZW!8atzX?Tfy-3Nxj63m=?a^JSu(_%{ukO^04oel1vct+un|i}_Ab z%bJ%HyC$kTl{y)91kB}Je%IW1o*TpDv*y~1viJO+_)L`NzQ=~%Mq391p-)T)GWyj; z4_25N*w^`AEyvpu#hRWA9vP3fzUs&_k|8=b%Tmuc~Y zTcR_k>K^YsmKW_eegFO}iQ1oQcb+hv@O;LZL*f;dsoaX6&N=M)#d~J)fu0nlD(#-Q zEC0HEW^I__DcaMrrBlMX?9hc(~t zo>ZyuL}Nyexr#9Ne)Gi&rkR;%jSMgR{=wIs{LfCk&vJuvmbr@2iL9u-Ri<0>?#`Mt z`6rvf3;&Ehj;O6_eOcGmybS#=a4tmb2E(E~;t@UR@fT;G@h|?TvyV|)Y>mgqEHMkk z3D0kYF1y*}s8$we^C{&2>sw+?#}s}^=C`Mr9_(Cx&^qS#!QXmZFItWW{}$%DSTn8X z#nyc_&Bp$RTBLq6n7U*6nf)>EgBP4PjAW4P zIXGD(=hqFvrX9lE0h8yQi|07tFa7UU+Lwx_E>A&xd4r^A+^=UViqM3EyKF?gXc$++f-?iGev-~BudgM1* zM|0Nk|J73Z|6xsu`zD)ZZzJr2^Iw#1JN5TX@^{X>GqpOq-3`77{+)jGciZecZ&WAB zEiEcJ%BH`j=*>aRm?`>VyGvdQmA<<(^V#|N@1xGXt$rudAK-H?)1;`TFzdY1`AV;j zq}J)iJkc&G(;^%~&Y!D{l#AK&+0grbPra}In&cG}x$eAC zTD&QHo6FIezna|*Qu5ATSzncPx=HY+>C|PRnJYK?CS0Cy^!;}>zn9ulfnOZEe zTW-{q2vb}xYa$lW-ww?{$jT>jp+7NXQ{kN69aB(f1?K3~yuT14#rN()5DMtXq_Nmc%-;;z2-)UQ^ zdPOyUN_%u9VP>+@#07%FJ912ul&Ye|^R*s<`goCd~EIf7f zP{zTm;$)kN(#xhkkPZ8#c-vCyb+xeCl^bGxt{-<4^8ULVz}wKMV5P8Tn&4x(L?72} znu~t6wO+fo|IPBW+D_IzQAbLS7&URNb8Wv96~pfF!)ud03)88DSzJ$EwS{Qq6f*J^BfmTo-byfq>#_+}D6W9l)UoetL9K8g2z z5NeWMv^|SwZ~ig=`G#4MO?j&izF!y~ak_BsCaKmF77^EzXS(j1s~~dlf_v>9gI|r- zQu+^?#0Aib0QCZa8=`T3G_d#C6$-_GvEnZ2iuvN z*yhx}#5$98^E~Q}v{S67>~|=$D!+Djt4BU_kL)|&l|EAwm*myX^ndTM(_jBp$A|4% zrTKf-e~ehBZZ_?!iO-6SvVSWa`Zu#^=Sns<+rPFgc7lwgkEFC(DY$;t!aI{`#G8anI>5LE#_Y$-d+X&*@%duubBmmQzjE8B4ju zb8r1Mbj}n?`xNt79bBHRdU>k$JD;iMWt)owY856;)%Yb|7MNz`_h#LM4rWfvo-0ek zqYVIX`0tmx(ng!Z&WD8GN~TBV8sr-FBMf3!m8qfh#sYySlmP zo!B<1+&kactE&GLPnmIoUvJ^|%bSiCZz;VQp!Th7`>iiu%#W>GXExjX#?S5(oeq|Z zwz)n}J!lo+{=`kVr8^x}4EW=pJc|Af1I+|H6G4gNgX+;nBZ z%I{UKEz4W)Z|K>>E3B0zZ57c``Br6?U@F@e)vy`-%+>Rjrs|mO31-PWGkbD=$2Zqp zr!)3Vk;l4)7IwUvIk&y`h_ugnUVfGM$^H^s&onq(){o|>(=VP|bSQl7tGOTVywNE8 z^oz||K2?~*P5C{Kwg2u2zp#8x{e@+7onL(aG0`ORQ*{ob!o9%O*4B$HoWdGr|2I2* zxA3n|p7?*co!#=!%CFzfs&)E)YsIb~u6B7*j7?rAJPukN-!R#6nnp|P7Vi^oEQj50 zbROVy{W4oDxy@lV-;CS4P8hg+GfFZ1JZ*#J&e^VyF6Ek5ysea0n{s_w9pABX-N;}5 z^Qs*5AOGTv;h(GdW?ArAt~C=*q&$ii-+ArBy4oqV$Njd6Ue4rCC{$Q5YqL{qN$zOvoge2A9R2cn&Ci#@Zo0)+H>`@UTYKJe*5Mwno{%ZFA+vLru$f#t zzVVFGUB9^d2``lM{~Rm6@bpZIU8jN3&I2xw!#H=%^x|&|k``mz{3LdN@Nd4{jO*)S zFTL7+zs_1WVnc&m#RJA7DSI7(+1DpVZ(Dy;GWm9_tCd2x`1&QW%ZoNX65r`@<-Lj9 zy1S*XEDLfkf3=<=row69Clsl=d)jfOeT>FcuTHtlShuj%^;l4vTSe9FeMbWJv)j48 zEGpF1w&5}OFPOk`eq+j9pBtQyX3E-F-8p;Mxn=6zDQhG)_gs=(-_n(J?MnBozm045 zuX}so?0Uz^F;_m_yd!tK&f&!EsX7@atJHpOG}8b2JGqeI-_^M{U9Y5A)ybrb{%i?M z4}E^Mc8)89{x#<6OPRl?m82O=^Glz!E|}}`>w^-^deIjREjg^yC1OHqEqsj4n)T{$ zZOOc{JwHBe=j(kNirywpR`bocwk9%U!-D)8-q`m`_pysHaTxD9E!-x+<7?NU!_;mVRp zJALO_754fW+vok@zaM49uDIy&<+nw%kGXCyl3#wxp}u#{v)kKa7P5%FGq-$s><>q3 z*t6Ei6+seZie}EDVmFo;85@;e+Vo4JINRAlADnOJa zY~!x#axUq;vPV~xs$5x~%d(*P-MzimM~@!$eBIX4av?f@uPbN|(X?Q3QKo}k4QEWx z=1rK8aMa=J?Q#wcx3|_g|F7yEHkb0Tva^e`Iwz#+l`-)IXxFsvay>1UCQ(KY&V;Gw zF8f=Hs+mM=4E$Th#&~qa+=CzOFMD};aeaMvcXrzOdAU~4#B`%Bw9D6d2nq@=OATdg zbudt3;O|n;Qn{qBv#nv`gR<=@#U@kt9=CZkZR0wtFpeEc3naE`OTF4H(kQAO7BF2e z_QjD-;Y&r8pPw!56jraAIxDD(xinBwK!L-j<}*{T{8Kqw!MnvqJ{b)>;iZTDL2g%n z(EM_nr>Ezvx}TH%?F`?Vt=akf++6RaUQ>;9S958wG)Xqf&-@sCyG>{H_0V#E&KAzt zjk-}%ZRRtMulqG`D~E>L+^rStckdo3NxV3B!U2A}#rzu9#z$+OP7TjE(jh1!^{P^d zcdzZ&l>!_oED5@IHpK~_N(tZB>C&*SKfd8EIvWjdwutn8DX5(?<93{RgxU69bbJfU~+wa>%;f= z3njJ|?@yh!<;jzl#*FGWH#UN|qCP$Ssb-r*3}_6jVBu8l@NZRX{Q3^RK38$EL8@K+ z!OsP&g7>?h-=?{x>1gvdr_@ue7ks8YUCqJW{z}BslyCX3$C=hyGV_$mi*1A5-oDrU zfA;RzKOVi0<=+_1h~ZCqt?1l#VP)|0e>)X^u>JjfVWG3BxNZw`Y15VW4_Ug-ZCzN` zU%$a+&GW3KLOb%p|4&gmHC$@rLr@u_qzjIUK>8tMruDAZ*{|gG7tpCnSsvf8? zot~z9`Ob=OZ*Qlsyjk`2)x{~A!5mhZu3U}(nV3#!eS7IXJww}Dq;SU4msgBWDPEE& zJ9{)TNGj#96Pwm@$uISc@uqISIW*jIX!l?rFz*B%N1>t=)7dZK_tN$?JUo+C{qeJw!vm z268dp2Dw~%(}C3mZ*Q4`7G@q>us#2N-p*!K?`c;Sb#2YLd8tS?G(d5IKmdmZ%O)|# zqboLx<-5Nxdw0iD_t>{5CnvwW9$&xpPFYEb$=+|bvcLTKe10{H)U?20R#7G{#@2>< zfr2@K$?4_a-b7|yUdG!!arR~V#lNQCFa7`TFUvEV>TfyEtPY)TJ>9IJrRDXx)h%UX z&CgFCyH*r~G&?yc3M6n?oLZsSq#M0$&9>d$y}egA>3@B5b268>o=n1FzJ2eOEL)cK z=xyfZWszkYFS$z!3NAE!ac^&RaK(;OuNFUEWCwPJgMq>Wjm2?03KUKA@BLX;*xuS2 z*e#~JqWJl_kj-hnPRCSTuL<7RRk~WtHRs=-pR<-6s`6blV}=A%@v-=Se}29V2~7o? z)8M4wAW$$RFnn#))Cb$Om0Y%icC>?fNL}LkdRpJ++xO?Bg0_cOetvebk(oW`G2@)y z-`}rKTzkp?R-1n)C=f-M7+V{Xd#e8a`g*JH=BXDG8ds{_j!j+;>Y+Bx__NFL6c@?Tr-f6J$4Vlri3-LK55hppl(+?v8nI(eFuXr zhy5ha`~>ZU{5K)(Qm|Io8i~^P_vUVJ&p|I^~xzH+X0xlqqRvz!|a(&l+frc4o8 zzpMFf@#AB?rn2>i+jvi|oH9AC)GIU$nu6ymJrH(V`(1+3GC{yJ`54d2i8JHwy%FB^ zcK5qo-5>}3EPucEd(cEB*E6ery|F4gb-Z8xy36&51q#Q^{s}a&T%WU`OH@1S%+B1~ z+gcJ-yF|dr*6G3i<_3Sst=c`+-``!8_;zP!@yjnSFRz=v=U-o}*`dTkw<7;*M{QY= zwuH^u^v~0?v#)=vJ&+M&lgzv*f@M$ z49ndrH@CKL?fVX%;GV?b65jkn>iXucQ`7a=8>UAbb}m}r0nMNyOp)hS#455Uw-jD| zbhO*_b-KUq{Mg$(%iebgh3ziOJzK%YR`Or8`+LH#-jH}mlHM=)L3^A z%GI0M+?bsHJ74L|13?kCYj3t@UA@%vBtc;r!VV=Crmn! zJm$Bm`LW?!`I8fZZzZNZ{rK_Yt@xy*MQJ+6R_B-Tt+bk0%cYmFLB)N6;NQ>ZtluxW zwA4HMc-q?)ub~NZfxrir#s%qD!q|8Xt?sN5;N)S9_+tO&$ivxhf3eRsH1d5}|9{$v zjIe^BRA_Qg_#p7Z-{94O=Gd=@aJVKA&~r=5Z`BmA|3G>BPg6tEmAb~*yCLuh8F`8h a{AUyho~Gw8-

*NOMv|8$+95q9w0o4i|AbH1O?yZMqQ zRkbN|k-g5*u1N>d-?gi&G(=Q=J}&cIbDyQeX$i%or%xONRz1jLEZ|@+Wcd8$%O8(V zry~!o-Luem{`7>O&4xFx^zHdKKOjlXB8_p*RGud~^VNzRzuawpfAUpznq_+bnQ5*{ zl17^Z+;_(Ac=cc%pL@*ny?z&OKaDa9bQYcK8R+wOP!?vJ8=1D?G*Qx`aHi}RJQ^RSeZN%>Ik#JGI(`gv<}rG?HMS$8SS!QrIE!c)%Dr<{HbdD%!b{!x63p+JmJqt_$0~M<86I%YiuZo?iMqN z0`|DVE5*m1C!bU)_?h6&Q8{OxXvkZ?pUh3w0#$N1UNIOSFK9T&&}x@^Tt_te*`1=| z$$x(Rp4i*%xkpa+wF;d6rKo>|?7gTf9K9^Ne9-Uv!p&dk_cvItF!#TYOd@dwPV=1XzY@ z*&OIOy7RfUpT7gAat8any;V;<)(eL69dVk(P%gk-IkzfBPCAeO<)t;ZJ-Ur!54H&< zH1_p)aQ}T&_N332J=wS6YK}>uqV!V<$$*7UQ<*L9I4Jj2eV+4dj>?S6dFk(&Bz{`D zv9C~HDWQ8Hu7Lfq#N=~^M^a+fctmtHwMM*SS9qu1c>RTzlFd$;6J`1;6Dmq|n{GVk zK34tZ!1GyQOevlZ6Z3kuGuEX_YK1&`dzf+Jl&lzdSDK#Z+{8{+vX7QG7@#!^F zRf;OkOUfSA=@#CT7h!Ff<0;Sm-9cGp@}%&T;aqyg+0&T^;y31a}YJ!bI@4mp`fQL*A5@O0>@(yo67n2 z{XDsBu~5IwlecL>H5-asWBC2d<@f^wk3V(j=WtTK-N_|0ompW&!-MB5*)OkHda(VDn7qN><+%cO_ zbI2ohhBa6J)b{+j2OGAhhsrP(Fs36`82 zcqZ)*w^VhP&_3qoZ#U)I)F-$4md?GPwUMD+@^K+cN}1((mgm=68KQbx+#j=6-rn)< z_udbOWzsLdOzgNVBs{ZHd*TE?rl!K{RXxHdo;1#pTA)xn@ze9uwvpRD6#cF^c=8~7 z1LMIjj~4bE<>KyS&hHWM+V!;IfW?6)rIO6o)z*4yd6zkIxk+}(6o6VjvJUJ!9``+R zFgueMceFS? z4YSKuoMPOv(r)hNc}3PTS5maoPPtv4W2n91=}y&lnZCu#_>;1Z?yT6H_cP;U5SM`2 zbLN8EO$^73*lp&o%3dL`VtcaMSFVL+29AHCEsw7}zCZBg#feJCHaSX3s&WZ)D+?8V z@8CYK&diX$&OK_vp*4qsg_Kunv>s+)T36uss(4QMJEO`KQ`5~E1iZZtdGt6xyH(t< zhw-50E9;L3jxy@B_Gqcy-^V99)$W<$){Y0v=jCpy&j~ss#PLnjU!Qe@TePx`@cc)z zwH)VHF6|17kd$@SICojiGr_#(h>YL_i<7_jrt$>X6x#4`+cfJKPfxW!WKekL`Me4V z6Gp{}i*<#>bQUXaK7Z!HwY|5>MXk>HRHB=o)b%0#RvZ&&+|H!$78AjSPm|% zP-a|QEU8+v!9#;XWxHR)bKdLB>s3y57RtYiQhYk6^~AX|OvT&n3!d;TzQ4khvsmrE zu9(IX){_N{(&2yCH9TOt`B>t?tlU!`e*YOJ-kf2;cxV#4Y=M!H$Ll{UqZbHS*(knk zZtD!S5;}Emah~{lxjm0%|1vC{a8&m~$BFXwr=kmwpD}LiPqO4b$ZlI4WDsH~Ipv6u zoyZQ$gDMl;te7WQ^%>YIdo0=$x}CW-$C9D0E9g7D%`@e}+tWg?@9?!0x!d~``mq0;T`nMA*}M5^Q)pr9-8qvR zjH=`lveb5LotLpBN6GAumxr{3Svm8e=j#2_?T#y4E?<))I>Y5t>eY_pGQzuMKKB$^ z6$TwRU9RPq%qEtj^+v~Q-hIat7B7!q5qrfnQQ2nQnu8u(k)Sh})}Jz*cwh3oAFFq^ zjNaQVZ0Ap(iTKJ`m9pt$6X)YkD+FeDx-^CFE;$Fmf>Mz znZhFcN5_hZkK>%f&o=i$&qlf96;q5ElqG+DY-+buk)OhPK6d9h_O(pz0h`_SD^Cbv zO-o_upJ5o2&?7T>&Xs-HOD^?1jGXe;fA{wODUTgUJQSKL!;#Lv7@Cf6??h)JmKV%o29j^VMyit-J)ADq%A#%u_j)Ya0!!OSw}3q$qi zn~mm^I~gV{)}A9OE83lC=f`KocHqfhE%UCM4|Q|ibcrTMN=6&s84V7F0++R&L;rXvtSz<+DJme|E;nQ&VFmSbaTd@!(&nW~1(z?Ue-8=#uwtiI!51!v!@ac)J zP=m6{cJ9VGvO5+2K7Idwj!@Orrik4Vr#AB*(CMjU^qLpV{GNHOqikhoWslA7RTNd-uWub-9B;JEiqk% zoM}(Cg)=X=H&86olB0E>feK>$rf+d{$5vqq^WrF z<)yaHTX(dD1$}CFOT56i^~AY1>H7+guVrxO5!$un(^F}Uqf^c0xHUs%Ca_t5eS2?t zl1tYk-8C-`OgtBn!Xx}y?7`zNCro+ng^v1Om*4!9}nZMf53cUiGxKZgoOvwd&%$m? zNy~E_=h=HcSemk^iOmqW-LhEc#`6rDk39(jb%|Gg$pjXtxlFH&*Jr%a!WH?sA)@B^ zvpXCN1s<|&TB;puZs+-h7tMXR=~xisNoDKV*ZXEDHwSwyyW2irm|bUKL{o%j49|lS zb&I^^t;b`+3NEj|$G3LNQ>RH)O-sH=#5`d9`r4CWv&Tzm*#ir2I3yflx>Mk;@L1N( zc5~Mxk2$O*q3kwle11&d9Qca+_F5d@Q?Pj#>p^|V(`p4~Z-0LKi4YM&b?vUFv(K7e}%>C#J zi{LSKW|k`_x%NCPUvWcP+D}BFaL(uJ^Q0%`aiTIr6EfsEA!zrBtEHQlVG(p^}5jLvEq)iJy5^d^zW+ zyj=OpVV3H3JnP<=34{o63%D!1Rc&KD_1IEXy zUow~AG@a*KZzq0cJ!X8PsDioY633q_M{fvuN((hS)}8lQc>%-3#=gqOt1d7nt?`yw zqcZX8fg-03_ZXF*F-uxEe0jXmV&$V*H>`FwKYe`Wvrj^iIh$ewL+{>=ea)9vF8gt! zep=`R1?Ie`3C8oHWenAA3OLoT+@8wKbeWlP%Jx$Sb}}^2Gj2T2@bztf$bq%or}Nb2 z6@Tizxc%(L&6E51ifSEI_-;H2ej>bO(;|;^mA6(z%sudYqup`!o_U35Lz6D9^i)ZH z`ZdJQFCbS^M$SUg^5scM(F#`0*}cop9(Qd0d1d1ZM|O60+x=F{?{I9l@q7QAWnTQ0 z4VIw{Z<9EWpYr$lDwDo*X6pPmk764tBacaJdg#wuIPI9@Isdb-*tGhm-K(Ek^rKXg zh3WL0!wm9{C(l1J(vdvvwCcm0)sMM;zW?LH@cP8_`PbSSJRW#Y4c54`GiTa)2@8g= zEc3h`Guy~NWGYKd>X6vX#<{yNhgDXbA<^T($76n0L9BCU`mDI*^~BJ3&!06hPx}~> zj21I*ko=mVH9PEy(7HQ(dvclUB^e(2Ree8R?AaI@RcPkSvFK#IzP-Xfp`{)Y$}5$( zJ06XUocv_^oQ(nU6}N8u`>DFE!MO39rOM~PnR(IQ^*{P$^czZ0LE5yMeu znPsU{-(G$ueQ3IBxK3T_V+Prs2VXb#-Pz5Ud0JaElkM%|d=;K~;jJfL6!spzzRyWi z$jC$R&k|`#51msB3VXiVy!-OApuE7l%Wqj_*Dg_(d>b)_2TwkPTO3e%zWmWwIlt2# zcXHEMw;SG@aWH1T?XIVrUry}NZse%Rt!Peq{BDv&>ZY6Qb9kEgYZ5Ns4ZONIfN9+& zKjy~k&+ayq$?%`Hbz@p|RCLoczGdM#l}p-!?tGOz7xHADb-B#EV9Su(r+OBrw6QN# zU-6`e!M^>I)&sYCgo;dHp zuZ_!8T4G%}dp&x0ZB$_kJ@q6ZC0XJC%bbLdUMpqtwg(#Cz47G3(aMK>b?^Nc51jZa z!tzP5NN~{v@y<;L>_QZd6~8@ReB$+`Sx@|bPgYkho?utTAk$Dh^@OD)OX)$IXS4JF zt@20@b6^W-KKO)z^MFEO4})FsW!rF}pH7}Jt0!MGyCtlyXkfs>QpEWE<%zHj91}Yp zb6tFrS|t=R`O{-rhdV}v$C)orb6c+{@FXvBd(o4(?0w5^zMk`6X7TE=iovnjOYc0K zxm|$itE5VUBac-T^MN-hl{Ft#*WV9S$qD|X~SvE1v(5d6FBWV-*)w7%H8Zea_V8n-x~)`vDp+Hk$J-8 zUN@J|LDuEdBK~={OWsLuz3BBmBD4waf6hJj?L9-!C+{=VH-B*N2Rc--%=Uk20elcJ|8yIT+SG&$aqZtmaPWWgeLoPrI;K9Exx`|kbJOApOXjvS zE6&))aeT+Ww+!YPM&haW+|QgbTa@yJU4`#4OaFNm$qO+@KW%%Yq|(4|Z(O4CR{igs zzQvbCnGKpuJExycO^7`-fm#0H%?myA+GWZfn>_7vmMEJ(VO3)vGtVS}+?PE~>^3P? z0S9V696J~LSjB;nWh1-Y-m6utmM72oU-Xi=swObQF*HZ;^Ri3qb^Dt8nwR^Ss&;u# znqFKPY=5GF;n)R^SH_3ams!4?lj2*jG|G94+heVricSeB7AGGwd^~6Q{DQuM>cskz zzzKe*=g!}K?t!1@?Gti4{`eUb2J5tQ?R1lM(0Ory>AuFx(?Ye!aQYlnk-Ij4O zlI=lwnUPnM(S38r*B3tc@O<7eQ=<27ICCQVyaF~p58EFqkJk!1Sbj_YUZj44PrO)u zvQ6vF#)g6-ySyJ~{bjrkS;j^-tvt+7{JpMuoo9f7C9`^uk?SmrTa^O2Ne5QMaq~Pc zc-!3PSMjH1k;@dN6OE6w!q4z9TiELr_Aq$Le5#Oq%+|)j6v+1|c3P-{;*&nU0zN;+ z1IiXB4qCqZlB6aEVWlTe^{6v9Nwg);+xgh$ z@`Aa2Cq+6=&z~7y#CX*s@HF#wxtU*=9hiK^y~%7xiqZ3@+Pj~I9XxQXc=tB;doTEm zly+1qN}J1U;1S(<>n4|9rTo1oGS6>Yv{`)9I{DNjJ*zc=*_@eoPCEPRceceE6ZWh( z)HcxTla>xyVfi@Y?g5#}J(DlYTiW3C@z~DB(54jLv)i1E=delI2;W~XlfEz~RGz z>q)_e?sHf zj!e^K*kSqV#LmFR)`N*Xb+NxM?|&5kpTUmvKSPcBe+E&nH~jyveF~Yle5x6HYruR1 z1MV$F1-75()pE+7OEj06T6@~;&E!ukzJL1)oBJA`$W<&m`fV!v8P#$g?Ui9%Yb<{@ zFqauO&M7(YHi)BfV)FLbiPHm?a<$#u!Z>-(q{6qi*GK*FI`QeCN{L#)d@aMDMV1F7 zY7eZpd{TN)l6ga)=Bb)(H#D0TG|0Sj;$TV8QVr7Qc5K zPI;&D_1CwhpKd*wxvZC|MR#IbQAF|_nXe}$pZCa=sx_GWJUA~wN@9`9`qNtk`*vDd zJeHJ{NtX#Za#W+DtY!^M%F26p1l){lrDd87e}wR|v?V@K+I^~jyR^eO1GjhXF`wt{ zU{`1BP&D)q$eCO;W6mbw=HBClry7sPRrB;aJ18}ryX}&7FJ->P6E@XjB6Cuh+}R7C zvwZO5{W~wuZ2MFlAEr;1iUq~2 z+ozRtEQa+^$6W8G<4=z{s4KUt%#WXbCulMgd!`B-TSuyaWdHrY&y33Y3a1_xD4u-s z!Ih$8HAe+mI#2Po&Y4#@C+`9C$vE+lxUw&e*RCe>1MP%V@ny zn(d1VJ6M?}Z*4eMVELry$(+KkNA9JxhB!Ee>G-p@E65mFGW0Z9J#U`XutD{ z$ljEY?YB5sTUjT|HMB!Alv#gjc3 zDCe7nSeMPX&QT`2Uybj9qs3Q=I}Vmd?OfYDT2el%^GaAd+}*;rAfeWP(>~afCEK>+ z<}?fIqMbhv>Q3Iy^6sR~2R7r$4apsjItngambZIyIbJPhkTEzRp>BEL<#~|<^9)js zUiN;r<6-4Vo;h=#?|ge*(q`pRrwQK5Z+9k~GyC>%!||08xA@9Fzr8Kt;dLyCx$R)8 z6URyRXVM=E&#~uKysFy&W}#BDgu9Q#DOT1gbC>89oMARR;@BPgQ4D_*8g||FtipRgv;eYbFEVC+`Bx(+dw; zdpt}gPiD+4y6w%scVb`F2jfZBg6E1o-gQc;TxwdykYLHc#Hh|YiBZwv z{KJDHY);Pa4l?sJtW=j!kSl9oeBEUD>6cJLk#wVo(rqD?v(prWd(13!7WWxnDZV~y z#-5@L+Yj{BMXPM!p8C^W;#g&X@#Tqgl4ctnTVP~%_Q-z*PE{wKkG%`z<{J6$cp16m zbMDR1(1krK(qb4}6&NS?RWh$7W9YKd}clJJ;lvp+Qahoydrm&WJ`9-vto>W>C?<6tdvMAdpf1eLZz|6@i@cxw7ot19JR%Zw>L$1GWnro?e3Mb4Ob?(QAof3mewr*lmzN^eY@d&945{qZYuj(>_j zGd3L9a#A_kXk%FJX>A^UgSmU{<}?)cJeOfAj^*jx`R8a_?G2e07M^t5#vrSdCm+3c zxdzIfNNUkK`g8$nQxj+Mu}2oR2j8At_I{FB`onvS6B`(k_}R;KUpX+#cHTbA!5N<- zT)XmlSH1-wuq`wYO+0Lyn*VFoz&oZ_HhZ`qZJhrs_r@vN5r~TQ~ zf)&iQ7Y@`MY*0w=DS5o}ylt3AQu;K_*?*PUi;Idx{e!PRJFjeOU_3A5E8~iDmli3j z^fnZqWJqBDw+usn>e3O5SM)2yQK6*;b$oyjt>(Lta}<6z}%{}rg|zv zVZ;9F{-P{_Q%)=6jh`uoJWmMVcred!3)6xpa@8T1RW7+G2S0BXyyI{nCuI&_GsBa~ z^X|w5&zKr1mTq`PG;$kLaZkf-!*k)=rE3d3co~IM3S``vB>ywCX9WGOxZN{jOv~zceiNUeLIS0rR`5d1_gLEGsKU4Qk zWre6U8C^#jB6=oCFF0_{yntP%{JF{bpLq$lLf##BvQcIRhP?0X%oEmANGI9QN+l_O23K&Et^t|I} zbo?28{n_*7A9g%vdD6e!^re@vO@XL(-clZjZ!C!eraAuf&b z_L@%{Zdsmtcs{s)g~;sV*kH+J zu=wx6-OLNWom{}0XuaxZ^y1px+a6Ea-8A7&`I|itD{oJp@L`gd^Rb#^Zd$9iOg)t7 z&ur6sH`>?O~1J*)4Qj#X$P{1iN?sNre+9WyRlHWm8?&xI*@!;=09~dQ$ z+Ef~@Xg&2rsPcfKA0tmlIqL?;FW*EH95#47XefIy#o_G4-I7}D_biy3o6j*G#p7}Y-Ua$T{oflN?+e^_ZWCuNlfkWp*E1RKJhyyf$?);OdCQ~zD#a!W z`C2l$+}kI3vLxs$%NB9k9*+~9bKsKB(toL3MxN4r1qOzfWsU5Oy&i;dDp^ePJkz@G z-G7EDtPkc)s_GHmzVMiBQ>W6DBopv#5{=;(~!=GOlHY_u(ZqZjdrp#n&TPFIm@qmO% zPl@fXk4;Z~-c1Tge)eg_@yx=P+f^Pbd~hprbE{nLuBNETUa z&?9!q(cO7Pd_`_<;mzmcEDoHRupvF#Ch19`1qB6$6Z;yzEsH)Q=CZxd znSGkXy6-If#f>M~_Ze7KHODIL@L5;$-msi;N8@${@dHnIm^i*DD{mEJjEd;qc5rI> z-E)`cp1mNr<2lP?_2o8&K~s91pKSPahq<**vM%>A%h#tHU;hkpYjav_y`gq-WsM%^ z3C+vuI>iT=CC=MiF;bps?y>R20<}kMmai{7-~Y_G=PM64lW9}Lqfm|Klef-SetP_r z#Yy!!6FkppskcVXysjnwH`Cf_0wcpGr-{4e4VWkJu}1|QW9fPsv1s3ONp+SF#`CJ? z2cLM{HL>MwLGF~w88PiIj1DkZ9xEu~u&|K%vViT#x62BlyvlFvcZZ$}w~>)sd)&7F z(rl$8uLOi17upDT9(Z~3SW#8qz4kS_G8s{Jc}^P+^)UunJZ5h&aFjoB^IYLUiO64vP0CZ6^bX#Wydu$dTxG?v5Sb=-o4$EhnRoeh+c>loPd)L( zJg#22&%n=kzMHnwS(ypbJ7iXt#7~!bqA7WReI18g^D?>5o`q7I9&USk=Zv%dIm3pC zzwbQRZLJ`*z8r1{O0Ha4@~$k(hMEIQPVZzABlo z=VLx(sIq#<@ICFBdAS2+ni!u&wxdV1n=- zCZ|`I>}Q1@2<$i?=bdYRxF`4JZJSF|BL3Vi>GAmS^YJ;B1shU%BAy6O@?(&h=T_|T zB8Zub|IPv~*@|1mlVbQ7Sp+zq@2kEXdSTNR_oPLi9!xl}@{Y&@e&^eb$K#loOhThK zU3%sjGwl|eIK!X)6$0!#U+@*5byf_YeMYk_T(Rc*0~xupPki^C&p+(i5G2GL!>`kD zWRn3)GGphvBFngadqN8DoZYhMSmg1uTN@v4PcN`N__x+7RPRA#w#EidoezhKiX2Wn z&Qh=up0nYY)yFv>!-7qM_GGYhS>8G&(ek*VfUU5haNgnNBDd#WWK;gWaKj42Np5d` zrtpQK$`Z*emyFSm`yQ}JA0q?mtAI=FQ}n?5B-b4|k&@#<4zD;`7a82<-#p<`<0Q#)hPxukmgg84nmnF-XV`K= zZTi{%CqW@QG_UrbDV*2n^?d&ZO9>s8p5srHH5_h4Gk7p2a2$Lrd64D#%j*Un%Q(fA zzt7Axo5W;naFRLWn1QYP^EuHGO`gKhCnm1xKKXkw_nn@?gDk(&U;8R13Ar#ISub%= z-t55+n>Kk(bqU6ex94q{%=lu$;vLtRo zz0N`6j`)h_^Y-w_2YPBu*nMb|)(KJnGwz}4t(GeD>#7p?G$r5Vo=G#g!JU(P)axDZ zaRnyMgU2c#FL!p}3#(b;6)HPp{WLbdN4Gm=+uqH2tnlrHf^f?2=%!GqGu7=*v=*ao-)=W|pJbKKO%{*!w@=DY)hL=5p%c1m#re}cPx#ox zEf31IHAqSbo%rlJ_r!vAmkPH=+eYV=eX;pC=W(C3%9(~!N4xGYZf)}jvo&Wtc|dti z%5R~pfR!@MHFZ&}42CbSywfpfp7x}=^ef}CLb2q~(6pYKBXb+4Jb%}dkT6H^0w0?O zQ^s}`fy08In)80*-tC)H_(t>Nv28ym zMNCjUp!H0MR?D;q*jQ_V%QWG*x~0v32F};7U(ZUP-z-0ev4&HkiQ|^_$L)Q4go^lOLMC!9pQu=-6Ouap z46EO{#S_X44=OyiczaYX!J|`Yvr6^$T@U@34SDt-zSwwZ&X;5SwyPFR3AraDR5i(n z;|0@($1*aHB_tnr?d4%OVyM#K;USU0_4fNQb|*dy%ReU{8>R^rF-=-JafigecLhcc z43q4YG&LE8yiLqjd8Cy7WRqYD5eiv(@I;)uh5WosA=631R^F#JJd9_UIM1BnNrGv$=|So8l(KUZG)M0dN08N=0zbK&Zra6poMvKtg51de+WNCRm&8wzUHibp&T@rVCzJd^g#Lr_D-`^fp`OTnnEF#(S z#x(W02NE`G3oR%paCjiZo;c^yiH)DNHr>fR8Mj>d-D68x|5F@aWWF3uoK*QRS*Pn> zMyiU8+12OFi{8ECSN^nIdPc;wq>I}8I@3L+6Q&4S_7|r7KKQ|%MMLK4alht&to}mAOZU&5@F_*$wnNM( z|IqiJJ~&vY-&)u^F-+lcM#xDn@yc683!ca>pZesvZ2c`Irp$DHk!i0QpY}gxoFY(E zktQi|@SpO}VAV;+&!U%~lIfpXkj%d5&*2{%Pg*|SSGlBY;xo0dTi#4{PSP7>JUG># zF<+KRXPMxxtmClSXtU5FCyp2Hf&EkZn%P+%&neMi-Y7q-XQM#yx(7^88g6&oVVB91 zIA}LRR9ZzZMr+;K1CLc&bvR-eFBBhS_&l$fX-UhL51U+e2Szgf+z?Wwap&fP4P5T) zt12wn>=k}a<~?F|_AooklXv!p2Twjp;nR%aJal`tv3J3%cSScPRUS(|kSTfjv#=}X zR{iG?y8}H7`BsVutu$0Y}shK@n;@<9L zhBlp>iT$%}`HU)FzsRyQ_q9H8>0OKA(>bDf+{JSk*x2|uAJpO1{J4FBq4eiYNlBZp+HI54xE1?KgUqJgh|YY@+j{cENy`H-&v`C;GtZLSjZ3*r z_uq-zP5ul|{uWsG%}k%L?qR6SwEz)q#*H0XH@J>WoY=tea^9m}2AdU&CPW|A=rTU_ zj?qBi(IeLE}$W$1NUwzP4g^vGm*S1qr7=ZF{t2?haYD%RRX#p35z2IWVc{#WL+uPL&_3A#ZNE z-wWI#;KzP>;q#?Vn{qwoE_*$H2LEJcd5wd&44d3#tAcbk?eUq;U?5TIC+RHH{D~*I z!9tzc@>OAY?z^byW}T0fIn51gn1uMxI9js5FYZ6T*E)jhnX`_Ui(Cem@s_u@=1kh% zANF$lm1Op7=5h{9cNB8gIX;;8L)}tkDzieu?{70BPD+#|iSBCHsqi58<@Zf|{_Kr6 zxO$VPtUHmQ;GwMibF@kGyhU&+5S;@vF+qoRV{-a^&PCnZcI zl}`RFv(o?mam$M1TK?>FekI$!(%@9HcJGapY?{UzZ6TAFP{Hc>Amyv1#7a4}$<~Fc zCxircNE|D2?qio!ne$xPHq&$kZ^ukUrUVs*PvXxCjwA?)Pdy;pF5l|%`l+(h#JOk1 z7*1+$DGK?-e|^Q*cUqUVw)6{ouxxx>G@-tI4y#1mpThG2m1hOrCcJHY6sjqpqnyN? z%dj!XLWl8~t>HY&`3 zaSqR<@|1c0*Qe}eH0)Dr3YlYMl75<5yH(nc-A85~dqAzj-JlthY9}6(bWUez66Jbc z%&?c!l4m)~^S&L69DKUPzLj%@PLZ19}7g@HGfN^+{3j{5cOE z6cuG&-sG;$`uBFtV#_tVFL}Nq!T4=YiR3aS z_9@3?JWd-;ZuxATE|GMc<%xW9kK6;>u*|Z>%~~l&ZxnJF=4diJw*8)dS#rrPMHR;) zBaxz?l6Sv5-r~@m!#HpGmC{8P{&SvoEuVI@&xlz=(nf}XufRg``)dat7Mt}uw_9&& zZV;C)oGK}Q#Pj7b_sc>`dnRjdX)$+63tBlRC4up}Y6FkQvC5Mxmrk*{SLoXom!fW8 z+Hp{2U75h%Hp2k+Sss(r*bNhk?i)4n@kLDFPFH51f2cvpjrDnL&$-syPbKp9Fi$)e z{qF0_o~pB2DjRDyw6^dr+0MVG=1Adjnc_I8T0kZnN;XjDVH!1kQJ!%UA7MTzTr! zq9@kxf8Stf@H{NHM6i#)ut}5QLbpi8!O*8gY@%J;*bL{aJn?v4k=-T-)yO|54)zzZ z72HfZ@t>hWsPM|yn7-o6q9O%49f8wN=+B>C_EhV*g`RYIjLh>nf3+OaYiwFO!<3&$ z9*hxkh?(Rs*F5jeg##{kH7hSn?d;W~_Lve&%@PEd%2_MII6-SUwoPzhu-a`02`wZSQgnPy9YydB^ZV z0e9}f6S60S8NYp2hwR7&3jp~vXfsMym>0bC|HN$V{g(5&W(o>jJ(G9JF6>TnlAE9L9N}|DwVUT@MsQv@Eg9+cv&roq zKYP&xKhA^yzE%H9wloc0#+18S(KBTAbelQrPZb~L=_&pGy3eU&n!T>UZ|CRP1qFN; z7JP1OvS4`f_4gjHPN`EWEJw8({0`5VWK{U+^LM|xCCmqxFW|{o6tT21%CUc!1cTED z2Ian;50dk9J{aocg_-^~NoEmP#p!rOW~HU&lP7Xkg$Gw~YezTrB)<}!(RZZHzJrCK z^7iYyA9XhT`xR-k|6Xd7c5-3>o8g=WtNNIL10}hdtecK5K6z-NYT0&c_fvcxhl`3| z&q-}B;hX68N+nGwVe+vD5})VfzU=w-+}71#&h6d11s*zk2sSEg{JHPtd7H=V7Oxnd zO*t)n`)7ufNXuIt>2kxy&piCWm-iJP5i{SO!iiH~zC3xC7%k5$Pdt}(Xxj(Hmd6zm?C*0`cs4!}Du37?@9!wnE0XgsTejiv z!*k`#4Ga&2iu;ydxX|Eg%xSY?V)3VGC;utzDZVjz-dxWUk0y7Iel;z@SUSINnoW+ z<<7r`KZ^KyIF8+TZ1z<2)SMhA0lNam1J7+6-kvk;Qd488k$v&DHTC!j=akfjf8Pp^ z$1#4LMzj`4O!Bm@ka>KiFM7e!%Hmxv zrJ)b>7=E@DIWo%#Enu8i`{PW|mgF;~TuUz({`BNI>NLUOMWu@1cBjE#@og_KrX zu!y*xdwh;vwydYA@-a)#M<)}*6H#y2{jAKSuXgGb?!N!wq@_}MxTB;eOV$y^S2F1n zKW%sN`otc;jMu(Jp>2X;u!Q!hPn`04RV6Bu3h(?9XHqnBpTfV#?UZ1@a=OJi_Tawa zSN=J{S1+6vK5gc+L-+4h?w*DsBWX*UCiZKKcec6hD7hnh_}!teu{Y$aoBP^(3OL!7 zrfG*6Y3y*YId(8j$1kMmfv9$0I|Ep_0KlQ?qqqJ+ssfAc9|Lw*F^${?GsSS5*W1{}(?VO`qer%_O0J%b(ey zj_>}k{p=6CF1Og^c!?zp|(mht-+*|WYn_4|wxl=pp=w13OwUBrLy zX$0So*GE0pia4JXGOC=|^rtP9UA@rW;Q6xRgEqyp{`ftgW?pmMa0cI__$Q@Fj0aff z>r~AVJZF{OP>}h7n?8S&tRXtof z_l6x$LLE;?K6IPq%#)IdXEo2WKh=f z8Xb6AwAW~Ne+*Mqf$?poeg(wBtSpAtB#F-U0aK4_CFoAvUqEyyR zk6x=oPXU^A?qjobjmD#Rrgu@4;)WCB_kj)kJHk&s*Y`0?5p0*IW3bsa{esb zdCNQf_nyAh^LCsyQ0VYmFWGrQzdkJtQ#B-+HAAx zNlCdnSz)Kfrkc%ePj4_VvdbGvzMfQJ!^Bp+yXnNmsZVxp36L`?`_)kVz0IgndAX%> zPtXp&PiLC>jJJlCEjZL8a9ro6ycvV#0a?SND!a?qtYca{J@a$h!?x&r=jI0Ew-@w0 z4bz!Un|{p=aVb6EU70Cym7OO$+MZKd0_SS$ufyk4;*tm$mp$IX48C(&CS4HnTNA%?peKv&D-xE zywf{(d4}@N$L#D4?o1O|Pw81QnLc2Un4TI`DfzO`kK_5gVow!wJ(o^FVdFVwUYmu= z1^8L?+#GCwC!2~-*=RCJ?9L_G-#7BLBm|cFu^G>KFn>m}%!dFz)rpZ^5^i<@Og(e& zE3K9*`=YFDuU~VSsWN)%fl0nQQ>=F$U~clTIAOscGjZ0YQ>zxV6>MCQ%EgedsliX2 zWzLhwJDwDVPI{K4+|77G#{5GY3xATI0iWYJ!ycIn4G}XR%eiPhy&~tdO31L4WsbqE zki4H8C%9$&c5!?zz^rYMAfmMF-VtNDoe$C_8UC4Sn!V;)^IqDeQ1Ip#cA3w+3!bmv z>vTlyR*2TLb0T>h5<=cQ3H`G#JYVnF#gKI8K$_rbjT?)#PH|b|C>hl~ePgi;Oyw9z0?&^l(p7d+eEE!!>lecH8PPbX1%*7`CUWO;3_Hw^h%Cn%F z>p|j*J5`I$@r9Q&TP7J5_8p#;;O6CC{PgyTWUa$lD<4)ew)<7ueEDN|W?zKrvwIQ+ zZU*lf_?GUF>8s0`XSc;sEd2Y?#|-(Bg}pPM7tNV^K*Cbt<7@vNTP8j8RMA@$S|b)? z=*E3tM&|L2#}bda8x}svR8E$ZcC_}+wXW~kW)MDyDf;rfJ+o!mo+Rw6&^XW}t}=1* zu`2%LUkn>}q&myYC}-g~ae{frogFd_i?_$QWo&I=e)43U*P4c+mfYvojV#;a7d)TX zHMb#ULu-ep%x~>zw z^dJLiX63@?>Nk2Ge4M{#XIuK`q>jAF+&eV#XQVc&t4kh~W&iLYgYj7A*C|1)GfmvvaaCRfDX?Bj+BisiW5= z?zIT9)x{ntVvzgsvp_S-v7l4sN4;@EjNtu(1GfGCfwwmmlbL4I{SQ)qtu%eN#Fg|>b-~8ReX~! zK5>9)y~?4Qe?N>*_MYS5y2;GYWc_DvXHmk zH@Pc!O|m?9>5OONV@&J8m`{@T=K*Ln8 zB1(Vu_q^kIqTMT*B@!%Eo?D(gpL}hS#GjuDpYG3X?@51@ql5@6DD_t2Up%&>TQ0Sf46GRj>CzC ztq&9>k69|qeD<3fctu;{!luRzPeWxI;w}C&r1TidwJXgRVlUrqy@5@-;wQr~H}mwJ z?+S{Kn=r;4wV57x^f{~bhBZqBZk&62yF=^7*Yo}>7d|Prd$a3AM2dopnM8t~f#>bx z7RQUv@=q&L>v@0Ao6pUuXF^1>#j)a^hx_8LOj^^q)h&`y`KfBbamxde?EO<17%ku4 zZA?{aykt4WRKz^cKlm~!A6DNI~~WwW!?BCbgG^N*Bs`_ z&KH{GAzdy%#qc=Sngf0R8Dg$1Q&cHjnRI?@1gpX(p46Smy*HT^_!wTEW$;@oef(SH z=H6FEtN0>5HaRs|o;X%LuSnDNpnIlhOOC|GpyTrTrx>4<+wHZqcsA4KU&YPM?JRTt z-fa;4UTHmD_Epg#d&3AyT!|@LT<2gq*VM_rrZ!w6e7F+ z;DK}A$?y8yZBn|rqoCb}TW8I5*PjvV93@m6rKj*M z`Et(4`U9`aPM+l%D(-Cx2|_m>H#YX|lwa?)+I0V|W*6n8-;6Pv76eb+A$;u866Q~T zt<%=Hr3!kyThP(;ynxA6;sB3PfxGtm<|Yo4Xa^yOp8F*~CkamSW4!;pJ9#7XWeJ(b z6FpVWsAbMdzjZ+LWbDCYc|A_c_jBH!kNNhH@4@3@hKb4FBcxMqPn>vVp7`?O<03mJ z#zsEnTH}AOsBD7cKRu(ugA9*%yq?JLI*$8zo@CM5xyPTe-(D{Bd~*uVCpL+V#uGoS zU=4GwV4lUdkuXW+)gsBl-qIeKZETm{cZDq{+#^pKLh_iwYi%U|1-Fj zbg4bb>+qcOo!y2%@3`f2llmp~=a0ny;ITh8t)c$^rH?Na0+cegoqYOf#{r8Vf1Ml5 zmMZD3k~SZ_J*ODWurGO#bMHUHo#Xl!8hcW{oOn~QRQRx&*REp|*M;tS$I>%z$2ZC6 zzwc`*O+MQjz}8>V`#G^|PMhOF6+>Be$rCJcbHX2`PqX9n_PY4i=okmfe+F*B&x}`! zuk?Je5c#?1r)0}(H5Kk1+c;SsY+sVlUt2mv6n#u(@uM6n=AD%Q`=B$4U!p{||GX&#QRdl$ALx z^82y(Pj{Pri0oeGR(z$Dz0dHvOk-E)1fMvTNXCxUsUESbPn>60pLl$|-x8@w)-@cD zr=FV1e42}EL(+}|3I3l{nok_%{mOW0&%yGx-c3s*=IzSxv@5%Udl| zLLcN>2F_{Tyfy9e{xUI+^#Sdio+^Dy-E-1ctdKcksO+^anJYAc@xl3Ie0O_Q z)|Va$Jo3oxRQ`Dup)>9(6ORY}Ij1qx>5fj;>t_Z<9FjS5Po5M6%QT8{k%@x7T%_dd(+SBE7Qd1$lYKbune%UB^=-De zvy<^B`-=0Y3i#K@2%ns$aYkqrD__d#d1fol-wP7SdpW`IZO?G6(EG~GF6HYv$-)EQ7jP?Ch5sou`;{O^NmMcX4hPJ(__BDNt!*)?}5eZc}B&T zZN7@~Tt5E9?Zj-!%hLji#1|ga@weUF_{u0Vg7bl%*Kw`Rq|&>e^!TLJ+m5U7RjSJr zRC^X(vU=x|G1W22nSoQCdxu~HC-aZJc2l`dy_fr)%GJQ8Q}}sGg2U~db;0vy{=UQ0 z*p;$c@@cY>^(w6u3@K)jO+9k%%RplVjJE?+S{-~}9GHG;BUXPh{1Bkwomq~wg; z*<1|j1xd_LH#T_K>!1C;>#@m?ONlxgr=Rg}&1r1hl2CH2h>g$cu}pFMM3xPft!$AV zNjoKyxCL%nyfL!>b(5iJ2V-nZ&GKdDJWL{A51h1Hk}Olz^&@uOrc<91HgFx0F}Hj? zf8U)i2i_Dn`%fyHrmS=LEVIJY^E!Wc7@R&yTb#4q9pdrXc8gA9dV$ko`3X}4Zk{vZ z^RTe|{&+1Xqlt#iS6AJQ8%`X5D#>1c_Qr$9bA%jTHct$_bK7mwX|t2hAGaK2c+k9q zaq_w9UsYG`C8->hGSND5{8^ZVN|V7|2I~&nT{7uwcZe)my41%bqUm5k@n;6ZgOUf6 z52w%15r4GEUEpb_*6odRo;Uav9p3q(`ujO$_0z4&y*|e*4LnY$E2P@Cz27_k zaNpz!8=pmYx=&U-tto$aQfRokh3bx%mnEN@{8UT}mQk*Z(RLgD1{$ zFzfw2kam;z(BCOr_C@sw@LO8i%-`F8r1|*9&Q8@udwShZ_qDVJm8}fA+h@;sc}~{` zmDHV|6RbTHXW7MQ^OR~IILG;Tp-O?~gtOdBl0+C6sZ8)c|1@2p{~`PB#ibS^jMgfR zDbqxILnT&Ca!K@aTKRZVRmp(^$}EE3HYYlSlf~=eS*G5zRAJ(`u=RZ3d|Amn$>$Jz z!hznkdnP=c!NB$8NlDD}?Q#vCq5bpC--jnFT+|f8f~WAr|lGb7gZ?mis6oUf#vNh0!I9G?UzNK-sHS#b6U7y zznO&I;|YbA8;|?VWS_UX(dH2U=J#&a6Y}gePsB02+%oUMyyp``^B(xf20gA8bts#j zqqXh03NOQ)R*JYSzP zeC~O?mq}z=#N+ZXfd{qsr}VqpIw&ivd~CeWHknE3@#&E1sw(US!Jj7hbKhWaeB3zi zrqX=g-7DG)^DPpzc?>P{_xCXb8TUPwd_G6|QBAJ1xX)9wheaZ7uNWi~Zp5#6?=$^v zp5pcsss;sq7n=$e7d+@ID!A`Aa~bm?x7#)+#WQu5xE1f5!apHp&fj}WN>4~goX%Z5 zWk&9z#BDY+nf00NHE&OBRW7vMeDEZ@$?1^W!fqmNhLc_`EIQ22@>YT&eL}64XQH!A z;fa=3i#&GgyM^aOYOM<0CvYW&xV5_f+S?K4*ubvx)>88Mg)d(p&6bn%RO;YJ)-u}N z#v$7+eEaqabx8@ev{X-(ZB3~umg+X1$Na*V88FzSOa9#KGbx4td-;U_42F3X=eTw! zb9p@xs(gLiMnP`PWk2N{*GaMcXQ!Q)S?=@pIQ#39rm@d@8bz{q6h$;i7VapGy>Zg^ z_}R-lR>~#CpPR+p7JNY7+}7|y@*KIHvTd1-Enc6rWzTR*_x;I}^?Sg{QeYSJ`TE5L zIwq4hYdO^%bvc(T!7Pz@!j{j#U-AU=a*b&l*PNOt#>JfLe!}6m+g@@;#z=vn4rX(Q9;$u1*vxtncrYx%(k6B}CVg734dGw)aaoD+1?#QWKN z!?MQB>OIVT{-^sq9`Cd2nZ=;2*HHI9@6G0qb59xe&v=|yyyyj^Fr?e zjF>j6vuCnKd^vdjvTa6*E>Dky$J%~#?f%)*7#in1SMRHMRV6jk!B}PX&PwB_D=qI% zuw+SJaYEKVu36+jLYMlvWMNhnwi2Jm>pvQNebCcn{dMVY8~M*~=6^pD|0h;C+PS3M z%JSwXwlD{2S%2sI%F64n&Hg(x_wUL2_gnrma54P9{K@iJc4mm0a;9iO#Dl5q}jZY-NV2s zA@h8K*1_7z=JVTFCfznTT-0aeR`>D+e}ccnvZK4~^*kr6pLK)dPI894`Fe?;n-89l zJb9u@%RuZ--8(0)g^63zC0G~?n`-$gZ8H)amZdUDCkdKOYUuMgz_Q`zCM&*{^f}*F z&V2kS_M}|tF4=wYlI)Vovh9v9s{77<`ds#Nk~w=}YU!AK3-Z|5gK8^fLJE)bPn2{` zka*0sYPUJ#iStQ24%!3bWDu`R}V3wKl&qz)8W^&T2Cx(*T zTMKr)^Og^)Vw}5pR!7ZYA(^*a9x4o6y$6y%C^T@WR0kb#neAXLr^<8G>+y1(!zu|W zvPXm}A1`B&cp^Xb!j4P^6{g$Xat&p=H@-46uXuES8q@4b<%Ff4yeCf7Ojs`S;G2YO z#n)B2Dz6p86VCCOmE69=xaIHVIol=w99-?C-s`hLyRFh(eljb=gWkoG?CQ5IZFfot zcy2Rf-F56#V3BN7?!{fyntkK~r zdJk4PG49;tf8uuEyW)e-nfEb1p7~^QW@M}Z|FlyEY%wcOO(-xvd4OG^^zDr0f+iKJ z%_ok_x;>oSc0l%5GV{C}BFi&886RFf<`{7LvzdeTB=#LKh4&>)7`YT2m3*8YdP*EP zpf25&cYZl@bD#g3^}2UByv@q2PdGL1R#q=~u%6}f@yA`0b1v@kmRhKD%I!bHjG`Sf zJ^V91Sbclx6{=FhA)zgiu{V%c|>PlmZd+No5FR%Esfai1t%f=~T zNscN;9~G?~j}`XJ^RzsvyfsQ}#sum5c@bAunce$c!13g%ze6RntmTPT?6OR2BKA-r#Xh-1p zBGDbP)gRAQDolUDJfk5gkZXEO+ugR4EIoZKZx!S$S*ji_h?p2>_Ss94u_)vnJ4^E9 z=AQYpmlwWM*{O3|{%^F4ygI}29iPh6x7B@md)`9s{WL*tiDODG)}1;P=ZXrO4E8iI zsBd?0RnS)QS6X)Mx3x?j-wmy$6=Cd6(K3S9zpRu@anxpGF0k&qdxlvkMwI#86T!Z} z#rK-_CA*6Rw)LLUR7sqY@OgWyLSF?->DT483ud(B?RL^|;;^`VVMVB{hw=mtcJ&R* znCCPqd(ZfEyZ-9CBFhJluk_4$zK^|X{WhhA-S2tstvRq!dgI(XJrB}%+RVH1J>puS zHp7~N-QC5Sc6T(iEOJVf`?h$qWE$^sd#&6WddF+(F(X4c=2ZXfGE5l`p3>0=A|*a* zFl=egyv2V? zL#gca!sas<-V~3wH0cN!{SYBXD@`62>carfL2&?IH^l!%uq@PVjpd zBKUpVmzT{K%DW;`rVGv6EzOeqyPUIDK+@kh1`j(2-9D z4$3>vSv~o(-0!89jluCxdQ1&P4lHv|8D5yvIIp&FmRr!p2ZCj>CEg+#;@n3 zuXXvJ#WY`cTBKFpJBc2d$rEk{H}_1uER%T2d-pS;2VP4>%nbI3vWTkB(Q{{(wSG2N zPq9mJ%f^X@J3|UQ<7ebayzP0e{BwVRq?EsnXSz_XmfZ{GYyr0m5pvcKuj2FQjX5BgTaGF@a%M%U@r%b*e z#BSX+f0w<00p~LoE<^R3M{YN!Xe}>bme6vrP!T+M%j0<6lnpK^@|o?G0XJh?8v{I_ z>v$f#vt;r~_H~xaZ6>+reK@<-OYe=QdRg83;5knc9?yC5H|n*>s^q}t9qw0}_gh*@ z#x0p=zxOyp5u;A^^Vu3})_AxCv6b`fo9pJsVIzF!@}B1*8E-pS!};#ICzwrT&*ocW zHm7cDSn6RjgErq43m!J!ab(f3sk!-}+-`}KgX;NP#XHNMntuvspLEdu-s8MWl`5a- zTuhJ^>3yzrv+b6F#Pg?l1_sj7`@YBhkh#=xviF3xi0g(Oxeq23e>P-!vftwM!KGX) zRI@u7ZXNw3(6Fa~;cHOgiSv%fP5F+`WzumFDi>9svr~bA&EjWO&zv&JqXs&snv$Q1 zxZQJzU9v)Tb{_wJiI?Zql|>G{5fo8Yx})|)tLPM;MN)y)?(!<13$pex%cck{cdAyyW@yoBtIv-Dj#{PS9^Ji!`gFNfL z#Ky@xzS({}@bvbRl8Pv^bOwRfTNuiknpHlYe0$*KoI=+FizWZwK3?=Z@4*7igK=!d zeMNhZ70+R?TsbS!Wvxg@IBU&L4vX_aZqXLU{LfUSPYgY@=GuvEugvmd7>)+p8_L%t zD=RNomU*{&l1aDX{Emx$(a&TIkKNz>YKNrc+uM_F2)fH|=}OqqetP0|gO`6|9aG=< zIlk_XnkLjKb;tb~#}#c+$@94vC+zsSzhiRGuUw_}GhDk>QYP}fS$EaVx##H#3k3#$ zby@2xekqd;y|*lBWJuiVAG1>7bB~5NrO3#3sL0Qg(f{tD?ZG`? zBn~b=vPQV{g4wCF6FhALRx+zF?fLwl;rfb&8FP)TZL$iAW}KEukoj{&pt$k=M%m~7 zx`!vd+4wkl9UEtGgF{huf=ti99TI|b*nhip1X#21EPlpdpyM>p>apaDs+5%Jho#-l zyfr)-5Y22;a^86kWAk~7a}~jkX}8)8B+hs$I)*aKXx!qoU~P~$V|?D__GwY8kpGmF zbk>;M+dJm*$64_`XKvD9%B~b$boNS`+sT70`t0+Zh0kB^KW=LG+W+T+``>Sc#a!oQ z=C~Ex!oN$@tnmiVrjI@KeOaI}_ILH~XZ&aQvCGow`Tr{)f2M?%W`5ti!t&?rY(AqR zt9hQcCpapLu$4_!Z2hKjY6Zilua@$f5?pq1wV#iR+|+%n*f8bH%&>d$g*L+HHym^P zZgU}z$GBN*i{Wua6>*sc!_WG0>>Izx6vlT}$werutlec+pK4bD0O3SDNOy3}qwJr+AfxOZ`%|10;H%Xc>0oE1pFcXa!o zgU)@cFRx@@dDK->=hK$-%!xbCpS<6A@VEtQ<)2T!5gn`(#mZIA9+TH%m;KG7pHO+? zyNH2u?p%@glOh=;fU++G+9N`7-0n3gtNy z+VkOy5n`mQ`J-1dgFcR@T*mGlJ{8$u-xoa5<0h- zW5J1)$0~#T#3hbdzNzL(TV&MvNT5mOz^%m$$NCmC_wh6I2>1Q@VDNp4+a{wO340dJ zSSc4;l<7HyJmcw-8{~>ZmI>+;LkWVE5dE zr=DjVjB8h3`0KJVZ=cQKt$YGa(#3qmJ3ds+Den8b%JN>s{)-RNQo>Fu?$jzUs-F7g z7oXwD>OULLow|9um9g>Eu6ceB=T$PK&-=n~(%;ISXpMRc*+@GG%>?!@y zS0mgdxy%!q8r~gy;Q1td-i|*n9Q?IUgjpsX&??VSnc(oap(4O|_YJsoW!_>|gvGiNJ_oc~Rk+XZ}8MJ#>bz{I}osauxHHiMbnbY{Gr}(mU zhl~Jw&4UD{H>^|F$*SBDndy+gczce}nuXJU6i)K@556+f$7^=(hDmc4GB!SV@ad*S z&?-xo$2Ok>k~F4;Cvn@%;419B?O)SB<@xpXQPR~jBl1FY*d88aFT23Vz{6AAIOnk} z!vfa3GVy!bvo?gD^RTox(26Kvw`qQRdAEvZa->uU%ZVSS47hgwQ41uF#3oOxdMWkS=N@?0&p2Ykj24qS&-{;``d zCV6g8=18$wsm!v?uR=ooschjf!$}pQ(vfSY&pQ2S(PEDX{^`%uw;A8Ib@MmL`?Qoh z_0!^&q38L`C+}{unq-x1@$#sln1`B1h)c`53o;KLPYP_8N&oOw;wT6Ekxy+AHiF@ z3Vpj9p3hr;ZN1wPU)d|WCw_8>J|} z&)f0(&nk~wu9`ZJYdWWeNXo2wGEK+ocS_&h%9HjtmvkIjt}5~AfY~$k{@JqTa&!4D zEiIO>DZJyUWT`2^wWfDYgSf(^Q=#$lcH5Qg z)1}**C8ycs1z0?PdWX-e`NBI{zoHDYgXd0MO`JGGaHr?NV;n3Go0OUo^F!POxAmH;!Vwd13k&Ux*Wl&3{8jok1t$yP)9C%>n^5{CkA!Jm+j3NKKY;7 zBYz;6aktw`MIVL&j^k;{nFkKMGyd^ia`~yr@9kn%1YS=}@KikKd6MDJy&ZDRJzY#^ zrMtWD*s(p;Dzg$*m-$rK;BfqbRq)|6Ez>y)ED}~FE7bD`o@2AEn)o7u*+me0Avw z2Zm#eKZ~mBw;ohiTmE@j$BKwao-zWPG!Hy^`*6nR?aMe{_sqG(v}w0WOKbXVN$v@p zq3Y_(9`2Srz%EG$%4nllqvUB|9CK%%AbAkEyTnMb)K466Y@MY3Jg6QDFW=<2bv` z$L9O8s{%fG)SPbl&k(*fqBMT`BsaFg2CG^tX6FQVoime69Gw>%J&>8aok4#gyG;?F zgU$D4Hi5p9=_(uYA|^?^dwGL*cj0--V^t}^i8EXcw)eLk2#642=eqI6-=@IdsUWLD zrr|xGn1kC3hJeL|3=Mbr3XjJvtdLloAaQ2Zk-M#TmMF31B=9|G@{bFjRD8@`ZCTRF z$-=qCbKD}P7KJcQsCsN~@ao2wM++vF*&I?mw1VS-vHPi&(zOid3=Ge!-)o;Zan5QJ zp9XUV0rRqhlFAYX|N1j^GpZPSN``zo_i=;PRGHP9s+}ia)Fr>G3NGJ$;9<;>5VjLB z4fgGY3=9qy62D}UCQ5luRqHfky}k3`&#qQk@03Xf92Uo)xtjUkIs5e3;Y`K|qfd@M z`xOKjZk6+VZ0;*`;F#E^T-?!pcl@kd*e|GFZMa=eexm zoKNf~F)Tvv(kAZT8x5a6V3T%WU}gEv{PB5t&2b%`t`E^iJS8peEYZmG7P|99p1-!B$1lKI(d}h}k@0Q|hUb>CcYgf~QDZIX zKcyqBH-l?U#Yyf7UhgcAy{S{b-uYyb%EO6QmF3OeJ!TQ`KYQVu<$2i#Q-kiaJE|-0 zF5}wsUZMABJJ%5=rca#5*bJ(fd3txno7wi+C4WlS-N58`$v?>WpUL|Ir54v2?-p~3 zXG$_O@Si>&H{W^w!k1QF7aJy+eJPR+{b9Jx-BMY;TH*8Ma`jn7GpA^aPAs}_SFps6 zgLlX0Y3CU4*jgNODSPE}W({Xq@#mCHtC{eORFl_w_uzxwgT)I%MA z)*GDb*_k|@nPKudzDI|ZcgPx^SRF3JHe+|5PQ#{8;riPxV;=52d7fQG_`p$TlM6rB zozyIMQTR~&_fGF~$;YO*>#C*=0XAY55qir7Z zHkdt05q*6n_vC>$>kGxc^+vZOHJ6pG&U;=i@v5pPxv%OGd(Z6leEpoI-r5=oMh0%h zeZ_z8G1#)2Uc8nplcKeG6lAIl_PC~)8L zT;-9FzzRdhXOsLm&PhxDbclJ<_fs_KPQFmoQFXwhHKYh$UuoMKX2d9U zNLlrSHM5~bsO3TCz6E@XnddwRa`3uW?7VfG+pFb8>l{wTnWtMaFgIA0+ZM*2DRNg@ z8BxYRL%YG7c}LNnn#B?f-@l5Q=$sNaT4U#Tc3*_b#>owg%q))=9*?UE>D4i3o!{=X zATRjb0i!d)J%8@jdN9krY?LY7&9T&A)y{mwz|V&^JS-}_KFRp9#5p78X(^FQCTEtG z1uYROdy<}KnLm4Sa}S@psLXW1jS2l7k=v%}n48_(X`wv%3g1q4W(zYlXC1F)qNzbM z1DJVsGKQ=4JdiW&`M}32x4>08#)V-H#~rqxH&|J6@AmO=oRD=q|5+)zBK32mPypMt zV+=9LeBv@q)#TTug7L#S;;A zo8t2lUo9=vCkRjYu;_h_&YRWE*Lklb7V!I&zPvmqxU*h!o@dS3*|Q5(KI}=^#`Nw< zQ>BE=<2f7UJk~Y{&V9hnV-dt@(|cUG`9jZ^^A;vo&DK1Vbj*DV;E<0$3&gn z&HeO=z>$Or>=K~+K@9tSK4_-*#vZmTe)?b)+p()G4>Tnnm$3)=S~tdBt5ojuH$AAj zO=rgMQ+$pR7V5t~`K!%a`){r2VfPaOhxHb-JkCGm8DM;){J0O3_Y$_y+~<8@*<+BhPPc`7_!aPINJ=lxTDaY=CR(8}8put@p4G~enT0Rs+|T>I&TUP;lO zM+7IW)|P2*;tXI~z$|I^eB-YxjxOn00*iY#tz%ZZut&&0rl9yF^W+08t3=}*ew=1i zd7{RhA|Slt*t-Jr(sP*&pOz}?D62C}+_LD{V(HD359Ae|c=_X*OY_M)pH{D$aC>SI z(|UF-Bai1zmh2J_N=jBgId#9lW6k1cF`8ermTsK4BdJ2JY4NPkHi>TxlaAT9Og*Vw z82CA*>Bg&y7gf(D2+q;jm$Pxo`BUPXQ-s@O8XF3XzuIlJIr*Jom7jIs6$?|}VT+5tv8LmKz)S5X&k?7CHS%AZq=>?+I`O1?^* z&s)~g`>4NOx$eRF=1E3njq`Tee4M|);*eK`;8|%l)u|si)omuvGvMQpc-uIkcpB5n z^rTG&_r!|~SqisHDxQ$Ekl~NB6nQq${6wqwnpTHfM}srYxdkL{p66)Wp4a2MOfBAG zRi5tNh8Uj53uQjA85LBVUogq{ODV|p_2(}(JmODA?;&3!)M)RE6E z3hmY&d5j9hlQ<+F%YIhbchUX?JgWN;lf1Gb?l7nP0Gug>Pf$qD&RJOx;g! zRVyuTpZ7E3V|-9zDPj}2f_tA^_tXO?*?%~w%T_VY+ab&NGtVYhB|7*_SpPHDzH@vA zj^_;fEN;)MH4ezx=@uzkv%zcK!NZfB`U58wpHvV&%h_-uPVx7NkK23~d@wpZ$??Q- z2I1p(6>8r+T5@JxuZl*jvnJ>Mv^%oLSxV0p&ST$Rl`M9C#?d7;+b%@(Op&;=;~ayf z<#P+0uOcf{J5?h$MF^a6ut?%7I=EBPHe7kdF=GezDSh*N-fup0>cNAY;FB_P3*%pgf6~~#^<@oY=#w3G1hy2cz%1oLizHY+bTs)el`sJy?@uv zoaUZMW}iG?zbKsL#IrBvi9o~y3!5UoYdRdyW%T3jo;Q8P@}8&2>CD>sGbSu_yOy+< zKk%f)`G<2J%}8_R`{|fF(@p0Fi>6$Q{1llI<-TJJHSVW>mf3dk_hISY1AIGW3aqyK z6`nKp&rEWQczbHsR8>LojJxx9Pw-G|mps1X+0=%$Ti>aqahNa6`FrQNqQkKQ_u?IM zzTK%hEmG%Kvw3s2(Al1vAM7e}GY+1}>FN1?u=i^6Hl`Y*l}3MFIV4V1@9S^wc|Jd{ zI9M+)Y35Xh9;->5xjhcY{ipQIk#l%HPqX3fN6#WNy^uVoB92>bp05h$`#kuSZZT6T zz-+Z7kFL`5b=MARnN2;ZB4mH!Y_a;3OUId882^RpnCAvrr_0prE$k^W;EgiZ)I0e^ z>(d75E01*#KD3%=&)odVRjncCq}{U<^}6j`1!s=P|7FRu?l_<4>iO*UrlNA|jmbM5 z61ODG=}F!E&fYm-FiA(%0-V*M(>VM~O^NxiF)Fo9W&MC9CzMR9& z^(oJDS-+4tmsdksTb{Rm?O}=Y@jiV~N|kC_T`M=_IPoiQ_uKJIeK;>2}?mVp{ z8!Zzj6;=P~ZGL-u`Ofn9_BZ}B?5qDBYv7%*!1i3|lb<`ve3~!(S-0SC{fYQ3nfCYc zfB#kg&mg;chy4F*AOBwR`8LsbgYarYg-`s`T^{1>bFePg#}LYGkerKNqA-m*uV zh3D;Is(vgg6aVq!^7NAb_5KjtT&mgvz{*W@_h*_85J#pCoO z{~$L%yJd5~W!y6g*^=7HvRdYW7(?;A+4XbX&HvP#{Lc_?SpUL1JosBabEb-4 z;kwq68#yIME9HT3bIXYn=WPwYoDFXIyXwxK1}0g7gk;7K{V(Sp9f=4&VNBvsn_m6@Ra2ENnbiCVW0_ zUG?QJ=f7V3>;JD=SL}XW{G$I18Y}nS5PSQubMD%2e08pJBlC9)M%$d;GN)Q1iT$}ZC5fNoH=a_`a6?KSRIu{a;V&zc5EiUH{W^|L=c> zR~a4B-wvwo=8&?semr?v#8VbQnQKM=8P?nP|7*Frvh@49{|s-J z|7&#*&^~6fLRq8WtkS}~B@Go8FDKsa;rA-JBq8~vf#YVFPwsz)0s(uz8!s%D{AZYE zSbx3n&r!42OZLCp|F2u*-hYM)v8CJnb(8bw7EN5|@G~sPxQFqwP2J8FN;?v5y0-|n zCtshu-SS-V&t%(A1zBJ2m)gHxy8m<3N&g=|C;z?vpW$Mu4%5?_az2KC&t2HNfzOT2 zy72NJHXZBf86phJT+-DgEfXjAJZG5pmo;qn@9**<{~2z+%Kw>}`JW-i|6kMA*oFpv z-SU*p9LY0;D#I-DIF2*SW6#?B`DEUA>r*r4pW-qIPu{?i(0t=@-<^_GpXyitXV~ts z|BL8q!}=3ekN@pn|F3P!y$8PETzI9~a+Yjb@O*)r#pC76pJ;K4zqyrk$DvGU^)W{I zl3&l~Pbt2(#Xs;rL+m^IFItN$|1&7K{AVbw|02Hh3VXEHrc( zB`*p?*QwdxeD!A4y<{hY!wUI#jEwJ;*;YI^&Aa_K=0C&NH};dmYLEYEdi0;6?*6Y! zuMS)?kdV4{$ud6Y+)qnMY3`E866%r?$0c4)3|%<$-^u68PrO@KWX-_MV7oi{(w6l9 z4E?A1zd!rWaC5a9|4(-H-;@3`yx{d+pzZ&!KX-%BW0soZ6C_F`jx%q+w)I)hib(-) zch30a_jscIG(JB+r^$U)pChH(e>HxIe;Qpb|0@3PxBm>68lCTO)x{LKIR@AzR54YS zz4G&X=~D6D)f);QBbPvlwYZJwnwPQL*jv)?W)Lka;81&m}6XipRalQ%J9GocAo^sKGxtJ z{~0E1_|LHJWBrR#-RpO^{AXC_|DR#OENjNRyJx2J3a6~ef7(BDmki&`<8I2A+MGTd zoSwM=qSWs@W<#&7tA*TcX!-)ZFBj=hlB$l=@mM>>;`Y>ow~t#sNbf&1Gx0xz+_wJ=?f?2jzWisHpj?03{_mv8 zjQcZ+MO2+uojSMF;Z*;e^>;00H#bkbE%9h!_Vluy-e9+e*f2N_D{APxH>~xMd;Yk8Hs)G%7xC%=`%i>Ub}Sd1EWRS9=($H+|PKP z^R%rz{-e}%`HKGx$M^qXt^bl8rh5EO)yc2j{~6L2@UA@2#BoV~`di7Q`$u+`O0ZwZ zvn~Gf@@UV5NDsdAhO-qbBqGBUYzv$G;AuTpursNL*q z@!u8y6<)3Q&+z!oU-y6ARa;orb9FqJ>M7k5ulaNO^Mt*8Rm{g(lgWc`=L(AS}bcz~GWtlBge0lvX!XqN1 zl2cOC(lau%ic3n%$}1|Xnp;}i+B-VCCQY6)b=ve9GiNPYykzOJeA&aSFc^aar4&0M~|O8efIpt%U2&ieg5+G+xH(oe}VkP$iNKt z6^MZNj1kpef(%TIOe`$SEbJhEF*21iFfuU#!_QqFsS#XL1$U^JRR%eIZk|+^*w^s;i^$zc{dX4TE@{nuqW!R~tjU&* z!PcnI``JP1f`dHC5;j5(%5(VGi;5@hpK6?wroqS>IEP`+(>BBJJ0G*ZXRuIazx-wK z2i8KBR>2m9cQz|z9+$b_`}Iy{;z_x^scN2r$?1`TeIXy59+V!GIL|EkAYJlH%4FBw z)0h%Z+*|(KC-30%r%w`kK3TrVd{p#2lCY^mGR*Jb$9zh2KZx~IsMKu(soqqo$W zH5-mGzfE}Bt@l->zM{yzX5Qh;BF$Hvemh#v_50^7aNFTYu6&!vvBI~r99V2zBo-MK zacdlV$5-|F_C7xMg)0vI?Ad&pYwrBQfDe2{oadG2G|#J=6;XHX-Harezt@hdl$@(j zk@xw}U=v_1e8*cN@2-ww6@`Pvv5yiV-x53$37DZ zPOb60^TJ)$na{7n*62?Ee}>TTPsuxfKCz5Dwf+EOMNVU5kAMNY&F7OVuP!PGyv@jY zGAwWY5e}8fpT0e4yf7;xA~|i^o18R8kNg?AkIR`aZ?})DSYmRNNm=f~Y!!zhuBkdp zzS?@8IC0|S^LsOjx;JS|ynH4t>2ZQh)sy7Q^Ok>c6*{xCfnoLJIW^DsbNR6sdDvDw z-*a(;$6~FSMddY%*(=nQmqohq$IMUmVO-7@QptA0X;MhrgUQ?H^vyVE@!>Kgs` z%3;Uev>jIFk>PVVZlTUne0-_zx2AHHO~#uO);;6g%`)-OoDYQ)3>yrO+Af{BRPP+K z+l|~EanUP-s+#*azaEcrd}0{6BzXgCz+z_h6qC$oqNEOp!K9jc6S8dOo;>U9Ayh# zk0v&}HE3AqlsZTBNdjZrxhml+AN%ekE$w_~z9g@l;doDj;RL@5ma^jx#(l=2BCDtT zY+5|Yt#lcjvR8QU#l| z=9sxBH@GM886SU=88YeM!9(o~0tKfG&pmtP=3jrL_-wM$PHE95o`=^PZk%|)VD~}d zfKBqN%$xG*hlHdQ4>Ei_9yi0LRH67rx$5C5VTD>NJbirD9Oq&5pYi8(&yz3b_b<2L z-ejT1vA|I|VeU?a&BdRZC(lo)WSh0)(a(4W>oPu(`za}R3URT!tr8%RoiUD_`AOzn`&&eIc?&q;YK z@pyS$@wv>CPfwdMF!1D99@O2#(^J4^t*k7oc_ZnZ(h$NpiBlzU=l46cJ6f0WO*;3ne**u6c@CD!bBZtTe>|`8qsfay zS9m`ce$G?*VBF`vUE$;Pl}EK^nE5?*@_I1OUH#cPPfN+W^OO611Q-RK0+bDY7JoW6 zgMDIi6UXyy4s!D@dG1-Py+Fg^ah^o)oj!X$tLL9|E6qHgi?PZy?^Z6myF=x5#(_0>gy&)+1;P7Pj)bKQt2vKZ)|jeL2+BU%AX~@dy*|)R6JfN za`9=$pKVNLEixxgFrIu`;P*!GMd81bD}TtC?7qr*qvaFh&#J}?_2Mj_`&aEcUARNb z?9Ei|6RHgi#_95J=9Im%dNd;@C(FyZP-(SM$w3{%dBr_Xt3LmnS6Q=mlleSV>rEBz z66cI69(=OP>Ah3>XyFu=d2G(@Hz!pFz3$1g5nw#V@qO93lZN>wJju;XH+1|sj;l0y zo~x>odBPpr{WQ0!Tz-%5?(K||w=gyo_Wk_BF0yge`m)5Hc6J%P$`{4w3SZv%wrsIO z3nw#2_n$ov^0ZGpw)tl%`TAJqODPu~?rl!TStd^Gy(4$v%d5gKmP?rY)^2l|>9yh9 zA-3Wj-`SNHFi-9&w`7~-e~;tA`56zJrn1Pjq&#^(=U3mH+CVQhPqiaC5v;dQs#~h} z-bwjhHcSaQaqcP0TX{of?dF5W46n~$z*1!N)}`W>yWCE`-Bt~Ux7YA7 zzHj1!K8Z|vso3Qv-> zS#&Rni9^q?@WkDDM(ipNN+e%Sa1c_qJsH~M(5H$%ypu?NF^o*q!nlu0Nm=dbgB zlErz2$?lxfaZPr`w#Qp?EuJtr9G853p)h#jvv&d9*89&MU`bb2_{8V1$@AW?hve$2#kR!xQtwY}#y%=z=wL)vM=?E|WF=1iV9=lOlP zt)7#dc2AufJweW=_pX7za{m6n%Qi{V4y*mW#P;_>?_%rIPd-^3VE?`IxO4xNE1geg z%;jbXVcL0WLiEaS7LS(~H_qF1;y_b!PTs_>PR`&RatyDGtQeb{Z!c43GuC_dbB2LL zoWIjf+2YF|Uu3oJxVSat^gDMJiRnK+opJmLTJ@m(^XuwB_SQYmR2OwWstBDygXxjZo1&fO=_o>J)SrxrO5HIGPB*hy*f3Ad?uY+ zwd83ByQIRqLmy8(-Ff1bap*Sv{;xciPHgf@XsKUOn&-!n!*ZORnO%l& z#*^l&6OY+^)R`GLu_=b_pFrURyWqFyzp%77^%|C+Ob<9Xqg8Q6u4Q1~&-0S9KaaXU ztC^S7bacwJ6KTgD-dA4c$7X!4;*GSnU$^vwRT3vp9Ctn-^X0MRH(QGXvoyaYUTOWO zG~-q<`vOab@)PH4_#Id~9&h`!wEk}A!rPzOR2ZcH&iQIn@%Ip)q2*-3NEq!q6u zdLCmu`G!%}__)PNwg(4}t?4UbV9si)cp{U&&EmoH^(Hr?EbWUGjaVfU&&xcJ5pF0i zKgqt%`qGAXM&8w(GFu!yPM&*I^<9yUt3v)&+id+*uf zrz%t?6tO2%Kc3Uv-ej}l>~6hh%1z>#3WXrt0uj8+?24#QOyu2@ZxOiHQ%mG|gL~bcI+4RCIz`;p zOkQ|e>uuQYg`Ub52M*0UEH_u{*dI4OBgR{0EAJerz1Vc5`QP`%o|4lH+b4+%&TVcw zyPdJk&&cusd*6=Z%zZsOwoOXtl%Cl9X-D!EKF+{n4lv4{<-Jw>;nq8j@l`M@e0zRrb*ExqQp4Q-&vHwcIL~oNDy(E~ zGM@O}%RE;rWcu^Er_v$XhKX$!FRJG~-mci%xiEcljlph@-Byp&-Wg83ENRK`x%u|G zq|aAmKQ1_;GO3D>y|Cf1%)2l0Q++iO+22cWnyp|~n7jOGe$t-u$9IadbSHVNxtwQV zp&)zi&X-e@Y}pFuB==2WdS|j*qqcj;qJ^P>O@0Pv-!}Io&p$BPf8wl+NOQK%iLuiy zkDooA%>IvcUcKDLwTBg?XBQ_laq|D$P!N3i2H*aPMmZi%hgdf24yTxuXoH%hf!SI}c;ep3rR zXYQQjX5BsUKD;KO;`sKd0Rh( zQ=+W!eExaM)kTL3QvNe|1Zt?~MZA@k+^_f3_TZBshhKal6QD-K+k<)m<(vn$j@dwkGJ;nY?vX5MD)wfJ4Zv4Kt$nwEu58*>B zg%2H1+UPkPbF2FJ!fNsyp39=UyY=7QRQYr!XGsgg1V)QD)hUl955BxLTSLvnLg>^@ z>1ZB?ycx>Kh)laqNkzPw?tv*+8fa-NB2MD$cA&J&h#4(G0DRi3br{ato6 z%n!4b~%~b z?2dGcag$e&dBV4#&*J2H{{>5Tv1M%6Jk|UxaZ}3!*&_-6L=pklGu`CP*j&-Jnj71>$Z)@__rF|4pO-IPS9=k;*+5aDF(J}myG8* zoP6HpnR{gE1icqG-rU}?dg8_CIaTGy*9R3%UeGe5gYk5}*3MfC{pxb}iZ5e-!S8Bz zao5jgjl{Sfucwa3-p3>q&hz+{G_|pu>61szPInOtMX5&*$rNKAvX@?U-{ab!S@c3A@xJ_cMDo^~_mu@Sx>8J~qPuR_lANt|k5X z=a#e{u#T3kD*4k_WE2slq~-&3o&3RX`lTHeOKtnz_W+24+1E_aTs zduMc5`@n%?Mn-;Bj~lPE?3Q{laVmcs1HZoHIrlt2w#w%pRZPt)vvYH|ddnW1=@>kr zQnlZ20TZ9?&jl<-C*FxE)#Xo-WO{CEEegZ{_vRELV8T!gyug z-g9nQ&u@vITKG&=VOoM;d8vwElmBv=Spr$^QVVkyi5c|runSEr^##T9<)qs zp5SN8DZ|*eBzLh{LDixm$i z+U)(H5Zn;@M0Z+(w~%|?OnE=sWx6Ue0%s~uvY#3mUFIj<;I8s}@*Bg64l^E`9ra1) zo@D)Jer44sfB)BWLbzqty!*IvBI9S#5LOlQn#ui-UN=v?EW3m!CFGN1iu7dd&+O-w zwU0l(ZQCEP>Y|s(>Xa1 z!wak6sQaoZE}y4NoErS}0iTCT;RHYT^)?fXqFX*o`Kd@GZ+OhyyoD!4px&9reDZ{;@V>2WhVsGO71$t zgELr08B-@FJ8kp!y;@1AE$yqtVKj^8GvSLV6Ek(F~7b}BbTH!W5W zo>SaZx2X4_r1?8;$pnWyi8=ap4lMooSy>6Ky-QfXHF4%>oY1La;Cxc1@T{>7UVe)UEFclTfDS7Z^2}h@-3d=n~ucGBe zUr#VFUYYa!Kf_ub$E7`YDtCMFaEd(62=aWayk0^^{=fwmq0?pZr?(kt9sjf;;(Np4 zbykmG-u}Ac&)wkPm;N){@Bepf-CKp4x9XM(OO`NkKDLl`_dncc=-K-3&wqyRU-uvC zt!|s!|Nr98wdL+6g`%I@t|~TYo)!{kD2>^kU_H+&sO|^vWd-dWpDHZ=Fj`2+7B@Fu zHgT3_mOl2z$o>971PY<>j907Q2>UMFb}&O;+L_asf}$jBYAes^?iSb|_1JVfgHz%Wi$HRkA}R@8!k5y8jHPD)R~q`%f+G zVUXPSq)2$jSDmWb2kdq;k3T-EKC!@TPeuT9pE;jlLvhdJD<9|ly7KnfnzaQB@_Jno z(izR4GiNi2ls|b=ViUlUnB>Xny!8h%tpKR(aqNc+mAg(o8R5O!XvO#+2(oQ-rZf9(Ut$gZhf*~*&Yz`eEtl%f@N9o+nfW!`Q-hPMY8p37~O(N>xG)6eEfTAJ$o zOxc|Y{CCwq9%o+b(R`*i;`Gx^ngJ&ktmLwMJV&m!w(!b@#)&F=M-FoGtm9;vcUZN8 zg|9l9dDafOijU8hT`Dlz@wA%3-?{m?gyq+>29=XfayB`=;JkAn<=shT%LmEJB_!S+ z7Y!k3aX8sF*pIBedl9r|ryhZ%=1=EAu>qT_&Kh z|E}^o*JF$?Zl2KLV600roWNmu;Ps^iS~eH@&K}Ts-S+balU?vU@6v+`$(NUUK0To{ z(JxKIU=`ctwv!6A4^JGktv$zUUGX!Sm1p)ru5-pc@80-%9^YSIXY@S%=!+Ym$5X^q_U+JB~PU z<(>k@*XJ+I^Vz7_W3<>%zCb2nPR&kcmJ;^smQT{UrzW}gChz#np=2JnWReJjpMepF z#Jj4hKCaC^eLoMa>HW;GV1k?9qrGixRXzQ66a3UZ&tv0}3}N+ibBJM{XMEYNp+9R< z$c}iOTgThDCvKPg!eepjJ8MR6};0}m^^ za&qmvIr5h`CL6eYN|t8cnWpeo+Ce6Tuef>gZV8!ZOZB=!QxYzDyy19pe8WK-;S^vp@EhsI*gMMVrb(@q>nIBehN>i2{3DT9WL)eh^j<_V4# zuYVTbp6J&rUC66;Xb&q3oBE391s1R8=La9qG5NJgseDz3O2pNJ%95&$_L^Lkam76; zpZnJ~y|`#~!i#-k*Gm366 zS<$z+Sc668<1se#DjDV*PkQ7uKRM0UNp;N87Cz6wyL|4xc{e4Vn`)Qv1)oVfAkAl& zU@0N%$i-&OJa12MPeRP*eMyro>B}mPIWWxm!hGK}&f%4P1-JVj%Y%hIDUW3xzP`Ni z)ik|^QN`$OWMb}eoud)+r@Uj{c#QMlx#9+kW!k)+p)*6xy#jUyaWIz|NqjypdGH0h z-Is}fcH3N!xK+wr^np`eKW?Y2-#f>**Ji5Ec;dGDIcw~Z6J{Hk74&NRDj$D77B^ct z?9;_E&43#RPTX?*xmQH3$bVRx7$tv>`AeV#%}mlb>jg`+i>OWwgz@XGLtq3H0=e&Va|_d@T6EC>=a`twBQ3Ga