Quantify intermediate stability with respect to a given reference point.

getStability(x, ...)

addStability(x, ...)

# S4 method for class 'SummarizedExperiment'
addStability(x, time.col, name = "stability", ...)

# S4 method for class 'SummarizedExperiment'
getStability(
  x,
  time.col,
  assay.type = "counts",
  reference = NULL,
  group = NULL,
  ...
)

Arguments

x

A SummarizedExperiment object.

...

additional arguments.

  • time.interval: Integer scalar. Indicates the increment between time steps. By default, the function compares each sample to the previous one. If you need to take every second, every third, or so, time step, then increase this accordingly. (Default: 1L)

  • calc.separately: Logical scalar. Specifies whether to calculate stability separately for data points with abundance below or at/above the reference point. (Defaul: FALSE)

  • mode: Character scalar. Specifies whether to calculate stability using correlation ("correlation") or a linear model ("lm"). (Default: "correlation")

time.col

Character scalar. Specifies a name of the column from colData that identifies the sampling time points for the samples.

name

Character scalar. Specifies a column name for storing stability results. (Default: "stability")

assay.type

Character scalar. Specifies which assay values are used in the dissimilarity estimation. (Default: "counts")

reference

Character scalar. Specifies a column from rowData(x) that determines the reference points. If NULL, the default reference is used. (Default: NULL)

group

Character scalar. Specifies a name of the column from colData that identifies the grouping of the samples. (Default: NULL)

Value

getStability returns DataFrame while addStability returns results added to its rowData(x).

Details

These methods estimate intermediate stability described in Lahti et al. 2014. The method is heuristic and makes many simplifying assumptions. However, the stability estimation can be useful for exploration, and can provide a baseline for more advanced measures.

The stability is calculated by first defining reference point, \(R_{f}\), for each feature. User can define the reference points with reference. If reference points are not defined, they are calculated by taking median

$$R_{f} = median(x_{f})$$

where \(f\) denotes a single feature and \(x\) abundance.

Then difference between consecutive time points, \(\Delta_{f, x}\),

$$\Delta_{f, x} = ∣x_{f, t} - x_{f, t-1}∣$$

and difference between the previous time point and reference, \(\Delta_{f. R}\), are calculated:

$$\Delta_{f. R} = ∣x_{f, t-1} - R_{f}∣$$

where \(t\) denotes time point.

Optionally, time difference \(\Delta_{f, t}\) is calculated

$$\Delta_{f, t} = t_{f, t-1} - t_{f, t-1}$$

The stability coefficient \(s_{f}\) is calculated with correlation

$$s_{f} = corr(\Delta_{f, x}, \Delta_{f, R})$$

or with linear model as follows

$$s_{f} = \frac{ \Delta_{f, x} - \beta_{0} - \beta_{2}*\Delta_{f, t} - \epsilon_{f} }{ \Delta_{f, R} }$$

References

Lahti L, et al. (2014) Tipping elements in the human intestinal ecosystem. Nat Commun. doi: 10.1038/ncomms5344

See also

Examples

library(miaTime)

# Load time series data
data(minimalgut)
tse <- minimalgut

# Apply clr transformation
tse <- transformAssay(tse, method = "rclr")

# Calculate stability single system
tse_sub <- tse[, tse[["StudyIdentifier"]] == "Bioreactor A"]
tse_sub <- addStability(tse_sub, assay.type = "rclr", time.col = "Time.hr")
rowData(tse_sub)
#> DataFrame with 16 rows and 8 columns
#>                                  Kingdom          Phylum            Class
#>                              <character>     <character>      <character>
#> Akkermansia_muciniphila         Bacteria Verrucomicrobia Verrucomicrobiae
#> Bacteroides_xylanisolvens       Bacteria   Bacteroidetes      Bacteroidia
#> Faecalibacterium_prausnitzii    Bacteria      Firmicutes       Clostridia
#> Anaerobutyricum_soehngenii      Bacteria      Firmicutes       Clostridia
#> Subdoligranulum_variabile       Bacteria      Firmicutes       Clostridia
#> ...                                  ...             ...              ...
#> Roseburia_intestinalis          Bacteria      Firmicutes       Clostridia
#> Coprococcus_catus               Bacteria      Firmicutes       Clostridia
#> Blautia_obeum                   Bacteria      Firmicutes       Clostridia
#> Ruminococcus_bromii             Bacteria      Firmicutes       Clostridia
#> Collinsella_aerofaciens         Bacteria  Actinobacteria   Actinobacteria
#>                                           Order              Family
#>                                     <character>         <character>
#> Akkermansia_muciniphila      Verrucomicrobiales Verrucomicrobiaceae
#> Bacteroides_xylanisolvens         Bacteroidales      Bacteroidaceae
#> Faecalibacterium_prausnitzii      Clostridiales     Ruminococcaceae
#> Anaerobutyricum_soehngenii        Clostridiales      Eubacteriaceae
#> Subdoligranulum_variabile         Clostridiales     Ruminococcaceae
#> ...                                         ...                 ...
#> Roseburia_intestinalis            Clostridiales     Lachnospiraceae
#> Coprococcus_catus                 Clostridiales     Lachnospiraceae
#> Blautia_obeum                     Clostridiales     Ruminococcaceae
#> Ruminococcus_bromii               Clostridiales     Ruminococcaceae
#> Collinsella_aerofaciens        Coriobacteriales   Coriobacteriaceae
#>                                         Genus                Species stability
#>                                   <character>            <character> <numeric>
#> Akkermansia_muciniphila           Akkermansia Akkermansia_muciniph..  0.210974
#> Bacteroides_xylanisolvens         Bacteroides Bacteroides_xylaniso..  0.271798
#> Faecalibacterium_prausnitzii Faecalibacterium Faecalibacterium_pra..  0.541675
#> Anaerobutyricum_soehngenii    Anaerobutyricum Anaerobutyricum_soeh..  0.351807
#> Subdoligranulum_variabile     Subdoligranulum Subdoligranulum_vari..  0.216796
#> ...                                       ...                    ...       ...
#> Roseburia_intestinalis              Roseburia Roseburia_intestinalis 0.1557061
#> Coprococcus_catus                 Coprococcus      Coprococcus_catus 0.2932463
#> Blautia_obeum                         Blautia          Blautia_obeum 0.0853636
#> Ruminococcus_bromii              Ruminococcus    Ruminococcus_bromii 0.1707766
#> Collinsella_aerofaciens           Collinsella Collinsella_aerofaci.. 0.4199917

