
One untangle function to rule them all.
This function untangles dendrogram lists (dendlist), Using various heuristics.
untangle(dend1, ...)# S3 method for default
untangle(dend1, ...)
untangle_labels(dend1, dend2, ...)
# S3 method for dendrogram
untangle(
dend1,
dend2,
method = c("labels", "ladderize", "random", "step1side", "step2side", "stepBothSides",
"DendSer"),
...
)
# S3 method for dendlist
untangle(
dend1,
method = c("labels", "ladderize", "random", "step1side", "step2side", "DendSer"),
which = c(1L, 2L),
...
)
A dendlist, with two trees after they have been untangled.
If the dendlist was originally larger than 2, it will return the original dendlist but with the relevant trees properly rotate.
a dendrogram or a dendlist object
passed to the relevant untangle function
A second dendrogram (to untangle against)
a character indicating the type of untangle heuristic to use. The options are: ("labels", "ladderize", "random", "step1side", "step2side", "stepBothSides", "DendSer")
an integer vector of length 2, indicating which of the trees in the dendlist object should be plotted
Tal Galili
This function wraps all of the untangle functions, in order to make it easier to find our about (and use) them.
tanglegram, untangle_random_search, untangle_step_rotate_1side, untangle_step_rotate_2side, untangle_DendSer, entanglement
if (FALSE) {
set.seed(23235)
ss <- sample(1:150, 10)
dend1 <- iris[ss, -5] %>%
dist() %>%
hclust("com") %>%
as.dendrogram()
dend2 <- iris[ss, -5] %>%
dist() %>%
hclust("sin") %>%
as.dendrogram()
dend12 <- dendlist(dend1, dend2)
dend12 %>% tanglegram()
untangle(dend1, dend2, method = "random", R = 5) %>% tanglegram()
# it works, and we get something different:
set.seed(1234)
dend12 %>%
untangle(method = "random", R = 5) %>%
tanglegram()
set.seed(1234)
# fixes it completely:
dend12 %>%
untangle(method = "random", R = 5) %>%
untangle(method = "step1") %>%
tanglegram()
# not good enough
dend12 %>%
untangle(method = "step1") %>%
tanglegram()
# not good enough
dend12 %>%
untangle(method = "step2") %>%
tanglegram()
# How we might wish to use it:
set.seed(12777)
dend12 %>%
untangle(method = "random", R = 1) %>%
untangle(method = "step2") %>%
tanglegram()
}
Run the code above in your browser using DataLab