OMiSA: Optimal Microbiome-based Survival Analysis (OMiSA)

Description Usage Arguments Value Author(s) References Examples

View source: R/OMiSA.R

Description

OMiSA is a non-parametric method which tests the association between a microbial group (e.g., community, taxon) composition and a survival (time-to-event) response on human health or disease with or without covariate adjustments (e.g., age, sex).

Usage

1
2
OMiSA(obstime, delta, X, total.reads = NULL, tree, cov = NULL, 
pow = c(1/4,1/3,1/2,1), g.unif.alpha = c(0.5), n.perm = 5000)

Arguments

obstime

A numeric vector for the observed times.

delta

A numeric vector for the event/censoring indicators (1: event, 0: censoring).

X

A matrix for the OTU table (1. Elements are counts. 2. Rows are samples and columns are OTUs. 3. Monotone/singletone OTUs must be removed.).

total.reads

A numeric vector for the total reads per sample in the entire community. If you survey the entire community, you do not need to specify this. If you test a microbial taxon, you need to specify this (see the examples below). Default is NULL for the entire community.

tree

A rooted phylogenetic tree.

cov

A data.frame (or vector) for covariate adjustment(s) (Rows are samples and columns are covariate variables).

pow

A set of the candidate gamma values. Default is c(1/4, 1/3, 1/2, 1).

g.unif.alpha

A set of the candidate alpha parameter value(s) for the generalized UniFrac distance (e.g., c(0.25, 0.5)). Default is c(0.5).

n.perm

The number of permutations. Default is 5000.

Value

pvs.misaln: The estimated p-values for individual MiSALN tests

pvs.mirkats: The estimated p-values for individual MiRKAT-S tests

p.omisaln: The estimated p-value for OMiSALN

p.omirkats: The estimated p-value for OMiRKAT-S

p.omisa: The estimated p-value for OMiSA

Author(s)

Hyunwook Koh

References

Koh H, Livanos AE, Blaser MJ, Li H. (2018) A highly adaptive microbiome-based association test for survival traits. BMC Genomics 19, 210

Plantinga A, Zhan X, Zhao N, Chen J, Jenq RR, Wu MC. (2017) MiRKAT-S: a community-level test of association between the microbiota and survival times. Microbiome 5, 17

Examples

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
library(dirmult) 
library(phyloseq) 
library(robustbase)
library(robCompositions) 
library(BiasedUrn)
library(CompQuadForm)
library(GUniFrac) 
library(ecodist) 
library(survival)
library(OMiSA)

### An example simulated microbiome data with survival outcomes

data(MiSurv.Data) 

otu.tab <- otu_table(MiSurv.Data)
tax.tab <- tax_table(MiSurv.Data)
tree <- phy_tree(MiSurv.Data)
obstime <- as.numeric(unlist(sample_data(MiSurv.Data)[,1]))
delta <- as.numeric(unlist(sample_data(MiSurv.Data)[,2]))
x1 <- as.numeric(unlist(sample_data(MiSurv.Data)[,3]))
x2 <- as.numeric(unlist(sample_data(MiSurv.Data)[,4]))
covs <- as.data.frame(cbind(x1, x2))
covs[,2] <- as.factor(covs[,2])

### Example 1. To test the entire community (e.g., kingdom)

set.seed(100)

OMiSA(obstime, delta, otu.tab, total.reads=NULL, tree, cov=covs)

### Example 2. To test the higher-level taxon, p__Firmicutes

# Important notice: Create n total reads counts "in the entire community" and 
# specify it into the element, "total.reads", of the function, OMiSA, as below.
total.reads <- rowSums(otu.tab)

ind.Firmicutes <- which(tax.tab[,2] == "p__Firmicutes")
otu.tab.Firmicutes <- otu.tab[,ind.Firmicutes]
tree.Firmicutes <- prune_taxa(colnames(otu.tab.Firmicutes), tree)

set.seed(100)

OMiSA(obstime, delta, otu.tab.Firmicutes, total.reads=total.reads, 
tree.Firmicutes, cov=covs)

### Example 3. To test the higher-level taxon, p__Bacteroidetes

# Important notice: Create n total reads counts "in the entire community" and 
# specify it into the element, "total.reads", of the function, OMiSA, as below.
total.reads <- rowSums(otu.tab)

ind.Bacteroidetes <- which(tax.tab[,2] == "p__Bacteroidetes")
otu.tab.Bacteroidetes <- otu.tab[,ind.Bacteroidetes]
tree.Bacteroidetes <- prune_taxa(colnames(otu.tab.Bacteroidetes), tree)

set.seed(100)

OMiSA(obstime, delta, otu.tab.Bacteroidetes, total.reads=total.reads, 
tree.Bacteroidetes, cov=covs)

hk1785/OMiSA documentation built on March 1, 2020, 6:38 p.m.