OHDSI Home | Forums | Wiki | Github

Comparative Effectiveness Study of Febuxostat versus Allopurinol in Gout


(Seng Chan You) #1

Dear all,

The new network study is launched to evaluate the efficacy and safety febuxostat in gout compared to allopurinol.

Comparative Effectiveness Study of Febuxostat versus Allopurinol in Gout

Objective: The goal of this protocols is conducting comparative effectiveness research to establish evidences for benefits and harms of febuxostat and allopurinol. The primary endpoint is the risk of sudden cardiac death. The secondary endpoints include acute myocardial infarction, stroke, heart failure, gout flare and drug hypersensitivity (TEN, SJS, and DRESS)

Rationale: Febuxostat is widely used urate-lowering agent because it is more effective than allopurinol to lower serum urate in patients with gout. Furthermore, febuxostat can be used without dosage adjustment in chronic kidney disease. The Cardiovascular Safety of Febuxostat and Allopurinol in Patients with Gout and Cardiovascular Morbidities (CARES) group was a prospective multicenter, double-blind randomized clinical trial, which assessed the cardiovascular risk of febuxostat compared with allopurinol in patients with gout and a history of CVD. This study concluded that febuxostat was associated with significantly higher overall and cardiovascular mortality compared to allopurinol, mostly driven by sudden cardiac death. Still, there is scarce evidence for risk of sudden cardiac death between febuxostat and allopurinol in real-world practice.

The whole protocol is released at github

We are searching for collaborators to join this network study. Please let me know if you’re interested in joining this study! And please provide any comments or suggestions.


#2

I’d add another RCT of Febuxostat vs. Allopurinol on cardiovascular outcomes: Febuxostat vs Allopurinol Streamlined Trial (FAST). It’s a UK trial, completed last year, not published yet.


(Seng Chan You) #3

I thought it’s ongoing. Thank you for the helpful comment! @BridgetWang .


(Seng Chan You) #4

I moved the primary repo for the study from OHDSI studyprotocolsandbox to my git repo

Please use the link above for this study.


(George Argyriou) #5

Hi Chan,

I have difficulties installing the package in my local machine.

I’ve tried to install using two different ways:

  1. With install_github("chandryou/FebuxostatVsAllopurinolCVD") I get:

Error in read.dcf(path) :

Found continuation line starting ’ DatabaseConnecto …’ at begin of record.

  1. With install.packages("https://github.com/chandryou/FebuxostatVsAllopurinolCVD.git") I get:

Warning in install.packages :

package ‘https://github.com/chandryou/FebuxostatVsAllopurinolCVD.git’ is not available (for R version 3.5.1)

Can you help?

Also, all the other OHDSI packages you mention here have been installed successfully.

Thanks
George


(Seng Chan You) #6

@George_Argyriou Yes, you’re right.
I recorded this as an issue and I’ll fix this.


(Martijn Schuemie) #7

The 'Error in read.dcf(path) ’ is because of a known bug in the latest version of devtools that the devtools developers don’t seem in a hurry to fix.

For now, the workaround is to run this code:

devtools::install_github("r-lib/remotes", ref = "e56a41e1d0cad55cbe7d60b274b99ab7b7a76b5c")

That will update one of devtools dependencies (remotes) to the point where it has been fixed.


(Martijn Schuemie) #8

(@SCYou: another workaround is to only use single tabs for indentation in your DESCRIPTION file)


(Seng Chan You) #9

Thank you, @schuemie I updated description

@George_Argyriou Could you try to install the febuxostat package again after installing two other packages first?

devtools::install_github("ohdsi/OhdsiRTools")
devtools::install_github("ohdsi/EvidenceSynthesis")
devtools::install_github("chandryou/FebuxostatVsAllopurinolCVD")

Actually I plan to build a package again with current ATLAS, and then make a docker image for this study package for better reproducibility.


(George Argyriou) #10

@SCYou
OhdsiRtools and EvidenceSynthesis were installed without any issues but when I try to install FebuxostatVsAllopurinolCVD I get the following:

