This function implements the main fitting function for REVOLVER, which is a 2-steps algorithm described in the REVOLVER paper (Caravagna et al., Nature Methods volume 15, pages 707–714, 2018; https://www.nature.com/articles/s41592-018-0108-x).
To run the fit the cohort needs not to throw any error when function revolver_check_cohort
is run with parameter stopOnError = TRUE
. The trees of the patients need to be computed as well.
The output object contains a new field `$fit` which contains the fit results, and is of a new S3 class called `rev_cohort_fit` which has its own S3 methods.
revolver_fit(x, initial.solution = 1, max.iterations = 10, n = 10, ...)
x | A REVOLVER cohort where trees per patient have been already computed. |
---|---|
initial.solution | Either a scalar to fix one initial condition
(rank id), or |
max.iterations | Maximum number of EM steps before forcing stop. |
n | Number of initial conditions sampled to compute optimal fit. |
... | Parameters forwarded to a |
A new object of class "rev_cohort_fit"
which represents a
REVOLVER cohort object with fits available.
Caravagna et al., Nature Methods volume 15, pages 707–714, 2018; https://www.nature.com/articles/s41592-018-0108-x
Other Analysis functions:
revolver_cluster()
# Data released in the 'evoverse.datasets' data('TRACERx_NEJM_2017_REVOLVER', package = 'evoverse.datasets') new_fit = revolver_fit(TRACERx_NEJM_2017_REVOLVER)#> [ REVOLVER Transfer Learning fit ~ TRACERx NEJM 2017 ] #> ┌───────────────────────────────────────────────────────────────────────────────────────────┐ #> │ │ #> │ WARNING - Some patients have only one clone with drivers; they will just be expanded. │ #> │ │ #> └───────────────────────────────────────────────────────────────────────────────────────────┘ #> # A tibble: 54 x 7 #> patientID numBiopsies numMutations numDriverMutations numClonesWithDriver #> <chr> <int> <int> <int> <int> #> 1 CRUK0007 2 3 3 1 #> 2 CRUK0010 2 3 3 1 #> 3 CRUK0012 2 1 1 1 #> 4 CRUK0018 4 4 4 1 #> 5 CRUK0019 2 1 1 1 #> 6 CRUK0021 2 4 4 1 #> 7 CRUK0025 3 3 3 1 #> 8 CRUK0026 2 4 4 1 #> 9 CRUK0028 2 2 2 1 #> 10 CRUK0029 6 4 4 1 #> # … with 44 more rows, and 2 more variables: numTruncalMutations <int>, #> # numSubclonalMutations <int>#>#> #> Fitting N = 99 patients #> #> # A tibble: 99 x 6 #> patientID hasTrees numTrees maxScore minScore combInfTransf #> <chr> <lgl> <int> <dbl> <dbl> <int> #> 1 CRUK0001 TRUE 3 0.111 0.111 3 #> 2 CRUK0002 TRUE 2 0.75 0.0833 2 #> 3 CRUK0003 TRUE 1 1 1 1 #> 4 CRUK0004 TRUE 1 1 1 1 #> 5 CRUK0005 TRUE 1 1 1 1 #> 6 CRUK0006 TRUE 2 0.667 0.167 2 #> 7 CRUK0007 TRUE 1 1 1 1 #> 8 CRUK0008 TRUE 1 1 1 1 #> 9 CRUK0009 TRUE 1 1 1 1 #> 10 CRUK0010 TRUE 1 1 1 1 #> # … with 89 more rows #> #> Initial solution : Fixed to #1 #> #> Sampled solutions: n = 1 #> #> Parallel exectuion (via 'easypar') : TRUE #> REVOLVER Transfer Learning fit COMPLETED #>#> [ REVOLVER - Repeated Evolution in Cancer ] #> #> Dataset : TRACERx NEJM 2017 #> Cohort : 99 patients, 450 variants and 79 driver events. #> #> Trees per patient : YES #> Fit via TL : YES #> REVOLVER clustering : YES #> Jackknife statistics : YES #> #> For summary statistics see `?Stats_*(x)` with * = {cohort, drivers, trees, fits, clusters, ...} #> #> ┌───────────────────────────────────────────────────────────────────────────────────────────┐ #> │ │ #> │ WARNING - Some patients have only one clone with drivers; they will just be expanded. │ #> │ │ #> └───────────────────────────────────────────────────────────────────────────────────────────┘ #> # A tibble: 54 x 7 #> patientID numBiopsies numMutations numDriverMutations numClonesWithDriver #> <chr> <int> <int> <int> <int> #> 1 CRUK0007 2 3 3 1 #> 2 CRUK0010 2 3 3 1 #> 3 CRUK0012 2 1 1 1 #> 4 CRUK0018 4 4 4 1 #> 5 CRUK0019 2 1 1 1 #> 6 CRUK0021 2 4 4 1 #> 7 CRUK0025 3 3 3 1 #> 8 CRUK0026 2 4 4 1 #> 9 CRUK0028 2 2 2 1 #> 10 CRUK0029 6 4 4 1 #> # … with 44 more rows, and 2 more variables: numTruncalMutations <int>, #> # numSubclonalMutations <int>