The sweep_steady
function is designed to allow the user
to map the combined effects of two parameters over the final state of an
isobxr box model.
It’s structure is shown below:
The sweep_steady
function is built as a 2 steps
composite scenario.
The first run (run #1) is used to force the initial conditions of the second run. It is run once only.
The second run (run #2) is repeated for all the combinations of the two parameters values.
The main purpose of this sweep_steady
structure is:
In addition to the global isobxr master file, the
sweep_steady
function requires a sweep steady master
file.
The sweep steady master file is the (xlsx) document
containing all commands allowing sweep_steady
function to
compose a scenario of 2 runs.
The two parameters to be swept over run #2 are defined by user directly in the function input, in the R console.
The format of the sweep steady master file is the same as the compose master file and the sweep dynamic master file.
It is where the user sets the design of their 2 runs scenario to be swept:
The format of the sweep steady master file is standardized. The user is encouraged to comply with these standards, as described thereafter, otherwise there is a high probability for these functions to crash.
sweep_steady
function inputs:
[e.g., 0_SWEEP_STEADY_MASTER.xlsx ].sweep_steady
function.The sweep steady master file contains the 5 following sheet strictly named as follows:
The sweep_steady
function strictly requires a list of
2 successive runs.
Both of these runs should be succesively described one by one on two rows of this sheet, with notably:
See composite master file format description for details.
See composite master file format description for details.
See composite master file format description for details.
See composite master file format description for details.
The user needs to define the two runs composing the 2 steps scenario.
ana_slvr
).ana_slvr
).sweep_steady
function begins with a run
#1 which final state defines a common initial state for all repeated run
#2 sweeps is that it can allow the user to sweep the final state of a
system in the course transient/dynamic state of run #2, being in a
balanced or unbalanced system. This needs however to be designed with
care as depending on the defined or forced parameters on run #2 vs. run
#1, the continuity of the conditions of run #1 and run #2 is not
certain. It is then advised to use the better suited
sweep_dyn
function described thereafter.
In addition to all the usual input parameters required for the
sweep_steady
function, the user has to define the two
parameters to be swept.
There are 6 types of sweepable parameters (or that can be explored), which names are strictly defined as follows:
#> [1] "EXPLO_n_FLUX_MATRICES"
#> [1] "EXPLO_n_ALPHA_MATRICES"
#> [1] "EXPLO_1_SIZE"
#> [1] "EXPLO_1_DELTA"
#> [1] "EXPLO_1_ALPHA"
#> [1] "EXPLO_1_RAYLEIGH_ALPHA"
This type of parameter allows to explore a series of flux lists as defined in isobxr master file.
data.frame(VALUES = c("flux_list_1", # vector of n strings of characters
"...",
"flux_list_i",
"...",
"flux_list_n"),
EXPLO_TYPES = "EXPLO_n_FLUX_MATRICES") # stricly leave as such
The EXPLO_n_FLUX_MATRICES parameter will allow the
sweep_steady
function to sweep the effect of a series of
flux lists (defining flux matrices and initial box sizes) on run #2
evolution.
The format of this data frame should be exactly as shown above.
The values are a vector of strings of characters containing the list of flux list names, that will be called from the isobxr master file
This type of parameter allows to explore a series of lists of coefficients as defined in isobxr master file.
data.frame(VALUES = c("coeff_list_1", # vector of n strings of characters
"...",
"coeff_list_i",
"...",
"coeff_list_n"),
EXPLO_TYPES = "EXPLO_n_ALPHA_MATRICES") # stricly leave as such
The EXPLO_n_ALPHA_MATRICES parameter will allow the
sweep_steady
function to sweep the effect of a series of
isotope fractionation coefficient lists (defining coefficient matrices)
on run #2 evolution.
The format of this data frame should be exactly as shown above.
The values are a vector of strings of characters containing the list of coefficients list names, that will be called from the isobxr master file
This type of parameter allows to explore a range of sizes for a given box.
data.frame(BOXES_ID = "BOX_i", # 1 string of char
SIZE_MIN = "min_sweep_value", # 1 numerical value
SIZE_MAX = "max_sweep_value", # 1 numerical value
SIZE_STEPS = "sweep_steps", # 1 numerical value
EXPLO_TYPES = "EXPLO_1_SIZE") # stricly leave as such
The EXPLO_1_SIZE parameter will allow the
sweep_steady
function to sweep the effect of a range of box
sizes for a given box on run #2 evolution.
The format of this data frame should be exactly as shown above.
This type of parameter allows to explore a range of delta values for a given box.
data.frame(BOXES_ID = "BOX_i", # 1 string of char
DELTA_MIN = "min_sweep_value", # 1 numerical value
DELTA_MAX = "max_sweep_value", # 1 numerical value
DELTA_STEPS = "sweep_steps", # 1 numerical value
EXPLO_TYPES = "EXPLO_1_DELTA") # stricly leave as such
This type of parameter allows to explore a range of alpha (coeff) values for a given flux.
data.frame(FROM = "BOX_i", # 1 string of char
TO = "BOX_j", # 1 string of char
ALPHA_MIN = "min_sweep_value", # 1 numerical value
ALPHA_MAX = "max_sweep_value", # 1 numerical value
ALPHA_STEPS = "sweep_steps", # 1 numerical value
EXPLO_TYPES = "EXPLO_1_ALPHA") # stricly leave as such
This type of parameter allows to explore a range of incremental alpha values for a Rayleigh distillation model.
data.frame(XFROM = "Box_B", # B>C flux at numerator (strings of char)
XTO = "Box_C",
YFROM = "Box_A", # A>B flux at denominator (strings of char)
YTO = "Box_B",
AFROM = "Box_B", # resulting fract. coefficient (strings of char)
ATO = "Box_C",
ALPHA_0_MIN = "min_sweep_value", # value of incremental B>A coeff. (num.)
ALPHA_0_MAX = "max_sweep_value",
ALPHA_0_STEPS = "sweep_steps",
EXPLO_TYPES = "EXPLO_1_RAYLEIGH_ALPHA") # stricly leave as such
By default, the sweep_steady
prints in the R session a
series of default heatmap plots of the delta values of each system
finite boxes at the final state of the run in the 2D space of
parameters.
All sweep_steady
output data is stored in a temporary
directory by default.
The user can save these outputs to their working directory by changing the save_run_outputs argument to TRUE.
The sweep_steady
outputs are structured as follows:
By default, the sweep_steady
prints a summary plot of
the run outputs (evolution of delta values and box sizes) in the R
session.
The outputs of the sweep_steady
can also be plotted
using the shinobxr_app
function.
The shinobxr_app
function launches an interactive html
app allowing to edit and export graphical representation of the model
runs.
The shinobxr_app
requires the user to save the
sweep_steady
output files to a local working directory (by
setting the argument save_run_outputs = TRUE).
More on the use of the shinobxr_app
function can be
found on the Shiny
app page.
Sweeping two fractionation coefficients in a 3-boxes balanced open system.
Here:
No forcings are applied.
To do so, the sweep_steady
function can be used as
follows:
sweep_steady(workdir = "/Users/username/Documents/1_ABC_tutorial",
# name of the series ID
SERIES_ID = "ABC_sweep_steady_demo1",
# in/out time units for pdf plots
time_units = c("d", "yr"),
# name of sweep std master file
EXPLO_MASTER = "0_SWEEP_STD_MASTER.xlsx",
# make alpha C to B vary between 1 and 1.0005
EXPLO_AXIS_1 = data.frame(FROM = c("C"),
TO = c("B"),
ALPHA_MIN = 1,
ALPHA_MAX = 1.0005,
ALPHA_STEPS = 0.00005,
EXPLO_TYPES = "EXPLO_1_ALPHA"),
# make alpha A to C vary between 0.9996 and 1
EXPLO_AXIS_2 = data.frame(FROM = c("A"),
TO = c("C"),
ALPHA_MIN = 0.9996,
ALPHA_MAX = 1,
ALPHA_STEPS = 0.00005,
EXPLO_TYPES = "EXPLO_1_ALPHA"),
to_STD_DIGEST_CSVs = TRUE)
The sweep_steady
will prompt a question to user checking
if the number of iterative runs is validated. The higher this number is
the longer the run is.
This run will produce a series of default heatmap plots of the delta values of each system finite boxes at the final state of the run in the 2D space of parameters.
It will yield for example the following plot for the box C.
You can also explore the outputs by then using the isobxr Shiny app
(shinobxr_app
function, presented below).