1
# Runs vegan function betadisper on QIIME distance matrix
3
# R --slave --args --source_dir $QIIME_HOME/qiime/support_files/R/ -d unifrac.txt -m Fasting_Map.txt -c Treatment -o permdisp < permdisp.r
6
# R --slave --args -h --source_dir $QIIME_HOME/qiime/support_files/R/ < permdisp.r
8
# Requires command-line param --source_dir pointing to QIIME R source dir
10
# load libraries and source files
11
args <- commandArgs(trailingOnly=TRUE)
12
if(!is.element('--source_dir', args)){
13
stop("\n\nPlease use '--source_dir' to specify the R source code directory.\n\n")
15
sourcedir <- args[which(args == '--source_dir') + 1]
16
source(sprintf('%s/loaddata.r',sourcedir))
17
source(sprintf('%s/util.r',sourcedir))
18
load.library('optparse')
21
# make option list and parse command line
23
make_option(c("--source_dir"), type="character",
24
help="Path to R source directory [required]."),
25
make_option(c("-d", "--distmat"), type="character",
26
help="Input distance matrix [required]."),
27
make_option(c("-m", "--mapfile"), type="character",
28
help="Input metadata mapping file [required]."),
29
make_option(c("-c", "--category"), type="character",
30
help="Metadata column header giving cluster IDs [required]."),
31
make_option(c("-n", "--num_permutations"), type="integer", default=999,
32
help="Number of permutations [default %default]."),
33
make_option(c("-o", "--outdir"), type="character", default='.',
34
help="Output directory [default %default]")
36
opts <- parse_args(OptionParser(option_list=option_list), args=args)
39
if(is.null(opts$mapfile)) stop('Please supply a mapping file.')
40
if(is.null(opts$category)) stop('Please supply a mapping file header.')
41
if(is.null(opts$distmat)) stop('Please supply a distance matrix.')
43
# create output directory if needed
44
if(opts$outdir != ".") dir.create(opts$outdir,showWarnings=FALSE, recursive=TRUE)
47
map <- load.qiime.mapping.file(opts$mapfile)
48
distmat <- load.qiime.distance.matrix(opts$distmat)
49
qiime.data <- remove.nonoverlapping.samples(map=map, distmat=distmat)
52
mod <- betadisper(as.dist(qiime.data$distmat), qiime.data$map[[opts$category]])
54
# Perform parametric test.
55
results1 <- anova(mod)
57
# Perform nonparametric test.
58
results2 <- permutest(mod, pairwise=TRUE,
59
control=permControl(nperm=opts$num_permutations))
62
filepath <- sprintf('%s/permdisp_results.txt',opts$outdir)