Learn R Programming

PNC

The PNC package is an open-source, all-in-one solution for empirically testing the key assumption of phylogenetic niche conservatism (PNC) in ecological community studies. Designed for accessibility and scientific rigor, PNC streamlines the entire workflow---from integrating comprehensive, global trait databases (covering plants, birds, mammals, reptiles, amphibians, and fish) to assessing data quality, performing dimensionality reduction, and batch processing analyses.

By bridging a critical methodological gap, the PNC package enables robust, phylogenetically-informed ecology, biogeography, and conservation research---supporting more accurate predictions of species distributions, better assessments of global change risks, and stronger foundations for biodiversity conservation.

Get started with PNC to bring standardized, automated phylogenetic niche conservatism tests into your workflow!

Installation

From CRAN (recommended)

# install.packages("PNC")

From GitHub (development version)

# if (!requireNamespace("devtools", quietly = TRUE)) {install.packages("devtools")}
# devtools::install_github("biodiversity-monitoring/PNC")

Main functions of PNC and their descriptions

NameTypeDescription
AmphiBIODatabaseA comprehensive global database of amphibian natural history traits. It provides 12 continuous traits related to ecology, morphology, and reproduction for over 6,500 species across all orders (Anura, Caudata, Gymnophiona), 61 families, and 531 genera (Oliveira et al., 2017).
AVONETDatabaseA comprehensive trait database for extant avian species, providing detailed morphological information through 11 continuous traits covering 11,009 bird species worldwide (Tobias et al., 2022).
BCIDatabaseA 50-hectare forest ecosystem dataset from Barro Colorado Island, comprising comprehensive species inventories, phylogenetic trees at species and genus levels, and community composition matrices (Condit et al., 2019).
COMBINEDatabaseAn integrated mammalian trait database consolidating 40 continuous morphological and ecological traits for 6,234 extant and recently extinct mammal species (Soria et al., 2021).
FishlifeDatabaseA comprehensive compilation of life-history traits for described fish species (Chondrichthyes and Osteichthyes), featuring 17 continuous traits with at least one measurement for 26,622 species (Thorson et al., 2023).
HimalayanBirdsDatabaseA dataset providing information on bird species in the Himalayas, including species names, phylogenetic relationships, and community composition across elevation bands (Ding et al., 2021).
ReptTraitsDatabaseA comprehensive reptilian trait dataset comprising 8 continuous morphological and ecological traits across 12,060 species spanning major reptilian clades (Crocodylia, Testudines, Rhynchocephalia, Amphisbaenia, Sauria, and Serpentes) (Oskyrko et al., 2024).
TRYDatabaseA global plant trait database providing species-level datasets with 20 continuous traits widely utilized in ecological and evolutionary research (Kattge et al., 2020).
merge_dataset()functionMerges two data frames based on the "species" column, automatically handling missing values and inconsistent columns.
extract_traits()functionExtracts trait data at the species, genus, or family level from global trait databases.
coverage()functionProvides statistics on trait availability, including the number of missing values and coverage rates.
pnc()functionPerforms a phylogenetic niche conservatism analysis within a single community, quantifying the phylogenetic signal in trait data. Optional PCA dimensionality reduction and multiple statistical approaches are supported.
compnc()functionConducts a comprehensive phylogenetic niche conservatism analysis across multiple communities, similar in function to pnc().
pnc_robustness()functionEvaluates the robustness of phylogenetic signal estimates by simulating trait data and testing the consistency of statistical significance conclusions.
compnc_robustness()functionExtends pnc_robustness() to evaluate the robustness of phylogenetic signal estimates across multiple communities.

PNC workflow

Study case 1

library(PNC)

# Load dataset
data("BCI")
str(BCI)
data("TRY")
head(TRY)

## species level

# Extract species names
sp <- colnames(BCI$com)
sp

# Extract trait data for the specified species from the TRY database
subtraits <- extract_traits(sp, TRY, rank = "species", traits = c("LA", "LMA", "LeafN", "PlantHeight", "SeedMass", "SSD"))
head(subtraits)

# Calculate and display the coverage of the trait data
coverage(subtraits)

# Perform phylogenetic niche conservatism analysis using the pnc() function
pnc(subtraits, BCI$phy_species, methods = "lambda", pca_axes = c("PC1", "PC2"))

# Assess the robustness of the phylogenetic signal estimates
set.seed(123)
pnc_robustness(subtraits, BCI$phy_species, methods = "lambda", n_simulations = 100)

## genus level

# Extract genus names
sp2 <- unique(BCI$splist$genus)

# Extract trait data for the specified genera from the TRY database
subtraits2 <- extract_traits(sp2, TRY, rank = "genus", traits = c("LA", "LMA", "LeafN", "PlantHeight", "SeedMass", "SSD"))
head(subtraits2)

# Calculate and display the coverage of the trait data
coverage(subtraits2)

# Perform phylogenetic niche conservatism analysis
pnc(subtraits2, BCI$phy_genus, methods = "lambda", pca_axes = c("PC1", "PC2"))

# Assess the robustness of the phylogenetic signal estimates at the genus level
set.seed(123)
pnc_robustness(subtraits2, BCI$phy_genus, methods = "lambda", n_simulations = 100)

Study case 2

# Load dataset
data("HimalayanBirds")
str(HimalayanBirds)
data("AVONET")
head(AVONET)

# Extract species names
sp <- colnames(HimalayanBirds$com)
sp

# Extract trait data for the specified species from the AVONET database
subtraits <- extract_traits(sp, AVONET, rank = "species")
head(subtraits)

