R/slide.nodes_fun.R

Defines functions slide.nodes.internal

## Internal for slide.nodes
slide.nodes.internal <- function(tree, nodes, slide) {
    ## Find the parent and descendants
    parent_edge <- which(tree$edge[,2] %in% nodes)
    descendant_edge <- which(tree$edge[,1] %in% nodes)

    ## Stretch the nodes
    if(length(parent_edge) != 0) {
        tree$edge.length[parent_edge] <- tree$edge.length[parent_edge] + slide
        ## Check for negatives
        if(any(tree$edge.length[parent_edge] < 0)) {
            return(NULL)
        }
    }
    tree$edge.length[descendant_edge] <- tree$edge.length[descendant_edge] - slide
    ## Check for negatives
    if(any(tree$edge.length[descendant_edge] < 0)) {
        return(NULL)
    }
    return(tree)
}

Try the dispRity package in your browser

Any scripts or data that you put into this service are public.

dispRity documentation built on Aug. 9, 2022, 5:11 p.m.