Mercurial > repos > simon-gladman > phyloseq_ordination_plot
comparison phyloseq_ordinate_plot.R @ 1:52f009b255a1 draft default tip
Updated tool
author | simon-gladman |
---|---|
date | Thu, 22 Nov 2018 07:07:27 -0500 |
parents | ae9cd53b7760 |
children |
comparison
equal
deleted
inserted
replaced
0:ae9cd53b7760 | 1:52f009b255a1 |
---|---|
24 'method','n',2,'character', | 24 'method','n',2,'character', |
25 'distance','d',2,'character', | 25 'distance','d',2,'character', |
26 'kingdom','k',2,'character', | 26 'kingdom','k',2,'character', |
27 'plottype','e',2,'numeric', | 27 'plottype','e',2,'numeric', |
28 'category','g',2,'numeric', | 28 'category','g',2,'numeric', |
29 'log','l',2,'character', | |
29 'outdir','r',2,'character', | 30 'outdir','r',2,'character', |
30 'htmlfile','h',2,'character' | 31 'htmlfile','h',2,'character' |
31 ),byrow=TRUE,ncol=4); | 32 ),byrow=TRUE,ncol=4); |
32 | 33 |
33 | 34 |
51 ### prepare the directory and file name | 52 ### prepare the directory and file name |
52 pdffile <- gsub("[ ]+", "", paste(options$outdir,"/pdffile.pdf")) | 53 pdffile <- gsub("[ ]+", "", paste(options$outdir,"/pdffile.pdf")) |
53 pngfile_nmds <- gsub("[ ]+", "", paste(options$outdir,"/nmds.png")) | 54 pngfile_nmds <- gsub("[ ]+", "", paste(options$outdir,"/nmds.png")) |
54 pngfile_nmds_facet <- gsub("[ ]+", "", paste(options$outdir,"/nmds_facet.png")) | 55 pngfile_nmds_facet <- gsub("[ ]+", "", paste(options$outdir,"/nmds_facet.png")) |
55 htmlfile <- gsub("[ ]+", "", paste(options$htmlfile)) | 56 htmlfile <- gsub("[ ]+", "", paste(options$htmlfile)) |
56 | 57 output_summary <- gsub("[ ]+", "", paste(options$log)) |
57 | 58 |
58 ### This function accepts different two different type of BIOM file format | 59 ### This function accepts different two different type of BIOM file format |
59 readBIOM<-function(inBiom){ | 60 readBIOM<-function(inBiom){ |
60 tryCatch({ | 61 tryCatch({ |
61 phyloseq_obj<-import_biom(inBiom,parallel=TRUE) | 62 phyloseq_obj<-import_biom(inBiom,parallel=TRUE) |
81 } | 82 } |
82 | 83 |
83 | 84 |
84 create_OTU_PDF<-function(pdf_file,phyloseq_obj,phyloseq_ord,kingdom_str,htmlfile,pngfile_nmds,pngfile_nmds_facet){ | 85 create_OTU_PDF<-function(pdf_file,phyloseq_obj,phyloseq_ord,kingdom_str,htmlfile,pngfile_nmds,pngfile_nmds_facet){ |
85 pdf(pdf_file); | 86 pdf(pdf_file); |
86 p1<-plot_ordination(phyloseq_obj,phyloseq_ord,type="taxa",color="Phylum",title="taxa") | 87 p1<-plot_ordination(phyloseq_obj,phyloseq_ord,type="taxa",color=kingdom_str,title="taxa") + theme(legend.position="bottom",legend.box="vertical",legend.direction="horizontal") |
87 print(p1) | 88 print(p1) |
88 p2<-plot_ordination(phyloseq_obj,phyloseq_ord,type="taxa",color="Phylum",title="taxa") + facet_wrap(formula(paste('~',kingdom_str)),3) | 89 p2<-plot_ordination(phyloseq_obj,phyloseq_ord,type="taxa",color=kingdom_str,title="taxa") + facet_wrap(formula(paste('~',kingdom_str)),3) + theme(legend.position="bottom",legend.box="vertical",legend.direction="horizontal") |
89 print(p2) | 90 print(p2) |
90 garbage<-dev.off(); | 91 garbage<-dev.off(); |
91 | 92 |
92 #png('nmds.png') | 93 #png('nmds.png') |
93 bitmap(pngfile_nmds,"png16m") | 94 bitmap(pngfile_nmds,"png16m",res=120) |
94 p3<-plot_ordination(phyloseq_obj,phyloseq_ord,type="taxa",color="Phylum",title="taxa") | 95 p3<-plot_ordination(phyloseq_obj,phyloseq_ord,type="taxa",color=kingdom_str,title="taxa") + theme(legend.position="bottom",legend.box="vertical",legend.direction="horizontal") |
95 print(p3) | 96 print(p3) |
96 garbage<-dev.off() | 97 garbage<-dev.off() |
97 | 98 |
98 #png('nmds_facet.png') | 99 #png('nmds_facet.png') |
99 bitmap(pngfile_nmds_facet,"png16m") | 100 bitmap(pngfile_nmds_facet,"png16m",res=120) |
100 p4<-plot_ordination(phyloseq_obj,phyloseq_ord,type="taxa",color="Phylum",title="taxa") + facet_wrap(formula(paste('~',kingdom_str)),3) | 101 p4<-plot_ordination(phyloseq_obj,phyloseq_ord,type="taxa",color=kingdom_str,title="taxa") + facet_wrap(formula(paste('~',kingdom_str)),3) + theme(legend.position="bottom",legend.box="vertical",legend.direction="horizontal") |
101 print(p4) | 102 print(p4) |
102 garbage<-dev.off() | 103 garbage<-dev.off() |
103 | 104 |
104 create_HTML_1(htmlfile) | 105 create_HTML_1(htmlfile) |
105 } | 106 } |
106 | 107 |
107 create_SAMPLE_PDF<-function(pdf_file,phyloseq_obj,phyloseq_ord,htmlfile,pngfile_nmds,category_type){ | 108 create_SAMPLE_PDF<-function(pdf_file,phyloseq_obj,phyloseq_ord,htmlfile,pngfile_nmds,category_type){ |
108 pdf(pdf_file); | 109 pdf(pdf_file); |
109 p <- plot_ordination(phyloseq_obj, phyloseq_ord, type="samples", color=category_type) | 110 p <- plot_ordination(phyloseq_obj, phyloseq_ord, type="samples", color=category_type) |
110 p <- p + geom_point(aes(fill=category_type)) + geom_point(size=5) + ggtitle("samples") | 111 p <- p + geom_point(aes(fill=category_type)) + geom_point(size=5) + ggtitle(paste("Samples - Stress value",formatC(phyloseq_ord$stress,digits=4,format="f"),sep=":")) + theme(legend.position="bottom",legend.box="vertical",legend.direction="horizontal") |
111 print(p) | 112 print(p) |
112 garbage<-dev.off(); | 113 garbage<-dev.off(); |
113 | 114 |
114 #png('nmds.png') | 115 #png('nmds.png') |
115 bitmap(pngfile_nmds,"png16m") | 116 bitmap(pngfile_nmds,"png16m",res=120) |
116 p1 <- plot_ordination(phyloseq_obj, phyloseq_ord, type="samples", color=category_type) | 117 p1 <- plot_ordination(phyloseq_obj, phyloseq_ord, type="samples", color=category_type) |
117 p1 <- p1 + geom_point(aes(fill=category_type)) + geom_point(size=5) + ggtitle("samples") | 118 p1 <- p1 + geom_point(aes(fill=category_type)) + geom_point(size=5) + ggtitle(paste("Samples - Stress value",formatC(phyloseq_ord$stress,digits=4,format="f"),sep=":")) + theme(legend.position="bottom",legend.box="vertical",legend.direction="horizontal") |
118 print(p1) | 119 print(p1) |
119 garbage<-dev.off(); | 120 garbage<-dev.off(); |
120 | 121 |
121 create_HTML_2(htmlfile) | 122 create_HTML_2(htmlfile) |
122 } | 123 } |
123 | 124 |
124 create_BIPLOT_PDF<-function(pdf_file,phyloseq_obj,phyloseq_ord,kingdom_str,htmlfile,pngfile_nmds,category_type){ | 125 create_BIPLOT_PDF<-function(pdf_file,phyloseq_obj,phyloseq_ord,kingdom_str,htmlfile,pngfile_nmds,category_type){ |
125 pdf(pdf_file); | 126 pdf(pdf_file); |
126 print(category_type) | 127 print(category_type) |
127 p_biplot <- plot_ordination(phyloseq_obj, phyloseq_ord, type="biplot", color=category_type, shape=kingdom_str,title="BIPLOT") | 128 p_biplot <- plot_ordination(phyloseq_obj, phyloseq_ord, type="biplot", color=category_type, shape=kingdom_str,title="BIPLOT") + theme(legend.position="bottom",legend.box="vertical",legend.direction="horizontal") |
128 print(p_biplot) | 129 print(p_biplot) |
129 garbage<-dev.off(); | 130 garbage<-dev.off(); |
130 | 131 |
131 bitmap(pngfile_nmds,"png16m") | 132 bitmap(pngfile_nmds,"png16m",res=120) |
132 p_biplot_png <- plot_ordination(phyloseq_obj, phyloseq_ord, type="biplot", color=category_type, shape=kingdom_str,title="BIPLOT") | 133 p_biplot_png <- plot_ordination(phyloseq_obj, phyloseq_ord, type="biplot", color=category_type, shape=kingdom_str,title="BIPLOT") + theme(legend.position="bottom",legend.box="vertical",legend.direction="horizontal") |
133 print(p_biplot_png) | 134 print(p_biplot_png) |
134 garbage<-dev.off(); | 135 garbage<-dev.off(); |
135 | 136 |
136 create_HTML_2(htmlfile) | 137 create_HTML_2(htmlfile) |
137 } | 138 } |
138 | 139 |
139 create_SPLITPLOT_PDF<-function(pdf_file,phyloseq_obj,phyloseq_ord,kingdom_str,htmlfile,pngfile_nmds,category_type){ | 140 create_SPLITPLOT_PDF<-function(pdf_file,phyloseq_obj,phyloseq_ord,kingdom_str,htmlfile,pngfile_nmds,category_type){ |
140 pdf(pdf_file,width=10, height=6); | 141 pdf(pdf_file,width=10, height=6); |
141 split_plot <- plot_ordination(phyloseq_obj, phyloseq_ord, type="split", color=kingdom_str, shape=kingdom_str, label=category_type, title="SPLIT PLOT") | 142 split_plot <- plot_ordination(phyloseq_obj, phyloseq_ord, type="split", color=kingdom_str, shape=kingdom_str, label=category_type, title="SPLIT PLOT") |
142 split_plot <- split_plot + theme(plot.margin = unit(c(12,18,12,18),"pt")) | 143 split_plot <- split_plot + theme(plot.margin = unit(c(12,18,12,18),"pt"),legend.position="bottom",legend.box="vertical",legend.direction="horizontal") |
143 print(split_plot) | 144 print(split_plot) |
144 garbage<-dev.off(); | 145 garbage<-dev.off(); |
145 | 146 |
146 bitmap(pngfile_nmds,"png16m", width=6, height=4, units="in",res=200) | 147 bitmap(pngfile_nmds,"png16m", res=120) |
147 split_plot <- plot_ordination(phyloseq_obj, phyloseq_ord, type="split", color=kingdom_str, shape=kingdom_str, label=category_type, title="SPLIT PLOT") | 148 split_plot <- plot_ordination(phyloseq_obj, phyloseq_ord, type="split", color=kingdom_str, shape=kingdom_str, label=category_type, title="SPLIT PLOT") |
148 split_plot <- split_plot + theme(plot.margin = unit(c(12,18,12,18),"pt")) | 149 split_plot <- split_plot + theme(plot.margin = unit(c(12,18,12,18),"pt"),legend.position="bottom",legend.box="vertical",legend.direction="horizontal") |
149 print(split_plot) | 150 print(split_plot) |
150 garbage<-dev.off(); | 151 garbage<-dev.off(); |
151 create_HTML_2(htmlfile) | 152 create_HTML_2(htmlfile) |
152 } | 153 } |
153 | 154 |
154 create_HTML_1<-function(htmlfile){ | 155 create_HTML_1<-function(htmlfile){ |
155 htmlfile_handle <- file(htmlfile) | 156 htmlfile_handle <- file(htmlfile) |
156 html_output = c('<html><body>', | 157 html_output = c('<html><body>', |
157 '<table align="center>', | 158 '<table align="center">', |
158 '<tr>', | 159 '<tr>', |
159 '<td valign="middle" style="vertical-align:middle;">', | 160 '<td valign="middle" style="vertical-align:middle;">', |
160 '<a href="pdffile.pdf"><img src="nmds.png"/></a>', | 161 '<a href="pdffile.pdf"><img src="nmds.png" width="800" height="800"/></a>', |
161 '</td>', | 162 '</td>', |
162 '</tr>', | 163 '</tr>', |
163 '<tr>', | 164 '<tr>', |
164 '<td valign="middle" style="vertical-align:middle;">', | 165 '<td valign="middle" style="vertical-align:middle;">', |
165 '<a href="pdffile.pdf"><img src="nmds_facet.png"/></a>', | 166 '<a href="pdffile.pdf"><img src="nmds_facet.png" width="800" height="800"/></a>', |
166 '</td>', | 167 '</td>', |
167 '</tr>', | 168 '</tr>', |
168 '</table>', | 169 '</table>', |
169 '</html></body>'); | 170 '</html></body>'); |
170 writeLines(html_output, htmlfile_handle); | 171 writeLines(html_output, htmlfile_handle); |
172 } | 173 } |
173 | 174 |
174 create_HTML_2<-function(htmlfile){ | 175 create_HTML_2<-function(htmlfile){ |
175 htmlfile_handle <- file(htmlfile) | 176 htmlfile_handle <- file(htmlfile) |
176 html_output = c('<html><body>', | 177 html_output = c('<html><body>', |
177 '<table align="center>', | 178 '<table align="center">', |
178 '<tr>', | 179 '<tr>', |
179 '<td valign="middle" style="vertical-align:middle;">', | 180 '<td valign="middle" style="vertical-align:middle;">', |
180 '<a href="pdffile.pdf"><img src="nmds.png"/></a>', | 181 '<a href="pdffile.pdf"><img src="nmds.png" width="800" height="800"/></a>', |
181 '</td>', | 182 '</td>', |
182 '</tr>', | 183 '</tr>', |
183 '</table>', | 184 '</table>', |
184 '</html></body>'); | 185 '</html></body>'); |
185 writeLines(html_output, htmlfile_handle); | 186 writeLines(html_output, htmlfile_handle); |
231 TAX<-tax_table(tax_table) | 232 TAX<-tax_table(tax_table) |
232 | 233 |
233 ### create a phyloseq object | 234 ### create a phyloseq object |
234 physeq = phyloseq(OTU,TAX,sample_object) | 235 physeq = phyloseq(OTU,TAX,sample_object) |
235 } | 236 } |
236 # sample_data(physeq_filter)$category_input <- factor(category_input) | 237 |
237 category_input = get_variable(physeq, category_type) %in% category_option | 238 category_input = get_variable(physeq, category_type) %in% category_option |
238 sample_data(physeq)$category_input <- factor(category_input) | 239 sample_data(physeq)$category_input <- factor(category_input) |
239 | 240 |
240 # physeq_ord<-ordinate(physeq_filter,method,distance) | 241 # compute distance matrix |
241 physeq_ord<-ordinate(physeq,method,distance) | 242 physeq_ord<-ordinate(physeq,method,distance) |
243 | |
244 # get column sum | |
245 sum_table<-data.frame(column_sum=as.matrix(colSums(otu_table(physeq)))) | |
246 | |
247 rowname_table<-data.frame(sample=rownames(sum_table)) | |
248 | |
249 output_table<-as.data.frame(cbind(rowname_table,sum_table)) | |
250 | |
251 output_table<-output_table[order(output_table$column_sum),] | |
252 | |
253 # Reformat distance matrix | |
254 distance_matrix<-as.data.frame(physeq_ord$points) | |
255 distance_matrix<-cbind(sample=rownames(distance_matrix),distance_matrix) | |
256 | |
257 sink(output_summary) | |
258 cat('--------------------------------------') | |
259 cat('\n') | |
260 cat('Stress value') | |
261 cat('\n') | |
262 cat(formatC(physeq_ord$stress,digits=4,format="f")) | |
263 cat('\n') | |
264 cat('--------------------------------------') | |
265 cat('\n') | |
266 cat('Sample - Column Sum') | |
267 cat('\n') | |
268 cat('--------------------------------------') | |
269 cat('\n') | |
270 write.table(output_table,row.names=F,quote=F) | |
271 cat('\n') | |
272 cat('--------------------------------------') | |
273 cat('\n') | |
274 cat('Distance Matrix') | |
275 cat('\n') | |
276 cat('--------------------------------------') | |
277 cat('\n') | |
278 write.table(distance_matrix,row.names=F,quote=F) | |
279 cat('\n') | |
280 cat('--------------------------------------') | |
281 sink() | |
242 | 282 |
243 if(plottype == 1){ | 283 if(plottype == 1){ |
244 #kingdom_str = colnames(tax_table)[2] | 284 #kingdom_str = colnames(tax_table)[2] |
245 create_OTU_PDF(pdffile,physeq,physeq_ord,kingdom_str,htmlfile,pngfile_nmds,pngfile_nmds_facet) | 285 create_OTU_PDF(pdffile,physeq,physeq_ord,kingdom_str,htmlfile,pngfile_nmds,pngfile_nmds_facet) |
246 }else if(plottype == 2){ | 286 }else if(plottype == 2){ |