# Add custom reference values
rowData(tse)[["ref_col"]] <- 1
# Calculate stability for each system simultaneously by taking time
# difference into account
tse <- addStability(
    tse, assay.type = "rclr", time.col = "Time.hr",
    group = "StudyIdentifier", ref_col = "ref_col", mode = "lm")
rowData(tse)
#> DataFrame with 16 rows and 11 columns
#>                                  Kingdom          Phylum            Class
#>                              <character>     <character>      <character>
#> Akkermansia_muciniphila         Bacteria Verrucomicrobia Verrucomicrobiae
#> Bacteroides_xylanisolvens       Bacteria   Bacteroidetes      Bacteroidia
#> Faecalibacterium_prausnitzii    Bacteria      Firmicutes       Clostridia
#> Anaerobutyricum_soehngenii      Bacteria      Firmicutes       Clostridia
#> Subdoligranulum_variabile       Bacteria      Firmicutes       Clostridia
#> ...                                  ...             ...              ...
#> Roseburia_intestinalis          Bacteria      Firmicutes       Clostridia
#> Coprococcus_catus               Bacteria      Firmicutes       Clostridia
#> Blautia_obeum                   Bacteria      Firmicutes       Clostridia
#> Ruminococcus_bromii             Bacteria      Firmicutes       Clostridia
#> Collinsella_aerofaciens         Bacteria  Actinobacteria   Actinobacteria
#>                                           Order              Family
#>                                     <character>         <character>
#> Akkermansia_muciniphila      Verrucomicrobiales Verrucomicrobiaceae
#> Bacteroides_xylanisolvens         Bacteroidales      Bacteroidaceae
#> Faecalibacterium_prausnitzii      Clostridiales     Ruminococcaceae
#> Anaerobutyricum_soehngenii        Clostridiales      Eubacteriaceae
#> Subdoligranulum_variabile         Clostridiales     Ruminococcaceae
#> ...                                         ...                 ...
#> Roseburia_intestinalis            Clostridiales     Lachnospiraceae
#> Coprococcus_catus                 Clostridiales     Lachnospiraceae
#> Blautia_obeum                     Clostridiales     Ruminococcaceae
#> Ruminococcus_bromii               Clostridiales     Ruminococcaceae
#> Collinsella_aerofaciens        Coriobacteriales   Coriobacteriaceae
#>                                         Genus                Species   ref_col
#>                                   <character>            <character> <numeric>
#> Akkermansia_muciniphila           Akkermansia Akkermansia_muciniph..         1
#> Bacteroides_xylanisolvens         Bacteroides Bacteroides_xylaniso..         1
#> Faecalibacterium_prausnitzii Faecalibacterium Faecalibacterium_pra..         1
#> Anaerobutyricum_soehngenii    Anaerobutyricum Anaerobutyricum_soeh..         1
#> Subdoligranulum_variabile     Subdoligranulum Subdoligranulum_vari..         1
#> ...                                       ...                    ...       ...
#> Roseburia_intestinalis              Roseburia Roseburia_intestinalis         1
#> Coprococcus_catus                 Coprococcus      Coprococcus_catus         1
#> Blautia_obeum                         Blautia          Blautia_obeum         1
#> Ruminococcus_bromii              Ruminococcus    Ruminococcus_bromii         1
#> Collinsella_aerofaciens           Collinsella Collinsella_aerofaci..         1
#>                              stability_Bioreactor A stability_Bioreactor B
#>                                           <numeric>              <numeric>
#> Akkermansia_muciniphila                   0.2671427              0.5479229
#> Bacteroides_xylanisolvens                 0.2728461              0.5080847
#> Faecalibacterium_prausnitzii              0.3235416              0.4426659
#> Anaerobutyricum_soehngenii                0.2696693              0.1627811
#> Subdoligranulum_variabile                 0.0993302              0.0676437
#> ...                                             ...                    ...
#> Roseburia_intestinalis                    0.1469217               0.336963
#> Coprococcus_catus                         0.1941561               0.345858
#> Blautia_obeum                             0.0462427              -0.123109
#> Ruminococcus_bromii                       0.1852228               0.104678
#> Collinsella_aerofaciens                   0.4211536               0.495969
#>                              stability_Bioreactor C
#>                                           <numeric>
#> Akkermansia_muciniphila                   0.4531121
#> Bacteroides_xylanisolvens                 0.3579722
#> Faecalibacterium_prausnitzii              0.3261063
#> Anaerobutyricum_soehngenii                0.0468848
#> Subdoligranulum_variabile                 0.0792569
#> ...                                             ...
#> Roseburia_intestinalis                    0.4889192
#> Coprococcus_catus                         0.1413676
#> Blautia_obeum                             0.2641749
#> Ruminococcus_bromii                       0.0757622
#> Collinsella_aerofaciens                   0.8230176