August 2016, Amsterdam

3D aggregate from lake Markermeer

The interactive 3D model below shows a slice through an aggregate collected from lake Markermeer, the Netherlands (June 2016). Each color in this aggregate model represents a different aggregate constituent. Blue corresponds to algae, green to bacteria, red to exopolysaccharides ('extracellular sugars', EPS) and white to alkaline phosphatase activity. The slide is 140 µm wide, 140 µm long and 30 µm thick.


Algae are at the base of the food web, directly or indirectly feeding higher trophic levels like shellfish, fish and birds. Some algae affect water quality by producing toxins and/or smelly scums on top of the water column that could suffocate other aquatic life. For these and other reasons, it is important to understand what factors drive algal growth.

In lake Markermeer, we do not understand why algae are able to grow in the water column. Algae require both light and nutrients (including orthophosphate) to grow. High concentrations of suspended lake bed particles quickly attenuate incident light in lake Markermeer. Consequently, it is likely that only the top surface layer of the water column provides sufficient light intensities for algal growth. Yet, orthophosphate concentrations in the water column - including the top surface layer with sufficient light - are very low. So how do algae acquire both light and nutrients to grow?

New insight

As you can see in the 3D model, Markermeer aggregates exhibit alkaline phosphatase activity (white). Alkaline phosphatases are enzymes that can release orthophosphate from organic phosphorus-comprising compounds. Thus, these aggregates potentially provide algae (blue) with nutrients in the surface layer of the water column. The location of alkaline phosphatase matches that of bacteria (green). This could indicate that bacteria produced these enzymes. Furthermore, you can see that algae, bacteria and alkaline phosphatases are embedded in exopolysaccharides (red). We expect that these extracellular sugars promote aggregate constituents to stick together.


Image acquisition

Image data to construct the 3D model were acquired using an inverted confocal laser scanning microscope (LSM510, Zeiss). Images were acquired at different 'depths' (distances from the top/ bottom) of the aggregate. These optical slices were stacked on top of each other in order to reconstruct a 3D image. The different aggregate constituents (algae, bacteria, exopolysaccharides, ALPase activity) were detected by their different fluorescent properties. Algae were identified by a fluorescent pigment, chlorophyll a. The other constituents (bacteria, exopolysaccharides and ALPase activity) were labeled with fluorescent compounds (Syto-9, TRITC labeled lectins and ELF-97 substrate, respectively) prior to image acquisition.

Model construction

From the image stack, a 3D model was constructed. Raw stack data was converted to a 4-channel TIFF-image stack using ImageJ distribution Fiji. The Tiff-image stack was processed using the MATLAB toolbox DIPimage. The six image processing steps are shown in the codebox below.


%Step1: Stack import.
%Save 4-channel TIFF in Fiji as 'stack.tif'.
image = TIFFStack('stack.tif'); %written by Dylan Muir, creates an image stack matrix
size(image) %shows dimensions of the image stack matrix: x,y,t,z,c.
image = dip_image(image(:,:,:,:,:)); %converts image stack matrix to dipimage object
image = squeeze(image); %removes the singleton (t) dimension.

%Step2: Separate channels.
%In this case: Ch0=Chla; Ch1=bacteria; Ch2=ALPase; Ch3=EPS.

%Step3: Median filter, radius 3 for ALPase and EPS.
ALPase = medif(ALPase,3,'elliptic');
EPS = medif(EPS,3,'elliptic');

%Step4: Subtract background.
EPS = EPS - 0;
Chla = Chla - 10;
bacteria = bacteria -0;
ALPase = ALPase - 70;

%Step5: Make binary.
EPSbin = EPS>40;
EPSbin = 255*EPSbin
Chlabin = Chla >150;
Chlabin = 255*Chlabin
bacteriabin = bacteria >40;
bacteriabin = 255 * bacteriabin
ALPasebin = 255 * ALPasebin
%The binary dipimage stacks open in separate windows.

%Step6: Export to Blender.
%For each binary image stack, in the menu choose Actions > Isosurface plot.
%Adjust the PlotBoxAspectRatio and PatchFace (View> Property Editor > Patch Face).
%Save as FIG-file.
figure2xhtml() %converts the FIG-file displayed in the plot window to .xhtml and .x3d.
The open source 3D creation suite Blender was used to export .x3d files, created using MATLAB, to Sketchfab, in order to publish the model online.

Related content

This project is part of my second MSc thesis, was published in the journal Limnology and Oceanography, and was presented at ISME16 by way of a poster presentation.