Analysis of Stream Biofilm Diversity Part 1 of 3 - Sampling Network
Summary of Section 1: Sampling Network
1.1. Long-term stream monitoring sites along the Gwynns Falls and
Oregon Ridge watersheds, excluding McDonogh.
Section 1: Sampling Network
Stream biofilm bacteria were collected from the BES long-term sampling
network including 4 longitudinal sites along the Gwynns Falls
watershed (excluding the Gwynns Falls tributary at McDonogh School)
and 4 sites in smaller watersheds in or near the Gwynns Falls. The two
watersheds provide a gradient of land use areas (forest,
rural/suburban, urban). For more details on sampling sites, see below
and refer to the metadata record for "Baltimore Ecosystem Study
stream chemistry and stream flow overview, methods, and
procedures."
Longitudinal sites along the Gwynns Falls
1.Boundary Station 1. Gwynns Falls at Glyndon. This site samples
drainage from approximately 96 ha of suburban land at the headwaters
of our main study stream.
2.Boundary Station 2. Gwynns Falls at Gwynnbrook/Delight. This site
samples drainage from approximately 1,000 ha of old and new suburban
and suburbanizing land use.
3.Boundary Station 3. Gwynns Falls at Villa Nova. This site samples
drainage from approximately 7,400 ha of old and new suburban and
suburbanizing land use. Streamflow at this station has been monitored
continuously by the USGS since 1957 (with a hiatus from 1988 - 1995).
This station is the boundary between the urban and suburban portions
of the Gwynns Falls.
4.Boundary Station 4. Gwynns Falls at Route 1/Carroll Park. This sites
samples drainage from approximately 16,000 ha of mixed suburban and
urban watershed. The site has been monitored by USGS since 1994 and
represents the boundary condition for entire Gwynns Falls above head
of tidal influence. This station allows for evaluation of the urban
portion of the Gwynns Falls watershed by comparison with the Gwynns
Falls at Villa Nova station (station #3 above). Note: biofilm samples
were taken about 50 meters east from the Carroll Park monitoring
station, just under the I95 highway overpass, due to high water depth,
high water flow, and lack of rock substrates for sampling.
Small watersheds
1.Small Watershed 1. Pond Branch. This is a completely forested
"reference" 41 ha watershed located in a county park.
2.Small Watershed 3. Dead Run. The site samples high density urban
residential land use.
3.Small Watershed 5. Baisman Run at Ivy Hill Road. This is a 381 ha,
80% forested watershed with unsewered residential land use (i.e.,
septic tank use) in the headwaters.
4.Small Watershed 8. Gwynns Run. This is an urban watershed that is a
target of efforts to improve sanitary sewer infrastructure in the City
of Baltimore. Samples are taken just above the confluence of this
tributary with the main stem of the Gwynns Falls, approximately 200 m
above the Carroll Park main stem station. It is a small, but highly
contaminated tributary on the main stem.
Analysis of Stream Biofilm Diversity Part 2 of 3 - Sample Collection
and Processing
Summary of Section 2: Sample Collection and Processing
2.1. Collection of Stream Biofilms
2.2. DNA Extraction
Section 2: Sample Collection and Processing
Stream biofilms were sampled seasonally using the following protocol:
1.Rinse all equipment (graduated cylinder, collection bin, scrubbing
brushes, squeeze bottle, 60 ml sample bottles) in stream water and
collect stream water in squeeze bottle upstream of rinsing area.
2.Collect 5 rocks from sampling site, making sure to collect all
biofilm types available (different algal growth forms and colors), and
from different locations within the site. In other words, do not
collect rocks from only one spot and do not select only rocks with
lots of biofilm growth. Select rocks that are at least 2 inches long
but not too large (>6 or 7 inches).
3.Place rocks in collection bin and rinse with stream water using the
squeeze bottle. Use scrubbing brushes to brush as much biofilm off the
rocks as possible, breaking up any large algal filaments. Rinse rocks
with additional stream water as needed.
4.Place scrubbed and rinsed rocks into plastic bag. When all rocks are
scrubbed, rinse scrubbing brushes and gloves into collection bin.
5.Measure the volume of the slurry in collection bin using a large
graduated cylinder. Note the volume in field notes.
6.Pour slurry back into collection bin and subsample using a turkey
baster into sampling bottles, making sure to homogenize the slurry
each time.
7.Use a pipette to subsample the slurry for bacteria into sterile
microcentrifuge tubes.
8.Rinse graduated cylinder, collection bin, and scrubbing brushes in
stream water.
9.Put samples on ice until further processing in the laboratory (e.g.,
chlorophyll a and ash-free dry mass analysis). Freeze bacterial
samples in -80 degrees C until future processing for DNA extraction.
10. After subsamples are taken for chlorophyll a and ash-free dry mass
analysis, preserve remaining sample in Lugol's Iodine or RNALater for
diatom/algal composition analysis.
2.2. DNA Extraction and Sequencing
DNA extraction was performed following instructions in the MoBio
Powersoil DNA extraction kit (MoBio Laboratories, Carlsbad, CA).
PCR amplification of partial bacterial 16S rRNA genes was performed
using primers 515F and 806R, which amplify the V4 hypervariable region
of bacterial and archaeal 16S rRNA genes. Amplicons were sequenced in
a 2x250 base pair paired-end format using the Illumina MiSeq platform.
Sequencing of amplicons was performed by DNA Services Facility at the
University of Illinois at Chicago (Chicago, IL). Paired reads were
assembled and demultiplexed, and any sequences with ambiguities or
homopolymers longer than 8 bases were removed from the dataset.
Analysis of Stream Biofilm Diversity Part 3 of 3 - Sequence Analysis
Summary of Section 3: Sequence Analysis
3.1. mothur
3.2. Taxonomic Classification
3.3. MiSeq Pipeline
Section 3: Sequence Analysis
Sequences were aligned using the SILVA-compatible alignment database
available within MOTHUR. Sequences were trimmed to a uniform length of
275 base pairs, and chimeric sequences were removed using Uchime.
Sequences were processed to obtain the relative abundances of
operational taxonomic units (OTUs; based on 97 % sequence identity) by
using MOTHUR v.1.35.1.
For more details on MOTHUR and analysis of sequences generated using
Illumina MiSeq platform, refer to:
http://www.mothur.org/wiki/Main_Page
http://www.mothur.org/wiki/MiSeq_SOP
Sequences were classified using the MOTHUR-formatted version of the
16S rRNA reference RDP training set (v.9), and any unknown (i.e., not
identified as bacterial) chloroplast, mitochondrial, archaeal, and
eukaryotic sequences were removed. Taxonomic classifications were made
to the lowest level possible (down to genus) using the Bayesian
classifier method by Wang et al. 2007.
Wang, Q., Garrity, G. M., Tiedje, J. M., and Cole, J. R. (2007). Naive
Bayesian classifier for rapid assignment of rRNA sequences into the
new bacterial taxonomy. Applied and Environmental Microbiology,
73(16): 5261-5267. http://doi.org/10.1128/AEM.00062-07
3.3 MiSeq Pipeline
The following is a list of commands entered into the MOTHUR program to
obtain the bacterial taxonomic classifications.
Make.contigs(file=BESB.files, processors=8)
summary.seqs(fasta=BESB.trim.contigs.fasta)
trim.seqs(fasta=current, oligos=ASBFIN.oligos, pdiffs=2)
list.seqs(fasta=current)
get.seqs(group=current)
summary.seqs(fasta=BESB.trim.contigs.trim.fasta)
screen.seqs(fasta=current, group=current, maxambig=0, maxlength=275)
summary.seqs(fasta=BESB.trim.contigs.trim.good.fasta)
unique.seqs(fasta=current)
count.seqs(name=current, group=current)
summary.seqs(fasta=BESB.trim.contigs.trim.good.unique.fasta,
count=BESB.trim.contigs.trim.good.count_table)
align.seqs(fasta=current, reference=silva.bacteria.fasta)
summary.seqs(fasta=BESB.trim.contigs.trim.good.unique.align,
count=current)
screen.seqs(fasta=current, count=current, summary=current,
start=13862, end=23444, maxhomop=8)
summary.seqs(count=current)
filter.seqs(fasta=current, vertical=T, trump=.)
summary.seqs(fasta=BESB.trim.contigs.trim.good.unique.good.filter.fasta,
count=current)
unique.seqs(fasta=current, count=current)
summary.seqs(fasta=BESB.trim.contigs.trim.good.unique.good.filter.unique.fasta,
count=current)
pre.cluster(fasta=current, count=current, diffs=2)
summary.seqs(fasta=BESB.trim.contigs.trim.good.unique.good.filter.unique.precluster.fasta,
count=current)
chimera.uchime(fasta=current, count=current, dereplicate=t)
remove.seqs(fasta=current, accnos=current)
summary.seqs(fasta=BESB.trim.contigs.trim.good.unique.good.filter.unique.precluster.pick.fasta,
count=current)
classify.seqs(fasta=current, count=current,
reference=trainset9_032012.pds.fasta,
taxonomy=trainset9_032012.pds.tax, cutoff=80)
remove.lineage(fasta=current, count=current, taxonomy=current,
taxon=Chloroplast-Mitochondria-unknown-Archaea-Eukaryota)
summary.seqs(fasta=BESB.trim.contigs.trim.good.unique.good.filter.unique.precluster.pick.pick.fasta,
count=current)
system(copy
BESB.trim.contigs.trim.good.unique.good.filter.unique.precluster.pick.pick.fasta
BESB.final.fasta)
system(copy BESB.contigs.pick.good.groups BESB.final.groups)
system(copy BESB.trim.contigs.trim.good.names BESB.final.names)
system(copy
BESB.trim.contigs.trim.good.unique.good.filter.unique.precluster.pick.pds.wang.pick.taxonomy
BESB.final.taxonomy)
system(copy
BESB.trim.contigs.trim.good.unique.good.filter.unique.precluster.uchime.pick.pick.count_table
BESB.final.count_table)
Normalization step: rarefy data down by subsampling to minimum number
of sequences from count.groups (in this case, 69606)
count.groups(count=BESB.final.count_table)
sub.sample(fasta=BESB.final.fasta, count=BESB.final.count_table,
taxonomy=BESB.final.taxonomy, persample=true, size=69606)
count.groups(count=BESB.final.subsample.count_table)
cluster.split(fasta=BESB.final.subsample.fasta,
count=BESB.final.subsample.count_table,
taxonomy=BESB.final.subsample.taxonomy, splitmethod=classify,
taxlevel=4, cutoff=0.15)
make.shared(list=BESB.final.subsample.an.unique_list.list,
count=BESB.final.subsample.count_table, label=0.03)
classify.otu(list=current, count=current,
taxonomy=BESB.final.subsample.taxonomy, label=0.03)
phylotype(taxonomy=BESB.final.subsample.taxonomy)
make.shared(list=BESB.final.subsample.tx.list,
count=BESB.final.subsample.count_table, label=1)
classify.otu(list=BESB.final.subsample.tx.list,
count=BESB.final.subsample.count_table,taxonomy=BESB.final.subsample.taxonomy,
label=1)
summary.tax(taxonomy=current, count=current)