Error in library.dynam(lib, package, package.lib) :
DLL ‘stringi’ not found: maybe not installed for this architecture?
ERROR: installing vignettes failed

  • removing ‘C:/R/R-3.5.1/library/FebuxostatVsAllopurinolCVD’
    In R CMD INSTALL
    Error in i.p(…) :
    (converted from warning) installation of package ‘C:/Users/GARGYR~1/AppData/Local/Temp/RtmpOedyIY/file164c536741e9/FebuxostatVsAllopurinolCVD_0.0.1.tar.gz’ had non-zero exit status

@schuemie I’ve also run

devtools::install_github(“r-lib/remotes”, ref = “e56a41e1d0cad55cbe7d60b274b99ab7b7a76b5c”)


(Seng Chan You) #11

@George_Argyriou
I’ve updated the description in this package two days ago. Could you try to install once again?

Or, could you wait for one more week? I’ll update the whole package.

Sorry for inconvenience.


(Martijn Schuemie) #12

The error message indicates one of the downstream dependencies (‘stringi’) was not installed correctly. (In fact, it suggests it was installed, but not for the same architecture you’re running, so maybe it was installed when running 32-bits R, and now you’re running 64-bits R?)

I would manually re-install this package:

As always when installing packages, close all sessions of R, then open up one session (ideally making sure no old workspace is loaded), then type:

remove.packages("stringi")
install.packages("stringi")

(George Argyriou) #13

No problem @SCYou, I can wait till you update the whole package.

Thank you


(Seng Chan You) #14

@George_Argyriou
I’ve updated the package.

Could you try once again?

devtools::install_github("chandryou/FebuxostatVsAllopurinolCVD")

I couldn’t check the package fully, because I don’t have enough sample size for the study.
If you cannot run this package, please try limited version. It would run even if you don’t have enough sample size for the study

devtools::install_github("chandryou/FebuxostatVsAllopurinolCVD", ref = 'limited')

I will make a docker image for this package, too. Meanwhile, you can install the package in the cohortmethod docker image as described here


(George Argyriou) #15

@SCYou ,

I’ve managed to install the package (full version not limited) and run it. Below are the results R returned:

