Here comes the central purpose of simlandr
: constructing
the potential landscapes from simulation results.
The landscape function is calculated based on the steady-state distribution of the system:
\[U = -\ln P_\textrm{SS}\]
My colleagues and I recently wrote some papers about the theoretical background of this method. You can find them at https://doi.org/10.1080/00273171.2022.2119927 or https://osf.io/pzva3.
simlandr
provides a set of tools to construct 2d, 3d,
and 4d landscapes from single or multiple simulation results. These
methods will be illustrated in the following sections.
Frequently used parameters for the family of landscape functions:
x
,y
,z
,rols
,cols
,fr
:
the variable names for plot dimensions;
from
,to
(for 2d landscapes), lims
(for 3d and 4d landscapes): the range of axes; adjust
(for
2d landscapes), h
(for 3d and 4d landscapes): the level of
smoothness; Umax
: the maximum displayed value of
potential.
The landscapes in this section are only from a single simulation. We first make a simulation series for illustration.
The result of the landscape functions is a landscape
object, which contains the landscape plot as well as the smooth
distributions that are used to calculate the landscapes. Plots without
z-axis are built with ggplot2
package, while plots with
z-axis are built with plotly
package. These plots can also
be modified using ggplot2
or plotly
functions.
You can use plot(l)
to access those plots. For some
types of landscape
s, there are multiple types of plots
available. Use plot(l, index = 2)
or
plot(l, index = 3)
, etc. to access those plots.
Below are the examples of available plots. The meaning of the parameters can be found on the helping page of each function.
The landscapes in the section are built from batch simulation
results. The following two data sets will be used to illustrate the
functions. The difference is that batch_test_result
only
contains one varying parameter, whereas batch_test_result2
contains two.
batch_test <- new_arg_set()
batch_test <- batch_test %>%
add_arg_ele("arg2", "ele3", 0.2, 0.5, 0.1)
batch_test_grid <- make_arg_grid(batch_test)
batch_test_result <- batch_simulation(batch_test_grid, sim_fun_test,
default_list = list(
arg1 = list(ele1 = 0),
arg2 = list(ele2 = 0, ele3 = 0)
),
bigmemory = FALSE
)
batch_test_result
#> Output(s) from 4 simulations.
batch_test2 <- new_arg_set()
batch_test2 <- batch_test2 %>%
add_arg_ele("arg1", "ele1", 0.2, 0.6, 0.2) %>%
add_arg_ele("arg2", "ele2", 0.2, 0.6, 0.2)
batch_test_grid2 <- make_arg_grid(batch_test2)
batch_test_result2 <- batch_simulation(batch_test_grid2, sim_fun_test,
default_list = list(
arg1 = list(ele1 = 0),
arg2 = list(ele2 = 0, ele3 = 0)
),
bigmemory = FALSE
)
batch_test_result2
#> Output(s) from 9 simulations.
Below are the examples of available plots.
l_batch_2d_m1 <- make_2d_matrix(batch_test_result, x = "out1", cols = "ele3")
#> Wrangling the data...
#> Making the plots...
plot(l_batch_2d_m1)
l_batch_2d_m2 <- make_2d_matrix(batch_test_result2, x = "out1", rows = "ele1", cols = "ele2")
#> Wrangling the data...
#> Making the plots...
plot(l_batch_2d_m2)
l_batch_3d_m1 <- make_3d_matrix(batch_test_result, x = "out1", y = "out2", cols = "ele3")
#> Wrangling the data...
#> Making the plots...
plot(l_batch_3d_m1)
l_batch_3d_m2 <- make_3d_matrix(batch_test_result2, x = "out1", y = "out2", rows = "ele1", cols = "ele2")
#> Wrangling the data...
#> Making the plots...
plot(l_batch_3d_m2)
This part is computational and storage expensive thus not
evaluated in the released vignette. You can run it on your device to see
how the function produces animations. gifski
package is
needed to show the 3d (x, y, color) animation.