## ----include = FALSE---------------------------------------------------------- knitr::opts_chunk$set( collapse = TRUE, comment = "#>" ) ## ----echo=FALSE, out.width="100%", fig.align="center"------------------------- if (file.exists("images/synadam_overview.png")) { knitr::include_graphics("images/synadam_overview.png") } ## ----setup-------------------------------------------------------------------- library(synadam) ## ----prepare-sas-files, include=FALSE----------------------------------------- # Convert sample CSVs to SAS format in a temp directory for the demo temp_adam_dir <- file.path(tempdir(), "adam_data") dir.create(temp_adam_dir, showWarnings = FALSE) temp_output_dir <- file.path(tempdir(), "syn_output") adsl <- read.csv( system.file("extdata", "adsl.csv", package = "synadam"), stringsAsFactors = FALSE ) adlb <- read.csv( system.file("extdata", "adlb.csv", package = "synadam"), stringsAsFactors = FALSE ) adae <- read.csv( system.file("extdata", "adae.csv", package = "synadam"), stringsAsFactors = FALSE ) # Convert date columns adsl$TRTSDT <- as.Date(adsl$TRTSDT) adlb$ADT <- as.Date(adlb$ADT) adae$ASTDT <- as.Date(adae$ASTDT) adae$AENDT <- as.Date(adae$AENDT) haven::write_sas(adsl, file.path(temp_adam_dir, "adsl.sas7bdat")) haven::write_sas(adlb, file.path(temp_adam_dir, "adlb.sas7bdat")) haven::write_sas(adae, file.path(temp_adam_dir, "adae.sas7bdat")) ## ----generate-config---------------------------------------------------------- yaml_path <- synadam::generate_study_config( adam_dir = temp_adam_dir, output_dir = temp_output_dir, seed = 42 ) ## ----show-config-------------------------------------------------------------- cat(readLines(yaml_path), sep = "\n") ## ----simulate-study----------------------------------------------------------- synadam::simulate_study(config_path = yaml_path) ## ----read-results------------------------------------------------------------- list.files(temp_output_dir, pattern = "\\.rds$") syn_adsl <- readRDS(file.path(temp_output_dir, "syn_adsl.rds")) head(syn_adsl) # Each dataset carries a version attribute for traceability attr(syn_adsl, "synadam_version") ## ----individual-adsl---------------------------------------------------------- adsl_data <- synadam::read_sas7bdat(file.path(temp_adam_dir, "adsl.sas7bdat")) # Glimpse: extract structural summary adsl_summary <- synadam::glimpse_adsl( adsl = adsl_data, id_cols = c("USUBJID", "SUBJID"), treatment_cols = c("TRT01A", "TRT01AN"), flag_cols = c("SAFFL", "ITTFL", "EFFFL"), ordered_col_sets = list(c("REGION1", "REGION1N")), seed = 42 ) # Simulate: generate synthetic data syn_adsl <- synadam::simulate_adsl(adsl_summary, seed = 42) head(syn_adsl) ## ----split-glimpse-simulate--------------------------------------------------- study_summary_path <- file.path(temp_output_dir, "study_summary.rds") # Phase 1: glimpse only. Requires the real SAS files. synadam::glimpse_study( config_path = yaml_path, study_summary_path = study_summary_path ) # The study summary is one .rds with all summaries plus seed and version. str(readRDS(study_summary_path), max.level = 2) # Phase 2: simulate from the study summary. Does not need the SAS files. split_output_dir <- file.path(tempdir(), "syn_output_split") synadam::simulate_study_from_summary( study_summary_path = study_summary_path, output_dir = split_output_dir ) list.files(split_output_dir, pattern = "\\.rds$")