load_config() loads a single YAML file as a scdrake_list().
load_pipeline_config(), load_single_samples_configs(), and load_integration_configs()
load a specific config group (pipeline, single-sample, integration) and return a named list of scdrake_lists.
Usage
load_config(
yaml_file,
other_variables = NULL,
eval_code = TRUE,
verbose = getOption("scdrake_verbose")
)
load_pipeline_config(
dir = getOption("scdrake_pipeline_config_dir"),
process = TRUE,
...
)
load_single_sample_configs(
dir = getOption("scdrake_single_sample_config_dir"),
cfg_pipeline = NULL,
process = TRUE,
...
)
load_integration_configs(
dir = getOption("scdrake_integration_config_dir"),
cfg_pipeline = NULL,
process = TRUE,
...
)Arguments
- yaml_file
A character scalar: path to YAML file.
- other_variables
A list of variables in whose environment the
yaml_filewill be evaluated, see details below.- eval_code
A logical scalar: if
TRUE, evaluate code for parameters in theyaml_filewhose value starts with!code.- verbose
A logical scalar: if
TRUE, be verbose. The default value is obtained fromgetOption("scdrake_verbose").- dir
A character scalar:
For
load_pipeline_config(): a path to directory withpipeline.yamlfile.For
load_single_sample_config(): a path to directory with00_main.yaml,01_input_qc.yaml,02_norm_clustering.yaml,cluster_markers.yaml, andcontrasts.yamlfiles.For
load_integration_config(): a path to directory with00_main.yaml,01_integration.yaml,02_int_clustering.yaml,cluster_markers.yaml, andcontrasts.yamlfiles.
- process
A logical scalar: if
TRUE, internally process the loaded config. This is always needed prior to sending the config to functions generating adrakeplan, but in some cases could be useful to see the raw config.- ...
Passed to
load_config().- cfg_pipeline
A
scdrake_listobject: pipeline config (seeload_pipeline_config()) obtained frompipeline.yamlfile located in pipeline config directory.
Value
A scdrake_list() of parameters loaded from the YAML file, or a named list of such lists.
Details
Except load_pipeline_config(), you can refer to variables from pipeline.yaml and 00_main.yaml configs
inside individual configs. For example, you can use CLUSTER_SC3_N_CORES: !code DRAKE_N_JOBS in 02_norm_clustering.yaml.
Evaluating code inside YAML files
All parameters in the yaml_file whose value starts with !code will be evaluated as R code.
Those can reference other parameters in the yaml_file, or variables in the individual lists of the other_variables list.
Note that you cannot reference other !code parameters as their are not already evaluated during the runtime.
An example YAML file:
VAR_1: 5
VAR_2: !code VAR_1 + 5
VAR_3: "apple"
VAR_4:
VAR_4_1: !code str_upper(VAR_3)
VAR_5:
- VAR_5_1:
a: !code VAR_1 + 1
VAR_5_2:
b: !code 1:10
VAR_6: !code VAR_2 + 10VAR_2will be10.VAR_4_1will be"APPLE".VAR_5_1will be6.VAR_5_2will be a numeric vector.VAR_6will throw error, becauseVAR_2will still be unevaluated, so R will try to add10to the character scalar.
Note that VAR_5 contains a single named list, and this structure is used quite often in scdrake configs.
You have to keep an eye on the proper indentation :)
Examples
# If a scdrake project is in the current working directory.
if (FALSE) { # \dontrun{
cfg_1 <- load_config("config/pipeline.yaml")
cfg_2 <- load_config(
"config/single_sample/00_main.yaml",
other_variables = cfg_1
)
} # }
if (FALSE) { # \dontrun{
pipeline_config <- load_pipeline_config()
pipeline_config_other <- load_pipeline_config("some/other/dir/config.yaml")
} # }
if (FALSE) { # \dontrun{
single_sample_config <- load_single_sample_configs()
single_sample_config_other <- load_single_sample_configs("some/other/dir")
} # }
if (FALSE) { # \dontrun{
integration_config <- load_integration_configs()
single_sample_config_other <- load_integration_configs("some/other/dir")
} # }