| Title: | Microbial Niche Measurements |
|---|---|
| Description: | Measures niche breadth and overlap of microbial taxa from large matrices. Niche breadth measurements include Levins' niche breadth (Bn) index, Hurlbert's Bn and Feinsinger's proportional similarity (PS) index. (Feinsinger, P., Spears, E.E., Poole, R.W. (1981) <doi:10.2307/1936664>). Niche overlap measurements include Levin's Overlap (Ludwig, J.A. and Reynolds, J.F. (1988, ISBN:0471832359)) and a Jaccard similarity index of Feinsinger's PS values between taxa pairs, as Proportional Overlap. |
| Authors: | Damien Finn [aut, cre] |
| Maintainer: | Damien Finn <[email protected]> |
| License: | GPL-2 |
| Version: | 1.0.0 |
| Built: | 2026-05-24 05:51:44 UTC |
| Source: | https://github.com/cran/MicroNiche |
Measures niche breadth and overlap of microbial taxa from large matrices. Niche breadth measurements include Levins' niche breadth (Bn) index, Hurlbert's Bn and Feinsinger's proportional similarity (PS) index. (Feinsinger, P., Spears, E.E., Poole, R.W. (1981) <doi:10.2307/1936664>). Niche overlap measurements include Levin's Overlap (Ludwig, J.A. and Reynolds, J.F. (1988, ISBN:0471832359)) and a Jaccard similarity index of Feinsinger's PS values between taxa pairs, as Proportional Overlap.
The DESCRIPTION file:
| Package: | MicroNiche |
| Type: | Package |
| Title: | Microbial Niche Measurements |
| Version: | 1.0.0 |
| Depends: | ggplot2, reshape2, stats |
| Date: | 2020-01-19 |
| Authors@R: | person("Damien", "Finn", role = c("aut", "cre"), email = "[email protected]") |
| Maintainer: | Damien Finn <[email protected]> |
| Description: | Measures niche breadth and overlap of microbial taxa from large matrices. Niche breadth measurements include Levins' niche breadth (Bn) index, Hurlbert's Bn and Feinsinger's proportional similarity (PS) index. (Feinsinger, P., Spears, E.E., Poole, R.W. (1981) <doi:10.2307/1936664>). Niche overlap measurements include Levin's Overlap (Ludwig, J.A. and Reynolds, J.F. (1988, ISBN:0471832359)) and a Jaccard similarity index of Feinsinger's PS values between taxa pairs, as Proportional Overlap. |
| License: | GPL-2 |
| NeedsCompilation: | no |
| Packaged: | 2020-01-19 01:15:03 UTC; damienfinn |
| Author: | Damien Finn [aut, cre] |
| Config/pak/sysreqs: | libicu-dev |
| Repository: | https://damienfinn.r-universe.dev |
| Date/Publication: | 2020-01-30 08:40:10 UTC |
| RemoteUrl: | https://github.com/cran/MicroNiche |
| RemoteRef: | HEAD |
| RemoteSha: | 0443637d082df6aa782dda3dce6322269b02cca4 |
Index of help topics:
df Data frame for package MicroNiche feinsingers.PS Feinsinger's proportional similarity index hurlberts.Bn Hurlbert's niche breadth index levins.Bn Levins' niche breadth index levins.overlap Levin's niche overlap index MicroNiche-package Microbial Niche Measurements proportional.overlap Proportional similarity overlap index
Damien Finn [aut, cre]
Maintainer: Damien Finn <[email protected]>
Feinsinger et al. 1981. A simple measure of niche breadth. Ecology 62(1):27-32
Ludwig and Reynolds. 1988. Statistical Ecology. Wiley and Sons, Milton Australia
levins.Bn hurlberts.Bn feinsingers.PS levins.overlap proportional.overlap
NANA
This data frame consists of taxa (rows) by samples (columns). Taxa are separated into six distributions (D1 - 6) with 10 'species' per distribution. Samples are separated into four 'environments' (R1 - 4) with 10 samples per environment.
data("df")data("df")
A data frame with 60 observations on the following 41 variables.
Taxona factor with levels D1S1 D1S10 D1S2 D1S3 D1S4 D1S5 D1S6 D1S7 D1S8 D1S9 D2S1 D2S10 D2S2 D2S3 D2S4 D2S5 D2S6 D2S7 D2S8 D2S9 D3S1 D3S10 D3S2 D3S3 D3S4 D3S5 D3S6 D3S7 D3S8 D3S9 D4S1 D4S10 D4S2 D4S3 D4S4 D4S5 D4S6 D4S7 D4S8 D4S9 D5S1 D5S10 D5S2 D5S3 D5S4 D5S5 D5S6 D5S7 D5S8 D5S9 D6S1 D6S10 D6S2 D6S3 D6S4 D6S5 D6S6 D6S7 D6S8 D6S9
R1S1a numeric vector
R1S2a numeric vector
R1S3a numeric vector
R1S4a numeric vector
R1S5a numeric vector
R1S6a numeric vector
R1S7a numeric vector
R1S8a numeric vector
R1S9a numeric vector
R1S10a numeric vector
R2S1a numeric vector
R2S2a numeric vector
R2S3a numeric vector
R2S4a numeric vector
R2S5a numeric vector
R2S6a numeric vector
R2S7a numeric vector
R2S8a numeric vector
R2S9a numeric vector
R2S10a numeric vector
R3S1a numeric vector
R3S2a numeric vector
R3S3a numeric vector
R3S4a numeric vector
R3S5a numeric vector
R3S6a numeric vector
R3S7a numeric vector
R3S8a numeric vector
R3S9a numeric vector
R3S10a numeric vector
R4S1a numeric vector
R4S2a numeric vector
R4S3a numeric vector
R4S4a numeric vector
R4S5a numeric vector
R4S6a numeric vector
R4S7a numeric vector
R4S8a numeric vector
R4S9a numeric vector
R4S10a numeric vector
An object of class "data.frame" of 60 rows x 40 columns, representing taxa and samples, respectively.
Generated in silico to compare taxa of known distributions: D1 are generalists roughly in equal abundance across the four environments. D2 decrease linearly across the four environments. D3 are specialists that decrease exponentially across the four environments. D4 are specialists unique to one of the four environments. D5 are specialists in environments two and four, with no relationship with an environmental gradient supplied in the vignette. Finally, D6 represent low, spurious counts haphazardly distributed across all samples often present in microbial count tables.
NA
data(df)data(df)
This index is a measurement of proportional similarity (PS) of a taxon in relation to an environmental parameter, such as pH or temperature. A value of 0 indicates an inverse relationship between taxon abundance and the environmental parameter, whilst 1 indicates a positive relationship between taxon abundance and the environmental parameter. A value of 0.5 indicates no relationship.
feinsingers.PS(df, R, sampleInfo, envInfo, q = 1.65)feinsingers.PS(df, R, sampleInfo, envInfo, q = 1.65)
df |
A matrix of taxa (rows) by samples (columns) as discrete counts per sample. Col 1 must be a taxon identifier. |
R |
The number of different environments being compared. |
sampleInfo |
A categorical variable identifying which samples correspond to which environment. |
envInfo |
A quantitative variable of some environmental parameter measured per sample. |
q |
A coefficient for the LOQ, set to 1.65. Decreasing or increasing q will affect which taxa are flagged as being below the LOQ. |
Taxon inputs must be as discrete counts across samples, with a taxon identifier in column 1. This function also performs null model testing against a distribution of PS generated from R random proportions permuted 999 times. This allows the user to perform significance testing and to determine a probability that the taxa PS differs from the null PS. The output includes each taxon's PS, a P value of significance testing against the null model distribution, and a Benjamin-Hochberg adjusted P value to account for false discovery rate.
A plot of the null distribution with 0.05 and 0.95 quantiles highlighted as red dotted lines is also provided.
Finally, this function also calculates the limit of quantification (LOQ) to identify taxa whose niche cannot be confidently measured. A plot of log abundance x taxon rank is provided to visualise the distribution of the data, a fitted lognormal taxa rank model, and the LOQ determined based on the standard deviation of the lognormal model.
Feinsinger's PS is calculated as follows: PS[j] = 1 - 0.5*sum(|p[i] - r[i]|) whereby p[i] is the proportion of taxon j in environment i and r[i] is the proportion of the environmental parameter in i.
This function depends on ggplot2 to generate a plot of the null distribution and reshape2 to identify the taxa below the LOQ.
An object of class "data.frame" that gives the PS, P value and adjusted P value for each taxon. A column noting taxa that fall below the LOQ are identified as T.
The null model testing becomes increasingly robust with increasing R. If R == 2 the results should be interpreted with caution.
Damien Finn
Feinsinger et al. 1981. A simple measure of niche breadth. Ecology 62(1):27-32
proportional.overlap
data(df) sampleInfo <- c(rep("R1",10), rep("R2",10), rep("R3",10), rep("R4",10)) pH.grad <- c(2.1, 2.2, 2, 1.9, 2.1, 1.8, 1.9, 2, 2.1, 1.9, 3.5, 3.6, 3.5, 3.4, 3.6, 3.5, 3.5, 3.4, 3.7, 3.4, 6.6, 6.5, 6.4, 6.8, 7, 6.6, 6.8, 6.9, 7, 7.1, 8, 8.2, 7.9, 8.1, 7.8, 7.9, 8.3, 8.2, 8.1, 7.9) res <- feinsingers.PS(df, 4, sampleInfo, pH.grad)data(df) sampleInfo <- c(rep("R1",10), rep("R2",10), rep("R3",10), rep("R4",10)) pH.grad <- c(2.1, 2.2, 2, 1.9, 2.1, 1.8, 1.9, 2, 2.1, 1.9, 3.5, 3.6, 3.5, 3.4, 3.6, 3.5, 3.5, 3.4, 3.7, 3.4, 6.6, 6.5, 6.4, 6.8, 7, 6.6, 6.8, 6.9, 7, 7.1, 8, 8.2, 7.9, 8.1, 7.8, 7.9, 8.3, 8.2, 8.1, 7.9) res <- feinsingers.PS(df, 4, sampleInfo, pH.grad)
This index is a measurement of niche breadth (Bn) of a taxon in relation to an environmental parameter, such as pH or temperature. A value of 0 indicates an inverse relationship between taxon abundance and the environmental parameter, whilst 1 indicates a positive relationship between taxon abundance and the environmental parameter. A value of 0.5 indicates no relationship.
hurlberts.Bn(df, R, sampleInfo, envInfo, q = 1.65)hurlberts.Bn(df, R, sampleInfo, envInfo, q = 1.65)
df |
A matrix of taxa (rows) by samples (columns) as discrete counts per sample. Col 1 must be a taxon identifier. |
R |
The number of different environments being compared. |
sampleInfo |
A categorical variable identifying which samples correspond to which environment. |
envInfo |
A quantitative variable of some environmental parameter measured per sample. |
q |
A coefficient for the LOQ, set to 1.65. Decreasing or increasing q will affect which taxa are flagged as being below the LOQ. |
Taxon inputs must be as discrete counts across samples, with a taxon identifier in column 1. This function also performs null model testing against a distribution of Bn generated from R random proportions permuted 999 times. This allows the user to perform significance testing and to determine a probability that the taxa Bn differs from the null Bn. The output includes each taxon's Bn, a P value of significance testing against the null model distribution, and a Benjamin-Hochberg adjusted P value to account for false discovery rate.
A plot of the null distribution with 0.05 and 0.95 quantiles highlighted as red dotted lines is also provided.
Finally, this function also calculates the limit of quantification (LOQ) to identify taxa whose niche cannot be confidently measured. A plot of log abundance x taxon rank is provided to visualise the distribution of the data, a fitted lognormal taxa rank model, and the LOQ determined based on the standard deviation of the lognormal model.
Hurlbert's niche breadth is calculated as follows: Bn[j] = 1/sum(p[i]^2/r[i]) whereby p[i] is the proportion of taxon j in environment i and r[i] is the proportion of the environmental parameter in i.
This function depends on ggplot2 to generate a plot of the null distribution and reshape2 to identify the taxa below the LOQ.
An object of class "data.frame" that gives the Bn, P value and adjusted P value for each taxon. A column noting taxa that fall below the LOQ are identified as T.
The null model testing becomes increasingly robust with increasing R. If R == 2 the results should be interpreted with caution.
Damien Finn
Feinsinger et al. 1981. A simple measure of niche breadth. Ecology 62(1):27-32
feinsingers.PS
data(df) sampleInfo <- c(rep("R1",10), rep("R2",10), rep("R3",10), rep("R4",10)) pH.grad <- c(2.1, 2.2, 2, 1.9, 2.1, 1.8, 1.9, 2, 2.1, 1.9, 3.5, 3.6, 3.5, 3.4, 3.6, 3.5, 3.5, 3.4, 3.7, 3.4, 6.6, 6.5, 6.4, 6.8, 7, 6.6, 6.8, 6.9, 7, 7.1, 8, 8.2, 7.9, 8.1, 7.8, 7.9, 8.3, 8.2, 8.1, 7.9) res <- hurlberts.Bn(df, 4, sampleInfo, pH.grad)data(df) sampleInfo <- c(rep("R1",10), rep("R2",10), rep("R3",10), rep("R4",10)) pH.grad <- c(2.1, 2.2, 2, 1.9, 2.1, 1.8, 1.9, 2, 2.1, 1.9, 3.5, 3.6, 3.5, 3.4, 3.6, 3.5, 3.5, 3.4, 3.7, 3.4, 6.6, 6.5, 6.4, 6.8, 7, 6.6, 6.8, 6.9, 7, 7.1, 8, 8.2, 7.9, 8.1, 7.8, 7.9, 8.3, 8.2, 8.1, 7.9) res <- hurlberts.Bn(df, 4, sampleInfo, pH.grad)
This index is a measurement of niche breadth (Bn) of a taxon weighted by the number of differing environments (R), whereby a value of 1 indicates generalist taxa that are equally abundant across environments, and 0 indicates specialist taxa that favour specific environments.
levins.Bn(df, R, sampleInfo, q = 1.65)levins.Bn(df, R, sampleInfo, q = 1.65)
df |
A matrix of taxa (rows) by samples (columns) as discrete counts per sample. Col 1 must be a taxon identifier. |
R |
The number of different environments being compared. |
sampleInfo |
A categorical variable identifying which samples correspond to which environment. |
q |
A coefficient for the LOQ, set to 1.65. Decreasing or increasing q will affect which taxa are flagged as being below the LOQ. |
Taxon inputs must be as discrete counts across samples, with a taxon identifier in column 1. This function also performs null model testing against a distribution of Bn generated from R random proportions permuted 999 times. This allows the user to perform significance testing and to determine a probability that the taxa Bn differs from the null Bn. The output includes each taxon's Bn, a P value of significance testing against the null model distribution, and a Benjamin-Hochberg adjusted P value to account for false discovery rate.
A plot of the null distribution with 0.05 and 0.95 quantiles highlighted as red dotted lines is also provided.
Finally, this function also calculates the limit of quantification (LOQ) to identify taxa whose niche cannot be confidently measured. A plot of log abundance x taxon rank is provided to visualise the distribution of the data, a fitted lognormal taxa rank model, and the LOQ determined based on the standard deviation of the lognormal model.
Levin's niche breadth is calculated as follows: Bn[j] = (1/R)/sum(p[i]^2) whereby R is the number of differing environments and p[i] is the proportion of taxon j in environment i.
This function depends on ggplot2 to generate a plot of the null distribution and reshape2 to identify the taxa below the LOQ.
An object of class "data.frame" that gives the Bn, P value and adjusted P value for each taxon. A column noting taxa that fall below the LOQ are identified as T.
The null model testing becomes increasingly robust with increasing R. If R == 2 the results should be interpreted with caution.
Damien Finn
Feinsinger et al. 1981. A simple measure of niche breadth. Ecology 62(1):27-32
levins.overlap
data(df) sampleInfo <- c(rep("R1",10), rep("R2",10), rep("R3",10), rep("R4",10)) res <- levins.Bn(df, 4, sampleInfo)data(df) sampleInfo <- c(rep("R1",10), rep("R2",10), rep("R3",10), rep("R4",10)) res <- levins.Bn(df, 4, sampleInfo)
This index is a measurement of the overlap between pairs of taxa across samples. A value of 1 indicates perfect overlap, and 0 indicates no overlap.
levins.overlap(df, q = 1.65)levins.overlap(df, q = 1.65)
df |
A matrix of taxa (rows) by samples (columns) as discrete counts per sample. Col 1 must be a taxon identifier. |
q |
A coefficient for the LOQ, set to 1.65. Decreasing or increasing q will affect which taxa are flagged as being below the LOQ. |
Taxon inputs must be as discrete counts across samples, with a taxon identifier in column 1. The output is a matrix of paired taxon overlap indices. Specifically, Levin's Overlap (LO) indices of LO[1,2] are rows and LO[2,1] are columns, for taxa 1 and 2.
Levin's overlap is calculated as follows: LO[i,j] = sum(p[i]*p[j])/sum(p[i]^2) whereby p[i] is the proportion of taxon i per sample and p[j] is the proportion of taxon j per sample.
Taxa below the LOQ are flagged with an asterisk.
This function depends on reshape2 to produce a matrix of overlap comparisons.
An object of class "data.frame" that gives LO[1,2] as rows and LO[2,1] as columns.
NA
Damien Finn
Ludwig and Reynolds. 1988 Statistical Ecology. Wiley and Sons, Milton Australia
levins.Bn
data(df) overlapdf <- df[48:53,] res <- levins.overlap(overlapdf)data(df) overlapdf <- df[48:53,] res <- levins.overlap(overlapdf)
This index is a measurement of the overlap of proportional similarity (PS) indices between pairs of taxa across samples. As the PS is a niche breadth index that measures the similarity between a taxon's distribution and an environmental parameter, the PS overlap also considers environmental information. A value of 1 indicates perfect overlap, and 0 indicates no overlap.
proportional.overlap(df, sampleInfo, envInfo, q = 1.65)proportional.overlap(df, sampleInfo, envInfo, q = 1.65)
df |
A matrix of taxa (rows) by samples (columns) as discrete counts per sample. Col 1 must be a taxon identifier. |
sampleInfo |
A categorical variable identifying which samples correspond to which environment. |
envInfo |
A quantitative variable of some environmental parameter measured per sample. |
q |
A coefficient for the LOQ, set to 1.65. Decreasing or increasing q will affect which taxa are flagged as being below the LOQ. |
Taxon inputs must be as discrete counts across samples, with a taxon identifier in column 1. The output is a matrix of paired taxon overlap indices. Specifically, Proportional Overlap (PO) indices of PO[1,2] are rows and PO[2,1] are columns, for taxa 1 and 2, however these values are identical. Feinsinger's PS is calculated as per feinsingers.PS.
Proportional overlap is calculated as follows: PO[i,j] = 1 - (|PS[i] - PS[j]|)/(PS[i] + PS[j]) whereby PS[i] is the PS of taxon i and PS[j] is the PS of taxon j.
Taxa below the LOQ are flagged with an asterisk.
This function depends on reshape2 to produce a matrix of overlap comparisons.
An object of class "data.frame" that gives PO[1,2] as rows and PO[2,1] as columns.
NA
Damien Finn
Feinsinger et al. 1981. A simple measure of niche breadth. Ecology 62(1):27-32
feinsingers.PS
data(df) overlapdf <- df[48:53,] sampleInfo <- c(rep("R1",10), rep("R2",10), rep("R3",10), rep("R4",10)) pH.grad <- c(2.1, 2.2, 2, 1.9, 2.1, 1.8, 1.9, 2, 2.1, 1.9, 3.5, 3.6, 3.5, 3.4, 3.6, 3.5, 3.5, 3.4, 3.7, 3.4, 6.6, 6.5, 6.4, 6.8, 7, 6.6, 6.8, 6.9, 7, 7.1, 8, 8.2, 7.9, 8.1, 7.8, 7.9, 8.3, 8.2, 8.1, 7.9) res <- proportional.overlap(overlapdf, sampleInfo, pH.grad)data(df) overlapdf <- df[48:53,] sampleInfo <- c(rep("R1",10), rep("R2",10), rep("R3",10), rep("R4",10)) pH.grad <- c(2.1, 2.2, 2, 1.9, 2.1, 1.8, 1.9, 2, 2.1, 1.9, 3.5, 3.6, 3.5, 3.4, 3.6, 3.5, 3.5, 3.4, 3.7, 3.4, 6.6, 6.5, 6.4, 6.8, 7, 6.6, 6.8, 6.9, 7, 7.1, 8, 8.2, 7.9, 8.1, 7.8, 7.9, 8.3, 8.2, 8.1, 7.9) res <- proportional.overlap(overlapdf, sampleInfo, pH.grad)