Microbial Diversity differences within Aerobic Granular Sludge and Activated Sludge Flocs
M-K H. Winkler1, R. Kleerebezem1, L.M.M de Bruin2, P.J.T. Verheijen1, B. Abbas1, J. Habermacher1,3, M.C.M. van Loosdrecht1
1 Department of Biotechnology, Delft University of Technology, Julianalaan 67, 2628 BC Delft, The Netherlands
2 DHV The Netherlands
3Federal Polytechnical Highschool Lausanne (EPFL), Department of Environmental Science and Engineering, Switzerland
Corresponding Author E-mail:
Supplementary Figure S1 A) Averaged influent characteristic of both systems for temperature (dashed line) COD concentration (black line) and ammonium concentration (gray line) as well as S1 B) corresponding averaged ammonium effluent concentrations of the flocculent system (dotted line) and granular system (gray line) as well as the averaged effluent nitrate concentrations for the granular system (black line) over a time frame of 400 days.
Supplementary Figure S2 Heatmaps derived from constructed densiometric curves (GelCompare) of the amoA DNA DGGE gel of the aerobic granular (left) and flocculent sludge (right) as well as sequencing accession numbers for selected bands from 7 samples taken over a period of 400 days. The grey-scale corresponds to bins of intervals of relative band intensity
Supplementary information S3:Code for construction of heatmaps in visual basics
After information was downloaded from gelcompare a script in visual basic was run to construct the heatmaps:
Dim col As Integer
Sub HeatMap()
For Each cell In Selection
If Not cell.Text = "" Then
If cell.Value = 0 Then
col = 255
ElseIf cell.Value > 0.0095 And cell.Value < 0.026 Then
col = 204
ElseIf cell.Value >= 0.026 And cell.Value < 0.0412 Then
col = 153
ElseIf cell.Value >= 0.0412 And cell.Value < 0.0748 Then
col = 102
ElseIf cell.Value >= 0.0748 And cell.Value < 0.2082 Then
col = 51
ElseIf cell.Value >= 0.2082 Then
col = 0
Else
col = 255
End If
Else
col = 255
End If
cell.Interior.Color = RGB(col, col, col)
cell.Font.Color = RGB(col, col, col)
Next
End Sub
Supplementary information S4: Here an example of the R! code is given for the construction of the Multi-dimensional scaling analysis, which is named here PcoA analysis (principle component analysis)
###### Load all required libraries to run the script
# Load the required library vegan
require(vegan)
# Load the required library analogue
require(analogue)
# Load the required library cluster
require(cluster)
# Load ade4
require(ade4)
#Load agnes
require (stats)
require (mvpart)
require (boot)
require(MASS)
source("pcall.R")
source("pcacircle.R")
source("evplot.R")
source("vecfit.R")
################################################################################
### 1. Import the data sets (csv files) from Gelcompare in this case the file was named "amoA_AGS_proportions.csv"
### ------
## Build data frame from CSV files (separator = ;)
prop = read.csv2("amoA_AGS_proportions.csv", header=TRUE, dec=",", row.names=1)
### 2. Standardize data (chord. distance should be applied, in order to avoid effect of double zeros, this is done by method "normalize" of the function "decostand"))
### ------
norm_prop=decostand(prop, "normalize")
### 3. Distance matrix calculation
### ------
dist_norm_prop=vegdist(norm_prop, "euclidean")
### 4. Calculation and storage of PCoA for all patterns and eigenvalues
pcoa=cmdscale(dist_norm_prop, k=(nrow(prop)-1), eig=TRUE)
### 5. Site scores: helps to find the Dimensions from the previous analyze
sc_pcoa = scores(pcoa)
### 6. Retrieve eigenvalues from the created PCoA
ev_pcoa = pcoa$eig
names(ev_pcoa) = paste("Dim", 1:length(ev_pcoa), sep="")
### 7. Selection of axis : Apply Kaiser's rule to select axes (only the eigenvalues which are higher than the average eigenvalue)
ev_pcoa[ev_pcoa > mean(ev_pcoa)]
### 8. Plot eigenvalues and % of variance for each axis; compare variation to broken stick model the function was written by F.Gilles
evplot(ev_pcoa)
### 9. calculate percentage of variation of Dim 1, Dim 2 and Dim 3
100 * ev_pcoa[1]/sum(ev_pcoa)
100 * ev_pcoa[2]/sum(ev_pcoa)
100 * ev_pcoa[3]/sum(ev_pcoa)
### 10. Plot communities on the ordination plane 1/2
windows(5,5)
ordiplot(scores(pcoa)[,c(1,2)], type="text", main="amoA PCoA, AGS, chord distance", xlab=names(ev_pcoa)[1], ylab=names(ev_pcoa)[2])
abline(h=0, lty=3)
abline(v=0, lty=3)
### 11. Plot communities on the ordination plane 1/3
windows(5,5)
ordiplot(scores(pcoa)[,c(1,3)], type="text", main="amoA PCoA, AGS, chord distance", xlab=names(ev_pcoa)[1], ylab=names(ev_pcoa)[3])
abline(h=0, lty=3)
abline(v=0, lty=3)