update.tree <- function(tree,t_spe,t_ext){
wt = tree$wt
n = tree$n
E = tree$E
ct = sum(wt)
if(t_ext > ct){
stop('Extinction beyond present!')
}
if(t_ext < t_spe){
stop('Speciation after extinction!')
}
# speciation
K = length(wt)
k = length(wt[cumsum(wt) < t_spe])
n = c(n[1:(k+1)],(n[(k+1):K]+1))
if((k+1)<K){
lastbit = E[(k+1):(K-1)]
}
else{
lastbit = NULL
}
E = c(E[0:k],1,lastbit)
# (this can be witten in one line, is convinent?)
if(k==0){
wt = c(t_spe, wt[1]-t_spe, wt[2:K])
}
if(k > 0 & k < (K-1)){
wt = c(wt[1:k], t_spe - sum(wt[1:k]), wt[k+1]-(t_spe - sum(wt[1:k])), wt[(k+2):K])
}
if(k == (K-1)){
wt = c(wt[1:(K-1)],t_spe-sum(wt[1:(K-1)]),ct-t_spe)
}
#extinction
K = length(wt)
k = length(wt[cumsum(wt) < t_ext])
n = c(n[1:(k+1)],(n[(k+1):K]-1))
if((k+1)<K){
lastbit = E[(k+1):(K-1)]
}
else{
lastbit = NULL
}
E = c(E[0:k],0,lastbit)
# (this can be witten in one line, is convinent?)
if(k==0){
wt = c(t_ext, wt[1]-t_ext, wt[2:K])
}
if(k > 0 & k < (K-1)){
wt = c(wt[1:k], t_ext - sum(wt[1:k]), wt[k+1]-(t_ext - sum(wt[1:k])), wt[(k+2):K])
}
if(k == (K-1)){
wt = c(wt[1:(K-1)],t_ext-sum(wt[1:(K-1)]),ct-t_ext)
}
tree = list(wt=wt,E=E,n=n)
return(tree)
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.