# Calculate and display the coverage of the trait data
coverage(subtraits)

# Perform phylogenetic niche conservatism analysis
pnc(subtraits, HimalayanBirds$phy_species, methods = "lambda", pca_axes = c("PC1", "PC2"))
set.seed(123)

# Assess the robustness of the phylogenetic signal estimates 
pnc_robustness(subtraits,
               HimalayanBirds$phy_species,
               methods = "lambda",
               pca_axes = c("PC1", "PC2"),
               n_simulations = 100)

# Perform phylogenetic niche conservatism analysis across multiple communities
compnc(com = HimalayanBirds$com, subtraits, HimalayanBirds$phy_species, methods = "lambda", pca_axes = NULL)

# Assess the robustness of phylogenetic signal estimates across multiple communities
set.seed(123)
robust_results <- compnc_robustness(HimalayanBirds$com,
                                    subtraits,
                                    HimalayanBirds$phy_species,
                                    methods = "lambda",
                                    pca_axes = c("PC1", "PC2"),
                                    n_simulations = 100)
robust_results

Reference

Condit, R., Perez, R., Aguilar, S., Lao, S., Foster, R., Hubbell, S.P. (2019). Complete data from the Barro Colorado 50-ha plot: 423617 trees, 35 years, 2019 version. https://doi.org/10.15146/5xcp-0d46

Ding, Z., Hu, H., Cadotte, M.W., Liang, J., Hu, Y., & Si, X. (2021). Elevational patterns of bird functional and phylogenetic structure in the central Himalaya. Ecography, 44(9), 1403-1417. https://doi.org/10.1111/ecog.05660

Kattge, J., Bönisch, G., Díaz, S., Lavorel, S., Prentice, I. C., Leadley, P., Tautenhahn, S., Werner, G. D. A., Aakala, T., Abedi, M., Acosta, A. T. R., Adamidis, G. C., Adamson, K., Aiba, M., Albert, C. H., Alcántara, J. M., Alcázar C, C., Aleixo, I., Ali, H., Amiaud, B., et al. (2020). TRY plant trait database -- enhanced coverage and open access. Global Change Biology, 26(1), 43-60. https://doi.org/10.1111/gcb.14904

Oliveira, B. F., São-Pedro, V. A., Santos-Barrera, G., Penone, C., & Costa, G. C. (2017). AmphiBIO, a global database for amphibian ecological traits. Scientific data, 4(1), 1-7. https://doi.org/10.1038/sdata.2017.123

Oskyrko, O., Mi, C., Meiri, S., & Du, W. (2024). ReptTraits: a comprehensive dataset of ecological traits in reptiles. Scientific Data, 11(1), 243. https://doi.org/10.1038/s41597-024-03079-5

Soria, C. D., Pacifici, M., Di Marco, M., Stephen, S. M., & Rondinini, C. (2021). COMBINE: a coalesced mammal database of intrinsic and extrinsic traits. Ecology, 102(6), e03344. https://doi.org/10.1002/ecy.3344

Thorson, J. T., Maureaud, A. A., Frelat, R., Mérigot, B., Bigman, J. S., Friedman, S. T., Palomares, M. L. D., Pinsky, M. L., Price, S. A., & Wainwright, P. (2023). Identifying direct and indirect associations among traits by merging phylogenetic comparative methods and structural equation models. Methods in Ecology and Evolution, 14(5), 1243-1255. https://doi.org/10.1111/2041-210X.14076

Tobias, J. A., Sheard, C., Pigot, A. L., Devenish, A. J. M., Yang, J., Sayol, F., Neate-Clegg, M. H. C., Alioravainen, N., Weeks, T. L., Barber, R. A., Walkden, P. A., MacGregor, H. E. A., Jones, S. E. I., Vincent, C., Phillips, A. G., Marples, N. M., Montaño-Centellas, F. A., Leandro-Silva, V., Claramunt, S., Darski, B., et al. (2022). AVONET: morphological, ecological and geographical data for all birds. Ecology Letters, 25(3), 581-597. https://doi.org/10.1111/ele.13898

Copy Link

Version

Install

install.packages('PNC')

Monthly Downloads

137

Version

0.1.0

License

GPL-3

Maintainer

Yan He

Last Published

November 7th, 2025

Functions in PNC (0.1.0)

pnc_robustness

Test Robustness of Phylogenetic Niche Conservatism Analysis
coverage

Calculate Trait Coverage Statistics
pnc

Analyze Phylogenetic Niche Conservatism in Ecological Communities
merge_dataset

Merge Two Datasets Based on Species Column
simulate_lambda_trait

Simulate Trait Data with Target Phylogenetic Signal (Lambda)
simulate_K_trait

Simulate Trait Data with Target Phylogenetic Signal (Blomberg's K)
extract_traits

Extract Plant Traits from Trait Database
Fishlife

Fishlife Dataset
compnc_robustness

Test Robustness of Phylogenetic Niche Conservatism Analysis Across Multiple Communities
compnc

Calculate Phylogenetic Niche Conservatism Across Multiple Communities
BCI

Barro Colorado Island (BCI) dataset
HimalayanBirds

Himalayan Birds Dataset
COMBINE

COMBINE: Mammal Trait Database
ReptTraits

ReptTraits: A Comprehensive Dataset of Ecological Traits in Reptiles
AVONET

AVONET Bird Morphological Dataset
AmphiBIO

AmphiBIO: Global Amphibian Ecological Traits Database
TRY

TRY Plant Trait Database