## ----opts, include = FALSE----------------------------------------------------
knitr::opts_chunk$set(
    collapse = TRUE,
    comment = "#>",
    message = FALSE,
    warning = FALSE
)

## ----setup, message=FALSE-----------------------------------------------------
library(ape)
library(dplyr)
library(phylobar)
library(phyloseq)
library(stringr)
library(zen4R)

## ----check-valid--------------------------------------------------------------
tree <- rtree(20)
checkValidPhylo(tree)

## ----atlas-invalid------------------------------------------------------------
data(atlas1006, package = "microbiome")
tree <- taxonomy_to_tree(tax_table(atlas1006))
checkValidPhylo(tree)

## ----atlas-fixed--------------------------------------------------------------
taxa <- tax_table(atlas1006)
taxa <- cbind(Kingdom = "Bacteria", taxa)
taxa <- phylobar::add_prefix(taxa)

tree <- taxonomy_to_tree(taxa)
checkValidPhylo(tree)

## ----hfhs-invalid-------------------------------------------------------------
download_zenodo("10.5281/zenodo.18791960", tempdir())
HFHSdata <- readRDS(str_c(tempdir(), "/HFHS-data.rds"))
taxa <- HFHSdata$filtered_taxonomy
tree <- taxonomy_to_tree(taxa)
checkValidPhylo(tree)

## ----hfhs-before--------------------------------------------------------------
head(taxa)

## ----hfhs-clean---------------------------------------------------------------
taxa <- taxa |>
    select(-X1, X1) |>
    mutate(across(everything(), ~if_else(str_ends(., "_"), NA, .)))

head(taxa)

## ----hfhs-fixed---------------------------------------------------------------
tree <- taxonomy_to_tree(taxa)
checkValidPhylo(tree)

## ----dietswap-extract---------------------------------------------------------
data("dietswap", package = "microbiome")
diet_temp <- subset_samples(dietswap, timepoint == 1)
diet <- subset_taxa(diet_temp, taxa_sums(diet_temp) > 0)
taxa <- tax_table(diet)

## ----dietswap-invalid---------------------------------------------------------
head(taxa)
tree <- taxonomy_to_tree(taxa)
checkValidPhylo(tree)

## ----dietswap-fixed-----------------------------------------------------------
taxa <- phylobar::add_prefix(taxa)
taxa <- cbind(Kingdom = "k_Bacteria", taxa)
tree <- taxonomy_to_tree(taxa)
checkValidPhylo(tree)

## ----globalpatterns-extract---------------------------------------------------
data(GlobalPatterns, package = "phyloseq")
chlamydiae <- subset_taxa(GlobalPatterns, Phylum == "Chlamydiae")
taxa <- tax_table(chlamydiae)
head(taxa)

## ----globalpatterns-invalid---------------------------------------------------
tree <- taxonomy_to_tree(taxa)
checkValidPhylo(tree)

## ----globalpatterns-prepare---------------------------------------------------
taxa <- data.frame(taxa)
taxa <- phylobar::add_prefix(taxa)
taxa$ASV <- rownames(taxa)
head(taxa)

## ----globalpatterns-check-----------------------------------------------------
tree <- taxonomy_to_tree(taxa)
checkValidPhylo(tree)

## ----globalpatterns-plot------------------------------------------------------
plot(tree)

## ----session-info-------------------------------------------------------------
sessionInfo()

