1010# #' @param lambda per capita birth rate
1111# #' @param mu per capita death rate
1212# #' @param psi per capita sampling rate
13+ # #' @param r probability that a sampled lineage is removed (must be between 0 and 1; r=0 is non-destructive; r=1 is destructive)
1314# #' @param n0 population size at time t0
1415# #' @param time final time
1516# #' @param t0 initial time
2728# #' @export
2829runLBDP <- function (
2930 time , t0 = 0 ,
30- lambda = 2 , mu = 1 , psi = 1 ,
31+ lambda = 2 , mu = 1 , psi = 1 , r = 0 ,
3132 n0 = 5
3233) {
34+ if (! is.numeric(r ) || length(r ) != 1L || ! is.finite(r ) || r < 0 || r > 1 )
35+ pStop(sQuote(" r" )," must be between 0 and 1." )
3336 n0 <- round(n0 )
3437 if (n0 < 0 )
3538 pStop(sQuote(" n0" )," must be a nonnegative integer." )
36- params <- c(lambda = lambda ,mu = mu ,psi = psi )
39+ params <- c(lambda = lambda ,mu = mu ,psi = psi , r = r )
3740 ivps <- c(n0 = n0 )
3841 x <- .Call(P_makeLBDP ,params ,ivps ,t0 )
3942 .Call(P_runLBDP ,x ,time ) | >
@@ -44,9 +47,13 @@ runLBDP <- function (
4447# #' @inheritParams simulate
4548# #' @export
4649continueLBDP <- function (
47- object , time , lambda = NA , mu = NA , psi = NA
50+ object , time , lambda = NA , mu = NA , psi = NA , r = NA
4851) {
49- params <- c(lambda = lambda ,mu = mu ,psi = psi )
52+ if (! isTRUE(is.na(r ))) {
53+ if (! is.numeric(r ) || length(r ) != 1L || ! is.finite(r ) || r < 0 || r > 1 )
54+ pStop(sQuote(" r" )," must be between 0 and 1." )
55+ }
56+ params <- c(lambda = lambda ,mu = mu ,psi = psi ,r = r )
5057 x <- .Call(P_reviveLBDP ,object ,params )
5158 .Call(P_runLBDP ,x ,time ) | >
5259 structure(model = " LBDP" ,class = c(" gpsim" ," gpgen" ))
0 commit comments