tutorials:sensitivity-analysis-using-grolink-and-gror
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
tutorials:sensitivity-analysis-using-grolink-and-gror [2024/06/25 17:38] – thomas | tutorials:sensitivity-analysis-using-grolink-and-gror [2025/06/06 17:11] (current) – [Example: Morris Screening using the sensitivity package] t | ||
---|---|---|---|
Line 1: | Line 1: | ||
====== Sensitivity analysis on GroIMP models using GroR ====== | ====== Sensitivity analysis on GroIMP models using GroR ====== | ||
- | This wiki explains how to do a sensitivity analysis on GroIMP models using the GroR interface using a Morris screening over input parameters of the [[http://134.76.18.36/ | + | This wiki explains how to do a sensitivity analysis on GroIMP models using the GroR interface using a Morris screening over input parameters of the [[https://gallery.grogra.de/project_gallery/67053a3f256715cda41c867f |
===== Prerequisites ===== | ===== Prerequisites ===== | ||
Make sure to [[: | Make sure to [[: | ||
==== Downloads ==== | ==== Downloads ==== | ||
- | * {{ : | + | * {{ : |
- | * {{ : | + | * {{ : |
===== Prepare your model===== | ===== Prepare your model===== | ||
Line 51: | Line 51: | ||
{{: | {{: | ||
- | The folder and file can be created via <key>Object</ | + | The folder and file can be created via **Object** -> **New** in the File explorer. |
The file only contains the parameter definitions (the values are what they were in the original gallery model): | The file only contains the parameter definitions (the values are what they were in the original gallery model): | ||
Line 98: | Line 98: | ||
library(sensitivity) | library(sensitivity) | ||
- | wb1 <- GroLink.open(" | + | # copy groimp model gsz to groimp path to open it like this: |
+ | wb1 <- GroLink.open(" | ||
+ | # push model gsz to groimp | ||
+ | wb1 <- GroLink.open(" | ||
</ | </ | ||
Line 123: | Line 126: | ||
</ | </ | ||
+ | When you run the while loop, in the end, the '' | ||
Line 130: | Line 133: | ||
===== Example: Morris Screening using the sensitivity package ===== | ===== Example: Morris Screening using the sensitivity package ===== | ||
- | The Morris Screening will be used to analyze the 5 structural plant growth parameters with regard to their importance (their main and interaction effect) on the total amount of absorbed light by leaves. This is just a random example out of the plethora of available sensitivity analysis methods. Most of the common ones are implemented in the '' | + | The Morris Screening will be used to analyze the 5 structural plant growth parameters with regard to their importance (their main and interaction effect) on the total amount of absorbed light by leaves. This is just a random example out of the plethora of available sensitivity analysis methods. Most of the common ones are implemented in the '' |
First, I generate a set of input parameters for the model: | First, I generate a set of input parameters for the model: | ||
Line 153: | Line 156: | ||
<code R> | <code R> | ||
- | executeModel <- function(params, | + | executeModel <- function(params, |
- | wb1 <- GroLink.open(" | + | timeout = 200 # max. number of grow function executions |
+ | ){ | ||
+ | # Open workbench with model | ||
+ | wb1 <- GroLink.open(" | ||
+ | # Override parameters.rgg with new values from params vector | ||
WBRef.updateFile(wb1, | WBRef.updateFile(wb1, | ||
| | ||
Line 163: | Line 170: | ||
";", | ";", | ||
sep = "" | sep = "" | ||
+ | # Compile the workbench | ||
WBRef.compile(wb1) | WBRef.compile(wb1) | ||
model_output <- "" | model_output <- "" | ||
n_grows <- 0 | n_grows <- 0 | ||
+ | # Execute the grow function for as long as there are no flowers | ||
while (!(is.numeric(model_output)) && (n_grows < timeout)) { | while (!(is.numeric(model_output)) && (n_grows < timeout)) { | ||
result <- WBRef.runRGGFunction(wb1," | result <- WBRef.runRGGFunction(wb1," | ||
Line 176: | Line 184: | ||
n_grows <- n_grows + 1 | n_grows <- n_grows + 1 | ||
} | } | ||
+ | # Retrun NA in case of timeout | ||
if (n_grows == timeout) { | if (n_grows == timeout) { | ||
model_output <- NA | model_output <- NA | ||
} | } | ||
+ | # Close workbench in the end | ||
WBRef.close(wb1) | WBRef.close(wb1) | ||
return(model_output) | return(model_output) | ||
Line 194: | Line 204: | ||
</ | </ | ||
- | Through the use of '' | + | Through the use of '' |
The only thing remaining is to analyze the output and plot the results: | The only thing remaining is to analyze the output and plot the results: |
tutorials/sensitivity-analysis-using-grolink-and-gror.1719329929.txt.gz · Last modified: 2024/06/25 17:38 by thomas