generated from ohdsi-studies/EmptyStudyRepository
-
Notifications
You must be signed in to change notification settings - Fork 9
/
Copy pathEvidenceSynthesis.R
93 lines (84 loc) · 4.64 KB
/
EvidenceSynthesis.R
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
# Code for performing the evidence synthesis across sites. This does not need
# to be executed by each site. Instead, this code will be run only by the study
# coordinating center, after all results have been uploaded to the results database.
# install.packages("EvidenceSynthesis")
# install.packages("Strategus")
# remotes::install_github("ohdsi/ResultModelManager")
# Start of inputs --------------------------------------------------------------
resultsDatabaseConnectionDetails <- DatabaseConnector::createConnectionDetails(
dbms = "postgresql",
port = 5432,
server = paste(keyring::key_get("fqAaStudy"), keyring::key_get("fqAaStudyDatabase"), sep = "/"),
user = keyring::key_get("fqAaStudyUser"),
password = keyring::key_get("fqAaStudyPassword")
)
resultsDatabaseSchema = keyring::key_get("fqAaStudySchema")
outputLocation <- "D:/SosFqAa"
# End of inputs ----------------------------------------------------------------
# Create Strategus analysis specifications -------------------------------------
library(Strategus)
library(dplyr)
source("https://raw.githubusercontent.com/ohdsi/EvidenceSynthesisModule/v0.1.3/SettingsFunctions.R")
evidenceSynthesisSourceCm <- createEvidenceSynthesisSource(sourceMethod = "CohortMethod",
likelihoodApproximation = "adaptive grid")
metaAnalysisCm <- createBayesianMetaAnalysis(evidenceSynthesisAnalysisId = 1,
alpha = 0.05,
evidenceSynthesisDescription = "Bayesian random-effects alpha 0.05 - adaptive grid",
evidenceSynthesisSource = evidenceSynthesisSourceCm)
evidenceSynthesisSourceSccs <- createEvidenceSynthesisSource(sourceMethod = "SelfControlledCaseSeries",
likelihoodApproximation = "adaptive grid")
metaAnalysisSccs <- createBayesianMetaAnalysis(evidenceSynthesisAnalysisId = 2,
alpha = 0.05,
evidenceSynthesisDescription = "Bayesian random-effects alpha 0.05 - adaptive grid",
evidenceSynthesisSource = evidenceSynthesisSourceSccs)
evidenceSynthesisAnalysisList <- list(metaAnalysisCm, metaAnalysisSccs)
evidenceSynthesisAnalysisSpecifications <- createEvidenceSynthesisModuleSpecifications(evidenceSynthesisAnalysisList)
analysisSpecifications <- createEmptyAnalysisSpecificiations() %>%
addModuleSpecifications(evidenceSynthesisAnalysisSpecifications)
# Create Strategus execution settings ------------------------------------------
library(Strategus)
storeConnectionDetails(connectionDetails = resultsDatabaseConnectionDetails,
connectionDetailsReference = "fqAaResultsConnectionDetailsRef")
executionSettings <- createResultsExecutionSettings(
resultsConnectionDetailsReference = "fqAaResultsConnectionDetailsRef",
resultsDatabaseSchema = resultsDatabaseSchema,
workFolder = file.path(outputLocation, "work"),
resultsFolder = file.path(outputLocation, "results"),
minCellCount = 5
)
# Run Strategus ----------------------------------------------------------------
library(Strategus)
execute(analysisSpecifications = analysisSpecifications,
executionSettings = executionSettings)
# Upload evidence synthesis results to database --------------------------------
library(dplyr)
connection <- DatabaseConnector::connect(resultsDatabaseConnectionDetails)
# # Backup old tables:
# backupFolder <- "d:/temp/resultsBackup"
# dir.create(backupFolder)
# tables <- DatabaseConnector::getTableNames(connection, resultsDatabaseSchema)
# for (table in tables) {
# message(sprintf("Backing up table '%s.%s'", resultsDatabaseSchema, table))
# data <- DatabaseConnector::dbReadTable(connection, table, databaseSchema = resultsDatabaseSchema)
# saveRDS(data, file.path(backupFolder, sprintf("%s.rds", table)))
# }
# Create tables
resultsFolder <- file.path(outputLocation, "results", "EvidenceSynthesisModule_1")
rdmsFile <- file.path(resultsFolder, "resultsDataModelSpecification.csv")
specification <- readr::read_csv(file = rdmsFile, show_col_types = FALSE) %>%
SqlRender::snakeCaseToCamelCaseNames()
sql <- ResultModelManager::generateSqlSchema(csvFilepath = rdmsFile)
sql <- SqlRender::render(
sql = sql,
database_schema = resultsDatabaseSchema
)
DatabaseConnector::executeSql(connection, sql)
# Upload results
ResultModelManager::uploadResults(
connection = connection,
schema = resultsDatabaseSchema,
resultsFolder = resultsFolder,
purgeSiteDataBeforeUploading = F,
specifications = specification
)
DatabaseConnector::disconnect(connection)