Based on the current analysis, value from the UI, an optional list of patterns to search, and column names from a dataset this function tries to find a default value for a column in the analysis (e.g. subject id, dose, concentration, etc).
Generally the following is done:
If curr_ui has a non-NULL, non-"" value it is compared to dscols. If it is found there that value is returned.
If not then the patterns are considered. If the patterns from the YAML file are not NULL they are compared sequentially to the columns names. The first match found is returned.
If nothing is found then the first value of dscols is returned.
Examples
library(ruminate)
# Module IDs
id = "NCA"
id_UD = "UD"
id_DW = "DW"
id_ASM = "ASM"
# We need session and input variables to be define
sess_res = NCA_test_mksession(session=list(),
id = id,
id_UD = id_UD,
id_DW = id_DW,
id_ASM = id_ASM,
full_session=FALSE)
#> → UD: including file
#> → UD: source: file.path(system.file(package="onbrand"), "templates", "report.docx")
#> → UD: dest: file.path("config","report.docx")
#> → UD: including file
#> → UD: source: file.path(system.file(package="onbrand"), "templates", "report.pptx")
#> → UD: dest: file.path("config","report.pptx")
#> → UD: including file
#> → UD: source: file.path(system.file(package="onbrand"), "templates", "report.yaml")
#> → UD: dest: file.path("config","report.yaml")
#> → UD: State initialized
#> → UD: module checksum updated:897d952fecbc804999396a96f9df4b20
#> → DW: including file
#> → DW: source: file.path(system.file(package="onbrand"), "templates", "report.docx")
#> → DW: dest: file.path("config","report.docx")
#> → DW: including file
#> → DW: source: file.path(system.file(package="onbrand"), "templates", "report.pptx")
#> → DW: dest: file.path("config","report.pptx")
#> → DW: including file
#> → DW: source: file.path(system.file(package="onbrand"), "templates", "report.yaml")
#> → DW: dest: file.path("config","report.yaml")
#> → DW: State initialized
#> → DW: module checksum updated:5b0f0b05ee3ac7336a74c564bb6efdad
#> → DW: module checksum updated:65801ab4b3c645aabf7edf91fc2f0d2c
#> → DW: module checksum updated:7fb2dd3b16b1780c4c24f64d658dd7c7
#> → DW: module checksum updated:5ab04ea00be44c0040695a4ed6243c90
#> → DW: module checksum updated:960db107cfe9db93578f79f0ae6283e2
#> → DW: module checksum updated:f0b5d122dcb04f207cba233253b61c4b
#> → DW: module checksum updated:189ed77a84bd9fcdd7b26abff8bea34a
#> → DW: module checksum updated:669ec77d50652669cd3fcfd949469b37
#> → DW: module checksum updated:dd6cafa0be3b6b195d230a11e9f07f9f
#> → DW: module checksum updated:5c2022c376ca8f56b839347156559890
#> → DW: module checksum updated:43640500a04674debd8e2399056c384a
#> → DW: module checksum updated:f81c45ac1ef4e7b43153d8c8eaf7aed6
#> → DW: module checksum updated:207cde891d98e20c4afbb7fb5fb0aba2
#> → DW: module checksum updated:0a673e81c01cbbf33533dd65d6baf9e3
#> → DW: module checksum updated:af3f3aefd0115ed9dfdd4d6ef9d5182f
#> → DW: module checksum updated:b0ccaee21e859322df0bf79d00c4b347
#> → DW: module checksum updated:2d3d6e9e38be6dea813b2d4d679e34b5
#> → DW: module checksum updated:2b60dd49b48a4e65200dc7241ad270e3
#> → DW: module checksum updated:3c92f397181a4fcdbdf2bd7dd7425e77
#> → DW: module checksum updated:92b81d7573def603649370b87c123b55
#> → DW: module checksum updated:9210264aabc0339e832b0c6bcfda32af
#> → DW: module checksum updated:fe62fde1e7e738a1a35c479de9d5007b
#> → DW: module checksum updated:ff3edcd4c1e58c96ea2707361916ffbc
#> → DW: module checksum updated:b6cdfcef0432c5d9b1fa2bd46122ffa2
#> → DW: module checksum updated:4fa4283f1fd8fd6cf6e6e7df0669723a
#> → DW: module checksum updated:cf3e139cef554b2d09dca619ee6aff41
#> → DW: module checksum updated:a9154d91a9e4b5d21f9585a6f68dd083
#> → DW: module checksum updated:4b5c6ad66658ddfa92d10ae1b0b7afa8
#> → DW: module checksum updated:591ac875a490b66a1fa7f4e7d4ba1c62
#> → DW: module checksum updated:afa3ca309cc3e6a48f542f4e8eadd54a
#> → DW: module checksum updated:5c918dd4f53a4f1e56115abb09c4f332
#> → DW: module checksum updated:159ddf8c8cd26b178dfda5434bbecfa1
#> → DW: module checksum updated:8bb3c97e700998f2f73353189bd07831
#> → DW: module checksum updated:a1eceffec3ff7d9f9961683b3d07088b
#> → NCA: including file
#> → NCA: source: file.path(system.file(package="onbrand"), "templates", "report.docx")
#> → NCA: dest: file.path("config","report.docx")
#> → NCA: including file
#> → NCA: source: file.path(system.file(package="onbrand"), "templates", "report.pptx")
#> → NCA: dest: file.path("config","report.pptx")
#> → NCA: including file
#> → NCA: source: file.path(system.file(package="onbrand"), "templates", "report.yaml")
#> → NCA: dest: file.path("config","report.yaml")
#> ✖ NCA: Parameter specified in YAML is not a valid PKNCA parameter: sparse_se
#> ✖ NCA: Parameter specified in YAML is not a valid PKNCA parameter: sparse_df
#> → NCA: including file
#> → NCA: source: file.path(system.file(package="onbrand"), "templates", "report.docx")
#> → NCA: dest: file.path("config","report.docx")
#> → NCA: including file
#> → NCA: source: file.path(system.file(package="onbrand"), "templates", "report.pptx")
#> → NCA: dest: file.path("config","report.pptx")
#> → NCA: including file
#> → NCA: source: file.path(system.file(package="onbrand"), "templates", "report.yaml")
#> → NCA: dest: file.path("config","report.yaml")
#> → NCA: State initialized
#> → NCA: State initialized
#> → NCA: loading analysis scenario: sd_iv
#> → NCA: NCA_add_int: append
#> → NCA: NCA_add_int: append
#> Warning: NAs introduced by coercion
#> Warning: NAs introduced by coercion
#> Warning: NAs introduced by coercion
#> Warning: NAs introduced by coercion
#> Warning: NAs introduced by coercion
#> Warning: NAs introduced by coercion
#> Warning: NAs introduced by coercion
#> Warning: NAs introduced by coercion
#> Warning: NAs introduced by coercion
#> → NCA: module checksum updated:74015e77030802e29dcf34808870dcf3
# Extracting the session and input variables
session = sess_res$session
input = sess_res$input
react_state = list()
# We also need configuration files
FM_yaml_file = system.file(package = "formods", "templates", "formods.yaml")
MOD_yaml_file = system.file(package = "ruminate", "templates", "NCA.yaml")
# Getting the current module state
state = NCA_fetch_state(id = id,
input = input,
session = session,
FM_yaml_file = FM_yaml_file,
MOD_yaml_file = MOD_yaml_file,
id_ASM = id_ASM,
id_UD = id_UD,
id_DW = id_DW,
react_state = react_state)
# Pulls out the active analysis
current_ana = NCA_fetch_current_ana(state)
# This will get the dataset associated with this analysis
ds = NCA_fetch_ana_ds(state, current_ana)
# After making changes you can update those in the state
state = NCA_set_current_ana(state, current_ana)
# You can use this to check the current analysis
current_ana = NCA_process_current_ana(state)
#> Warning: NAs introduced by coercion
#> Warning: NAs introduced by coercion
#> Warning: NAs introduced by coercion
#> Warning: NAs introduced by coercion
# This will pull out the code for the module
fc_res = NCA_fetch_code(state)
# This will use patterns defined for the site to detect
# columns. In this example we are detecting the id column:
id_col = NCA_find_col(
patterns = state[["MC"]][["detect_col"]][["id"]],
dscols = names(ds$DS))
#> Warning: Unknown or uninitialised column: `DS`.
# This creates a new analysis
state = NCA_new_ana(state)