legend_size <- 18
legend_text_size <- 22
outGroup <- confs$analysis$phylogeny$outgroup
treeTbl <- tidytree::as_tibble(rawTree) %>%
dplyr::full_join(y = sampleInfo, by = c("label" = "genomeId")) %>%
treeio::as.treedata()
pt_tree <- ggtree::ggtree(treeTbl) +
geom_treescale(
x = 0, y = nrow(sampleInfo) * 0.8,
fontsize = 8, linesize = 2
)
longestBranch <- which(pt_tree$data$x > confs$analysis$phylogeny[[treeMethod]]$cut_branch)
pt_tree$data$x[longestBranch] <- confs$analysis$phylogeny[[treeMethod]]$cut_branch
rootNode <- rootnode(treeTbl)
pt_phy_theme <- ggplot2::theme_bw() +
theme(
axis.text.y = element_blank(),
# panel.grid = element_blank(),
panel.background = element_blank(),
# panel.border = element_blank(),
axis.ticks.y = element_blank(),
legend.text = element_text(size = legend_text_size),
legend.title = element_text(size = legend_text_size + 2, face = "bold"),
axis.title = element_blank()
)
# bootstrap values
pt_tree <- pt_tree +
ggtree::geom_point2(
mapping = aes(
subset = !isTip & node != rootNode,
color = cut(bootstrap, c(0, 50, 70, 90, 100))),
shape = 16, size = 2
) +
scale_color_manual(
values = c("red", "#f781bf", "blue", "black"),
guide = guide_legend(override.aes = list(size = legend_size), order = 1),
name = 'Bootstrap %',
breaks = c('(0,50]', '(50,70]', '(70,90]'),
labels = expression(BP < "50%", "50%" <= BP * " < 70%", "70%" <= BP * " < 90%"),
na.value = "transparent"
) +
ggnewscale::new_scale_color()
## mark outgroup
pt_tree2 <- mark_outgroup(
pt = pt_tree, otg = outGroup, column = "sampleId"
) +
theme(
legend.text = element_text(size = legend_text_size),
legend.title = element_text(size = legend_text_size + 2, face = "bold")
)
pt_tree3 <- pt_tree2 +
# ggtree::geom_nodelab(
# mapping = aes(label = label),
# node = "internal", size = 3, hjust = 1.3, color = "red"
# ) +
ggtree::geom_tiplab(
mapping = aes(label = label, color = type_material),
size = 3, align = TRUE, linesize = 0.5
) +
scale_x_continuous(expand = expansion(mult = c(0.05, 0.05))) +
scale_color_manual(
values = c("type strain" = "blue"),
name = "Type strain",
guide = guide_legend(
order = 2,
override.aes = list(size = legend_size)
),
na.value = "black"
) +
ggnewscale::new_scale_color()
## add metadata
pt_labels <- dplyr::select(ctvPav, label = genomeId, nodeLabs) |>
ggplot2::ggplot(mapping = aes(x = "desc", y = label)) +
ggplot2::geom_text(
mapping = aes(label = nodeLabs),
hjust = 0, family = "mono"
) +
ggplot2::scale_x_discrete(
expand = expansion(mult = c(0.01, 0.5)), position = "top"
) +
pt_phy_theme +
theme(axis.text.x = element_blank())
pt_ctv_pav <- dplyr::select(ctvPav, label = genomeId, ctv_presence) |>
ggplot2::ggplot(mapping = aes(x = "ctv", y = label)) +
ggplot2::geom_text(
mapping = aes(label = ctv_presence),
hjust = 0, family = "mono"
) +
ggplot2::scale_x_discrete(
expand = expansion(mult = c(0.01, 0.5)), position = "top"
) +
pt_phy_theme +
theme(axis.text.x = element_blank())
pt_tree4 <- pt_labels |>
aplot::insert_left(pt_tree3, width = 1.6) |>
aplot::insert_right(pt_ctv_pav, width = 0.3)
ggsave(
plot = pt_tree4, width = 12, height = 22, scale = 2,
filename = paste(outDir, "/ctv_detailed_phylo.pdf", sep = "")
)