Loading required package: DatabaseConnector
Creating exposure and outcome cohorts
Warning: ‘C:\Temp\FebuxostatVsAllopurinolCVD\dafr’ already exists
Connecting using Redshift driver
Creating cohort: SCYouTFebuxostat_general_revised
|===============================================================================================================================================| 100%
Executing SQL took 27.4 secs
Creating cohort: SCYouCAllopurinol_general_revised
|===============================================================================================================================================| 100%
Executing SQL took 30.8 secs
Creating cohort: AllopurinolHypersensitivity
|===============================================================================================================================================| 100%
Executing SQL took 8.3 secs
Creating cohort: SCYou_Heart_failure_inpatient_or_ED_and_first_event
|===============================================================================================================================================| 100%
Executing SQL took 8.55 secs
Creating cohort: SCYououtcomeany_death
Warning: Parameter ‘vocabulary_database_schema’ not found in SQL
|===============================================================================================================================================| 100%
Executing SQL took 7.37 secs
Creating cohort: SCYouSuddenCardiacDeath
|===============================================================================================================================================| 100%
Executing SQL took 7.27 secs
Creating cohort: SCYou_Acute_MI_inpatient_or_ED_and_first_event
|===============================================================================================================================================| 100%
Executing SQL took 8.21 secs
Creating cohort: SCYou_hemorrhagic_stroke_inpatient_or_ED_and_first_event
|===============================================================================================================================================| 100%
Executing SQL took 9.37 secs
Creating cohort: SCYou_ischemic_stroke_inpatient_or_ED_and_first_event
|===============================================================================================================================================| 100%
Executing SQL took 8.83 secs
Warning: ‘SqlRender::renderSql’ is deprecated.
Use ‘render’ instead.
See help(“Deprecated”)
Warning: ‘SqlRender::translateSql’ is deprecated.
Use ‘translate’ instead.
See help(“Deprecated”)
Creating negative control outcome cohorts
|===============================================================================================================================================| 100%
Executing SQL took 2.89 secs
Counting cohorts
Running CohortMethod analyses
*** Creating cohortMethodData objects ***
|===============================================================================================================================================| 100%
*** Creating study populations ***
|===============================================================================================================================================| 100%
*** Fitting shared propensity score models ***
| | 0%Thread 2 returns error: “unable to open” when using argument(s): list(cohortMethodDataFolder = “C:/Temp/FebuxostatVsAllopurinolCVD/dafr//cmOutput/CmData_l1_t863_c864”, createPsArg = list(stopOnError = TRUE, excludeCovariateIds = list(), prior = list(variance = 1, useCrossValidation = TRUE, priorType = “laplace”, exclude = 0, neighborhood = NULL, forceIntercept = FALSE, graph = NULL), errorOnHighCorrelation = TRUE, control = list(maxIterations = 1000, autoSearch = TRUE, seed = NULL, initialBound = 2, gridSteps = 10, startingVariance = -1, useKKTSwindle = FALSE, n lowerLimit = 0.01, cvRepetitions = 10, noiseLevel = “silent”, fold = 10, minCVData = 100, resetCoefficients = FALSE, upperLimit = 20, cvType = “auto”, selectorType = “auto”, convergenceType = “gradient”, tuneSwindle = 10, maxBoundCount = 5, tolerance = 1e-06, algorithm = “ccd”, threads = 10), includeCovariateIds = list(), maxCohortSizeForFitting = 250000), createStudyPopArgs = list(restrictToCommonPeriod = FALSE, removeDuplicateSubjects = “keep all”, minDaysAtRisk = 1, addExposureDaysToStart = FALSE, n riskWindowStart = 1, washoutPeriod = 0, censorAtNewRiskWindow = FALSE, addExposureDaysToEnd = FALSE, priorOutcomeLookback = 99999, removeSubjectsWithPriorOutcome = FALSE, riskWindowEnd = 0, firstExposureOnly = FALSE), sharedPsFile = “C:/Temp/FebuxostatVsAllopurinolCVD/dafr//cmOutput/Ps_l1_s2_p1_t863_c864.rds”),TRUE
|===============================================================================================================================================| 100%
Error in ParallelLogger::clusterApply(cluster, modelsToFit, fitSharedPsModel, :
Error(s) when calling function ‘fun’, see earlier messages for details

I’ll install Docker next week and once you create a image for the package, I can test it there as well.

Thanks


(Seng Chan You) #16

@George_Argyriou Could you share the number of cohort?
The count of cohort might be recorded in ‘CohortCounts.csv’. So you can load the file by the code below

cnt<-read.csv(file.path(exportFolder,"CohortCounts.csv"))

(George Argyriou) #17

CohortCounts.xlsx (10.1 KB)

Have a look.


(Seng Chan You) #18

Thank you @George_Argyriou .

The problem must not be caused by small sample size. I found some flaws in the package. I’ll update the package by tomorrow and let you know again. Sorry for the inconvenience.


(Seng Chan You) #19

@George_Argyriou I think the error is caused by faulty time-at-risk of one analysis among 6 analyses.
Among the arguments below, the riskWindowEnd should be ‘9999’. I fixed this in this commit.

minDaysAtRisk = 1, addExposureDaysToStart = FALSE, n riskWindowStart = 1, riskWindowEnd = 0

Could you run it again?
Please set createCohort argument as FALSE this time, because you don’t need to create the cohort again.

execute(connectionDetails = connectionDetails,
cdmDatabaseSchema = cdmDatabaseSchema,
cohortDatabaseSchema = cohortDatabaseSchema,
cohortTable = cohortTable,
oracleTempSchema = oracleTempSchema,
outputFolder = outputFolder,
databaseId = databaseId
databaseName = databaseName,
databaseDescription = databaseDescription,
createCohorts = FALSE,
synthesizePositiveControls = TRUE,
runAnalyses = TRUE,
runDiagnostics = TRUE,
packageResults = TRUE
maxCores = maxCores,
minCellCount = minCellCount)

(George Argyriou) #20

@SCYou,By running it again,I got the following:

Loading required package: DatabaseConnector
Running CohortMethod analyses
*** Creating cohortMethodData objects ***
*** Creating study populations ***
*** Fitting shared propensity score models ***
  |===============================================================================================================================================| 100%
*** Adding propensity scores to study population objects ***
  |===============================================================================================================================================| 100%
*** Trimming/Matching/Stratifying ***
  |===============================================================================================================================================| 100%
*** Prefiltering covariates for outcome models ***
*** Fitting outcome models for outcomes of interest ***
  |=================================================================                                                                              |  45%Thread 1 returns error: "Requested stratified analysis, but no stratumId column found in population. Please use matchOnPs or stratifyByPs to create strata." when using argument(s): list(cohortMethodDataFolder = "C:/Temp/FebuxostatVsAllopurinolCVD/dafr//cmOutput/CmData_l1_t863_c864", prefilteredCovariatesFolder = "", args = list(excludeCovariateIds = list(), useCovariates = FALSE, prior = list(variance = 1, useCrossValidation = TRUE, priorType = "laplace", exclude = 0, neighborhood = NULL, forceIntercept = FALSE, graph = NULL), inversePtWeighting = FALSE, control = list(maxIterations = 1000, autoSearch = TRUE, seed = NULL, initialBound = 2, gridSteps = 10, startingVariance = -1, n    useKKTSwindle = FALSE, lowerLimit = 0.01, cvRepetitions = 10, noiseLevel = "quiet", fold = 10, minCVData = 100, resetCoefficients = FALSE, upperLimit = 20, cvType = "auto", selectorType = "auto", convergenceType = "gradient", tuneSwindle = 10, maxBoundCount = 5, tolerance = 1e-06, algorithm = "ccd", threads = 4), modelType = "cox", stratified = TRUE, interactionCovariateIds = list(), includeCovariateIds = list()), studyPopFile = "C:/Temp/FebuxostatVsAllopurinolCVD/dafr//cmOutput/StratPop_l1_s2_p1_t863_c864_s2_o20.rds", n    outcomeModelFile = "C:/Temp/FebuxostatVsAllopurinolCVD/dafr//cmOutput/Analysis_5/om_t863_c864_o20.rds")
  |========================================================================                                                                       |  50%Thread 1 returns error: "Requested stratified analysis, but no stratumId column found in population. Please use matchOnPs or stratifyByPs to create strata." when using argument(s): list(cohortMethodDataFolder = "C:/Temp/FebuxostatVsAllopurinolCVD/dafr//cmOutput/CmData_l1_t863_c864", prefilteredCovariatesFolder = "", args = list(excludeCovariateIds = list(), useCovariates = FALSE, prior = list(variance = 1, useCrossValidation = TRUE, priorType = "laplace", exclude = 0, neighborhood = NULL, forceIntercept = FALSE, graph = NULL), inversePtWeighting = FALSE, control = list(maxIterations = 1000, autoSearch = TRUE, seed = NULL, initialBound = 2, gridSteps = 10, startingVariance = -1, n    useKKTSwindle = FALSE, lowerLimit = 0.01, cvRepetitions = 10, noiseLevel = "quiet", fold = 10, minCVData = 100, resetCoefficients = FALSE, upperLimit = 20, cvType = "auto", selectorType = "auto", convergenceType = "gradient", tuneSwindle = 10, maxBoundCount = 5, tolerance = 1e-06, algorithm = "ccd", threads = 4), modelType = "cox", stratified = TRUE, interactionCovariateIds = list(), includeCovariateIds = list()), studyPopFile = "C:/Temp/FebuxostatVsAllopurinolCVD/dafr//cmOutput/StratPop_l1_s2_p1_t863_c864_s2_o736.rds", n    outcomeModelFile = "C:/Temp/FebuxostatVsAllopurinolCVD/dafr//cmOutput/Analysis_5/om_t863_c864_o736.rds")
  |===========================================================================                                                                    |  52%Thread 10 returns error: "Requested stratified analysis, but no stratumId column found in population. Please use matchOnPs or stratifyByPs to create strata." when using argument(s): list(cohortMethodDataFolder = "C:/Temp/FebuxostatVsAllopurinolCVD/dafr//cmOutput/CmData_l1_t863_c864", prefilteredCovariatesFolder = "", args = list(excludeCovariateIds = list(), useCovariates = FALSE, prior = list(variance = 1, useCrossValidation = TRUE, priorType = "laplace", exclude = 0, neighborhood = NULL, forceIntercept = FALSE, graph = NULL), inversePtWeighting = FALSE, control = list(maxIterations = 1000, autoSearch = TRUE, seed = NULL, initialBound = 2, gridSteps = 10, startingVariance = -1, n    useKKTSwindle = FALSE, lowerLimit = 0.01, cvRepetitions = 10, noiseLevel = "quiet", fold = 10, minCVData = 100, resetCoefficients = FALSE, upperLimit = 20, cvType = "auto", selectorType = "auto", convergenceType = "gradient", tuneSwindle = 10, maxBoundCount = 5, tolerance = 1e-06, algorithm = "ccd", threads = 4), modelType = "cox", stratified = TRUE, interactionCovariateIds = list(), includeCovariateIds = list()), studyPopFile = "C:/Temp/FebuxostatVsAllopurinolCVD/dafr//cmOutput/StratPop_l1_s2_p1_t863_c864_s2_o824.rds", n    outcomeModelFile = "C:/Temp/FebuxostatVsAllopurinolCVD/dafr//cmOutput/Analysis_5/om_t863_c864_o824.rds")
  |==============================================================================                                                                 |  55%Thread 1 returns error: "Requested stratified analysis, but no stratumId column found in population. Please use matchOnPs or stratifyByPs to create strata." when using argument(s): list(cohortMethodDataFolder = "C:/Temp/FebuxostatVsAllopurinolCVD/dafr//cmOutput/CmData_l1_t863_c864", prefilteredCovariatesFolder = "", args = list(excludeCovariateIds = list(), useCovariates = FALSE, prior = list(variance = 1, useCrossValidation = TRUE, priorType = "laplace", exclude = 0, neighborhood = NULL, forceIntercept = FALSE, graph = NULL), inversePtWeighting = FALSE, control = list(maxIterations = 1000, autoSearch = TRUE, seed = NULL, initialBound = 2, gridSteps = 10, startingVariance = -1, n    useKKTSwindle = FALSE, lowerLimit = 0.01, cvRepetitions = 10, noiseLevel = "quiet", fold = 10, minCVData = 100, resetCoefficients = FALSE, upperLimit = 20, cvType = "auto", selectorType = "auto", convergenceType = "gradient", tuneSwindle = 10, maxBoundCount = 5, tolerance = 1e-06, algorithm = "ccd", threads = 4), modelType = "cox", stratified = TRUE, interactionCovariateIds = list(), includeCovariateIds = list()), studyPopFile = "C:/Temp/FebuxostatVsAllopurinolCVD/dafr//cmOutput/StratPop_l1_s2_p1_t863_c864_s2_o1233.rds", n    outcomeModelFile = "C:/Temp/FebuxostatVsAllopurinolCVD/dafr//cmOutput/Analysis_5/om_t863_c864_o1233.rds")
  |=========================================================================================                                                      |  62%Thread 10 returns error: "Requested stratified analysis, but no stratumId column found in population. Please use matchOnPs or stratifyByPs to create strata." when using argument(s): list(cohortMethodDataFolder = "C:/Temp/FebuxostatVsAllopurinolCVD/dafr//cmOutput/CmData_l1_t863_c864", prefilteredCovariatesFolder = "", args = list(excludeCovariateIds = list(), useCovariates = FALSE, prior = list(variance = 1, useCrossValidation = TRUE, priorType = "laplace", exclude = 0, neighborhood = NULL, forceIntercept = FALSE, graph = NULL), inversePtWeighting = FALSE, control = list(maxIterations = 1000, autoSearch = TRUE, seed = NULL, initialBound = 2, gridSteps = 10, startingVariance = -1, n    useKKTSwindle = FALSE, lowerLimit = 0.01, cvRepetitions = 10, noiseLevel = "quiet", fold = 10, minCVData = 100, resetCoefficients = FALSE, upperLimit = 20, cvType = "auto", selectorType = "auto", convergenceType = "gradient", tuneSwindle = 10, maxBoundCount = 5, tolerance = 1e-06, algorithm = "ccd", threads = 4), modelType = "cox", stratified = TRUE, interactionCovariateIds = list(), includeCovariateIds = list()), studyPopFile = "C:/Temp/FebuxostatVsAllopurinolCVD/dafr//cmOutput/StratPop_l1_s2_p1_t863_c864_s2_o1235.rds", n    outcomeModelFile = "C:/Temp/FebuxostatVsAllopurinolCVD/dafr//cmOutput/Analysis_5/om_t863_c864_o1235.rds")
  |============================================================================================                                                   |  64%Thread 1 returns error: "Requested stratified analysis, but no stratumId column found in population. Please use matchOnPs or stratifyByPs to create strata." when using argument(s): list(cohortMethodDataFolder = "C:/Temp/FebuxostatVsAllopurinolCVD/dafr//cmOutput/CmData_l1_t863_c864", prefilteredCovariatesFolder = "", args = list(excludeCovariateIds = list(), useCovariates = FALSE, prior = list(variance = 1, useCrossValidation = TRUE, priorType = "laplace", exclude = 0, neighborhood = NULL, forceIntercept = FALSE, graph = NULL), inversePtWeighting = FALSE, control = list(maxIterations = 1000, autoSearch = TRUE, seed = NULL, initialBound = 2, gridSteps = 10, startingVariance = -1, n    useKKTSwindle = FALSE, lowerLimit = 0.01, cvRepetitions = 10, noiseLevel = "quiet", fold = 10, minCVData = 100, resetCoefficients = FALSE, upperLimit = 20, cvType = "auto", selectorType = "auto", convergenceType = "gradient", tuneSwindle = 10, maxBoundCount = 5, tolerance = 1e-06, algorithm = "ccd", threads = 4), modelType = "cox", stratified = TRUE, interactionCovariateIds = list(), includeCovariateIds = list()), studyPopFile = "C:/Temp/FebuxostatVsAllopurinolCVD/dafr//cmOutput/StratPop_l1_s2_p1_t863_c864_s2_o1261.rds", n    outcomeModelFile = "C:/Temp/FebuxostatVsAllopurinolCVD/dafr//cmOutput/Analysis_5/om_t863_c864_o1261.rds")
  |===============================================================================================                                                |  67%Thread 2 returns error: "Requested stratified analysis, but no stratumId column found in population. Please use matchOnPs or stratifyByPs to create strata." when using argument(s): list(cohortMethodDataFolder = "C:/Temp/FebuxostatVsAllopurinolCVD/dafr//cmOutput/CmData_l1_t863_c864", prefilteredCovariatesFolder = "", args = list(excludeCovariateIds = list(), useCovariates = FALSE, prior = list(variance = 1, useCrossValidation = TRUE, priorType = "laplace", exclude = 0, neighborhood = NULL, forceIntercept = FALSE, graph = NULL), inversePtWeighting = FALSE, control = list(maxIterations = 1000, autoSearch = TRUE, seed = NULL, initialBound = 2, gridSteps = 10, startingVariance = -1, n    useKKTSwindle = FALSE, lowerLimit = 0.01, cvRepetitions = 10, noiseLevel = "quiet", fold = 10, minCVData = 100, resetCoefficients = FALSE, upperLimit = 20, cvType = "auto", selectorType = "auto", convergenceType = "gradient", tuneSwindle = 10, maxBoundCount = 5, tolerance = 1e-06, algorithm = "ccd", threads = 4), modelType = "cox", stratified = TRUE, interactionCovariateIds = list(), includeCovariateIds = list()), studyPopFile = "C:/Temp/FebuxostatVsAllopurinolCVD/dafr//cmOutput/StratPop_l1_s2_p1_t863_c864_s2_o1263.rds", n    outcomeModelFile = "C:/Temp/FebuxostatVsAllopurinolCVD/dafr//cmOutput/Analysis_5/om_t863_c864_o1263.rds")
  |===============================================================================================================================================| 100%
Error in ParallelLogger::clusterApply(cluster, modelsToFit, doFitOutcomeModel) : 
  Error(s) when calling function 'fun', see earlier messages for details
In addition: Warning message:
In dir.create(outputFolder, recursive = TRUE) :
  'C:\Temp\FebuxostatVsAllopurinolCVD\dafr' already exists

Also, patient and cohort count are the same as the last execution.


t