Microbial Metagenomic Trait Statistical Analysis Workflow
The Metagenomic Traits Statistical Analysis workflow computes the multivariate statistics related to the community traits outlined in Barberan et al. 2012 "Exploration of community traits as ecological markers in microbial metagenomes". The traits included in the statistical analyses range from GC content to functional diversity, and deliver a valuable set of ecological markers in order discriminate between habitats or geographic locations. Furthermore, intertrait relationships can be used as habitat descriptors or indicators of artefacts during sample processing. Overall, these metagenomics community traits approach, here combined in a single workflow, helps to interpret metagenomics data to gain a full understanding of microbial community patterns in a rigorous ecological framework.
Preview
Run
Run this Workflow in the Taverna Workbench...
Option 1:
Copy and paste this link into File > 'Open workflow location...'
http://myexperiment.org/workflows/3349/download?version=7
[ More Info ]
Taverna is available from http://taverna.sourceforge.net/
If you are having problems downloading it in Taverna, you may need to provide your username and password in the URL so that Taverna can access the Workflow:
Replace http:// in the link above with http://yourusername:yourpassword@
Workflow Components
Antonio Fernandez-Guerra, Pelin Yilmaz and Renzo Kottmann |
Metagenomic Traits Statistical Analysis |
The Metagenomic Traits Statistical Analysis workflow computes the multivariate statistics related to the community traits outlined in Barberan et al. 2012 "Exploration of community traits as ecological markers in microbial metagenomes". The traits included in the statistical analyses range from GC content to functional diversity, and deliver a valuable set of ecological markers in order discriminate between habitats or geographic locations. Furthermore, intertrait relationships can be used as habitat descriptors or indicators of artefacts during sample processing. Overall, these metagenomics community traits approach, here combined in a single workflow, helps to interpret metagenomics data to gain a full understanding of microbial community patterns in a rigorous ecological framework. |
None
Name | Description |
---|---|
dinuc | File containing di-nucelotide frequencies. Example is from GOS dataset. Example from Barberan et al. 2012: http://build.mygrid.org.uk/taverna/metagenomics/gos_dinuc.txt |
codon | File containing the codon frequencies of predicted ORFs. Example is from GOS dataset. Example from Barberan et al. 2012: http://build.mygrid.org.uk/taverna/metagenomics/gos_codon.txt |
aa | File containing the amino acid frequencies of predicted ORFs. Example is from GOS dataset. Example from Barberan et al. 2012: http://build.mygrid.org.uk/taverna/metagenomics/gos_aa.txt |
func | File containing a table of frequencies of functional annotation per sample. Column= functional annotation with first column = sampling site/sample, row = frequencies per sample. Example from Barberan et al. 2012: http://build.mygrid.org.uk/taverna/metagenomics/gos_functional.txt |
phylo | File containing a table of frequencies of taxonomic group per sample. Column= taxonomic annotation with first column = sampling site/sample, row = frequencies per sample. Example from Barberan et al. 2012: http://build.mygrid.org.uk/taverna/metagenomics/gos_phylo.txt |
traits | Two column file specifying metagenomic description, column title must be Description e.g. A header row could be like this Site Description TotalMb NumberReads GC varGC rRNA Genes EGS ABratio TF Classified Example from Barberan et al. 2012: http://build.mygrid.org.uk/taverna/metagenomics/gos_traits.txt |
Name | Type | Description |
---|---|---|
NMDS | rshell |
Perform Non-MultiDimensional Scaling analysis of traits Scriptrequire(vegan) require(ape) require(MASS) require(ggplot2) mg = eval(parse(text=traitsIn)); mg.phylo = eval(parse(text=phyloIn)); mg.phylo.hel = eval(parse(text=phyloHelIn)); mg.func.hel = eval(parse(text=funcHelIn)); ##################################################################################### #16S rRNA PHYLOGENETIC BETA-DIVERSITY ##################################################################################### #NMDS mg.phylo.metanmds<-metaMDS(mg.phylo.hel) #Stress 10.30507 #pdf(phylo_nmds) #plot(gos.phylo.metanmds, type="t") #dev.off() mg.phylo.nmds<-data.frame(mg.phylo.metanmds$points) mg.phylo.nmds<-cbind(mg.phylo.nmds, mg[,1], rowSums(mg.phylo)) colnames(mg.phylo.nmds)[3]<-"Habitat" colnames(mg.phylo.nmds)[4]<-"Num16SrRNA" #cols<-c("Coastal" = "cyan1","Open Ocean" = "blue","Fresh Water" = "yellow", "Estuary" = "chartreuse", "Mangrove"="darkorange1", "Hypersaline"="red", "Warm Seep"="darkblue", "Reef"="cornflowerblue", "Harbor"="darkgoldenrod4") cat(capture.output(mg.phylo.nmds), file=phyloNmds, sep="\n") cat(capture.output(mg.phylo.metanmds), file=phyloNmdsLog, sep="\n") png(phylo_nmds) print(qplot(MDS1, MDS2, data=mg.phylo.nmds, size=Num16SrRNA, colour=Habitat, xlab="Axis 1", ylab="Axis 2") +scale_colour_brewer(type="qual", palette = "Paired")+theme_bw()+ opts(legend.key = theme_blank())) dev.off() ##################################################################################### #SUBSYSTEMS FUNCTIONAL BETA-DIVERSITY ##################################################################################### #NMDS mg.func.metanmds<-metaMDS(mg.func.hel) #Stress 11.98248 #pdf("gos.func.nmds.names.pdf") #plot(gos.func.metanmds, type="t") #dev.off() mg.func.nmds<-data.frame(mg.func.metanmds$points) mg.func.nmds<-cbind(mg.func.nmds, mg[,1], mg$TotalMb) colnames(mg.func.nmds)[3]<-"Habitat" colnames(mg.func.nmds)[4]<-"TotalMb" cat(capture.output(mg.func.nmds), file=funcNmds, sep="\n") cat(capture.output(mg.func.metanmds), file=funcNmdsLog, sep="\n") png(func_nmds) #cols <- c("Coastal" = "cyan1","Open Ocean" = "blue","Fresh Water" = "yellow", "Estuary" = "chartreuse", "Mangrove"="darkorange1", "Hypersaline"="red", "Warm Seep"="darkblue", "Reef"="cornflowerblue", "Harbor"="darkgoldenrod4") print(qplot(MDS1, MDS2, data=mg.func.nmds, size=TotalMb, colour=Habitat, xlab="Axis 1", ylab="Axis 2") + scale_colour_brewer(type="qual", palette = "Paired")+theme_bw()+ opts(legend.key = theme_blank())) dev.off() R Serverlocalhost:6311 |
read_files_data_tranformation_pca_calculation | rshell |
Read input ports, transform data, calculate pkylogenetic and functional diversity and get first component for complex traits Scriptrequire(vegan) require(ape) require(MASS) require(ggplot2) ########## rarefaction.shannon<-function(x, random) { #Arguments community<-x number_randomizations<-random #Parameters and transformations community_sorted<-apply(community,1,sort) number_communities<-dim(community_sorted)[2] a<-vector(length=number_randomizations) number_sp<-vector(length=number_communities) #Outputs result<-matrix(NA,nrow=2,ncol=number_communities) rownames(result)=c("Mean_Shannon","Sd_Shannon") colnames(result)=colnames(community_sorted) #Loop for communities for (i in 1:number_communities) { commX<-community_sorted[,i] y<-commX[commX>0] number_sp[i]<-length(y) } subsample_number_sp<-min(number_sp) #Another loop for communities for (i in 1:number_communities) { commX<-community_sorted[,i] y<-commX[commX>0] #Loop for randomizations for (l in 1:number_randomizations) { #Calculation of Shannon w<-sample(y, subsample_number_sp, replace=FALSE) total<-sum(w) x<-w/total z<- -x * log(x) H<-sum(z) a[l]<-H } #Final Calculations result[1,i]=mean(a) result[2,i]=sd(a) } #Final Output return (result) } ############ mg<-read.table(traits, sep="\t", header=T, row.names=1) mg.dinuc<-read.table(dinuc, sep="\t", header=T, row.names=1) mg.codon<-read.table(codon, sep="\t", header=T, row.names=1) mg.aa<-read.table(aa, sep="\t", header=T, row.names=1) mg.func<-read.table(func, sep="\t", header=T, row.names=1) mg.phylo<-read.table(phylo, sep="\t", header=T, row.names=1) mg.func.hel<-decostand(mg.func, method="hellinger") mg.phylo.hel<-decostand(mg.phylo, method="hellinger") #Calculate new traits from PCA of additional tables #Dinucleotides mg.dinuc.pca<-prcomp(mg.dinuc, scale=F) #Codons mg.codon.pca<-prcomp(mg.codon, scale=F) #Aa mg.aa.pca<-prcomp(mg.aa, scale=F) #Subsystems mg.func.pca<-prcomp(mg.func.hel, scale=F) #Phylogenetic mg.phylo.pca<-prcomp(mg.phylo.hel, scale=F) cat("Dinucleotide PCA summary\n", capture.output(summary(mg.dinuc.pca)), "\nCodon PCA summary", capture.output(summary(mg.codon.pca)), "\nAminoacid PCA summary", capture.output(summary(mg.aa.pca)),"\nPhylogenetic PCA summary", capture.output(summary(mg.phylo.pca)), "\nSubsystem PCA summary", capture.output(summary(mg.func.pca)), file=pcaLog, sep="\n") #79.1% PCA1 #Calculate new traits using Shannon (H) diversity index mg.func.H<-t(rarefaction.shannon(mg.func, random=1000)) mg.phylo.H<-t(rarefaction.shannon(mg.phylo, random=1000)) mg<-cbind(mg, mg.dinuc.pca$x[,1]) colnames(mg)[ncol(mg)]<-"Dinucleotides" mg<-cbind(mg, mg.codon.pca$x[,1]) colnames(mg)[ncol(mg)]<-"Codon" mg<-cbind(mg, mg.aa.pca$x[,1]) colnames(mg)[ncol(mg)]<-"Aa" mg<-cbind(mg, mg.func.pca$x[,1]) colnames(mg)[ncol(mg)]<-"Functional" mg<-cbind(mg, mg.func.H[,1]) colnames(mg)[ncol(mg)]<-"Functional.H" mg<-cbind(mg, mg.phylo.pca$x[,1]) colnames(mg)[ncol(mg)]<-"Phylogeny" mg<-cbind(mg, mg.phylo.H[,1]) colnames(mg)[ncol(mg)]<-"Phylogeny.H" write.table(mg, file=summary_traits, quote=F, sep="\t") traitsOut = deparse(mg); phyloHelOut = deparse(mg.phylo.hel) funcHelOut = deparse(mg.func.hel) dinucDfOut = deparse(mg.dinuc) codonDfOut = deparse(mg.codon) aaDfOut = deparse(mg.aa) dinucDfOut = deparse(mg.dinuc) phyloOut = deparse(mg.phylo) R Serverlocalhost:6311 |
Mantel | rshell |
Performs Mantel test to the different trait matrices Scriptrequire(vegan) require(ape) require(MASS) require(ggplot2) mg = eval(parse(text=traitsIn)); mg.dinuc = eval(parse(text=dinucDfIn)); mg.codon = eval(parse(text=codonDfIn)); mg.aa = eval(parse(text=aaDfIn)); mg.phylo.hel = eval(parse(text=phyloHelIn)); mg.func.hel = eval(parse(text=funcHelIn)); #Create distance matrices mg.traits.dist<- vegdist(decostand(mg[,4:ncol(mg)], method="standardize"), method="euclidean") mg.dinuc.dist<-vegdist(mg.dinuc, method="euclidean") mg.codon.dist<-vegdist(mg.codon, method="euclidean") mg.aa.dist<-vegdist(mg.aa, method="euclidean") mg.func.dist<-vegdist(mg.func.hel, method="bray") mg.phylo.dist<-vegdist(mg.phylo.hel, method="bray") ##################################################################################### #PHYLOGENETIC AND FUNCTIONAL RESPONSES ##################################################################################### #Relationship between functional traits and phylogenetic/functional matrix #Create a distance matrix for each individual trait for (i in 4:ncol(mg)) { x<-vegdist(mg[,i], method="euclidean") assign(paste(colnames(mg)[i],"distance",sep="_"), x) } #Mantel test against phylogenetic distance matrix (controlling for functional response) gc.mantel<-mantel.partial(mg.phylo.dist, GC_distance, mg.func.dist, method="spearman") vargc.mantel<-mantel.partial(mg.phylo.dist, varGC_distance, mg.func.dist, method="spearman") rRNA.mantel<-mantel.partial(mg.phylo.dist, rRNA_distance, mg.func.dist, method="spearman") genes.mantel<-mantel.partial(mg.phylo.dist, Genes_distance, mg.func.dist, method="spearman") ab.mantel<-mantel.partial(mg.phylo.dist, ABratio_distance, mg.func.dist, method="spearman") tf.mantel<-mantel.partial(mg.phylo.dist, TF_distance, mg.func.dist, method="spearman") class.mantel<-mantel.partial(mg.phylo.dist, Classified_distance, mg.func.dist, method="spearman") dinuc.mantel<-mantel.partial(mg.phylo.dist, mg.dinuc.dist, mg.func.dist, method="spearman") codon.mantel<-mantel.partial(mg.phylo.dist, mg.codon.dist, mg.func.dist, method="spearman") aa.mantel<-mantel.partial(mg.phylo.dist, mg.aa.dist, mg.func.dist, method="spearman") funcH.mantel<-mantel.partial(mg.phylo.dist, Functional.H_distance, mg.func.dist, method="spearman") phylo.mantel<-mantel.partial(mg.phylo.dist, mg.phylo.dist, mg.func.dist, method="spearman") phyloH.mantel<-mantel.partial(mg.phylo.dist, Phylogeny.H_distance, mg.func.dist, method="spearman") traits.mantel<-mantel.partial(mg.traits.dist, mg.phylo.dist, mg.func.dist, method="spearman") phylo.mantel.df<-cbind('GC content', gc.mantel$statistic, gc.mantel$signif) phylo.mantel.df<-rbind(phylo.mantel.df, cbind('Variance of GC content', vargc.mantel$statistic, vargc.mantel$signif)) phylo.mantel.df<-rbind(phylo.mantel.df, cbind('Dinucleotides', dinuc.mantel$statistic, dinuc.mantel$signif)) phylo.mantel.df<-rbind(phylo.mantel.df, cbind('Number of rRNA/genome', rRNA.mantel$statistic, rRNA.mantel$signif)) phylo.mantel.df<-rbind(phylo.mantel.df, cbind('Number of genes/genome', genes.mantel$statistic, genes.mantel$signif)) phylo.mantel.df<-rbind(phylo.mantel.df, cbind('Codons', codon.mantel$statistic, codon.mantel$signif)) phylo.mantel.df<-rbind(phylo.mantel.df, cbind('Amino acids', aa.mantel$statistic, aa.mantel$signif)) phylo.mantel.df<-rbind(phylo.mantel.df, cbind('Acidic to basic amino acids ratio', ab.mantel$statistic, ab.mantel$signif)) phylo.mantel.df<-rbind(phylo.mantel.df, cbind('% of Transcriptional factors', tf.mantel$statistic, tf.mantel$signif)) phylo.mantel.df<-rbind(phylo.mantel.df, cbind('% of classified reads', class.mantel$statistic, class.mantel$signif)) phylo.mantel.df<-rbind(phylo.mantel.df, cbind('Functional diversity', funcH.mantel$statistic, funcH.mantel$signif)) phylo.mantel.df<-rbind(phylo.mantel.df, cbind('Taxonomic content', phylo.mantel$statistic, phylo.mantel$signif)) phylo.mantel.df<-rbind(phylo.mantel.df, cbind('Taxonomic diversity', phyloH.mantel$statistic, phyloH.mantel$signif)) phylo.mantel.df<-rbind(phylo.mantel.df, cbind('All community traits', traits.mantel$statistic, traits.mantel$signif)) phylo.mantel.df<-as.data.frame(phylo.mantel.df) #row.names(phylo.mantel.df)<-phylo.mantel.df$V1 #phylo.mantel.df$V1<-NULL colnames(phylo.mantel.df)[1]<-'traits' colnames(phylo.mantel.df)[2]<-'statistic' colnames(phylo.mantel.df)[3]<-'signif' write.table(phylo.mantel.df, file=phyloMantel, quote=F, sep="\t", row.names=F) #Mantel test against functional (Subsystems) distance matrix (controlling for phylogenetic response) gc.mantel<-mantel.partial(mg.func.dist, GC_distance, mg.phylo.dist, method="spearman") vargc.mantel<-mantel.partial(mg.func.dist, varGC_distance, mg.phylo.dist, method="spearman") rRNA.mantel<-mantel.partial(mg.func.dist, rRNA_distance, mg.phylo.dist, method="spearman") genes.mantel<-mantel.partial(mg.func.dist, Genes_distance, mg.phylo.dist, method="spearman") ab.mantel<-mantel.partial(mg.func.dist, ABratio_distance, mg.phylo.dist, method="spearman") tf.mantel<-mantel.partial(mg.func.dist, TF_distance, mg.phylo.dist, method="spearman") class.mantel<-mantel.partial(mg.func.dist, Classified_distance, mg.phylo.dist, method="spearman") dinuc.mantel<-mantel.partial(mg.func.dist, mg.dinuc.dist, mg.phylo.dist, method="spearman") codon.mantel<-mantel.partial(mg.func.dist, mg.codon.dist, mg.phylo.dist, method="spearman") aa.mantel<-mantel.partial(mg.func.dist, mg.aa.dist, mg.phylo.dist, method="spearman") func.mantel<-mantel.partial(mg.func.dist, mg.func.dist, mg.phylo.dist, method="spearman") funcH.mantel<-mantel.partial(mg.func.dist, Functional.H_distance, mg.phylo.dist, method="spearman") phyloH.mantel<-mantel.partial(mg.func.dist, Phylogeny.H_distance, mg.phylo.dist, method="spearman") traits.mantel<-mantel.partial(mg.func.dist, mg.func.dist, mg.phylo.dist, method="spearman") phylo.mantel.df<-cbind('GC content', gc.mantel$statistic, gc.mantel$signif) phylo.mantel.df<-rbind(phylo.mantel.df, cbind('Variance of GC content', vargc.mantel$statistic, vargc.mantel$signif)) phylo.mantel.df<-rbind(phylo.mantel.df, cbind('Dinucleotides', dinuc.mantel$statistic, dinuc.mantel$signif)) phylo.mantel.df<-rbind(phylo.mantel.df, cbind('Number of rRNA/genome', rRNA.mantel$statistic, rRNA.mantel$signif)) phylo.mantel.df<-rbind(phylo.mantel.df, cbind('Number of genes/genome', genes.mantel$statistic, genes.mantel$signif)) phylo.mantel.df<-rbind(phylo.mantel.df, cbind('Codons', codon.mantel$statistic, codon.mantel$signif)) phylo.mantel.df<-rbind(phylo.mantel.df, cbind('Amino acids', aa.mantel$statistic, aa.mantel$signif)) phylo.mantel.df<-rbind(phylo.mantel.df, cbind('Acidic to basic amino acids ratio', ab.mantel$statistic, ab.mantel$signif)) phylo.mantel.df<-rbind(phylo.mantel.df, cbind('% of Transcriptional factors', tf.mantel$statistic, tf.mantel$signif)) phylo.mantel.df<-rbind(phylo.mantel.df, cbind('% of classified reads', class.mantel$statistic, class.mantel$signif)) phylo.mantel.df<-rbind(phylo.mantel.df, cbind('Functional content', func.mantel$statistic, func.mantel$signif)) phylo.mantel.df<-rbind(phylo.mantel.df, cbind('Functional diversity', funcH.mantel$statistic, funcH.mantel$signif)) phylo.mantel.df<-rbind(phylo.mantel.df, cbind('Taxonomic diversity', phyloH.mantel$statistic, phyloH.mantel$signif)) phylo.mantel.df<-rbind(phylo.mantel.df, cbind('All community traits', traits.mantel$statistic, traits.mantel$signif)) phylo.mantel.df<-as.data.frame(phylo.mantel.df) #row.names(phylo.mantel.df)<-phylo.mantel.df$V1 #phylo.mantel.df$V1<-NULL colnames(phylo.mantel.df)[1]<-'traits' colnames(phylo.mantel.df)[2]<-'statistic' colnames(phylo.mantel.df)[3]<-'signif' write.table(phylo.mantel.df, file=funcMantel, quote=F, sep="\t", row.names=F) R Serverlocalhost:6311 |
PCA | rshell |
Perform a PCA of the traits Scriptrequire(vegan) require(ape) require(MASS) require(ggplot2) mg = eval(parse(text=traitsIn)); #Principal Component Analysis (PCA) mg.pca <-prcomp(mg[,4:ncol(mg)], scale=T) cat("Traits PCA summary\n", capture.output(summary(mg.pca)),file=traitsPcaLog, sep="\n") #79.1% PCA1 mg.trait.pca<-data.frame(mg.pca$x[,1:2]) mg.trait.pca<-cbind(mg.trait.pca, mg$Description, mg$TotalMb) colnames(mg.trait.pca)[3]<-"Habitat" #cols<-c("Coastal" = "cyan1","Open Ocean" = "blue","Fresh Water" = "yellow", "Estuary" = "chartreuse", "Mangrove"="darkorange1", "Hypersaline"="red", "Warm Seep"="darkblue", "Reef"="cornflowerblue", "Harbor"="darkgoldenrod4") png(traitsPcaPlot) print(qplot(PC1, PC2, data=mg.trait.pca, size=I(5), colour=Habitat, xlab="PCA1", ylab="PCA2") + scale_colour_brewer(type="qual", palette = "Paired")+theme_bw()+ opts(legend.key = theme_blank())) dev.off() png(traitsBiplot) biplot(mg.pca,cex=0.5, col=c("white", "red")) dev.off() cor.prob <- function(X, dfr = nrow(X) - 2) { R <- cor(X, method="spearman") above <- row(R) < col(R) r2 <- R[above]^2 Fstat <- r2 * dfr / (1 - r2) R[above] <- 1 - pf(Fstat, 1, dfr) R } cor.prob (mg[,4: ncol(mg)]) #Plot (all against all) png(bivariatePlot, height=2048, width=2048) print(plotmatrix(mg[,4: ncol(mg)]) + geom_smooth(method="lm")) dev.off() R Serverlocalhost:6311 |
data_validator | beanshell |
This service validates the input data. Checks if the file is empty and if there are more than ScriptaaOut = null; codonOut = null; dinucOut = null; funcOut = null; phyloOut = null; traitsOut = null; errorOut = ""; String[] iports = {aa, codon, dinuc, func, phylo, traits}; String[] iportsDef = {"Aminoacid", "Codon", "Dinucleotides", "Functional diversity", "Phylogenetic diversity", "Traits"}; // Test if stream is empty for (var o = 0; o < iports.length; o++){ try{ if (iports[o].length() == 0) throw new Exception("ERROR:" + iportsDef[o] + " file is empty.") ; }catch(Exception err){ errorOut = err; return; } } //analysis needs more than 3 metagenomes and 1 column for (var o = 0; o < iports.length; o++){ try{ var rows = iports[o].split("\n"); if (rows.length < 5) throw new Exception("ERROR:" + iportsDef[o] + " file needs more than 3 metagenomes.") ; for (var i = 0; i < rows.length; i++) { field = rows[i].split("\t"); if (field.length <= 1) throw new Exception("ERROR:" + iportsDef[o] + " file needs more than 1 column.") ; } } catch (Exception err){ errorOut = err; return; } } if (errorOut.isEmpty()){ errorOut = "Data validation passed."; aaOut = aa; codonOut = codon; dinucOut = dinuc; funcOut = func; phyloOut = phylo; traitsOut = traits; } |
get_aa | localworker |
Scriptif ((url == void) || (url == null)) { throw new RuntimeException("The url must be specified"); } try { URL inputURL = new URL(url); URLConnection con = inputURL.openConnection(); InputStream in = con.getInputStream(); StringBuffer result = new StringBuffer(); BufferedReader reader; String encoding = con.getContentEncoding(); if (encoding == null) { reader = new BufferedReader(new InputStreamReader(in)); } else { reader = new BufferedReader(new InputStreamReader(in, encoding)); } String line = null; String NEWLINE = System.getProperty("line.separator"); while ((line = reader.readLine()) != null) { result.append(line); result.append(NEWLINE); } reader.close(); contents = result.toString(); } catch (Exception e) { contents = url; } |
get_codon | localworker |
Scriptif ((url == void) || (url == null)) { throw new RuntimeException("The url must be specified"); } try { URL inputURL = new URL(url); URLConnection con = inputURL.openConnection(); InputStream in = con.getInputStream(); StringBuffer result = new StringBuffer(); BufferedReader reader; String encoding = con.getContentEncoding(); if (encoding == null) { reader = new BufferedReader(new InputStreamReader(in)); } else { reader = new BufferedReader(new InputStreamReader(in, encoding)); } String line = null; String NEWLINE = System.getProperty("line.separator"); while ((line = reader.readLine()) != null) { result.append(line); result.append(NEWLINE); } reader.close(); contents = result.toString(); } catch (Exception e) { contents = url; } |
get_dinuc | localworker |
Scriptif ((url == void) || (url == null)) { throw new RuntimeException("The url must be specified"); } try { URL inputURL = new URL(url); URLConnection con = inputURL.openConnection(); InputStream in = con.getInputStream(); StringBuffer result = new StringBuffer(); BufferedReader reader; String encoding = con.getContentEncoding(); if (encoding == null) { reader = new BufferedReader(new InputStreamReader(in)); } else { reader = new BufferedReader(new InputStreamReader(in, encoding)); } String line = null; String NEWLINE = System.getProperty("line.separator"); while ((line = reader.readLine()) != null) { result.append(line); result.append(NEWLINE); } reader.close(); contents = result.toString(); } catch (Exception e) { contents = url; } |
get_func | localworker |
Scriptif ((url == void) || (url == null)) { throw new RuntimeException("The url must be specified"); } try { URL inputURL = new URL(url); URLConnection con = inputURL.openConnection(); InputStream in = con.getInputStream(); StringBuffer result = new StringBuffer(); BufferedReader reader; String encoding = con.getContentEncoding(); if (encoding == null) { reader = new BufferedReader(new InputStreamReader(in)); } else { reader = new BufferedReader(new InputStreamReader(in, encoding)); } String line = null; String NEWLINE = System.getProperty("line.separator"); while ((line = reader.readLine()) != null) { result.append(line); result.append(NEWLINE); } reader.close(); contents = result.toString(); } catch (Exception e) { contents = url; } |
get_phylo | localworker |
Scriptif ((url == void) || (url == null)) { throw new RuntimeException("The url must be specified"); } try { URL inputURL = new URL(url); URLConnection con = inputURL.openConnection(); InputStream in = con.getInputStream(); StringBuffer result = new StringBuffer(); BufferedReader reader; String encoding = con.getContentEncoding(); if (encoding == null) { reader = new BufferedReader(new InputStreamReader(in)); } else { reader = new BufferedReader(new InputStreamReader(in, encoding)); } String line = null; String NEWLINE = System.getProperty("line.separator"); while ((line = reader.readLine()) != null) { result.append(line); result.append(NEWLINE); } reader.close(); contents = result.toString(); } catch (Exception e) { contents = url; } |
get_traits | localworker |
Scriptif ((url == void) || (url == null)) { throw new RuntimeException("The url must be specified"); } try { URL inputURL = new URL(url); URLConnection con = inputURL.openConnection(); InputStream in = con.getInputStream(); StringBuffer result = new StringBuffer(); BufferedReader reader; String encoding = con.getContentEncoding(); if (encoding == null) { reader = new BufferedReader(new InputStreamReader(in)); } else { reader = new BufferedReader(new InputStreamReader(in, encoding)); } String line = null; String NEWLINE = System.getProperty("line.separator"); while ((line = reader.readLine()) != null) { result.append(line); result.append(NEWLINE); } reader.close(); contents = result.toString(); } catch (Exception e) { contents = url; } |
Name | Description | Inputs | Outputs |
---|---|---|---|
data_validator | This service validates the input data. Checks if the file is empty and if there are more than |
aa codon dinuc func phylo traits |
aaOut codonOut dinucOut funcOut phyloOut traitsOut errorOut |
Name | Description |
---|---|
Validator_out | Report data validator state |
funcMantel | |
phyloMantel | |
funcNmdsPlot | |
funcNmdsTxt | |
phyloNmdsPlot | |
phyloNmdsTxt | |
bivariatePlot | |
traitsBiplot | |
traitsPcaPlot | |
summary_traits |
Source | Sink |
---|---|
read_files_data_tranformation_pca_calculation:phyloHelOut | NMDS:phyloHelIn |
read_files_data_tranformation_pca_calculation:funcHelOut | NMDS:funcHelIn |
read_files_data_tranformation_pca_calculation:phyloOut | NMDS:phyloIn |
read_files_data_tranformation_pca_calculation:traitsOut | NMDS:traitsIn |
data_validator:aaOut | read_files_data_tranformation_pca_calculation:aa |
data_validator:codonOut | read_files_data_tranformation_pca_calculation:codon |
data_validator:dinucOut | read_files_data_tranformation_pca_calculation:dinuc |
data_validator:funcOut | read_files_data_tranformation_pca_calculation:func |
data_validator:phyloOut | read_files_data_tranformation_pca_calculation:phylo |
data_validator:traitsOut | read_files_data_tranformation_pca_calculation:traits |
read_files_data_tranformation_pca_calculation:phyloHelOut | Mantel:phyloHelIn |
read_files_data_tranformation_pca_calculation:funcHelOut | Mantel:funcHelIn |
read_files_data_tranformation_pca_calculation:aaDfOut | Mantel:aaDfIn |
read_files_data_tranformation_pca_calculation:codonDfOut | Mantel:codonDfIn |
read_files_data_tranformation_pca_calculation:dinucDfOut | Mantel:dinucDfIn |
read_files_data_tranformation_pca_calculation:traitsOut | Mantel:traitsIn |
read_files_data_tranformation_pca_calculation:traitsOut | PCA:traitsIn |
get_aa:contents | data_validator:aa |
get_codon:contents | data_validator:codon |
get_dinuc:contents | data_validator:dinuc |
get_func:contents | data_validator:func |
get_phylo:contents | data_validator:phylo |
get_traits:contents | data_validator:traits |
aa | get_aa:url |
codon | get_codon:url |
dinuc | get_dinuc:url |
func | get_func:url |
phylo | get_phylo:url |
traits | get_traits:url |
data_validator:errorOut | Validator_out |
Mantel:funcMantel | funcMantel |
Mantel:phyloMantel | phyloMantel |
NMDS:func_nmds | funcNmdsPlot |
NMDS:funcNmds | funcNmdsTxt |
NMDS:phylo_nmds | phyloNmdsPlot |
NMDS:phyloNmds | phyloNmdsTxt |
PCA:bivariatePlot | bivariatePlot |
PCA:traitsBiplot | traitsBiplot |
PCA:traitsPcaPlot | traitsPcaPlot |
read_files_data_tranformation_pca_calculation:summary_traits | summary_traits |
None
Workflow Type
Version 7 (of 9)
None
- acids
- |
- analysis
- |
- biovel
- |
- data
- |
- diversity
- |
- ecological
- |
- metagenomics
- |
- nucleotide
- |
- pca
- |
- plots
- |
- sample
- |
- samples
- |
- sampling
- |
- statistics
- |
- trait
- |
- traits
- |
- workflow
- analysis
- |
- data
- |
- diversity
- |
- ecological
- |
- metagenomics
- |
- pca
- |
- plots
- |
- sample
- |
- sampling
- |
- statistics
- |
- trait
- |
- traits
- |
- workflow
Log in to add Tags
Shared with Groups (2)
Statistics
In chronological order:
-
Created by Antonio Fernandez-Guerra on Wednesday 19 December 2012 23:11:07 (UTC)
-
Created by Antonio Fernandez-Guerra on Thursday 20 December 2012 11:20:56 (UTC)
-
Created by Antonio Fernandez-Guerra on Thursday 20 December 2012 11:25:45 (UTC)
-
Created by Antonio Fernandez-Guerra on Sunday 11 August 2013 21:16:04 (UTC)
Revision comment:Workflow updated to be compatible with BioVeL portal.
- Using png output instead of pdf
- Auto color picking for plots
- Use of local Rserver
-
Created by Antonio Fernandez-Guerra on Sunday 11 August 2013 21:20:11 (UTC)
Revision comment:Workflow updated to be compatible with BioVeL portal.
- Using png output instead of pdf
- Auto color picking for plots
- Use of local Rserver
-
Created by Antonio Fernandez-Guerra on Sunday 11 August 2013 22:16:40 (UTC)
Revision comment:Workflow updated to be compatible with BioVeL portal.
- Using png output instead of pdf
- Auto color picking for plots
- Use of local Rserver
-
Created by Antonio Fernandez-Guerra on Monday 12 August 2013 14:53:00 (UTC)
Revision comment:- Now user is able to use the default URLs, own URLs or upload files
-
Created by Antonio Fernandez-Guerra on Wednesday 20 August 2014 18:15:13 (UTC)
Revision comment:Now you just need to retrieve input data from http://mb3is.megx.net/mg-traits/samples for the statistical analysis.
-
Created by Renzo on Wednesday 12 November 2014 09:45:08 (UTC)
Revision comment:Updated plotmatrix from ggplot2 to ggpairs from GGally. Now the R package GGally is required.
Reviews (0)
Other workflows that use similar services (0)
There are no workflows in myExperiment that use similar services to this Workflow.
Comments (0)
No comments yet
Log in to make a comment