01_DATA_load_and_clean — Step 4

Run PCoAGraph() separately for morphological (M), life-history/reproduction (L), diet (D), and combined (LMD) trait spaces. Compute TPDs for each space using make.TPD.2D.high.def().

functional diversity PCoA
Outputs: PCA_Birds_LMD/M/L/D.rds TPD_Birds_LMD/M/L/D.rds
phenoBird <- read.csv("data/processed/phenoBirdsImputedREADY.csv")
colnames(phenoBird)[1] <- "scientificNameStd"
rownames(phenoBird)    <- phenoBird[, 1]

phenoDiet <- na.omit(as.data.frame(prep.fuzzy(phenoBird[, DietTrait],
                                              col.blocks = ncol(phenoBird[, DietTrait]), label = "diet")))
phenoDiet <- replace(phenoDiet, phenoDiet < 0, 0)

# Combined LMD
handlers(global = TRUE); handlers("txtprogressbar"); plan(multisession)
PCA_Birds_LMD <- PCoAGraph(
  x      = list(phenoBird[, LHTTrait], phenoBird[, morphoTrait], phenoDiet),
  datax  = cbind.data.frame(phenoBird[, LHTTrait], phenoBird[, morphoTrait], phenoDiet),
  namesx = phenoBird$scientificNameStd, groups = c("Q","Q","F"),
  saveFile = "data/processed/PCA_Birds_LMD.rds"
)
TPDs_Birds_LMD <- make.TPD.2D.high.def(
  traitsUSE = PCA_Birds_LMD$PCoA$vectors[,1:2],
  dimensions = 2, alphaUse = 0.95, gridSize = 100,
  saveFile = "data/processed/TPD_Birds_LMD.rds"
); rm(TPDs_Birds_LMD)

# Diet only
PCA_Birds_D <- PCoAGraph(x = list(phenoDiet), datax = cbind.data.frame(phenoDiet),
                         namesx = phenoBird$scientificNameStd, groups = c("F"),
                         saveFile = "data/processed/PCA_Birds_D.rds")
TPDs_Birds_D <- make.TPD.2D.high.def(traitsUSE = PCA_Birds_D$PCoA$vectors[,1:2],
                                     dimensions = 2, alphaUse = 0.95, gridSize = 100,
                                     saveFile = "data/processed/TPD_Birds_D.rds"); rm(TPDs_Birds_D)

# Life-history (flip axis 2)
PCA_Birds_L <- PCoAGraph(x = list(phenoBird[, LHTTrait]), datax = cbind.data.frame(phenoBird[, LHTTrait]),
                         namesx = phenoBird$scientificNameStd, groups = c("Q"),
                         saveFile = "data/processed/PCA_Birds_L.rds")
PCA_Birds_L <- readRDS("data/processed/PCA_Birds_L.rds")
PCA_Birds_L$PCoACor[,2]       <- PCA_Birds_L$PCoACor[,2] * (-1)
PCA_Birds_L$PCoA$vectors[,2]  <- PCA_Birds_L$PCoA$vectors[,2] * (-1)
saveRDS(PCA_Birds_L, "data/processed/PCA_Birds_L.rds")
TPDs_Birds_L <- make.TPD.2D.high.def(traitsUSE = PCA_Birds_L$PCoA$vectors[,1:2],
                                     dimensions = 2, alphaUse = 0.95, gridSize = 100,
                                     saveFile = "data/processed/TPD_Birds_L.rds"); rm(TPDs_Birds_L)

# Morphology (flip axis 2)
PCA_Birds_M <- PCoAGraph(x = list(phenoBird[, morphoTrait]), datax = cbind.data.frame(phenoBird[, morphoTrait]),
                         namesx = phenoBird$scientificNameStd, groups = c("Q"),
                         saveFile = "data/processed/PCA_Birds_M.rds")
PCA_Birds_M <- readRDS("data/processed/PCA_Birds_M.rds")
PCA_Birds_M$PCoACor[,2]       <- PCA_Birds_M$PCoACor[,2] * (-1)
PCA_Birds_M$PCoA$vectors[,2]  <- PCA_Birds_M$PCoA$vectors[,2] * (-1)
saveRDS(PCA_Birds_M, "data/processed/PCA_Birds_M.rds")
TPDs_Birds_M <- make.TPD.2D.high.def(traitsUSE = PCA_Birds_M$PCoA$vectors[,1:2],
                                     dimensions = 2, alphaUse = 0.95, gridSize = 100,
                                     saveFile = "data/processed/TPD_Birds_M.rds"); rm(TPDs_Birds_M)