From 913211895dd026810d41ab2c0f31779c2d4272c4 Mon Sep 17 00:00:00 2001 From: Claudius Appel <151634114+Claudius-Appel@users.noreply.github.com> Date: Fri, 17 May 2024 21:57:19 +0200 Subject: [PATCH 1/3] `duflor_gui()`: reactive `DEBUGKEYS`, cb `dev_key_handler()`: remove old, unused keys, document how to add new ones, closes #74 --- R/app.R | 6 +++--- R/dev_key_handler.R | 10 +++++----- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/R/app.R b/R/app.R index 16202eb..8cbcaa8 100644 --- a/R/app.R +++ b/R/app.R @@ -227,10 +227,10 @@ duflor_gui <- function() { folder_path = NA ) DEBUGKEYS <- reactiveValues( - force.prints = FALSE, - force.log = FALSE, + # if you want to have functionality blocked by the dev-console, add + # the key here with its default value. + # Next, update the logic within the function `dev_key_handler` set.author = TRUE - ) FLAGS <- reactiveValues( analyse_single_image = FALSE, diff --git a/R/dev_key_handler.R b/R/dev_key_handler.R index af70d8e..547ba0c 100644 --- a/R/dev_key_handler.R +++ b/R/dev_key_handler.R @@ -30,20 +30,20 @@ #' dev_key_handler <- function(input, DATA, DEBUGKEYS, session, use_logical_cores) { # add valid keys here - # private, undocumentable keys must be prefixed with 3 `-` - Arr <- str_split("--force-prints,--force-log,---set-author,---set-cores,-h",",") - # then add them to the reactive 'DEBUGKEYS' so that it can be accessed elsewhere as well. + keys_array <- str_split("---set-cores,-h",",") + # then add them to the reactive 'DEBUGKEYS' (see 'app.R', search for 'DEBUGKEYS <- reactiveValues(') + # so that it can be accessed elsewhere as well. Keys <- unlist(str_split(input$dev_pass,",")) for (each in Keys) { each_ <- str_remove_all(each,"=(1|0|FALSE|TRUE)") each_ <- str_remove_all(each,"=(F|T)") each__ <- str_remove_all(each,"=.*") - if ((each %in% Arr[[1]]) || (each_ %in% Arr[[1]]) || (each__ %in% Arr[[1]])) { # BUG: this bool returns an array if `each` is a char-vector itself. + if ((each %in% keys_array[[1]]) || (each_ %in% keys_array[[1]]) || (each__ %in% keys_array[[1]])) { # BUG: this bool returns an array if `each` is a char-vector itself. if (each=="-h") { showNotification( ui = str_c( "Available dev Keys (see documentation): ", - str_flatten_comma(Arr[[1]][!str_count(Arr[[1]], "---")]) + str_flatten_comma(keys_array[[1]]) ), duration = DATA$notification_duration, type = "message" From cadc8f5669f94b7899c651854e7eb8e6f37e8178 Mon Sep 17 00:00:00 2001 From: Claudius Appel <151634114+Claudius-Appel@users.noreply.github.com> Date: Fri, 17 May 2024 21:59:04 +0200 Subject: [PATCH 2/3] version bump to `0.0.1.9053` --- DESCRIPTION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DESCRIPTION b/DESCRIPTION index 5075163..088a655 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,6 +1,6 @@ Package: duflor.gui Title: Frontend for duflor-package -Version: 0.0.1.9052 +Version: 0.0.1.9053 Author: Claudius Appel Authors@R: c( person("Claudius", "Appel", email = "claudius.appel@freenet.de" , role = c("aut", "cre")) From 390ab1d7f7986f3dcb5f265acc10af752950a1b2 Mon Sep 17 00:00:00 2001 From: Claudius Appel <151634114+Claudius-Appel@users.noreply.github.com> Date: Fri, 17 May 2024 22:11:58 +0200 Subject: [PATCH 3/3] chore: update pkgdown site --- docs/404.html | 2 +- docs/LICENSE-text.html | 2 +- docs/LICENSE.html | 2 +- docs/articles/general-user-manual.html | 2 +- docs/articles/identifier-cropping.html | 2 +- docs/articles/image-cropping.html | 2 +- docs/articles/index.html | 2 +- docs/articles/modifying-hsv-bounds.html | 2 +- docs/articles/optimising-speed.html | 2 +- docs/articles/parallelisation.html | 2 +- docs/articles/raising-issues.html | 2 +- docs/articles/saving-and-restoring-application-states.html | 2 +- docs/authors.html | 6 +++--- docs/index.html | 2 +- docs/pkgdown.yml | 2 +- docs/reference/convert_pixels_to_area_gui.html | 2 +- docs/reference/dev_key_handler.html | 2 +- docs/reference/duflor_gui.html | 2 +- docs/reference/execute_analysis.html | 2 +- docs/reference/execute_multiple.html | 2 +- docs/reference/execute_single.html | 2 +- docs/reference/get_KPI_plot.html | 2 +- docs/reference/get_group.html | 2 +- docs/reference/get_image_dimensions.html | 2 +- docs/reference/index.html | 2 +- docs/reference/key_handle_cores.html | 2 +- docs/reference/limit_identifier_coordinates.html | 2 +- docs/reference/limit_to_range.html | 2 +- docs/reference/open_parallelPanel_event.html | 2 +- docs/reference/prepare_resultsObject.html | 2 +- docs/reference/render_selected_mask.html | 2 +- docs/reference/restore_state.html | 2 +- docs/reference/save_error_state.html | 2 +- docs/reference/save_state.html | 2 +- docs/reference/select_spectra_gui_comp.html | 2 +- docs/reference/setup_parallel.html | 2 +- .../show_infringing_spectrum_elements_gui_comp.html | 2 +- docs/reference/shutdown_parallel.html | 2 +- docs/reference/store_KPI_plot_to_file.html | 2 +- docs/reference/store_results_to_file.html | 2 +- docs/reference/update_resultsObject.html | 2 +- docs/reference/validate_custom_HSV_values.html | 2 +- docs/search.json | 2 +- 43 files changed, 45 insertions(+), 45 deletions(-) diff --git a/docs/404.html b/docs/404.html index c40e2c3..80c951d 100644 --- a/docs/404.html +++ b/docs/404.html @@ -24,7 +24,7 @@ duflor.gui - 0.0.1.9052 + 0.0.1.9053 diff --git a/docs/LICENSE-text.html b/docs/LICENSE-text.html index 8709f76..b6da1cf 100644 --- a/docs/LICENSE-text.html +++ b/docs/LICENSE-text.html @@ -10,7 +10,7 @@ duflor.gui - 0.0.1.9052 + 0.0.1.9053 diff --git a/docs/LICENSE.html b/docs/LICENSE.html index f3a6bb8..35a1be2 100644 --- a/docs/LICENSE.html +++ b/docs/LICENSE.html @@ -10,7 +10,7 @@ duflor.gui - 0.0.1.9052 + 0.0.1.9053 diff --git a/docs/articles/general-user-manual.html b/docs/articles/general-user-manual.html index e96684f..7c3c8c2 100644 --- a/docs/articles/general-user-manual.html +++ b/docs/articles/general-user-manual.html @@ -26,7 +26,7 @@ duflor.gui - 0.0.1.9052 + 0.0.1.9053 diff --git a/docs/articles/identifier-cropping.html b/docs/articles/identifier-cropping.html index 2c2772a..cce0a87 100644 --- a/docs/articles/identifier-cropping.html +++ b/docs/articles/identifier-cropping.html @@ -26,7 +26,7 @@ duflor.gui - 0.0.1.9052 + 0.0.1.9053 diff --git a/docs/articles/image-cropping.html b/docs/articles/image-cropping.html index fadc2ff..598ee4e 100644 --- a/docs/articles/image-cropping.html +++ b/docs/articles/image-cropping.html @@ -26,7 +26,7 @@ duflor.gui - 0.0.1.9052 + 0.0.1.9053 diff --git a/docs/articles/index.html b/docs/articles/index.html index 093f653..9001c1e 100644 --- a/docs/articles/index.html +++ b/docs/articles/index.html @@ -10,7 +10,7 @@ duflor.gui - 0.0.1.9052 + 0.0.1.9053 diff --git a/docs/articles/modifying-hsv-bounds.html b/docs/articles/modifying-hsv-bounds.html index 265ace5..0165b80 100644 --- a/docs/articles/modifying-hsv-bounds.html +++ b/docs/articles/modifying-hsv-bounds.html @@ -26,7 +26,7 @@ duflor.gui - 0.0.1.9052 + 0.0.1.9053 diff --git a/docs/articles/optimising-speed.html b/docs/articles/optimising-speed.html index dce5031..c92f8a0 100644 --- a/docs/articles/optimising-speed.html +++ b/docs/articles/optimising-speed.html @@ -26,7 +26,7 @@ duflor.gui - 0.0.1.9052 + 0.0.1.9053 diff --git a/docs/articles/parallelisation.html b/docs/articles/parallelisation.html index bc2e86d..aacb07a 100644 --- a/docs/articles/parallelisation.html +++ b/docs/articles/parallelisation.html @@ -26,7 +26,7 @@ duflor.gui - 0.0.1.9052 + 0.0.1.9053 diff --git a/docs/articles/raising-issues.html b/docs/articles/raising-issues.html index 286d14a..d6b3df1 100644 --- a/docs/articles/raising-issues.html +++ b/docs/articles/raising-issues.html @@ -26,7 +26,7 @@ duflor.gui - 0.0.1.9052 + 0.0.1.9053 diff --git a/docs/articles/saving-and-restoring-application-states.html b/docs/articles/saving-and-restoring-application-states.html index 8a8ff8c..52b5a55 100644 --- a/docs/articles/saving-and-restoring-application-states.html +++ b/docs/articles/saving-and-restoring-application-states.html @@ -26,7 +26,7 @@ duflor.gui - 0.0.1.9052 + 0.0.1.9053 diff --git a/docs/authors.html b/docs/authors.html index ea7e9f5..b7e3cf8 100644 --- a/docs/authors.html +++ b/docs/authors.html @@ -10,7 +10,7 @@ duflor.gui - 0.0.1.9052 + 0.0.1.9053 @@ -68,13 +68,13 @@ Citation Appel C (2024). duflor.gui: Frontend for duflor-package. -R package version 0.0.1.9052, https://Claudius-Appel.github.io/duflor.gui/. +R package version 0.0.1.9053, https://Claudius-Appel.github.io/duflor.gui/. @Manual{, title = {duflor.gui: Frontend for duflor-package}, author = {Claudius Appel}, year = {2024}, - note = {R package version 0.0.1.9052}, + note = {R package version 0.0.1.9053}, url = {https://Claudius-Appel.github.io/duflor.gui/}, } diff --git a/docs/index.html b/docs/index.html index f30bff0..a880444 100644 --- a/docs/index.html +++ b/docs/index.html @@ -26,7 +26,7 @@ duflor.gui - 0.0.1.9052 + 0.0.1.9053 diff --git a/docs/pkgdown.yml b/docs/pkgdown.yml index e7d6488..c65d454 100644 --- a/docs/pkgdown.yml +++ b/docs/pkgdown.yml @@ -10,7 +10,7 @@ articles: parallelisation: parallelisation.html raising-issues: raising-issues.html saving-and-restoring-application-states: saving-and-restoring-application-states.html -last_built: 2024-05-17T17:55Z +last_built: 2024-05-17T20:05Z urls: reference: https://Claudius-Appel.github.io/duflor.gui/reference article: https://Claudius-Appel.github.io/duflor.gui/articles diff --git a/docs/reference/convert_pixels_to_area_gui.html b/docs/reference/convert_pixels_to_area_gui.html index 532bda3..24fc6d4 100644 --- a/docs/reference/convert_pixels_to_area_gui.html +++ b/docs/reference/convert_pixels_to_area_gui.html @@ -10,7 +10,7 @@ duflor.gui - 0.0.1.9052 + 0.0.1.9053 diff --git a/docs/reference/dev_key_handler.html b/docs/reference/dev_key_handler.html index 67761c2..4a7979a 100644 --- a/docs/reference/dev_key_handler.html +++ b/docs/reference/dev_key_handler.html @@ -22,7 +22,7 @@ duflor.gui - 0.0.1.9052 + 0.0.1.9053 diff --git a/docs/reference/duflor_gui.html b/docs/reference/duflor_gui.html index d7ea7b9..d6476e5 100644 --- a/docs/reference/duflor_gui.html +++ b/docs/reference/duflor_gui.html @@ -10,7 +10,7 @@ duflor.gui - 0.0.1.9052 + 0.0.1.9053 diff --git a/docs/reference/execute_analysis.html b/docs/reference/execute_analysis.html index f3c204a..7586e13 100644 --- a/docs/reference/execute_analysis.html +++ b/docs/reference/execute_analysis.html @@ -10,7 +10,7 @@ duflor.gui - 0.0.1.9052 + 0.0.1.9053 diff --git a/docs/reference/execute_multiple.html b/docs/reference/execute_multiple.html index 7120016..17ebc87 100644 --- a/docs/reference/execute_multiple.html +++ b/docs/reference/execute_multiple.html @@ -10,7 +10,7 @@ duflor.gui - 0.0.1.9052 + 0.0.1.9053 diff --git a/docs/reference/execute_single.html b/docs/reference/execute_single.html index c368288..b149501 100644 --- a/docs/reference/execute_single.html +++ b/docs/reference/execute_single.html @@ -10,7 +10,7 @@ duflor.gui - 0.0.1.9052 + 0.0.1.9053 diff --git a/docs/reference/get_KPI_plot.html b/docs/reference/get_KPI_plot.html index 4c98fd9..5fe427c 100644 --- a/docs/reference/get_KPI_plot.html +++ b/docs/reference/get_KPI_plot.html @@ -10,7 +10,7 @@ duflor.gui - 0.0.1.9052 + 0.0.1.9053 diff --git a/docs/reference/get_group.html b/docs/reference/get_group.html index 858a424..d2daaab 100644 --- a/docs/reference/get_group.html +++ b/docs/reference/get_group.html @@ -10,7 +10,7 @@ duflor.gui - 0.0.1.9052 + 0.0.1.9053 diff --git a/docs/reference/get_image_dimensions.html b/docs/reference/get_image_dimensions.html index 9a539a3..27291eb 100644 --- a/docs/reference/get_image_dimensions.html +++ b/docs/reference/get_image_dimensions.html @@ -10,7 +10,7 @@ duflor.gui - 0.0.1.9052 + 0.0.1.9053 diff --git a/docs/reference/index.html b/docs/reference/index.html index 6eb185c..d7bf6c2 100644 --- a/docs/reference/index.html +++ b/docs/reference/index.html @@ -10,7 +10,7 @@ duflor.gui - 0.0.1.9052 + 0.0.1.9053 diff --git a/docs/reference/key_handle_cores.html b/docs/reference/key_handle_cores.html index 5443956..0c7cffe 100644 --- a/docs/reference/key_handle_cores.html +++ b/docs/reference/key_handle_cores.html @@ -10,7 +10,7 @@ duflor.gui - 0.0.1.9052 + 0.0.1.9053 diff --git a/docs/reference/limit_identifier_coordinates.html b/docs/reference/limit_identifier_coordinates.html index 6a99ca8..6aa0030 100644 --- a/docs/reference/limit_identifier_coordinates.html +++ b/docs/reference/limit_identifier_coordinates.html @@ -14,7 +14,7 @@ duflor.gui - 0.0.1.9052 + 0.0.1.9053 diff --git a/docs/reference/limit_to_range.html b/docs/reference/limit_to_range.html index f297f9c..0140b1c 100644 --- a/docs/reference/limit_to_range.html +++ b/docs/reference/limit_to_range.html @@ -14,7 +14,7 @@ duflor.gui - 0.0.1.9052 + 0.0.1.9053 diff --git a/docs/reference/open_parallelPanel_event.html b/docs/reference/open_parallelPanel_event.html index 40ddb94..6d66369 100644 --- a/docs/reference/open_parallelPanel_event.html +++ b/docs/reference/open_parallelPanel_event.html @@ -10,7 +10,7 @@ duflor.gui - 0.0.1.9052 + 0.0.1.9053 diff --git a/docs/reference/prepare_resultsObject.html b/docs/reference/prepare_resultsObject.html index 433a39d..045c0fa 100644 --- a/docs/reference/prepare_resultsObject.html +++ b/docs/reference/prepare_resultsObject.html @@ -36,7 +36,7 @@ duflor.gui - 0.0.1.9052 + 0.0.1.9053 diff --git a/docs/reference/render_selected_mask.html b/docs/reference/render_selected_mask.html index d581aa7..a1e525e 100644 --- a/docs/reference/render_selected_mask.html +++ b/docs/reference/render_selected_mask.html @@ -10,7 +10,7 @@ duflor.gui - 0.0.1.9052 + 0.0.1.9053 diff --git a/docs/reference/restore_state.html b/docs/reference/restore_state.html index 67062ce..5371371 100644 --- a/docs/reference/restore_state.html +++ b/docs/reference/restore_state.html @@ -10,7 +10,7 @@ duflor.gui - 0.0.1.9052 + 0.0.1.9053 diff --git a/docs/reference/save_error_state.html b/docs/reference/save_error_state.html index 56d71ba..6fc40e9 100644 --- a/docs/reference/save_error_state.html +++ b/docs/reference/save_error_state.html @@ -20,7 +20,7 @@ duflor.gui - 0.0.1.9052 + 0.0.1.9053 diff --git a/docs/reference/save_state.html b/docs/reference/save_state.html index 0d81729..c5c5b00 100644 --- a/docs/reference/save_state.html +++ b/docs/reference/save_state.html @@ -20,7 +20,7 @@ duflor.gui - 0.0.1.9052 + 0.0.1.9053 diff --git a/docs/reference/select_spectra_gui_comp.html b/docs/reference/select_spectra_gui_comp.html index 03a86c4..9448def 100644 --- a/docs/reference/select_spectra_gui_comp.html +++ b/docs/reference/select_spectra_gui_comp.html @@ -10,7 +10,7 @@ duflor.gui - 0.0.1.9052 + 0.0.1.9053 diff --git a/docs/reference/setup_parallel.html b/docs/reference/setup_parallel.html index a0a3d6a..4313c7b 100644 --- a/docs/reference/setup_parallel.html +++ b/docs/reference/setup_parallel.html @@ -10,7 +10,7 @@ duflor.gui - 0.0.1.9052 + 0.0.1.9053 diff --git a/docs/reference/show_infringing_spectrum_elements_gui_comp.html b/docs/reference/show_infringing_spectrum_elements_gui_comp.html index a7e5614..1ee4848 100644 --- a/docs/reference/show_infringing_spectrum_elements_gui_comp.html +++ b/docs/reference/show_infringing_spectrum_elements_gui_comp.html @@ -10,7 +10,7 @@ duflor.gui - 0.0.1.9052 + 0.0.1.9053 diff --git a/docs/reference/shutdown_parallel.html b/docs/reference/shutdown_parallel.html index 7913bd5..2bea67b 100644 --- a/docs/reference/shutdown_parallel.html +++ b/docs/reference/shutdown_parallel.html @@ -10,7 +10,7 @@ duflor.gui - 0.0.1.9052 + 0.0.1.9053 diff --git a/docs/reference/store_KPI_plot_to_file.html b/docs/reference/store_KPI_plot_to_file.html index 3a3be98..0ebed9d 100644 --- a/docs/reference/store_KPI_plot_to_file.html +++ b/docs/reference/store_KPI_plot_to_file.html @@ -10,7 +10,7 @@ duflor.gui - 0.0.1.9052 + 0.0.1.9053 diff --git a/docs/reference/store_results_to_file.html b/docs/reference/store_results_to_file.html index b9ae439..3c4b093 100644 --- a/docs/reference/store_results_to_file.html +++ b/docs/reference/store_results_to_file.html @@ -10,7 +10,7 @@ duflor.gui - 0.0.1.9052 + 0.0.1.9053 diff --git a/docs/reference/update_resultsObject.html b/docs/reference/update_resultsObject.html index 83b3506..0e6e125 100644 --- a/docs/reference/update_resultsObject.html +++ b/docs/reference/update_resultsObject.html @@ -10,7 +10,7 @@ duflor.gui - 0.0.1.9052 + 0.0.1.9053 diff --git a/docs/reference/validate_custom_HSV_values.html b/docs/reference/validate_custom_HSV_values.html index 2c2d278..91d50b3 100644 --- a/docs/reference/validate_custom_HSV_values.html +++ b/docs/reference/validate_custom_HSV_values.html @@ -14,7 +14,7 @@ duflor.gui - 0.0.1.9052 + 0.0.1.9053 diff --git a/docs/search.json b/docs/search.json index 6d80074..1931320 100644 --- a/docs/search.json +++ b/docs/search.json @@ -1 +1 @@ -[{"path":"https://Claudius-Appel.github.io/duflor.gui/articles/general-user-manual.html","id":"general-structure","dir":"Articles","previous_headings":"","what":"General Structure","title":"General user manual for 'duflor.gui'","text":"figure 1, general overview GUI can seen. general, GUI split two regions. grey panel left side contains input-controls relevant setup configuration analysis. , steps must done get results located . Consequently, buttons/drop--menus/tables/controls right side app pertaining results. noted several controls won’t anything results computed1.","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/articles/general-user-manual.html","id":"steps-required-to-run-an-analysis-input-controls","dir":"Articles","previous_headings":"General Structure","what":"Steps required to run an analysis / Input Controls","title":"General user manual for 'duflor.gui'","text":"section deal detail controls grey panel. Generally, steps designed done order, top bottom2: Selecting folder containing input images.Note: folder must contain images intended evaluated, extends sub-folders. select folder foo analysed, image foo/bar.png evaluated. However, images foo/baz/bar.png foo/baz/another/ridiculous/nesting/plant.png also evaluated. Selecting type analysis performed3. Select GFA Leaf Area Analysis/Grünflächenanalyse, WFA intend perform Root Area Analysis/Wurzelflächenanalyse. \\(0 \\le H_0 \\le 359\\), \\(0 \\le H_1 \\le 359\\), \\(H_0 \\lt H_1\\) \\(0 \\le S_0 \\le 1\\), \\(0 \\le S_1 \\le 1\\), \\(S_0 \\lt S_1\\) \\(0 \\le V_0 \\le 1\\), \\(0 \\le V_1 \\le 1\\), \\(V_0 \\lt V_1\\) Experience suggests especially \\(V_0\\)-parameter adjusted carefully. step explained detail “Fine-tuning HSV-boundaries”. Decide whether image cropped. Cropping explained detail “Cropping Images”. Decide whether restrict area within identifier-dot truely lies. information, see “Restricting area within identifier-dot quantified”. Taking precaution heavily suggested. Decide whether execution run parallel. Parallelisation can significantly reduce execution-time, particularly larger image-sets. ’s use strongly advised number images gets ~40. , might still sensible, author comfortable giving blanket recommendation. information, see “Parallelised execution”. Select date images shot. Optionally alter area identifier. Decide whether analyse images listed tab Image Files, single one set. Pressing either buttons render GUI unresponsive executing respective workflow, completed various results right side app updated.","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/articles/general-user-manual.html","id":"post-execution-steps","dir":"Articles","previous_headings":"General Structure","what":"Post-Execution Steps","title":"General user manual for 'duflor.gui'","text":"analysis finished, controls tabs 2-4 right side app updated.","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/articles/general-user-manual.html","id":"tab-2-results---complete","dir":"Articles","previous_headings":"General Structure > Post-Execution Steps","what":"Tab 2: Results - complete","title":"General user manual for 'duflor.gui'","text":"table tab renders results written file \\(1:1\\). bottom, may decide whether results saved .csv-file, .xlsx-file. Generally use .csv suggested smaller file-size; sometimes output data must processed afterwards, saving data .xlsx-file may advantageous.","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/articles/general-user-manual.html","id":"tab-3-results---inspect","dir":"Articles","previous_headings":"General Structure > Post-Execution Steps","what":"Tab 3: Results - inspect","title":"General user manual for 'duflor.gui'","text":"third tab lets inspect results based specific spectrum. table exists two simple reasons: “complete” table frequently crowded easily digestible, particularly lower-DPI screens. selecting spectrum file, results applying said spectrum selected file can viewed (see Figure 2). Optionally, contrast “hits” pixels can increased. can particularly helpful trying identify false positive pixels given spectrum (see figure 3)","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/articles/general-user-manual.html","id":"tab-4-results---plots","dir":"Articles","previous_headings":"General Structure > Post-Execution Steps","what":"Tab 4: Results - plots","title":"General user manual for 'duflor.gui'","text":"fourth tab allows view basic plot different KPIs determined. Currently, following KPIs available: area_per_pixel: value denotes “much area”5 equivalent single pixel. resulting area6, number matching pixels, fraction matching pixels relative potential hits","code":""},{"path":[]},{"path":"https://Claudius-Appel.github.io/duflor.gui/articles/general-user-manual.html","id":"state-management-saving-and-restoring-application-configuration-to-and-from-files","dir":"Articles","previous_headings":"General Structure > Edge-cases / special controls","what":"State-Management: Saving and restoring application configuration to and from files","title":"General user manual for 'duflor.gui'","text":"bottom grey panel exists section called “Bookmarking”. allows user store current state app’s input data (configuration, chosen directory-path, relevant data) file, can loaded later time. general, two use-cases: Retaining restoring common configuration changes easier access. Restoring configurations induced errors, might debugged reproducible manner. details, see vignette(\"saving--restoring-application-states\", package = \"duflor.gui\").","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/articles/general-user-manual.html","id":"tab-1-image-files","dir":"Articles","previous_headings":"General Structure > Edge-cases / special controls","what":"Tab 1: Image Files","title":"General user manual for 'duflor.gui'","text":"tab contains image files analysed. However, also allows view image. particularly useful verifying correctly cropped image, /correctly selected area identifier-dot (suggested extra steps). example application look like can seen figure 4.","code":""},{"path":[]},{"path":"https://Claudius-Appel.github.io/duflor.gui/articles/general-user-manual.html","id":"cropping-images","dir":"Articles","previous_headings":"Measures for optimising execution speed","what":"Cropping Images","title":"General user manual for 'duflor.gui'","text":"effective way increasing execution time reduce size data- set analysed. desired area selected described , can optionally reviewed (another) image pressing Render plant-button tab Image Files. -depth description can found vignette(\"image-cropping\", package = \"duflor.gui\").","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/articles/general-user-manual.html","id":"parallelised-execution","dir":"Articles","previous_headings":"Measures for optimising execution speed","what":"Parallelised execution","title":"General user manual for 'duflor.gui'","text":"Based power system running app, one might consider parallelising evaluation images reduce computation time. However, effectiveness depends heavily resources available. -depth description can found vignette(\"parallelisation\", package = \"duflor.gui\").","code":""},{"path":[]},{"path":"https://Claudius-Appel.github.io/duflor.gui/articles/general-user-manual.html","id":"restricting-area-within-which-the-identifier-dot-is-quantified","dir":"Articles","previous_headings":"Measures for maximising accuracy","what":"Restricting area within which the identifier-dot is quantified","title":"General user manual for 'duflor.gui'","text":"Typically, largest error-source bad inconsistent determination identifier used calculate area extracted spectra. information counter issue, -depth description can found vignette(\"identifier-cropping\", package = \"duflor.gui\").","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/articles/general-user-manual.html","id":"fine-tuning-hsv-boundaries","dir":"Articles","previous_headings":"Measures for maximising accuracy","what":"Fine-tuning HSV-boundaries","title":"General user manual for 'duflor.gui'","text":"Determining HSV-boundaries can arduous time-consuming process. recommended frequently via GUI, instead create small script calling relevant functions duflor-package . -depth guide details can found vignette(\"modifying-hsv-bounds\", package = \"duflor.gui\").","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/articles/general-user-manual.html","id":"advanced-debugging","dir":"Articles","previous_headings":"","what":"(Advanced) Debugging","title":"General user manual for 'duflor.gui'","text":"Generally, app tries give reasonable warnings status-messages via small red/yellow/blue message boxes. fairly self-explanatory, pop author thought sensible necessary. app runs error, cases configuration required triggering said error preserved. info, see section “Saving states errors occur analysis” vignette(\"saving--restoring-application-states\", package = \"duflor.gui\").","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/articles/general-user-manual.html","id":"development-modifications-issues","dir":"Articles","previous_headings":"","what":"Development, Modifications, Issues","title":"General user manual for 'duflor.gui'","text":"details raise new feature-requests, please refer vignette(\"raising-issues\", package = \"duflor.gui\").","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/articles/general-user-manual.html","id":"reporting-issues","dir":"Articles","previous_headings":"Development, Modifications, Issues","what":"Reporting issues","title":"General user manual for 'duflor.gui'","text":"app, underlying code can reviewed minimal upfront work opening source-code GitHub - either manually downloading , cloning via git. either, navigate duflor- duflor.gui-repository. details see vignette(\"raising-issues\", package = \"duflor.gui\").","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/articles/general-user-manual.html","id":"further-development","dir":"Articles","previous_headings":"Development, Modifications, Issues","what":"Further development","title":"General user manual for 'duflor.gui'","text":"free take either packages continue development , abiding licensing terms declared.","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/articles/identifier-cropping.html","id":"the-problem","dir":"Articles","previous_headings":"","what":"The problem","title":"Restricting area for quantification of the identifier-dot","text":"Analysing entire image bears risk introducing high error-rates determined number pixels “identifier” deviates. Given difference orders magnitude number “identifier”-pixels typical number pixels plant-related spectrum (e.g. “green plant area”), small deviation number detected “identifier”-pixels compared images drastically influence computed areas spectra. issue can observed figure :","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/articles/identifier-cropping.html","id":"the-solution","dir":"Articles","previous_headings":"","what":"The solution","title":"Restricting area for quantification of the identifier-dot","text":"counteract , GUI allows limit range within matches identifier-spectrum considered “valid”. matches outside area ignored. select area, follow steps outlined . step corresponds number within figures 2 3: Select image inspect. may select one image within Image Files-Tab. Check check-box enable feature. expand previously-hidden panel. Next, press button Select area analyse launch window shown figure 3. Finally, left-click--drag area within identifier-dot resides. selection may contain anything, may size. let go, selection-GUI close, bounding coordinates inserted respective numeric input controls. might tempted make small possible. However, certainly advantageous minimise area much possible, certain buffer-zone kept. position identifier-dot might differ subtly across images, -strict selection might suddenly exclude pixels actually part identifier-dot.","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/articles/identifier-cropping.html","id":"results","dir":"Articles","previous_headings":"","what":"Results","title":"Restricting area for quantification of the identifier-dot","text":"difference step can make can observed tables 1 2. Note small example, effect preventive step entirely dependent upon image, thus hard predict. can images contain almost impurities, images severely polluted “invalid” hits. Table 1: Number pixels ‘identifier_dot’, well resulting area example-drought spectrum based given number matched pixels. case, qualified “identifier”-pixels used determine areas. Table 2: Restricting area identifier-dot lies changes given spectrum’s calculated area.","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/articles/image-cropping.html","id":"the-problem","dir":"Articles","previous_headings":"","what":"The problem","title":"Cropping the image for selective and faster analysis","text":"taking images pot photo-box, frequently regions within image relevance results. Figure 1 displays typical photo analysed. Please ignore rectangle around pink identifier-dot, well information printed top-left corner now. Large regions left, right top plant pink dot completely irrelevant analysis. pixels can happily ignored. fact, excluding result unnecessary iterations analysis, can significantly increase time required analysis complete. time-loss increases linearly number analysed images.","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/articles/image-cropping.html","id":"the-solution","dir":"Articles","previous_headings":"","what":"The solution","title":"Cropping the image for selective and faster analysis","text":"counteract , GUI allows select rectangular sub-set full image analysed instead. select area, follow steps outlined . step corresponds number within figures 2 3: Select image inspect. may select one image within Image Files-Tab Check check-box enable feature. expand previously-hidden panel. Next, press button Select area analyse launch window shown figure 3. Finally, left-click--drag area within plant identifier-dot reside. selection may contain anything else, may size. let go, selection-GUI close, bounding coordinates inserted respective numeric input controls.","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/articles/modifying-hsv-bounds.html","id":"introduction","dir":"Articles","previous_headings":"","what":"Introduction","title":"Fine-tuning HSV-boundaries","text":"default values HSV-spectra provided via shiny-application set back-end-package “duflor”, frontend-package “duflor.gui”. two methods altering HSV-bounds use analysis. first one can performed within GUI, take effect current session. Restarting GUI R-session purge changes issued way1. second one can used change values app starts, however requires additional setup side user must invoked specific manner time.","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/articles/modifying-hsv-bounds.html","id":"scales-required-for-the-different-components-of-an-hsv-triplet","dir":"Articles","previous_headings":"Introduction","what":"Scales required for the different components of an HSV-triplet","title":"Fine-tuning HSV-boundaries","text":"important understand format limitations within values respective Hue-, Saturation- Value-Components must provided. Input-values must provided HSV-color space accordance following rules: \\(0 \\le H_0 \\le 359\\), \\(0 \\le H_1 \\le 359\\), \\(H_0 \\lt H_1\\) \\(0 \\le S_0 \\le 1\\), \\(0 \\le S_1 \\le 1\\), \\(S_0 \\lt S_1\\) \\(0 \\le V_0 \\le 1\\), \\(0 \\le V_1 \\le 1\\), \\(V_0 \\lt V_1\\) Experience suggests especially \\(V_0\\)-parameter adjusted carefully.","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/articles/modifying-hsv-bounds.html","id":"finding-suitable-bounds","dir":"Articles","previous_headings":"Introduction","what":"Finding suitable bounds","title":"Fine-tuning HSV-boundaries","text":"simple fast method fine-tuning HSV-bounds required. However, repeatedly performing small changes spectrum checking results via GUI really suggested. Instead, perform following steps: Select test-image based upon changes judged Create separate R-Script, paste following contents: Modify script desired (e.g. change spectrum modifying, select suitable image test ). found set bounds content , can note respective HSV-values implement described “Modifying HSV-boundaries…”.","code":"library(duflor) ## setup test_file <- r\"(PATH/TO/TESTFILE/HERE.FILETYPE)\" spectrums <- getOption(\"duflor.default_hsv_spectrums\") ## Optional: remove all spectrums you do NOT want to modify, leaving ONLY one (here: 'bex_drought_HSV') # You can skip this step if you want spectrums_modified <- spectrums spectrums_modified$lower_bound <- duflor:::remove_key_from_list(spectrums_modified$lower_bound,c(\"bex_green_HSV\",\"bex_complete_HSV\",\"bex_root_HSV\",\"bex_identifier_dot\")) spectrums_modified$upper_bound <- duflor:::remove_key_from_list(spectrums_modified$upper_bound,c(\"bex_green_HSV\",\"bex_complete_HSV\",\"bex_root_HSV\",\"bex_identifier_dot\")) ## change the bounds you want to check a little: spectrums_modified$lower_bound$bex_drought_HSV <- c(18.0, 0.25, 0.0099) # modify the values here spectrums_modified$upper_bound$bex_drought_HSV <- c(70.0, 1.0, 0.8) ## load image pixel.array <- load_image(test_file,return_hsv = T) ## extract hits - do not change the details of this code unless you know what you are doing HSV_mask <- extract_pixels_HSV( pixel.array = pixel.array, lower_bound = spectrums_modified$lower_bound, upper_bound = spectrums_modified$upper_bound, fast_eval = T, bundle_pixelarray = F, check_value = T, use_single_iteration_cpp = T ) ## apply mask to image to see which pixels were hit # in some cases, it might be useful setting 'mask_extreme' to 'TRUE' indicator.array <- get_indicator_image( pixel.array = pixel.array, pixel.idx = HSV_mask$bex_drought_HSV$pixel.idx, target.color = \"orange\", mask_extreme = FALSE ) ## display applied mask imager::display(duflor::HSVtoRGB(indicator.array))"},{"path":[]},{"path":"https://Claudius-Appel.github.io/duflor.gui/articles/modifying-hsv-bounds.html","id":"temporarily-via-the-gui","dir":"Articles","previous_headings":"Modifying HSV-boundaries…","what":"… temporarily via the GUI","title":"Fine-tuning HSV-boundaries","text":"changes HSV-spectra issued one session via GUI (described ) persist across R-sessions. occasion spectrum’s HSV-boundaries must modified - case, spectrum can altered. , follow steps outlined , corresponding respectively annotated controls figure 1. Open editing-panel Select spectrum modify. spectra listed available use within GUI. selected spectrum, modify respective values. Submit performed changes. Note multiple spectra modified, button must pressed every modified spectrum separately. Optionally, currently selected spectrum can reset default values.","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/articles/modifying-hsv-bounds.html","id":"permanently-by-loading-modified-state-file","dir":"Articles","previous_headings":"Modifying HSV-boundaries…","what":"…permanently by loading modified state-file","title":"Fine-tuning HSV-boundaries","text":"method recommended steps outlined “…pseudo-permanently changing underlying option opening GUI”. state-management system outlined section “Saving restoring common states” vignette vignette(\"saving--restoring-application-states\", package = \"duflor.gui\") can used save modified settings, thus also changes existing HSV-ranges. , first change HSV-spectra desired via steps outlined “… temporarily via GUI”. Following , save state app state-file.","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/articles/modifying-hsv-bounds.html","id":"pseudo-permanently-by-changing-underlying-option-before-opening-the-gui","dir":"Articles","previous_headings":"Modifying HSV-boundaries…","what":"…pseudo-permanently by changing underlying option before opening the GUI","title":"Fine-tuning HSV-boundaries","text":"method recommended, remains documented sake completeness. likely significantly easier follow steps outlined “…permanently loading modified state-file”. true “---forget--” method changing spectra. “-persistent” method modify spectrum described : Create new R-Script, save somewhere. reasonably distinct name. now , longer call duflor_gui() , instead must always run script run GUI changes applied startup. Within script, add following lines: now , running script apply changes made spectrum bex_drought_HSV opening app. must noted modified spectra used base-line. altering temporarily described “… temporarily via GUI”, resetting changes reset values modified . ‘true’ default values retrieved way. access , R-session must restarted, changes must manually reversed process described . Additionally, values modified manner can checked fulfilling scales described “Scales required different components HSV-triplet”. Thus, responsibility ensuring compliance restrictions noted lies user writing script.","code":"library(duflor) # initialise the spectrums-option spectrums <- getOption(\"duflor.default_hsv_spectrums\") # then retrieve them spectrums$lower_bound$bex_drought_HSV <- c(18.0, 0.25, 0.0099) # example, modify the values here for the desired spectrum spectrums$upper_bound$bex_drought_HSV <- c(70.0, 1.0, 0.8) options(duflor.default_hsv_spectrums = spectrums) # update the option duflor.gui::duflor_gui() # and run the app"},{"path":"https://Claudius-Appel.github.io/duflor.gui/articles/modifying-hsv-bounds.html","id":"adding-new-hsv-boundaries","dir":"Articles","previous_headings":"","what":"Adding new HSV-boundaries","title":"Fine-tuning HSV-boundaries","text":"process adding new HSV-spectrum similar one required modifying pre-existing spectrum: Create new R-Script, save somewhere. reasonably distinct name. now , longer call duflor_gui() , instead must always run script run GUI Within script, add following lines: now , running script insert new spectrum new_spectrum time app started via script.","code":"library(duflor) # initialise the spectrums-option spectrums <- getOption(\"duflor.default_hsv_spectrums\") # then retrieve them spectrums$lower_bound$new_spectrum <- c(1,2,3) # add a new spectrum spectrums$upper_bound$new_spectrum <- c(4,5,6) options(duflor.default_hsv_spectrums = spectrums) # update the option duflor.gui::duflor_gui() # and run the app"},{"path":"https://Claudius-Appel.github.io/duflor.gui/articles/parallelisation.html","id":"introduction","dir":"Articles","previous_headings":"","what":"Introduction","title":"Parallelised computing as a method for increased performance","text":"Executing analysis can takes varying amounts time. 4 factors influence required time analysis linearly proportional manner: Number checked pixels Number checked images Number spectra checked-. Image dimensions spectrum one wants identify, every pixel must checked fall within outside respectively defined HSV-boundaries. follows general, following calculation yields total number iterations required calculate results: \\(\\text{Iterations}_{total} = \\text{Checked pixels}_\\text{total} = N_{Images}\\times({Width}_{Image}\\times{Height}_{Image})\\times N_{spectra}\\) step particularly complicated, particularly resource-intensive. However,sheer volume iterations make operation rather slow. Additionally, process loading image R-object work seems much time-consuming analysis described . Unfortunately, steps performed faster currently. bottle-neck lies outside scope project.","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/articles/parallelisation.html","id":"the-general-steps","dir":"Articles","previous_headings":"Introduction","what":"The general steps","title":"Parallelised computing as a method for increased performance","text":"following steps must performed obtain results single image: Load image R-object declared spectrum, check pixels image respective upper lower bounds, save coordinates pixels fulfilling condition Insert results object persistent across spectrum-iterations Convert results results-object multiple images evaluated, steps must performed corresponding number times.","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/articles/parallelisation.html","id":"a-reasonable-worst-case-scenario","dir":"Articles","previous_headings":"Introduction","what":"A reasonable worst-case scenario","title":"Parallelised computing as a method for increased performance","text":"Let’s model reasonable likely worst-case scenario: 250 images 2 spectra Image-width: 6000 pixels Image-height: 4000 pixels obtain results, 250 images must loaded. Without parallelisation (.e. sequential execution mode), every subsequent step requires previous step concluded. Using formula , total \\[ \\text{Iterations}_{total} = \\text{Checked pixels}_\\text{total} = N_{Images}\\times({Width}_{Image}\\times{Height}_{Image})\\times N_{spectra}\\\\ = 250\\times(6000\\times4000)\\times2=1.2\\times 10^{10} \\] comparisons pixel’s HSV-triplet lower- upper-bound’s HSV-triplet must performed. Note: calculation hypothetical root-area analysis 250 images, two spectra must quantified (roots identifier-area ). single check performed basically instantaneously, still takes time.","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/articles/parallelisation.html","id":"how-a-parallelised-setup-can-help","dir":"Articles","previous_headings":"","what":"How a parallelised setup can help","title":"Parallelised computing as a method for increased performance","text":"R single-threaded language, thus utilise exactly one thread one CPU-core perform iterations calculated - default. Thankfully, R packages allow parallelised use multiple available CPU-cores work operations simultaneously. Thus, app allows user run entire analysis-pipeline parallel, leveraging foreach-package. stressed entire pipeline parallelised, including loading-step.","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/articles/parallelisation.html","id":"advantages","dir":"Articles","previous_headings":"How a parallelised setup can help","what":"Advantages","title":"Parallelised computing as a method for increased performance","text":"Speed. processing multiple images parallel, total time can (roughly) divided number available workers.","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/articles/parallelisation.html","id":"limitations","dir":"Articles","previous_headings":"How a parallelised setup can help","what":"Limitations","title":"Parallelised computing as a method for increased performance","text":"Setup-time: process setting parallel back-end takes certain amount time1 RAM-usage: amount required RAM scales based number used workers, size images analysed, operating system. Operating system: Without getting low-level details, significant difference “Windows”-systems “Linux”/“MacOS” comes managing back-ends parallel-computing. Apple- Linux-machines access -called fork-back-end. three access socket-back-end.","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/articles/parallelisation.html","id":"back-ends-socket-vs-fork","dir":"Articles","previous_headings":"How a parallelised setup can help > Limitations","what":"back-ends: socket vs fork","title":"Parallelised computing as a method for increased performance","text":"-called socket-back-end can run Windows, MacOS Linux. works separately exporting required environment (variables, functions, hidden objects, loaded packages, etc.) master-process every designated worker, work secluded . worker finishes workload, must signal back master-process finished. workers done, results can collected master, combined collective output format, used “normal” variable . major disadvantage significant overhead accumulating back--forth, thus socket-cluster slow (compared fork-back-end described ). reasons described , socket-back-end also heavily increases RAM-usage (linearly number workers). hand, fork-back-end runs significantly faster. Instead duplicating data providing unique copy worker-process, worker gains access master’s environment. consequence, significant overhead duplicating environment can ignored, workers instead just return respective results master process. Unfortunately, back-end available windows. additional side note, machine-clusters use fork-back-ends.","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/articles/parallelisation.html","id":"suggestions","dir":"Articles","previous_headings":"How a parallelised setup can help","what":"Suggestions","title":"Parallelised computing as a method for increased performance","text":"setting parallel back-end via app, consider specifications machine described : might tempted create parallel back.end using available cores system. . Simply don’t. Assigning available cores cluster leave core freely-available programs machine job. can certainly cause havoc. Thus, leave least single core available. setting parallelisation via shiny-GUI, possible use cores available. limited amount available RAM, comes point adding additional workers deteriorate performance entire back-end. machine e.g. 8 GB available RAM, 2 workers might work efficiently, 3 might work just fast sequential back-end2. clear guide determine tipping-point. general, cluster comes close consuming available system RAM, adding workers likely deteriorate overall performance, slightly reducing number workers might even beneficial.","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/articles/raising-issues.html","id":"general-etiquette-and-different-types-of-issues","dir":"Articles","previous_headings":"","what":"General etiquette and different types of ‘issues’","title":"How to report issues, raise suggestions and feedback","text":"Although conglomerated name “issues”, generally reports differentiated two categories: Bug Reports Feature Requests/Suggestions","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/articles/raising-issues.html","id":"bug-reports","dir":"Articles","previous_headings":"General etiquette and different types of ‘issues’","what":"Bug Reports","title":"How to report issues, raise suggestions and feedback","text":"Bug reports… somewhat obvious first. However, great difference constitutes good, bad, useless bug-report. useful, bare-minimum amount information must provided, including package run source version-control via git local machine (instead installed package within R), SHA currently checked-commit must provided. Detailed, clear instructions required reproduce issue. example-data set exhibits problem. case duflor.gui duflor, often include example-images. Information system’s specifications (OS, hardware configuration, etc. pp.) R-Version use Notes warnings/errors emitted console /encountering bug. generated, error_state.rds-file. file generated errors occur certain sections code, . bundles state app’s data structure point error occurred, including configuration. However, include raw image-files input, must supplied separately. details, see vignette(\"saving--restoring-application-states\", package = \"duflor.gui\"). reporting bugs, heavily suggested supply file. information available, easier becomes identify actual issue.","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/articles/raising-issues.html","id":"feature-requests","dir":"Articles","previous_headings":"General etiquette and different types of ‘issues’","what":"Feature Requests","title":"How to report issues, raise suggestions and feedback","text":"keep development efficient reasonable, certain number requirements reporting problems requesting features. feature request clearly define additional feature implemented. bug-reports, information provided, easier ’s viability ease implementation can assessed. clearly describe implemented, well (broad strokes ) implemented.","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/articles/saving-and-restoring-application-states.html","id":"introduction","dir":"Articles","previous_headings":"","what":"Introduction","title":"Saving and restoring application-states","text":"app ability store configuration-state permanently across sessions, can restored later state - different machine.","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/articles/saving-and-restoring-application-states.html","id":"saving-and-restoring-common-states","dir":"Articles","previous_headings":"","what":"Saving and restoring common states","title":"Saving and restoring application-states","text":"common use-case user save restore config-changes across sessions. Let’s build hypothetical scenario, perform experiment set experimental groups 10 weeks. week, pots across groups imaged, images analysed determine development leaf-area time. Let’s assume certain settings changed standard values, instance: HSV-boundaries specific spectrum must analysed tweaked declared area identifier-dot changed default value Recreating modifications every time set images must analysed experimental setup enormous potential inducing errors along way. counteract , user may save current configuration input-controls settings file (see step () figure 1. changes can later reloaded file (step (B) figure 1. Note following limitations apply: --analysed image-files stored. Instead, directory-path selected folder . However, images moved application-state saved, images longer found. Options modified via GUI stored. Assume load configuration X, perform analysis , change HSV-bounds specific spectrum, finally save state without re-executing analysis. result, HSV-spectra stored state-file differ used analysis. user load state execute , new results identical previous version. “state” technically stores general DATA-object also contains results-data (computed state-file generated), data rendered state loaded. DATA-object essentially stored internal purposes, retain results-data across sessions.","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/articles/saving-and-restoring-application-states.html","id":"saving-states-when-errors-occur-during-analysis","dir":"Articles","previous_headings":"","what":"Saving states when errors occur during analysis","title":"Saving and restoring application-states","text":"Additionally process manually saving application-state, application generates state-files error occurs execution certain subroutines: input$submit_selected_spectra: callback issues analysis images, loading images generation results. subroutine responsible computing analyses, steps required obtain results-table figures branch . input$render_selected_mask: callback responsible inspecting mask spectrum-matches respective image-file results computed. input$save_results: callback responsible saving results-table either .xlsx-.csv-file. input$save_visualisation_plot: callback responsible saving selected KPI-plot tab Results - plots. input$render_plant: callback responsible viewing input image-file. reactive filtered_plot: reactive generates KPI-plots tab Results - plots. reactive filtered_results: reactive generates filtered results-table tab Results - inspect. Error-states saved relative selected input-folder containing input-images. states supposed used manually, instead generated issues can found easier. issues reported, state-files supplied available. application installed built package, internal functions logic-flow become somewhat harder debug. Thus, recommended load application source-code package-project via devtools inspecting bugs. Error-states deleted automatically, can accumulate. sure remove outlived usefulness.","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/articles/saving-and-restoring-application-states.html","id":"limitations","dir":"Articles","previous_headings":"","what":"Limitations","title":"Saving and restoring application-states","text":"couple limitations system: one state can loaded one time. may leverage system save restore changed HSV-spectra, thus generate state-file modified spectra. may additionally generate different state-file predefined set allocated cores parallelisation. Now, two different state-files, loading succession, latter overwrite changes made former one. First loading “parallelisation”-state, loading “spectra”-state discard changes made “parallelisation”-state.","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/authors.html","id":null,"dir":"","previous_headings":"","what":"Authors","title":"Authors and Citation","text":"Claudius Appel. Author, maintainer.","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/authors.html","id":"citation","dir":"","previous_headings":"","what":"Citation","title":"Authors and Citation","text":"Appel C (2024). duflor.gui: Frontend duflor-package. R package version 0.0.1.9052, https://Claudius-Appel.github.io/duflor.gui/.","code":"@Manual{, title = {duflor.gui: Frontend for duflor-package}, author = {Claudius Appel}, year = {2024}, note = {R package version 0.0.1.9052}, url = {https://Claudius-Appel.github.io/duflor.gui/}, }"},{"path":"https://Claudius-Appel.github.io/duflor.gui/index.html","id":"duflorgui","dir":"","previous_headings":"","what":"Frontend for duflor-package","title":"Frontend for duflor-package","text":"duflor.gui-package contains shiny-application built use duflor-package.","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/index.html","id":"installation---from-within-rstudio","dir":"","previous_headings":"","what":"Installation - from within RStudio","title":"Frontend for duflor-package","text":"package requires installation duflor-package, implements back-end code analysis-pipelines application.","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/index.html","id":"prerequisites","dir":"","previous_headings":"Installation - from within RStudio","what":"Prerequisites","title":"Frontend for duflor-package","text":"application quite complex, relies certain number packages work. package renv can help managing reproducible package environment project. additional advantage, also prevents packages system-library updated installing package. proper documentation information use-cases, refer “https://rstudio.github.io/renv/index.html”.","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/index.html","id":"setup-r-project-with-renv","dir":"","previous_headings":"Installation - from within RStudio > Prerequisites","what":"Setup r-project with renv","title":"Frontend for duflor-package","text":"set stand-alone R-project renv, easiest way R-Studio: Go File > New Project. Select New Directory. Select New Project project-type1. Give distinct name project, e.g. duflor.gui_installed2. Choose location R-project. Make sure check-box Use renv project checked.3 Make sure check-box Open new session checked. Create project. now , project can opened within R-Studio via project-selection drop--menu top-right corner RStudio-application. continuing, open project .","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/index.html","id":"install-devtools","dir":"","previous_headings":"Installation - from within RStudio > Prerequisites","what":"Install devtools","title":"Frontend for duflor-package","text":"First , make sure followed steps outlined “[Setup r-project renv]”, RStudio currently created project. Installing package GitHub requires installation R-package devtools. devtools can used compile source-packages installed binaries. asked proceed, make sure installation-path R-project created: created R-project renv , path look something like correct, can go ahead answer prompt Y. case, install devtools via RStudio-GUI: Open packages-panel. Search select devtools. “Install library”, make sure path selected similar example outlined . words, make sure install library containing string R/cache/R/renv/sandbox. installed devtools, go next step.","code":"install.packages(\"devtools\") C:/Users/User_Main/Desktop/TempTemporal/test_duflorgui_install C:/Users/User_Main/Desktop/TempTemporal/test_duflorgui_install/renv/library/R-X.Y/...."},{"path":"https://Claudius-Appel.github.io/duflor.gui/index.html","id":"install-r-build-toolchain","dir":"","previous_headings":"Installation - from within RStudio > Prerequisites","what":"Install R-build-toolchain","title":"Frontend for duflor-package","text":"underlying package duflor contains C++ code. distributed source-code, users require appropriate R-build-toolchain respective operating system. information setup-instructions, refer “https://r-pkgs.org/setup.html#setup-tools”. windows, R-package installr may used check Rtools already installed, whether found R. Additionally, notify user new R-update available (major minor versions , ignores patch versions):","code":"install.packages(\"installr\") # once pkgbuild is installed, run: installr::install.Rtools(check = T,check_r_update = T,GUI = T)"},{"path":"https://Claudius-Appel.github.io/duflor.gui/index.html","id":"installation-steps","dir":"","previous_headings":"Installation - from within RStudio","what":"Installation-steps","title":"Frontend for duflor-package","text":"duflor- duflor.gui-packages must installed respective GitHub-repositories. can install development release versions duflor.gui like : installing devtools, make sure renv-library selected installing package.","code":"# release: devtools::install_github(\"https://github.com/Claudius-Appel/duflor.gui@master\") # development version: devtools::install_github(\"https://github.com/Claudius-Appel/duflor.gui@dev\")"},{"path":"https://Claudius-Appel.github.io/duflor.gui/index.html","id":"installing-help-vignettes","dir":"","previous_headings":"Installation - from within RStudio","what":"Installing help-vignettes","title":"Frontend for duflor-package","text":"application documented detail via pkgdown, site can reached github-repository. articles outlined site may also viewed vignettes within RStudio. , must explicitly declare vignettes installed: Vignettes rendered documents discussing specific topics within package. Installing recommended, required utilizing package .","code":"devtools::install_github(\"https://github.com/Claudius-Appel/duflor.gui@master\" ,build_vignettes = T) devtools::install_github(\"https://github.com/Claudius-Appel/duflor.gui@dev\" ,build_vignettes = T)"},{"path":[]},{"path":"https://Claudius-Appel.github.io/duflor.gui/index.html","id":"prerequisites-1","dir":"","previous_headings":"Installation - from the command-line","what":"Prerequisites","title":"Frontend for duflor-package","text":"case, check make accessible command-line respective system underlying package duflor contains C++ code. distributed source-code, users require appropriate R-build-toolchain respective operating system. information setup-instructions, refer “https://r-pkgs.org/setup.html#setup-tools”.","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/index.html","id":"cli-installation-steps","dir":"","previous_headings":"Installation - from the command-line","what":"CLI-Installation-steps","title":"Frontend for duflor-package","text":"install application, follow steps : open terminal, move location want install program create folder place application , e.g. mkdir duflor_app move folder via cd duflor_app launch R executing R executing 1+1 now successfully return [1] 2 , install executing install.packages(\"renv\"), follow instructions installing /potential dependencies execute renv::init() repeat step 6) package devtools release-version: devtools::install_github(\"https://github.com/Claudius-Appel/duflor.gui@master\") development-version: devtools::install_github(\"https://github.com/Claudius-Appel/duflor.gui@dev\") follow instructions installing /potential dependencies , GUI open default-browser, application can used now ","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/index.html","id":"installing-help-vignettes-1","dir":"","previous_headings":"Installation - from the command-line","what":"Installing help-vignettes","title":"Frontend for duflor-package","text":"application documented detail via pkgdown, site can reached github-repository. articles outlined site may also viewed vignettes within RStudio. , must explicitly declare vignettes installed performing step 9 “CLI-Installation-steps”: Vignettes rendered documents discussing specific topics within package. Installing recommended, required utilizing package .","code":"devtools::install_github(\"https://github.com/Claudius-Appel/duflor.gui@master\",build_vignettes = T) devtools::install_github(\"https://github.com/Claudius-Appel/duflor.gui@dev\",build_vignettes = T)"},{"path":"https://Claudius-Appel.github.io/duflor.gui/index.html","id":"running-the-app-from-the-command-line","dir":"","previous_headings":"","what":"Running the app from the command-line","title":"Frontend for duflor-package","text":"installation, application can launched described : cd folder installed application , e.g. cd duflor_app launch R via R launch app via duflor.gui::duflor_gui()","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/index.html","id":"running-the-app-from-within-rstudio","dir":"","previous_headings":"","what":"Running the app from within RStudio","title":"Frontend for duflor-package","text":"Follow installation-steps outlined “Installation - within RStudio” Open project via drop--menu top-right corner RStudio-application. Launch app executing duflor.gui::duflor_gui() console.","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/LICENSE.html","id":null,"dir":"","previous_headings":"","what":"MIT License","title":"MIT License","text":"Copyright (c) 2024 Claudius Appel Permission hereby granted, free charge, person obtaining copy software associated documentation files (“Software”), deal Software without restriction, including without limitation rights use, copy, modify, merge, publish, distribute, sublicense, /sell copies Software, permit persons Software furnished , subject following conditions: copyright notice permission notice shall included copies substantial portions Software. SOFTWARE PROVIDED “”, WITHOUT WARRANTY KIND, EXPRESS IMPLIED, INCLUDING LIMITED WARRANTIES MERCHANTABILITY, FITNESS PARTICULAR PURPOSE NONINFRINGEMENT. EVENT SHALL AUTHORS COPYRIGHT HOLDERS LIABLE CLAIM, DAMAGES LIABILITY, WHETHER ACTION CONTRACT, TORT OTHERWISE, ARISING , CONNECTION SOFTWARE USE DEALINGS SOFTWARE.","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/convert_pixels_to_area_gui.html","id":null,"dir":"Reference","previous_headings":"","what":"convert pixel counts to an area based on the known area of an identifier-dot. — convert_pixels_to_area_gui","title":"convert pixel counts to an area based on the known area of an identifier-dot. — convert_pixels_to_area_gui","text":"convert pixel counts area based known area identifier-dot.","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/convert_pixels_to_area_gui.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"convert pixel counts to an area based on the known area of an identifier-dot. — convert_pixels_to_area_gui","text":"","code":"convert_pixels_to_area_gui(pixel.counts, identifier_area)"},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/convert_pixels_to_area_gui.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"convert pixel counts to an area based on the known area of an identifier-dot. — convert_pixels_to_area_gui","text":"pixel.counts list containing following pixel-counts: \"bex_green_HSV\" \"bex_drought_HSV\" \"bex_complete_HSV\" \"bex_identifier_HSV\" pixel-count identifier must present, whereas others optional. calculated area internally unit-less. However, default value duflor.default_identifier_area 0.503 [cm^2], areas computed function also [cm^2]. assumed area identifier can modified excuting options(duflor.default_identifier_area = ) prior calling function identifier_area declared size identifier area, [cm^2]","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/convert_pixels_to_area_gui.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"convert pixel counts to an area based on the known area of an identifier-dot. — convert_pixels_to_area_gui","text":"list computed areas key listed pixel.counts. Additionally, two meta-values returned well: identifier-area used calculating area (whichever value set option duflor.default_identifier_area) area singe pixel values [cm^2]","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/convert_pixels_to_area_gui.html","id":"note","dir":"Reference","previous_headings":"","what":"Note","title":"convert pixel counts to an area based on the known area of an identifier-dot. — convert_pixels_to_area_gui","text":"restructured version duflor::convert_pixels_to_area, suitable needs specific app.","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/dev_key_handler.html","id":null,"dir":"Reference","previous_headings":"","what":"handles the setting and unsetting of debug-keys — dev_key_handler","title":"handles the setting and unsetting of debug-keys — dev_key_handler","text":"Keys begin 2 - considered boolean flags, must provided format --key=, boolean following values allowed: T/TRUE/1 F/FALSE/0","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/dev_key_handler.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"handles the setting and unsetting of debug-keys — dev_key_handler","text":"","code":"dev_key_handler(input, DATA, DEBUGKEYS, session, use_logical_cores)"},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/dev_key_handler.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"handles the setting and unsetting of debug-keys — dev_key_handler","text":"input shiny-app input-object DATA shiny-app DATA-reactives DEBUGKEYS shiny-app DEBUGKEYS-reactives session shiny session use_logical_cores internal flag","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/dev_key_handler.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"handles the setting and unsetting of debug-keys — dev_key_handler","text":"modified DEBUGKEYS?","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/dev_key_handler.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"handles the setting and unsetting of debug-keys — dev_key_handler","text":"Keys begin 3 - expecting non-boolean, custom input, differ based respective key.","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/duflor_gui.html","id":null,"dir":"Reference","previous_headings":"","what":"Start the duflor-gui via this function — duflor_gui","title":"Start the duflor-gui via this function — duflor_gui","text":"Start duflor-gui via function","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/duflor_gui.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Start the duflor-gui via this function — duflor_gui","text":"","code":"duflor_gui()"},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/duflor_gui.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Start the duflor-gui via this function — duflor_gui","text":".","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/execute_analysis.html","id":null,"dir":"Reference","previous_headings":"","what":"wrapper-function facilitating single- and multi-image analysis. — execute_analysis","title":"wrapper-function facilitating single- and multi-image analysis. — execute_analysis","text":"wrapper-function facilitating single- multi-image analysis.","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/execute_analysis.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"wrapper-function facilitating single- and multi-image analysis. — execute_analysis","text":"","code":"execute_analysis(input, DATA, DEBUGKEYS, FLAGS)"},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/execute_analysis.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"wrapper-function facilitating single- and multi-image analysis. — execute_analysis","text":"input input respective shiny-component DATA DATA respective shiny-component DEBUGKEYS DEBUGKEYS respective shiny-component FLAGS FLAGS respective shiny-component","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/execute_analysis.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"wrapper-function facilitating single- and multi-image analysis. — execute_analysis","text":"list components results: results-data passed-execute_multiple() execute_single()","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/execute_multiple.html","id":null,"dir":"Reference","previous_headings":"","what":"execute analysis on multiple images, and return their results — execute_multiple","title":"execute analysis on multiple images, and return their results — execute_multiple","text":"single-image analysis, see execute_single()","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/execute_multiple.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"execute analysis on multiple images, and return their results — execute_multiple","text":"","code":"execute_multiple(files, input, DATA, DEBUGKEYS, FLAGS)"},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/execute_multiple.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"execute analysis on multiple images, and return their results — execute_multiple","text":"files files analyse input input respective shiny-component DATA DATA respective shiny-component DEBUGKEYS DEBUGKEYS respective shiny-component FLAGS FLAGS respective shiny-component","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/execute_multiple.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"execute analysis on multiple images, and return their results — execute_multiple","text":"results_object, see update_resultsObject()","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/execute_single.html","id":null,"dir":"Reference","previous_headings":"","what":"execute analysis on a single image, and return its results — execute_single","title":"execute analysis on a single image, and return its results — execute_single","text":"single-image analysis, see execute_multiple()","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/execute_single.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"execute analysis on a single image, and return its results — execute_single","text":"","code":"execute_single(file, input, DATA, DEBUGKEYS, FLAGS)"},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/execute_single.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"execute analysis on a single image, and return its results — execute_single","text":"file file analyse input input respective shiny-component DATA DATA respective shiny-component DEBUGKEYS DEBUGKEYS respective shiny-component FLAGS FLAGS respective shiny-component","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/execute_single.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"execute analysis on a single image, and return its results — execute_single","text":"results_object, see update_resultsObject()","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/get_group.html","id":null,"dir":"Reference","previous_headings":"","what":"trims numbers from groups from character-vector — get_group","title":"trims numbers from groups from character-vector — get_group","text":"trims numbers groups character-vector","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/get_group.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"trims numbers from groups from character-vector — get_group","text":"","code":"get_group(names)"},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/get_group.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"trims numbers from groups from character-vector — get_group","text":"names .","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/get_group.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"trims numbers from groups from character-vector — get_group","text":".","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/get_image_dimensions.html","id":null,"dir":"Reference","previous_headings":"","what":"retrieves image dimension via call to system interface — get_image_dimensions","title":"retrieves image dimension via call to system interface — get_image_dimensions","text":"retrieves image dimension via call system interface","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/get_image_dimensions.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"retrieves image dimension via call to system interface — get_image_dimensions","text":"","code":"get_image_dimensions(path)"},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/get_image_dimensions.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"retrieves image dimension via call to system interface — get_image_dimensions","text":"path path file measure","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/get_image_dimensions.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"retrieves image dimension via call to system interface — get_image_dimensions","text":"list(width=dbl,height=dbl)","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/get_KPI_plot.html","id":null,"dir":"Reference","previous_headings":"","what":"generate a ggplot for a given KPI — get_KPI_plot","title":"generate a ggplot for a given KPI — get_KPI_plot","text":"Function generates ggplot-object base selected choices DDLs","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/get_KPI_plot.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"generate a ggplot for a given KPI — get_KPI_plot","text":"","code":"get_KPI_plot(input, DATA)"},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/get_KPI_plot.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"generate a ggplot for a given KPI — get_KPI_plot","text":"input input respective shiny-component DATA DATA respective shiny-component","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/get_KPI_plot.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"generate a ggplot for a given KPI — get_KPI_plot","text":"ggplot-object respective KPI","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/key_handle_cores.html","id":null,"dir":"Reference","previous_headings":"","what":"internal function handling dev-key ---set.cores=XX — key_handle_cores","title":"internal function handling dev-key ---set.cores=XX — key_handle_cores","text":"internal function handling dev-key ---set.cores=XX","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/key_handle_cores.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"internal function handling dev-key ---set.cores=XX — key_handle_cores","text":"","code":"key_handle_cores(value, DATA, use_logical_cores, session)"},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/key_handle_cores.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"internal function handling dev-key ---set.cores=XX — key_handle_cores","text":"value . DATA . use_logical_cores . session .","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/limit_identifier_coordinates.html","id":null,"dir":"Reference","previous_headings":"","what":"restrict area in which identifier-pixels are considered ","title":"restrict area in which identifier-pixels are considered ","text":"function applied identifier-range. intention exclude random pixels definitely attributed identifier-data.","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/limit_identifier_coordinates.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"restrict area in which identifier-pixels are considered ","text":"","code":"limit_identifier_coordinates( spectrums_object, image_dimensions, identifiersearch_x0, identifiersearch_x1, identifiersearch_y0, identifiersearch_y1 )"},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/limit_identifier_coordinates.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"restrict area in which identifier-pixels are considered ","text":"spectrums_object return object extract_pixels_HSV() image_dimensions dimensions image identifiersearch_x0 respective coordinate search bounding rectangle identifiersearch_x1 respective coordinate search bounding rectangle identifiersearch_y0 respective coordinate search bounding rectangle identifiersearch_y1 respective coordinate search bounding rectangle","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/limit_identifier_coordinates.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"restrict area in which identifier-pixels are considered ","text":"modified spectrums_object","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/limit_to_range.html","id":null,"dir":"Reference","previous_headings":"","what":"replace values outside of boundaries with respective boundary — limit_to_range","title":"replace values outside of boundaries with respective boundary — limit_to_range","text":"function limits values lie outside [replace_lower, replace_upper]. Values fall outside range modified.","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/limit_to_range.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"replace values outside of boundaries with respective boundary — limit_to_range","text":"","code":"limit_to_range(x, replace_lower, replace_upper)"},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/limit_to_range.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"replace values outside of boundaries with respective boundary — limit_to_range","text":"replace_lower value insert place elements value bound. replace_upper see replace_lower value vector normalise","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/limit_to_range.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"replace values outside of boundaries with respective boundary — limit_to_range","text":"vector, normalised range [replace_lower, replace_upper]","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/limit_to_range.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"replace values outside of boundaries with respective boundary — limit_to_range","text":"","code":"result <- duflor.gui:::limit_to_range(c(0,100,255),0,255) result2 <- duflor.gui:::limit_to_range(c(0,100,256),0,255) print(result) #> [1] 0 100 255 print(result2) #> [1] 0 100 255"},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/open_parallelPanel_event.html","id":null,"dir":"Reference","previous_headings":"","what":"internal callback function for the checkbox opening the parallelisation-panel — open_parallelPanel_event","title":"internal callback function for the checkbox opening the parallelisation-panel — open_parallelPanel_event","text":"internal callback function checkbox opening parallelisation-panel","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/open_parallelPanel_event.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"internal callback function for the checkbox opening the parallelisation-panel — open_parallelPanel_event","text":"","code":"open_parallelPanel_event( input, DATA, FLAGS, use_logical_cores, session, STARTUP, default_init_cores = 2 )"},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/open_parallelPanel_event.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"internal callback function for the checkbox opening the parallelisation-panel — open_parallelPanel_event","text":"input input respective shiny-component DATA DATA respective shiny-component FLAGS FLAGS respective shiny-component use_logical_cores internal flag session shiny session STARTUP STARTUP respective shiny-component","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/prepare_resultsObject.html","id":null,"dir":"Reference","previous_headings":"","what":"prepare the dataframe-object into which all results are to be merged. — prepare_resultsObject","title":"prepare the dataframe-object into which all results are to be merged. — prepare_resultsObject","text":"results requires fields full_path image_date image_name processed_width processed_height names(DATA$spectrums$lower_bound): %spectrum%_count img.fraction (maybe valuable?) %spectrum%_area (results duflor::convert_pixels_to_area()) %spectrum%_fraction (defined %spectrum%_count/(sum(_count))","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/prepare_resultsObject.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"prepare the dataframe-object into which all results are to be merged. — prepare_resultsObject","text":"","code":"prepare_resultsObject(input, DATA, DEBUGKEYS)"},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/prepare_resultsObject.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"prepare the dataframe-object into which all results are to be merged. — prepare_resultsObject","text":"input shiny-app input-object DATA shiny-app DATA-reactives DEBUGKEYS shiny-app DEBUGKEYS-reactives","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/prepare_resultsObject.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"prepare the dataframe-object into which all results are to be merged. — prepare_resultsObject","text":"results-csv-framework.","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/render_selected_mask.html","id":null,"dir":"Reference","previous_headings":"","what":"render mask based on input data — render_selected_mask","title":"render mask based on input data — render_selected_mask","text":"render mask based input data","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/render_selected_mask.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"render mask based on input data — render_selected_mask","text":"","code":"render_selected_mask(input, DATA, FLAGS)"},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/render_selected_mask.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"render mask based on input data — render_selected_mask","text":"input input respective shiny-component DATA DATA respective shiny-component FLAGS FLAGS respective shiny-component","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/restore_state.html","id":null,"dir":"Reference","previous_headings":"","what":"restore application state from stored .RDS-file — restore_state","title":"restore application state from stored .RDS-file — restore_state","text":"function responsible ","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/restore_state.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"restore application state from stored .RDS-file — restore_state","text":"","code":"restore_state( input, output, DATA, FLAGS, DEBUGKEYS, session, volumes, state_file )"},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/restore_state.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"restore application state from stored .RDS-file — restore_state","text":"input input respective shiny-component output output respective shiny-component DATA DATA respective shiny-component FLAGS FLAGS respective shiny-component DEBUGKEYS shiny-app DEBUGKEYS-reactives session shiny session volumes volume letters available state_file filepath --loaded state_file","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/restore_state.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"restore application state from stored .RDS-file — restore_state","text":"path loaded file.","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/save_error_state.html","id":null,"dir":"Reference","previous_headings":"","what":"Handle saving application-state to file — save_error_state","title":"Handle saving application-state to file — save_error_state","text":"assumes input$save_state properly formatted, returned shinyFiles::shinyFileSave() assumes volumes return-value shinyFiles::getVolumes()","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/save_error_state.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Handle saving application-state to file — save_error_state","text":"","code":"save_error_state( input, DATA, DEBUGKEYS, FLAGS, volumes, error, errordir_path = NA, erroneous_callback = \"\" )"},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/save_error_state.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Handle saving application-state to file — save_error_state","text":"input . DATA . DEBUGKEYS . FLAGS . volumes . error error-object errordir_path directory write error-replication state ","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/save_error_state.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Handle saving application-state to file — save_error_state","text":"path error-state file may used load error-triggering settings.","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/save_state.html","id":null,"dir":"Reference","previous_headings":"","what":"Handle saving application-state to file — save_state","title":"Handle saving application-state to file — save_state","text":"assumes input$save_state properly formatted, returned shinyFiles::shinyFileSave() assumes volumes return-value shinyFiles::getVolumes()","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/save_state.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Handle saving application-state to file — save_state","text":"","code":"save_state(input, DATA, DEBUGKEYS, FLAGS, volumes)"},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/save_state.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Handle saving application-state to file — save_state","text":"input . DATA . DEBUGKEYS . FLAGS . volumes .","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/save_state.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Handle saving application-state to file — save_state","text":"path saved state-file","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/select_spectra_gui_comp.html","id":null,"dir":"Reference","previous_headings":"","what":"generate and call a modal-dialogue which lets you select which spectrums to analyse. — select_spectra_gui_comp","title":"generate and call a modal-dialogue which lets you select which spectrums to analyse. — select_spectra_gui_comp","text":"Additionally, queries component radio_analysis_type preselect common results different types analyses","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/select_spectra_gui_comp.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"generate and call a modal-dialogue which lets you select which spectrums to analyse. — select_spectra_gui_comp","text":"","code":"select_spectra_gui_comp(input)"},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/select_spectra_gui_comp.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"generate and call a modal-dialogue which lets you select which spectrums to analyse. — select_spectra_gui_comp","text":"input input-shiny-component","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/select_spectra_gui_comp.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"generate and call a modal-dialogue which lets you select which spectrums to analyse. — select_spectra_gui_comp","text":".","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/setup_parallel.html","id":null,"dir":"Reference","previous_headings":"","what":"setup parallel backend for a given number of cores. — setup_parallel","title":"setup parallel backend for a given number of cores. — setup_parallel","text":"setup parallel backend given number cores.","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/setup_parallel.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"setup parallel backend for a given number of cores. — setup_parallel","text":"","code":"setup_parallel(used_cores, cluster_type)"},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/setup_parallel.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"setup parallel backend for a given number of cores. — setup_parallel","text":"used_cores number cores designated cluster cluster_type either PSOCK FORK. Generally FORK recommended PSOCK, however available systems. See note ","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/setup_parallel.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"setup parallel backend for a given number of cores. — setup_parallel","text":".","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/setup_parallel.html","id":"note","dir":"Reference","previous_headings":"","what":"Note","title":"setup parallel backend for a given number of cores. — setup_parallel","text":"Windows, PSOCK-cluster type available.","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/show_infringing_spectrum_elements_gui_comp.html","id":null,"dir":"Reference","previous_headings":"","what":"generate and call a modal-dialogue which displays the prospective changes in HSV-spectrums — show_infringing_spectrum_elements_gui_comp","title":"generate and call a modal-dialogue which displays the prospective changes in HSV-spectrums — show_infringing_spectrum_elements_gui_comp","text":"Additionally, queries whether applied, reset previous value.","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/show_infringing_spectrum_elements_gui_comp.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"generate and call a modal-dialogue which displays the prospective changes in HSV-spectrums — show_infringing_spectrum_elements_gui_comp","text":"","code":"show_infringing_spectrum_elements_gui_comp(input, DATA, changes)"},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/show_infringing_spectrum_elements_gui_comp.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"generate and call a modal-dialogue which displays the prospective changes in HSV-spectrums — show_infringing_spectrum_elements_gui_comp","text":"input input respective shiny-component DATA DATA respective shiny-component changes results-object validate_custom_HSV_values()","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/show_infringing_spectrum_elements_gui_comp.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"generate and call a modal-dialogue which displays the prospective changes in HSV-spectrums — show_infringing_spectrum_elements_gui_comp","text":".","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/shutdown_parallel.html","id":null,"dir":"Reference","previous_headings":"","what":"shut down existing parallel cluster — shutdown_parallel","title":"shut down existing parallel cluster — shutdown_parallel","text":"shut existing parallel cluster","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/shutdown_parallel.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"shut down existing parallel cluster — shutdown_parallel","text":"","code":"shutdown_parallel()"},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/store_KPI_plot_to_file.html","id":null,"dir":"Reference","previous_headings":"","what":"save KPI-plot to file — store_KPI_plot_to_file","title":"save KPI-plot to file — store_KPI_plot_to_file","text":"save KPI-plot file","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/store_KPI_plot_to_file.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"save KPI-plot to file — store_KPI_plot_to_file","text":"","code":"store_KPI_plot_to_file(input, DATA)"},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/store_KPI_plot_to_file.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"save KPI-plot to file — store_KPI_plot_to_file","text":"input input respective shiny-component DATA DATA respective shiny-component","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/store_results_to_file.html","id":null,"dir":"Reference","previous_headings":"","what":"write results of the analysis to file — store_results_to_file","title":"write results of the analysis to file — store_results_to_file","text":"write results analysis file","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/store_results_to_file.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"write results of the analysis to file — store_results_to_file","text":"","code":"store_results_to_file( results, results_path, save_to_xlsx = FALSE, set_author_xlsx = FALSE )"},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/store_results_to_file.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"write results of the analysis to file — store_results_to_file","text":"results object write. results_path path write file , sans filesuffix. save_to_xlsx results written .xlsx-file? false, written .csv-file instead. set_author_xlsx writing xlsx-file, author set generated 'duflor' via 'duflor.gui', user_machine XX?","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/store_results_to_file.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"write results of the analysis to file — store_results_to_file","text":"list containing boolean check whether file written disk successfully complete path resulting file.","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/store_results_to_file.html","id":"note","dir":"Reference","previous_headings":"","what":"Note","title":"write results of the analysis to file — store_results_to_file","text":"XLSX-files suggested output additional postprocessing required. data modified , writing csv save space.","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/update_resultsObject.html","id":null,"dir":"Reference","previous_headings":"","what":"adds a line of values newline to a df resultsObject — update_resultsObject","title":"adds a line of values newline to a df resultsObject — update_resultsObject","text":"function validate inputs!.","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/update_resultsObject.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"adds a line of values newline to a df resultsObject — update_resultsObject","text":"","code":"update_resultsObject(resultsObject, new_line)"},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/update_resultsObject.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"adds a line of values newline to a df resultsObject — update_resultsObject","text":"resultsObject existing dataframe new_line data-vector add","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/update_resultsObject.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"adds a line of values newline to a df resultsObject — update_resultsObject","text":"updated resultsObject","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/validate_custom_HSV_values.html","id":null,"dir":"Reference","previous_headings":"","what":"ensure that custom HSV values are within required range — validate_custom_HSV_values","title":"ensure that custom HSV values are within required range — validate_custom_HSV_values","text":"HUE, value must within [0, 359] SATURATIOn, value must within [0, 1] VALUE, value must within [0, 1]","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/validate_custom_HSV_values.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"ensure that custom HSV values are within required range — validate_custom_HSV_values","text":"","code":"validate_custom_HSV_values(input, DATA, session)"},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/validate_custom_HSV_values.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"ensure that custom HSV values are within required range — validate_custom_HSV_values","text":"input input respective shiny-component DATA DATA respective shiny-component session shiny session","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/validate_custom_HSV_values.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"ensure that custom HSV values are within required range — validate_custom_HSV_values","text":"list containing expected bounds keys specific bound violated, along violated value","code":""}] +[{"path":"https://Claudius-Appel.github.io/duflor.gui/articles/general-user-manual.html","id":"general-structure","dir":"Articles","previous_headings":"","what":"General Structure","title":"General user manual for 'duflor.gui'","text":"figure 1, general overview GUI can seen. general, GUI split two regions. grey panel left side contains input-controls relevant setup configuration analysis. , steps must done get results located . Consequently, buttons/drop--menus/tables/controls right side app pertaining results. noted several controls won’t anything results computed1.","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/articles/general-user-manual.html","id":"steps-required-to-run-an-analysis-input-controls","dir":"Articles","previous_headings":"General Structure","what":"Steps required to run an analysis / Input Controls","title":"General user manual for 'duflor.gui'","text":"section deal detail controls grey panel. Generally, steps designed done order, top bottom2: Selecting folder containing input images.Note: folder must contain images intended evaluated, extends sub-folders. select folder foo analysed, image foo/bar.png evaluated. However, images foo/baz/bar.png foo/baz/another/ridiculous/nesting/plant.png also evaluated. Selecting type analysis performed3. Select GFA Leaf Area Analysis/Grünflächenanalyse, WFA intend perform Root Area Analysis/Wurzelflächenanalyse. \\(0 \\le H_0 \\le 359\\), \\(0 \\le H_1 \\le 359\\), \\(H_0 \\lt H_1\\) \\(0 \\le S_0 \\le 1\\), \\(0 \\le S_1 \\le 1\\), \\(S_0 \\lt S_1\\) \\(0 \\le V_0 \\le 1\\), \\(0 \\le V_1 \\le 1\\), \\(V_0 \\lt V_1\\) Experience suggests especially \\(V_0\\)-parameter adjusted carefully. step explained detail “Fine-tuning HSV-boundaries”. Decide whether image cropped. Cropping explained detail “Cropping Images”. Decide whether restrict area within identifier-dot truely lies. information, see “Restricting area within identifier-dot quantified”. Taking precaution heavily suggested. Decide whether execution run parallel. Parallelisation can significantly reduce execution-time, particularly larger image-sets. ’s use strongly advised number images gets ~40. , might still sensible, author comfortable giving blanket recommendation. information, see “Parallelised execution”. Select date images shot. Optionally alter area identifier. Decide whether analyse images listed tab Image Files, single one set. Pressing either buttons render GUI unresponsive executing respective workflow, completed various results right side app updated.","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/articles/general-user-manual.html","id":"post-execution-steps","dir":"Articles","previous_headings":"General Structure","what":"Post-Execution Steps","title":"General user manual for 'duflor.gui'","text":"analysis finished, controls tabs 2-4 right side app updated.","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/articles/general-user-manual.html","id":"tab-2-results---complete","dir":"Articles","previous_headings":"General Structure > Post-Execution Steps","what":"Tab 2: Results - complete","title":"General user manual for 'duflor.gui'","text":"table tab renders results written file \\(1:1\\). bottom, may decide whether results saved .csv-file, .xlsx-file. Generally use .csv suggested smaller file-size; sometimes output data must processed afterwards, saving data .xlsx-file may advantageous.","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/articles/general-user-manual.html","id":"tab-3-results---inspect","dir":"Articles","previous_headings":"General Structure > Post-Execution Steps","what":"Tab 3: Results - inspect","title":"General user manual for 'duflor.gui'","text":"third tab lets inspect results based specific spectrum. table exists two simple reasons: “complete” table frequently crowded easily digestible, particularly lower-DPI screens. selecting spectrum file, results applying said spectrum selected file can viewed (see Figure 2). Optionally, contrast “hits” pixels can increased. can particularly helpful trying identify false positive pixels given spectrum (see figure 3)","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/articles/general-user-manual.html","id":"tab-4-results---plots","dir":"Articles","previous_headings":"General Structure > Post-Execution Steps","what":"Tab 4: Results - plots","title":"General user manual for 'duflor.gui'","text":"fourth tab allows view basic plot different KPIs determined. Currently, following KPIs available: area_per_pixel: value denotes “much area”5 equivalent single pixel. resulting area6, number matching pixels, fraction matching pixels relative potential hits","code":""},{"path":[]},{"path":"https://Claudius-Appel.github.io/duflor.gui/articles/general-user-manual.html","id":"state-management-saving-and-restoring-application-configuration-to-and-from-files","dir":"Articles","previous_headings":"General Structure > Edge-cases / special controls","what":"State-Management: Saving and restoring application configuration to and from files","title":"General user manual for 'duflor.gui'","text":"bottom grey panel exists section called “Bookmarking”. allows user store current state app’s input data (configuration, chosen directory-path, relevant data) file, can loaded later time. general, two use-cases: Retaining restoring common configuration changes easier access. Restoring configurations induced errors, might debugged reproducible manner. details, see vignette(\"saving--restoring-application-states\", package = \"duflor.gui\").","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/articles/general-user-manual.html","id":"tab-1-image-files","dir":"Articles","previous_headings":"General Structure > Edge-cases / special controls","what":"Tab 1: Image Files","title":"General user manual for 'duflor.gui'","text":"tab contains image files analysed. However, also allows view image. particularly useful verifying correctly cropped image, /correctly selected area identifier-dot (suggested extra steps). example application look like can seen figure 4.","code":""},{"path":[]},{"path":"https://Claudius-Appel.github.io/duflor.gui/articles/general-user-manual.html","id":"cropping-images","dir":"Articles","previous_headings":"Measures for optimising execution speed","what":"Cropping Images","title":"General user manual for 'duflor.gui'","text":"effective way increasing execution time reduce size data- set analysed. desired area selected described , can optionally reviewed (another) image pressing Render plant-button tab Image Files. -depth description can found vignette(\"image-cropping\", package = \"duflor.gui\").","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/articles/general-user-manual.html","id":"parallelised-execution","dir":"Articles","previous_headings":"Measures for optimising execution speed","what":"Parallelised execution","title":"General user manual for 'duflor.gui'","text":"Based power system running app, one might consider parallelising evaluation images reduce computation time. However, effectiveness depends heavily resources available. -depth description can found vignette(\"parallelisation\", package = \"duflor.gui\").","code":""},{"path":[]},{"path":"https://Claudius-Appel.github.io/duflor.gui/articles/general-user-manual.html","id":"restricting-area-within-which-the-identifier-dot-is-quantified","dir":"Articles","previous_headings":"Measures for maximising accuracy","what":"Restricting area within which the identifier-dot is quantified","title":"General user manual for 'duflor.gui'","text":"Typically, largest error-source bad inconsistent determination identifier used calculate area extracted spectra. information counter issue, -depth description can found vignette(\"identifier-cropping\", package = \"duflor.gui\").","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/articles/general-user-manual.html","id":"fine-tuning-hsv-boundaries","dir":"Articles","previous_headings":"Measures for maximising accuracy","what":"Fine-tuning HSV-boundaries","title":"General user manual for 'duflor.gui'","text":"Determining HSV-boundaries can arduous time-consuming process. recommended frequently via GUI, instead create small script calling relevant functions duflor-package . -depth guide details can found vignette(\"modifying-hsv-bounds\", package = \"duflor.gui\").","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/articles/general-user-manual.html","id":"advanced-debugging","dir":"Articles","previous_headings":"","what":"(Advanced) Debugging","title":"General user manual for 'duflor.gui'","text":"Generally, app tries give reasonable warnings status-messages via small red/yellow/blue message boxes. fairly self-explanatory, pop author thought sensible necessary. app runs error, cases configuration required triggering said error preserved. info, see section “Saving states errors occur analysis” vignette(\"saving--restoring-application-states\", package = \"duflor.gui\").","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/articles/general-user-manual.html","id":"development-modifications-issues","dir":"Articles","previous_headings":"","what":"Development, Modifications, Issues","title":"General user manual for 'duflor.gui'","text":"details raise new feature-requests, please refer vignette(\"raising-issues\", package = \"duflor.gui\").","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/articles/general-user-manual.html","id":"reporting-issues","dir":"Articles","previous_headings":"Development, Modifications, Issues","what":"Reporting issues","title":"General user manual for 'duflor.gui'","text":"app, underlying code can reviewed minimal upfront work opening source-code GitHub - either manually downloading , cloning via git. either, navigate duflor- duflor.gui-repository. details see vignette(\"raising-issues\", package = \"duflor.gui\").","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/articles/general-user-manual.html","id":"further-development","dir":"Articles","previous_headings":"Development, Modifications, Issues","what":"Further development","title":"General user manual for 'duflor.gui'","text":"free take either packages continue development , abiding licensing terms declared.","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/articles/identifier-cropping.html","id":"the-problem","dir":"Articles","previous_headings":"","what":"The problem","title":"Restricting area for quantification of the identifier-dot","text":"Analysing entire image bears risk introducing high error-rates determined number pixels “identifier” deviates. Given difference orders magnitude number “identifier”-pixels typical number pixels plant-related spectrum (e.g. “green plant area”), small deviation number detected “identifier”-pixels compared images drastically influence computed areas spectra. issue can observed figure :","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/articles/identifier-cropping.html","id":"the-solution","dir":"Articles","previous_headings":"","what":"The solution","title":"Restricting area for quantification of the identifier-dot","text":"counteract , GUI allows limit range within matches identifier-spectrum considered “valid”. matches outside area ignored. select area, follow steps outlined . step corresponds number within figures 2 3: Select image inspect. may select one image within Image Files-Tab. Check check-box enable feature. expand previously-hidden panel. Next, press button Select area analyse launch window shown figure 3. Finally, left-click--drag area within identifier-dot resides. selection may contain anything, may size. let go, selection-GUI close, bounding coordinates inserted respective numeric input controls. might tempted make small possible. However, certainly advantageous minimise area much possible, certain buffer-zone kept. position identifier-dot might differ subtly across images, -strict selection might suddenly exclude pixels actually part identifier-dot.","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/articles/identifier-cropping.html","id":"results","dir":"Articles","previous_headings":"","what":"Results","title":"Restricting area for quantification of the identifier-dot","text":"difference step can make can observed tables 1 2. Note small example, effect preventive step entirely dependent upon image, thus hard predict. can images contain almost impurities, images severely polluted “invalid” hits. Table 1: Number pixels ‘identifier_dot’, well resulting area example-drought spectrum based given number matched pixels. case, qualified “identifier”-pixels used determine areas. Table 2: Restricting area identifier-dot lies changes given spectrum’s calculated area.","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/articles/image-cropping.html","id":"the-problem","dir":"Articles","previous_headings":"","what":"The problem","title":"Cropping the image for selective and faster analysis","text":"taking images pot photo-box, frequently regions within image relevance results. Figure 1 displays typical photo analysed. Please ignore rectangle around pink identifier-dot, well information printed top-left corner now. Large regions left, right top plant pink dot completely irrelevant analysis. pixels can happily ignored. fact, excluding result unnecessary iterations analysis, can significantly increase time required analysis complete. time-loss increases linearly number analysed images.","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/articles/image-cropping.html","id":"the-solution","dir":"Articles","previous_headings":"","what":"The solution","title":"Cropping the image for selective and faster analysis","text":"counteract , GUI allows select rectangular sub-set full image analysed instead. select area, follow steps outlined . step corresponds number within figures 2 3: Select image inspect. may select one image within Image Files-Tab Check check-box enable feature. expand previously-hidden panel. Next, press button Select area analyse launch window shown figure 3. Finally, left-click--drag area within plant identifier-dot reside. selection may contain anything else, may size. let go, selection-GUI close, bounding coordinates inserted respective numeric input controls.","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/articles/modifying-hsv-bounds.html","id":"introduction","dir":"Articles","previous_headings":"","what":"Introduction","title":"Fine-tuning HSV-boundaries","text":"default values HSV-spectra provided via shiny-application set back-end-package “duflor”, frontend-package “duflor.gui”. two methods altering HSV-bounds use analysis. first one can performed within GUI, take effect current session. Restarting GUI R-session purge changes issued way1. second one can used change values app starts, however requires additional setup side user must invoked specific manner time.","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/articles/modifying-hsv-bounds.html","id":"scales-required-for-the-different-components-of-an-hsv-triplet","dir":"Articles","previous_headings":"Introduction","what":"Scales required for the different components of an HSV-triplet","title":"Fine-tuning HSV-boundaries","text":"important understand format limitations within values respective Hue-, Saturation- Value-Components must provided. Input-values must provided HSV-color space accordance following rules: \\(0 \\le H_0 \\le 359\\), \\(0 \\le H_1 \\le 359\\), \\(H_0 \\lt H_1\\) \\(0 \\le S_0 \\le 1\\), \\(0 \\le S_1 \\le 1\\), \\(S_0 \\lt S_1\\) \\(0 \\le V_0 \\le 1\\), \\(0 \\le V_1 \\le 1\\), \\(V_0 \\lt V_1\\) Experience suggests especially \\(V_0\\)-parameter adjusted carefully.","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/articles/modifying-hsv-bounds.html","id":"finding-suitable-bounds","dir":"Articles","previous_headings":"Introduction","what":"Finding suitable bounds","title":"Fine-tuning HSV-boundaries","text":"simple fast method fine-tuning HSV-bounds required. However, repeatedly performing small changes spectrum checking results via GUI really suggested. Instead, perform following steps: Select test-image based upon changes judged Create separate R-Script, paste following contents: Modify script desired (e.g. change spectrum modifying, select suitable image test ). found set bounds content , can note respective HSV-values implement described “Modifying HSV-boundaries…”.","code":"library(duflor) ## setup test_file <- r\"(PATH/TO/TESTFILE/HERE.FILETYPE)\" spectrums <- getOption(\"duflor.default_hsv_spectrums\") ## Optional: remove all spectrums you do NOT want to modify, leaving ONLY one (here: 'bex_drought_HSV') # You can skip this step if you want spectrums_modified <- spectrums spectrums_modified$lower_bound <- duflor:::remove_key_from_list(spectrums_modified$lower_bound,c(\"bex_green_HSV\",\"bex_complete_HSV\",\"bex_root_HSV\",\"bex_identifier_dot\")) spectrums_modified$upper_bound <- duflor:::remove_key_from_list(spectrums_modified$upper_bound,c(\"bex_green_HSV\",\"bex_complete_HSV\",\"bex_root_HSV\",\"bex_identifier_dot\")) ## change the bounds you want to check a little: spectrums_modified$lower_bound$bex_drought_HSV <- c(18.0, 0.25, 0.0099) # modify the values here spectrums_modified$upper_bound$bex_drought_HSV <- c(70.0, 1.0, 0.8) ## load image pixel.array <- load_image(test_file,return_hsv = T) ## extract hits - do not change the details of this code unless you know what you are doing HSV_mask <- extract_pixels_HSV( pixel.array = pixel.array, lower_bound = spectrums_modified$lower_bound, upper_bound = spectrums_modified$upper_bound, fast_eval = T, bundle_pixelarray = F, check_value = T, use_single_iteration_cpp = T ) ## apply mask to image to see which pixels were hit # in some cases, it might be useful setting 'mask_extreme' to 'TRUE' indicator.array <- get_indicator_image( pixel.array = pixel.array, pixel.idx = HSV_mask$bex_drought_HSV$pixel.idx, target.color = \"orange\", mask_extreme = FALSE ) ## display applied mask imager::display(duflor::HSVtoRGB(indicator.array))"},{"path":[]},{"path":"https://Claudius-Appel.github.io/duflor.gui/articles/modifying-hsv-bounds.html","id":"temporarily-via-the-gui","dir":"Articles","previous_headings":"Modifying HSV-boundaries…","what":"… temporarily via the GUI","title":"Fine-tuning HSV-boundaries","text":"changes HSV-spectra issued one session via GUI (described ) persist across R-sessions. occasion spectrum’s HSV-boundaries must modified - case, spectrum can altered. , follow steps outlined , corresponding respectively annotated controls figure 1. Open editing-panel Select spectrum modify. spectra listed available use within GUI. selected spectrum, modify respective values. Submit performed changes. Note multiple spectra modified, button must pressed every modified spectrum separately. Optionally, currently selected spectrum can reset default values.","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/articles/modifying-hsv-bounds.html","id":"permanently-by-loading-modified-state-file","dir":"Articles","previous_headings":"Modifying HSV-boundaries…","what":"…permanently by loading modified state-file","title":"Fine-tuning HSV-boundaries","text":"method recommended steps outlined “…pseudo-permanently changing underlying option opening GUI”. state-management system outlined section “Saving restoring common states” vignette vignette(\"saving--restoring-application-states\", package = \"duflor.gui\") can used save modified settings, thus also changes existing HSV-ranges. , first change HSV-spectra desired via steps outlined “… temporarily via GUI”. Following , save state app state-file.","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/articles/modifying-hsv-bounds.html","id":"pseudo-permanently-by-changing-underlying-option-before-opening-the-gui","dir":"Articles","previous_headings":"Modifying HSV-boundaries…","what":"…pseudo-permanently by changing underlying option before opening the GUI","title":"Fine-tuning HSV-boundaries","text":"method recommended, remains documented sake completeness. likely significantly easier follow steps outlined “…permanently loading modified state-file”. true “---forget--” method changing spectra. “-persistent” method modify spectrum described : Create new R-Script, save somewhere. reasonably distinct name. now , longer call duflor_gui() , instead must always run script run GUI changes applied startup. Within script, add following lines: now , running script apply changes made spectrum bex_drought_HSV opening app. must noted modified spectra used base-line. altering temporarily described “… temporarily via GUI”, resetting changes reset values modified . ‘true’ default values retrieved way. access , R-session must restarted, changes must manually reversed process described . Additionally, values modified manner can checked fulfilling scales described “Scales required different components HSV-triplet”. Thus, responsibility ensuring compliance restrictions noted lies user writing script.","code":"library(duflor) # initialise the spectrums-option spectrums <- getOption(\"duflor.default_hsv_spectrums\") # then retrieve them spectrums$lower_bound$bex_drought_HSV <- c(18.0, 0.25, 0.0099) # example, modify the values here for the desired spectrum spectrums$upper_bound$bex_drought_HSV <- c(70.0, 1.0, 0.8) options(duflor.default_hsv_spectrums = spectrums) # update the option duflor.gui::duflor_gui() # and run the app"},{"path":"https://Claudius-Appel.github.io/duflor.gui/articles/modifying-hsv-bounds.html","id":"adding-new-hsv-boundaries","dir":"Articles","previous_headings":"","what":"Adding new HSV-boundaries","title":"Fine-tuning HSV-boundaries","text":"process adding new HSV-spectrum similar one required modifying pre-existing spectrum: Create new R-Script, save somewhere. reasonably distinct name. now , longer call duflor_gui() , instead must always run script run GUI Within script, add following lines: now , running script insert new spectrum new_spectrum time app started via script.","code":"library(duflor) # initialise the spectrums-option spectrums <- getOption(\"duflor.default_hsv_spectrums\") # then retrieve them spectrums$lower_bound$new_spectrum <- c(1,2,3) # add a new spectrum spectrums$upper_bound$new_spectrum <- c(4,5,6) options(duflor.default_hsv_spectrums = spectrums) # update the option duflor.gui::duflor_gui() # and run the app"},{"path":"https://Claudius-Appel.github.io/duflor.gui/articles/parallelisation.html","id":"introduction","dir":"Articles","previous_headings":"","what":"Introduction","title":"Parallelised computing as a method for increased performance","text":"Executing analysis can takes varying amounts time. 4 factors influence required time analysis linearly proportional manner: Number checked pixels Number checked images Number spectra checked-. Image dimensions spectrum one wants identify, every pixel must checked fall within outside respectively defined HSV-boundaries. follows general, following calculation yields total number iterations required calculate results: \\(\\text{Iterations}_{total} = \\text{Checked pixels}_\\text{total} = N_{Images}\\times({Width}_{Image}\\times{Height}_{Image})\\times N_{spectra}\\) step particularly complicated, particularly resource-intensive. However,sheer volume iterations make operation rather slow. Additionally, process loading image R-object work seems much time-consuming analysis described . Unfortunately, steps performed faster currently. bottle-neck lies outside scope project.","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/articles/parallelisation.html","id":"the-general-steps","dir":"Articles","previous_headings":"Introduction","what":"The general steps","title":"Parallelised computing as a method for increased performance","text":"following steps must performed obtain results single image: Load image R-object declared spectrum, check pixels image respective upper lower bounds, save coordinates pixels fulfilling condition Insert results object persistent across spectrum-iterations Convert results results-object multiple images evaluated, steps must performed corresponding number times.","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/articles/parallelisation.html","id":"a-reasonable-worst-case-scenario","dir":"Articles","previous_headings":"Introduction","what":"A reasonable worst-case scenario","title":"Parallelised computing as a method for increased performance","text":"Let’s model reasonable likely worst-case scenario: 250 images 2 spectra Image-width: 6000 pixels Image-height: 4000 pixels obtain results, 250 images must loaded. Without parallelisation (.e. sequential execution mode), every subsequent step requires previous step concluded. Using formula , total \\[ \\text{Iterations}_{total} = \\text{Checked pixels}_\\text{total} = N_{Images}\\times({Width}_{Image}\\times{Height}_{Image})\\times N_{spectra}\\\\ = 250\\times(6000\\times4000)\\times2=1.2\\times 10^{10} \\] comparisons pixel’s HSV-triplet lower- upper-bound’s HSV-triplet must performed. Note: calculation hypothetical root-area analysis 250 images, two spectra must quantified (roots identifier-area ). single check performed basically instantaneously, still takes time.","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/articles/parallelisation.html","id":"how-a-parallelised-setup-can-help","dir":"Articles","previous_headings":"","what":"How a parallelised setup can help","title":"Parallelised computing as a method for increased performance","text":"R single-threaded language, thus utilise exactly one thread one CPU-core perform iterations calculated - default. Thankfully, R packages allow parallelised use multiple available CPU-cores work operations simultaneously. Thus, app allows user run entire analysis-pipeline parallel, leveraging foreach-package. stressed entire pipeline parallelised, including loading-step.","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/articles/parallelisation.html","id":"advantages","dir":"Articles","previous_headings":"How a parallelised setup can help","what":"Advantages","title":"Parallelised computing as a method for increased performance","text":"Speed. processing multiple images parallel, total time can (roughly) divided number available workers.","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/articles/parallelisation.html","id":"limitations","dir":"Articles","previous_headings":"How a parallelised setup can help","what":"Limitations","title":"Parallelised computing as a method for increased performance","text":"Setup-time: process setting parallel back-end takes certain amount time1 RAM-usage: amount required RAM scales based number used workers, size images analysed, operating system. Operating system: Without getting low-level details, significant difference “Windows”-systems “Linux”/“MacOS” comes managing back-ends parallel-computing. Apple- Linux-machines access -called fork-back-end. three access socket-back-end.","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/articles/parallelisation.html","id":"back-ends-socket-vs-fork","dir":"Articles","previous_headings":"How a parallelised setup can help > Limitations","what":"back-ends: socket vs fork","title":"Parallelised computing as a method for increased performance","text":"-called socket-back-end can run Windows, MacOS Linux. works separately exporting required environment (variables, functions, hidden objects, loaded packages, etc.) master-process every designated worker, work secluded . worker finishes workload, must signal back master-process finished. workers done, results can collected master, combined collective output format, used “normal” variable . major disadvantage significant overhead accumulating back--forth, thus socket-cluster slow (compared fork-back-end described ). reasons described , socket-back-end also heavily increases RAM-usage (linearly number workers). hand, fork-back-end runs significantly faster. Instead duplicating data providing unique copy worker-process, worker gains access master’s environment. consequence, significant overhead duplicating environment can ignored, workers instead just return respective results master process. Unfortunately, back-end available windows. additional side note, machine-clusters use fork-back-ends.","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/articles/parallelisation.html","id":"suggestions","dir":"Articles","previous_headings":"How a parallelised setup can help","what":"Suggestions","title":"Parallelised computing as a method for increased performance","text":"setting parallel back-end via app, consider specifications machine described : might tempted create parallel back.end using available cores system. . Simply don’t. Assigning available cores cluster leave core freely-available programs machine job. can certainly cause havoc. Thus, leave least single core available. setting parallelisation via shiny-GUI, possible use cores available. limited amount available RAM, comes point adding additional workers deteriorate performance entire back-end. machine e.g. 8 GB available RAM, 2 workers might work efficiently, 3 might work just fast sequential back-end2. clear guide determine tipping-point. general, cluster comes close consuming available system RAM, adding workers likely deteriorate overall performance, slightly reducing number workers might even beneficial.","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/articles/raising-issues.html","id":"general-etiquette-and-different-types-of-issues","dir":"Articles","previous_headings":"","what":"General etiquette and different types of ‘issues’","title":"How to report issues, raise suggestions and feedback","text":"Although conglomerated name “issues”, generally reports differentiated two categories: Bug Reports Feature Requests/Suggestions","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/articles/raising-issues.html","id":"bug-reports","dir":"Articles","previous_headings":"General etiquette and different types of ‘issues’","what":"Bug Reports","title":"How to report issues, raise suggestions and feedback","text":"Bug reports… somewhat obvious first. However, great difference constitutes good, bad, useless bug-report. useful, bare-minimum amount information must provided, including package run source version-control via git local machine (instead installed package within R), SHA currently checked-commit must provided. Detailed, clear instructions required reproduce issue. example-data set exhibits problem. case duflor.gui duflor, often include example-images. Information system’s specifications (OS, hardware configuration, etc. pp.) R-Version use Notes warnings/errors emitted console /encountering bug. generated, error_state.rds-file. file generated errors occur certain sections code, . bundles state app’s data structure point error occurred, including configuration. However, include raw image-files input, must supplied separately. details, see vignette(\"saving--restoring-application-states\", package = \"duflor.gui\"). reporting bugs, heavily suggested supply file. information available, easier becomes identify actual issue.","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/articles/raising-issues.html","id":"feature-requests","dir":"Articles","previous_headings":"General etiquette and different types of ‘issues’","what":"Feature Requests","title":"How to report issues, raise suggestions and feedback","text":"keep development efficient reasonable, certain number requirements reporting problems requesting features. feature request clearly define additional feature implemented. bug-reports, information provided, easier ’s viability ease implementation can assessed. clearly describe implemented, well (broad strokes ) implemented.","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/articles/saving-and-restoring-application-states.html","id":"introduction","dir":"Articles","previous_headings":"","what":"Introduction","title":"Saving and restoring application-states","text":"app ability store configuration-state permanently across sessions, can restored later state - different machine.","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/articles/saving-and-restoring-application-states.html","id":"saving-and-restoring-common-states","dir":"Articles","previous_headings":"","what":"Saving and restoring common states","title":"Saving and restoring application-states","text":"common use-case user save restore config-changes across sessions. Let’s build hypothetical scenario, perform experiment set experimental groups 10 weeks. week, pots across groups imaged, images analysed determine development leaf-area time. Let’s assume certain settings changed standard values, instance: HSV-boundaries specific spectrum must analysed tweaked declared area identifier-dot changed default value Recreating modifications every time set images must analysed experimental setup enormous potential inducing errors along way. counteract , user may save current configuration input-controls settings file (see step () figure 1. changes can later reloaded file (step (B) figure 1. Note following limitations apply: --analysed image-files stored. Instead, directory-path selected folder . However, images moved application-state saved, images longer found. Options modified via GUI stored. Assume load configuration X, perform analysis , change HSV-bounds specific spectrum, finally save state without re-executing analysis. result, HSV-spectra stored state-file differ used analysis. user load state execute , new results identical previous version. “state” technically stores general DATA-object also contains results-data (computed state-file generated), data rendered state loaded. DATA-object essentially stored internal purposes, retain results-data across sessions.","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/articles/saving-and-restoring-application-states.html","id":"saving-states-when-errors-occur-during-analysis","dir":"Articles","previous_headings":"","what":"Saving states when errors occur during analysis","title":"Saving and restoring application-states","text":"Additionally process manually saving application-state, application generates state-files error occurs execution certain subroutines: input$submit_selected_spectra: callback issues analysis images, loading images generation results. subroutine responsible computing analyses, steps required obtain results-table figures branch . input$render_selected_mask: callback responsible inspecting mask spectrum-matches respective image-file results computed. input$save_results: callback responsible saving results-table either .xlsx-.csv-file. input$save_visualisation_plot: callback responsible saving selected KPI-plot tab Results - plots. input$render_plant: callback responsible viewing input image-file. reactive filtered_plot: reactive generates KPI-plots tab Results - plots. reactive filtered_results: reactive generates filtered results-table tab Results - inspect. Error-states saved relative selected input-folder containing input-images. states supposed used manually, instead generated issues can found easier. issues reported, state-files supplied available. application installed built package, internal functions logic-flow become somewhat harder debug. Thus, recommended load application source-code package-project via devtools inspecting bugs. Error-states deleted automatically, can accumulate. sure remove outlived usefulness.","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/articles/saving-and-restoring-application-states.html","id":"limitations","dir":"Articles","previous_headings":"","what":"Limitations","title":"Saving and restoring application-states","text":"couple limitations system: one state can loaded one time. may leverage system save restore changed HSV-spectra, thus generate state-file modified spectra. may additionally generate different state-file predefined set allocated cores parallelisation. Now, two different state-files, loading succession, latter overwrite changes made former one. First loading “parallelisation”-state, loading “spectra”-state discard changes made “parallelisation”-state.","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/authors.html","id":null,"dir":"","previous_headings":"","what":"Authors","title":"Authors and Citation","text":"Claudius Appel. Author, maintainer.","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/authors.html","id":"citation","dir":"","previous_headings":"","what":"Citation","title":"Authors and Citation","text":"Appel C (2024). duflor.gui: Frontend duflor-package. R package version 0.0.1.9053, https://Claudius-Appel.github.io/duflor.gui/.","code":"@Manual{, title = {duflor.gui: Frontend for duflor-package}, author = {Claudius Appel}, year = {2024}, note = {R package version 0.0.1.9053}, url = {https://Claudius-Appel.github.io/duflor.gui/}, }"},{"path":"https://Claudius-Appel.github.io/duflor.gui/index.html","id":"duflorgui","dir":"","previous_headings":"","what":"Frontend for duflor-package","title":"Frontend for duflor-package","text":"duflor.gui-package contains shiny-application built use duflor-package.","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/index.html","id":"installation---from-within-rstudio","dir":"","previous_headings":"","what":"Installation - from within RStudio","title":"Frontend for duflor-package","text":"package requires installation duflor-package, implements back-end code analysis-pipelines application.","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/index.html","id":"prerequisites","dir":"","previous_headings":"Installation - from within RStudio","what":"Prerequisites","title":"Frontend for duflor-package","text":"application quite complex, relies certain number packages work. package renv can help managing reproducible package environment project. additional advantage, also prevents packages system-library updated installing package. proper documentation information use-cases, refer “https://rstudio.github.io/renv/index.html”.","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/index.html","id":"setup-r-project-with-renv","dir":"","previous_headings":"Installation - from within RStudio > Prerequisites","what":"Setup r-project with renv","title":"Frontend for duflor-package","text":"set stand-alone R-project renv, easiest way R-Studio: Go File > New Project. Select New Directory. Select New Project project-type1. Give distinct name project, e.g. duflor.gui_installed2. Choose location R-project. Make sure check-box Use renv project checked.3 Make sure check-box Open new session checked. Create project. now , project can opened within R-Studio via project-selection drop--menu top-right corner RStudio-application. continuing, open project .","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/index.html","id":"install-devtools","dir":"","previous_headings":"Installation - from within RStudio > Prerequisites","what":"Install devtools","title":"Frontend for duflor-package","text":"First , make sure followed steps outlined “[Setup r-project renv]”, RStudio currently created project. Installing package GitHub requires installation R-package devtools. devtools can used compile source-packages installed binaries. asked proceed, make sure installation-path R-project created: created R-project renv , path look something like correct, can go ahead answer prompt Y. case, install devtools via RStudio-GUI: Open packages-panel. Search select devtools. “Install library”, make sure path selected similar example outlined . words, make sure install library containing string R/cache/R/renv/sandbox. installed devtools, go next step.","code":"install.packages(\"devtools\") C:/Users/User_Main/Desktop/TempTemporal/test_duflorgui_install C:/Users/User_Main/Desktop/TempTemporal/test_duflorgui_install/renv/library/R-X.Y/...."},{"path":"https://Claudius-Appel.github.io/duflor.gui/index.html","id":"install-r-build-toolchain","dir":"","previous_headings":"Installation - from within RStudio > Prerequisites","what":"Install R-build-toolchain","title":"Frontend for duflor-package","text":"underlying package duflor contains C++ code. distributed source-code, users require appropriate R-build-toolchain respective operating system. information setup-instructions, refer “https://r-pkgs.org/setup.html#setup-tools”. windows, R-package installr may used check Rtools already installed, whether found R. Additionally, notify user new R-update available (major minor versions , ignores patch versions):","code":"install.packages(\"installr\") # once pkgbuild is installed, run: installr::install.Rtools(check = T,check_r_update = T,GUI = T)"},{"path":"https://Claudius-Appel.github.io/duflor.gui/index.html","id":"installation-steps","dir":"","previous_headings":"Installation - from within RStudio","what":"Installation-steps","title":"Frontend for duflor-package","text":"duflor- duflor.gui-packages must installed respective GitHub-repositories. can install development release versions duflor.gui like : installing devtools, make sure renv-library selected installing package.","code":"# release: devtools::install_github(\"https://github.com/Claudius-Appel/duflor.gui@master\") # development version: devtools::install_github(\"https://github.com/Claudius-Appel/duflor.gui@dev\")"},{"path":"https://Claudius-Appel.github.io/duflor.gui/index.html","id":"installing-help-vignettes","dir":"","previous_headings":"Installation - from within RStudio","what":"Installing help-vignettes","title":"Frontend for duflor-package","text":"application documented detail via pkgdown, site can reached github-repository. articles outlined site may also viewed vignettes within RStudio. , must explicitly declare vignettes installed: Vignettes rendered documents discussing specific topics within package. Installing recommended, required utilizing package .","code":"devtools::install_github(\"https://github.com/Claudius-Appel/duflor.gui@master\" ,build_vignettes = T) devtools::install_github(\"https://github.com/Claudius-Appel/duflor.gui@dev\" ,build_vignettes = T)"},{"path":[]},{"path":"https://Claudius-Appel.github.io/duflor.gui/index.html","id":"prerequisites-1","dir":"","previous_headings":"Installation - from the command-line","what":"Prerequisites","title":"Frontend for duflor-package","text":"case, check make accessible command-line respective system underlying package duflor contains C++ code. distributed source-code, users require appropriate R-build-toolchain respective operating system. information setup-instructions, refer “https://r-pkgs.org/setup.html#setup-tools”.","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/index.html","id":"cli-installation-steps","dir":"","previous_headings":"Installation - from the command-line","what":"CLI-Installation-steps","title":"Frontend for duflor-package","text":"install application, follow steps : open terminal, move location want install program create folder place application , e.g. mkdir duflor_app move folder via cd duflor_app launch R executing R executing 1+1 now successfully return [1] 2 , install executing install.packages(\"renv\"), follow instructions installing /potential dependencies execute renv::init() repeat step 6) package devtools release-version: devtools::install_github(\"https://github.com/Claudius-Appel/duflor.gui@master\") development-version: devtools::install_github(\"https://github.com/Claudius-Appel/duflor.gui@dev\") follow instructions installing /potential dependencies , GUI open default-browser, application can used now ","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/index.html","id":"installing-help-vignettes-1","dir":"","previous_headings":"Installation - from the command-line","what":"Installing help-vignettes","title":"Frontend for duflor-package","text":"application documented detail via pkgdown, site can reached github-repository. articles outlined site may also viewed vignettes within RStudio. , must explicitly declare vignettes installed performing step 9 “CLI-Installation-steps”: Vignettes rendered documents discussing specific topics within package. Installing recommended, required utilizing package .","code":"devtools::install_github(\"https://github.com/Claudius-Appel/duflor.gui@master\",build_vignettes = T) devtools::install_github(\"https://github.com/Claudius-Appel/duflor.gui@dev\",build_vignettes = T)"},{"path":"https://Claudius-Appel.github.io/duflor.gui/index.html","id":"running-the-app-from-the-command-line","dir":"","previous_headings":"","what":"Running the app from the command-line","title":"Frontend for duflor-package","text":"installation, application can launched described : cd folder installed application , e.g. cd duflor_app launch R via R launch app via duflor.gui::duflor_gui()","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/index.html","id":"running-the-app-from-within-rstudio","dir":"","previous_headings":"","what":"Running the app from within RStudio","title":"Frontend for duflor-package","text":"Follow installation-steps outlined “Installation - within RStudio” Open project via drop--menu top-right corner RStudio-application. Launch app executing duflor.gui::duflor_gui() console.","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/LICENSE.html","id":null,"dir":"","previous_headings":"","what":"MIT License","title":"MIT License","text":"Copyright (c) 2024 Claudius Appel Permission hereby granted, free charge, person obtaining copy software associated documentation files (“Software”), deal Software without restriction, including without limitation rights use, copy, modify, merge, publish, distribute, sublicense, /sell copies Software, permit persons Software furnished , subject following conditions: copyright notice permission notice shall included copies substantial portions Software. SOFTWARE PROVIDED “”, WITHOUT WARRANTY KIND, EXPRESS IMPLIED, INCLUDING LIMITED WARRANTIES MERCHANTABILITY, FITNESS PARTICULAR PURPOSE NONINFRINGEMENT. EVENT SHALL AUTHORS COPYRIGHT HOLDERS LIABLE CLAIM, DAMAGES LIABILITY, WHETHER ACTION CONTRACT, TORT OTHERWISE, ARISING , CONNECTION SOFTWARE USE DEALINGS SOFTWARE.","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/convert_pixels_to_area_gui.html","id":null,"dir":"Reference","previous_headings":"","what":"convert pixel counts to an area based on the known area of an identifier-dot. — convert_pixels_to_area_gui","title":"convert pixel counts to an area based on the known area of an identifier-dot. — convert_pixels_to_area_gui","text":"convert pixel counts area based known area identifier-dot.","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/convert_pixels_to_area_gui.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"convert pixel counts to an area based on the known area of an identifier-dot. — convert_pixels_to_area_gui","text":"","code":"convert_pixels_to_area_gui(pixel.counts, identifier_area)"},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/convert_pixels_to_area_gui.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"convert pixel counts to an area based on the known area of an identifier-dot. — convert_pixels_to_area_gui","text":"pixel.counts list containing following pixel-counts: \"bex_green_HSV\" \"bex_drought_HSV\" \"bex_complete_HSV\" \"bex_identifier_HSV\" pixel-count identifier must present, whereas others optional. calculated area internally unit-less. However, default value duflor.default_identifier_area 0.503 [cm^2], areas computed function also [cm^2]. assumed area identifier can modified excuting options(duflor.default_identifier_area = ) prior calling function identifier_area declared size identifier area, [cm^2]","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/convert_pixels_to_area_gui.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"convert pixel counts to an area based on the known area of an identifier-dot. — convert_pixels_to_area_gui","text":"list computed areas key listed pixel.counts. Additionally, two meta-values returned well: identifier-area used calculating area (whichever value set option duflor.default_identifier_area) area singe pixel values [cm^2]","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/convert_pixels_to_area_gui.html","id":"note","dir":"Reference","previous_headings":"","what":"Note","title":"convert pixel counts to an area based on the known area of an identifier-dot. — convert_pixels_to_area_gui","text":"restructured version duflor::convert_pixels_to_area, suitable needs specific app.","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/dev_key_handler.html","id":null,"dir":"Reference","previous_headings":"","what":"handles the setting and unsetting of debug-keys — dev_key_handler","title":"handles the setting and unsetting of debug-keys — dev_key_handler","text":"Keys begin 2 - considered boolean flags, must provided format --key=, boolean following values allowed: T/TRUE/1 F/FALSE/0","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/dev_key_handler.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"handles the setting and unsetting of debug-keys — dev_key_handler","text":"","code":"dev_key_handler(input, DATA, DEBUGKEYS, session, use_logical_cores)"},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/dev_key_handler.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"handles the setting and unsetting of debug-keys — dev_key_handler","text":"input shiny-app input-object DATA shiny-app DATA-reactives DEBUGKEYS shiny-app DEBUGKEYS-reactives session shiny session use_logical_cores internal flag","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/dev_key_handler.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"handles the setting and unsetting of debug-keys — dev_key_handler","text":"modified DEBUGKEYS?","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/dev_key_handler.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"handles the setting and unsetting of debug-keys — dev_key_handler","text":"Keys begin 3 - expecting non-boolean, custom input, differ based respective key.","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/duflor_gui.html","id":null,"dir":"Reference","previous_headings":"","what":"Start the duflor-gui via this function — duflor_gui","title":"Start the duflor-gui via this function — duflor_gui","text":"Start duflor-gui via function","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/duflor_gui.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Start the duflor-gui via this function — duflor_gui","text":"","code":"duflor_gui()"},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/duflor_gui.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Start the duflor-gui via this function — duflor_gui","text":".","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/execute_analysis.html","id":null,"dir":"Reference","previous_headings":"","what":"wrapper-function facilitating single- and multi-image analysis. — execute_analysis","title":"wrapper-function facilitating single- and multi-image analysis. — execute_analysis","text":"wrapper-function facilitating single- multi-image analysis.","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/execute_analysis.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"wrapper-function facilitating single- and multi-image analysis. — execute_analysis","text":"","code":"execute_analysis(input, DATA, DEBUGKEYS, FLAGS)"},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/execute_analysis.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"wrapper-function facilitating single- and multi-image analysis. — execute_analysis","text":"input input respective shiny-component DATA DATA respective shiny-component DEBUGKEYS DEBUGKEYS respective shiny-component FLAGS FLAGS respective shiny-component","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/execute_analysis.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"wrapper-function facilitating single- and multi-image analysis. — execute_analysis","text":"list components results: results-data passed-execute_multiple() execute_single()","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/execute_multiple.html","id":null,"dir":"Reference","previous_headings":"","what":"execute analysis on multiple images, and return their results — execute_multiple","title":"execute analysis on multiple images, and return their results — execute_multiple","text":"single-image analysis, see execute_single()","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/execute_multiple.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"execute analysis on multiple images, and return their results — execute_multiple","text":"","code":"execute_multiple(files, input, DATA, DEBUGKEYS, FLAGS)"},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/execute_multiple.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"execute analysis on multiple images, and return their results — execute_multiple","text":"files files analyse input input respective shiny-component DATA DATA respective shiny-component DEBUGKEYS DEBUGKEYS respective shiny-component FLAGS FLAGS respective shiny-component","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/execute_multiple.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"execute analysis on multiple images, and return their results — execute_multiple","text":"results_object, see update_resultsObject()","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/execute_single.html","id":null,"dir":"Reference","previous_headings":"","what":"execute analysis on a single image, and return its results — execute_single","title":"execute analysis on a single image, and return its results — execute_single","text":"single-image analysis, see execute_multiple()","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/execute_single.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"execute analysis on a single image, and return its results — execute_single","text":"","code":"execute_single(file, input, DATA, DEBUGKEYS, FLAGS)"},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/execute_single.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"execute analysis on a single image, and return its results — execute_single","text":"file file analyse input input respective shiny-component DATA DATA respective shiny-component DEBUGKEYS DEBUGKEYS respective shiny-component FLAGS FLAGS respective shiny-component","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/execute_single.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"execute analysis on a single image, and return its results — execute_single","text":"results_object, see update_resultsObject()","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/get_group.html","id":null,"dir":"Reference","previous_headings":"","what":"trims numbers from groups from character-vector — get_group","title":"trims numbers from groups from character-vector — get_group","text":"trims numbers groups character-vector","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/get_group.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"trims numbers from groups from character-vector — get_group","text":"","code":"get_group(names)"},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/get_group.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"trims numbers from groups from character-vector — get_group","text":"names .","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/get_group.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"trims numbers from groups from character-vector — get_group","text":".","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/get_image_dimensions.html","id":null,"dir":"Reference","previous_headings":"","what":"retrieves image dimension via call to system interface — get_image_dimensions","title":"retrieves image dimension via call to system interface — get_image_dimensions","text":"retrieves image dimension via call system interface","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/get_image_dimensions.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"retrieves image dimension via call to system interface — get_image_dimensions","text":"","code":"get_image_dimensions(path)"},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/get_image_dimensions.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"retrieves image dimension via call to system interface — get_image_dimensions","text":"path path file measure","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/get_image_dimensions.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"retrieves image dimension via call to system interface — get_image_dimensions","text":"list(width=dbl,height=dbl)","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/get_KPI_plot.html","id":null,"dir":"Reference","previous_headings":"","what":"generate a ggplot for a given KPI — get_KPI_plot","title":"generate a ggplot for a given KPI — get_KPI_plot","text":"Function generates ggplot-object base selected choices DDLs","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/get_KPI_plot.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"generate a ggplot for a given KPI — get_KPI_plot","text":"","code":"get_KPI_plot(input, DATA)"},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/get_KPI_plot.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"generate a ggplot for a given KPI — get_KPI_plot","text":"input input respective shiny-component DATA DATA respective shiny-component","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/get_KPI_plot.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"generate a ggplot for a given KPI — get_KPI_plot","text":"ggplot-object respective KPI","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/key_handle_cores.html","id":null,"dir":"Reference","previous_headings":"","what":"internal function handling dev-key ---set.cores=XX — key_handle_cores","title":"internal function handling dev-key ---set.cores=XX — key_handle_cores","text":"internal function handling dev-key ---set.cores=XX","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/key_handle_cores.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"internal function handling dev-key ---set.cores=XX — key_handle_cores","text":"","code":"key_handle_cores(value, DATA, use_logical_cores, session)"},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/key_handle_cores.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"internal function handling dev-key ---set.cores=XX — key_handle_cores","text":"value . DATA . use_logical_cores . session .","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/limit_identifier_coordinates.html","id":null,"dir":"Reference","previous_headings":"","what":"restrict area in which identifier-pixels are considered ","title":"restrict area in which identifier-pixels are considered ","text":"function applied identifier-range. intention exclude random pixels definitely attributed identifier-data.","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/limit_identifier_coordinates.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"restrict area in which identifier-pixels are considered ","text":"","code":"limit_identifier_coordinates( spectrums_object, image_dimensions, identifiersearch_x0, identifiersearch_x1, identifiersearch_y0, identifiersearch_y1 )"},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/limit_identifier_coordinates.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"restrict area in which identifier-pixels are considered ","text":"spectrums_object return object extract_pixels_HSV() image_dimensions dimensions image identifiersearch_x0 respective coordinate search bounding rectangle identifiersearch_x1 respective coordinate search bounding rectangle identifiersearch_y0 respective coordinate search bounding rectangle identifiersearch_y1 respective coordinate search bounding rectangle","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/limit_identifier_coordinates.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"restrict area in which identifier-pixels are considered ","text":"modified spectrums_object","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/limit_to_range.html","id":null,"dir":"Reference","previous_headings":"","what":"replace values outside of boundaries with respective boundary — limit_to_range","title":"replace values outside of boundaries with respective boundary — limit_to_range","text":"function limits values lie outside [replace_lower, replace_upper]. Values fall outside range modified.","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/limit_to_range.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"replace values outside of boundaries with respective boundary — limit_to_range","text":"","code":"limit_to_range(x, replace_lower, replace_upper)"},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/limit_to_range.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"replace values outside of boundaries with respective boundary — limit_to_range","text":"replace_lower value insert place elements value bound. replace_upper see replace_lower value vector normalise","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/limit_to_range.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"replace values outside of boundaries with respective boundary — limit_to_range","text":"vector, normalised range [replace_lower, replace_upper]","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/limit_to_range.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"replace values outside of boundaries with respective boundary — limit_to_range","text":"","code":"result <- duflor.gui:::limit_to_range(c(0,100,255),0,255) result2 <- duflor.gui:::limit_to_range(c(0,100,256),0,255) print(result) #> [1] 0 100 255 print(result2) #> [1] 0 100 255"},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/open_parallelPanel_event.html","id":null,"dir":"Reference","previous_headings":"","what":"internal callback function for the checkbox opening the parallelisation-panel — open_parallelPanel_event","title":"internal callback function for the checkbox opening the parallelisation-panel — open_parallelPanel_event","text":"internal callback function checkbox opening parallelisation-panel","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/open_parallelPanel_event.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"internal callback function for the checkbox opening the parallelisation-panel — open_parallelPanel_event","text":"","code":"open_parallelPanel_event( input, DATA, FLAGS, use_logical_cores, session, STARTUP, default_init_cores = 2 )"},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/open_parallelPanel_event.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"internal callback function for the checkbox opening the parallelisation-panel — open_parallelPanel_event","text":"input input respective shiny-component DATA DATA respective shiny-component FLAGS FLAGS respective shiny-component use_logical_cores internal flag session shiny session STARTUP STARTUP respective shiny-component","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/prepare_resultsObject.html","id":null,"dir":"Reference","previous_headings":"","what":"prepare the dataframe-object into which all results are to be merged. — prepare_resultsObject","title":"prepare the dataframe-object into which all results are to be merged. — prepare_resultsObject","text":"results requires fields full_path image_date image_name processed_width processed_height names(DATA$spectrums$lower_bound): %spectrum%_count img.fraction (maybe valuable?) %spectrum%_area (results duflor::convert_pixels_to_area()) %spectrum%_fraction (defined %spectrum%_count/(sum(_count))","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/prepare_resultsObject.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"prepare the dataframe-object into which all results are to be merged. — prepare_resultsObject","text":"","code":"prepare_resultsObject(input, DATA, DEBUGKEYS)"},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/prepare_resultsObject.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"prepare the dataframe-object into which all results are to be merged. — prepare_resultsObject","text":"input shiny-app input-object DATA shiny-app DATA-reactives DEBUGKEYS shiny-app DEBUGKEYS-reactives","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/prepare_resultsObject.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"prepare the dataframe-object into which all results are to be merged. — prepare_resultsObject","text":"results-csv-framework.","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/render_selected_mask.html","id":null,"dir":"Reference","previous_headings":"","what":"render mask based on input data — render_selected_mask","title":"render mask based on input data — render_selected_mask","text":"render mask based input data","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/render_selected_mask.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"render mask based on input data — render_selected_mask","text":"","code":"render_selected_mask(input, DATA, FLAGS)"},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/render_selected_mask.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"render mask based on input data — render_selected_mask","text":"input input respective shiny-component DATA DATA respective shiny-component FLAGS FLAGS respective shiny-component","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/restore_state.html","id":null,"dir":"Reference","previous_headings":"","what":"restore application state from stored .RDS-file — restore_state","title":"restore application state from stored .RDS-file — restore_state","text":"function responsible ","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/restore_state.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"restore application state from stored .RDS-file — restore_state","text":"","code":"restore_state( input, output, DATA, FLAGS, DEBUGKEYS, session, volumes, state_file )"},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/restore_state.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"restore application state from stored .RDS-file — restore_state","text":"input input respective shiny-component output output respective shiny-component DATA DATA respective shiny-component FLAGS FLAGS respective shiny-component DEBUGKEYS shiny-app DEBUGKEYS-reactives session shiny session volumes volume letters available state_file filepath --loaded state_file","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/restore_state.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"restore application state from stored .RDS-file — restore_state","text":"path loaded file.","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/save_error_state.html","id":null,"dir":"Reference","previous_headings":"","what":"Handle saving application-state to file — save_error_state","title":"Handle saving application-state to file — save_error_state","text":"assumes input$save_state properly formatted, returned shinyFiles::shinyFileSave() assumes volumes return-value shinyFiles::getVolumes()","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/save_error_state.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Handle saving application-state to file — save_error_state","text":"","code":"save_error_state( input, DATA, DEBUGKEYS, FLAGS, volumes, error, errordir_path = NA, erroneous_callback = \"\" )"},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/save_error_state.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Handle saving application-state to file — save_error_state","text":"input . DATA . DEBUGKEYS . FLAGS . volumes . error error-object errordir_path directory write error-replication state ","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/save_error_state.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Handle saving application-state to file — save_error_state","text":"path error-state file may used load error-triggering settings.","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/save_state.html","id":null,"dir":"Reference","previous_headings":"","what":"Handle saving application-state to file — save_state","title":"Handle saving application-state to file — save_state","text":"assumes input$save_state properly formatted, returned shinyFiles::shinyFileSave() assumes volumes return-value shinyFiles::getVolumes()","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/save_state.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Handle saving application-state to file — save_state","text":"","code":"save_state(input, DATA, DEBUGKEYS, FLAGS, volumes)"},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/save_state.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Handle saving application-state to file — save_state","text":"input . DATA . DEBUGKEYS . FLAGS . volumes .","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/save_state.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Handle saving application-state to file — save_state","text":"path saved state-file","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/select_spectra_gui_comp.html","id":null,"dir":"Reference","previous_headings":"","what":"generate and call a modal-dialogue which lets you select which spectrums to analyse. — select_spectra_gui_comp","title":"generate and call a modal-dialogue which lets you select which spectrums to analyse. — select_spectra_gui_comp","text":"Additionally, queries component radio_analysis_type preselect common results different types analyses","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/select_spectra_gui_comp.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"generate and call a modal-dialogue which lets you select which spectrums to analyse. — select_spectra_gui_comp","text":"","code":"select_spectra_gui_comp(input)"},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/select_spectra_gui_comp.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"generate and call a modal-dialogue which lets you select which spectrums to analyse. — select_spectra_gui_comp","text":"input input-shiny-component","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/select_spectra_gui_comp.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"generate and call a modal-dialogue which lets you select which spectrums to analyse. — select_spectra_gui_comp","text":".","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/setup_parallel.html","id":null,"dir":"Reference","previous_headings":"","what":"setup parallel backend for a given number of cores. — setup_parallel","title":"setup parallel backend for a given number of cores. — setup_parallel","text":"setup parallel backend given number cores.","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/setup_parallel.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"setup parallel backend for a given number of cores. — setup_parallel","text":"","code":"setup_parallel(used_cores, cluster_type)"},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/setup_parallel.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"setup parallel backend for a given number of cores. — setup_parallel","text":"used_cores number cores designated cluster cluster_type either PSOCK FORK. Generally FORK recommended PSOCK, however available systems. See note ","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/setup_parallel.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"setup parallel backend for a given number of cores. — setup_parallel","text":".","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/setup_parallel.html","id":"note","dir":"Reference","previous_headings":"","what":"Note","title":"setup parallel backend for a given number of cores. — setup_parallel","text":"Windows, PSOCK-cluster type available.","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/show_infringing_spectrum_elements_gui_comp.html","id":null,"dir":"Reference","previous_headings":"","what":"generate and call a modal-dialogue which displays the prospective changes in HSV-spectrums — show_infringing_spectrum_elements_gui_comp","title":"generate and call a modal-dialogue which displays the prospective changes in HSV-spectrums — show_infringing_spectrum_elements_gui_comp","text":"Additionally, queries whether applied, reset previous value.","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/show_infringing_spectrum_elements_gui_comp.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"generate and call a modal-dialogue which displays the prospective changes in HSV-spectrums — show_infringing_spectrum_elements_gui_comp","text":"","code":"show_infringing_spectrum_elements_gui_comp(input, DATA, changes)"},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/show_infringing_spectrum_elements_gui_comp.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"generate and call a modal-dialogue which displays the prospective changes in HSV-spectrums — show_infringing_spectrum_elements_gui_comp","text":"input input respective shiny-component DATA DATA respective shiny-component changes results-object validate_custom_HSV_values()","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/show_infringing_spectrum_elements_gui_comp.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"generate and call a modal-dialogue which displays the prospective changes in HSV-spectrums — show_infringing_spectrum_elements_gui_comp","text":".","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/shutdown_parallel.html","id":null,"dir":"Reference","previous_headings":"","what":"shut down existing parallel cluster — shutdown_parallel","title":"shut down existing parallel cluster — shutdown_parallel","text":"shut existing parallel cluster","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/shutdown_parallel.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"shut down existing parallel cluster — shutdown_parallel","text":"","code":"shutdown_parallel()"},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/store_KPI_plot_to_file.html","id":null,"dir":"Reference","previous_headings":"","what":"save KPI-plot to file — store_KPI_plot_to_file","title":"save KPI-plot to file — store_KPI_plot_to_file","text":"save KPI-plot file","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/store_KPI_plot_to_file.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"save KPI-plot to file — store_KPI_plot_to_file","text":"","code":"store_KPI_plot_to_file(input, DATA)"},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/store_KPI_plot_to_file.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"save KPI-plot to file — store_KPI_plot_to_file","text":"input input respective shiny-component DATA DATA respective shiny-component","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/store_results_to_file.html","id":null,"dir":"Reference","previous_headings":"","what":"write results of the analysis to file — store_results_to_file","title":"write results of the analysis to file — store_results_to_file","text":"write results analysis file","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/store_results_to_file.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"write results of the analysis to file — store_results_to_file","text":"","code":"store_results_to_file( results, results_path, save_to_xlsx = FALSE, set_author_xlsx = FALSE )"},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/store_results_to_file.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"write results of the analysis to file — store_results_to_file","text":"results object write. results_path path write file , sans filesuffix. save_to_xlsx results written .xlsx-file? false, written .csv-file instead. set_author_xlsx writing xlsx-file, author set generated 'duflor' via 'duflor.gui', user_machine XX?","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/store_results_to_file.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"write results of the analysis to file — store_results_to_file","text":"list containing boolean check whether file written disk successfully complete path resulting file.","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/store_results_to_file.html","id":"note","dir":"Reference","previous_headings":"","what":"Note","title":"write results of the analysis to file — store_results_to_file","text":"XLSX-files suggested output additional postprocessing required. data modified , writing csv save space.","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/update_resultsObject.html","id":null,"dir":"Reference","previous_headings":"","what":"adds a line of values newline to a df resultsObject — update_resultsObject","title":"adds a line of values newline to a df resultsObject — update_resultsObject","text":"function validate inputs!.","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/update_resultsObject.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"adds a line of values newline to a df resultsObject — update_resultsObject","text":"","code":"update_resultsObject(resultsObject, new_line)"},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/update_resultsObject.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"adds a line of values newline to a df resultsObject — update_resultsObject","text":"resultsObject existing dataframe new_line data-vector add","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/update_resultsObject.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"adds a line of values newline to a df resultsObject — update_resultsObject","text":"updated resultsObject","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/validate_custom_HSV_values.html","id":null,"dir":"Reference","previous_headings":"","what":"ensure that custom HSV values are within required range — validate_custom_HSV_values","title":"ensure that custom HSV values are within required range — validate_custom_HSV_values","text":"HUE, value must within [0, 359] SATURATIOn, value must within [0, 1] VALUE, value must within [0, 1]","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/validate_custom_HSV_values.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"ensure that custom HSV values are within required range — validate_custom_HSV_values","text":"","code":"validate_custom_HSV_values(input, DATA, session)"},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/validate_custom_HSV_values.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"ensure that custom HSV values are within required range — validate_custom_HSV_values","text":"input input respective shiny-component DATA DATA respective shiny-component session shiny session","code":""},{"path":"https://Claudius-Appel.github.io/duflor.gui/reference/validate_custom_HSV_values.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"ensure that custom HSV values are within required range — validate_custom_HSV_values","text":"list containing expected bounds keys specific bound violated, along violated value","code":""}]
Appel C (2024). duflor.gui: Frontend for duflor-package. -R package version 0.0.1.9052, https://Claudius-Appel.github.io/duflor.gui/. +R package version 0.0.1.9053, https://Claudius-Appel.github.io/duflor.gui/.
@Manual{, title = {duflor.gui: Frontend for duflor-package}, author = {Claudius Appel}, year = {2024}, - note = {R package version 0.0.1.9052}, + note = {R package version 0.0.1.9053}, url = {https://Claudius-Appel.github.io/duflor.gui/}, }