Introduction

Prairie Rivers of Iowa and its partners completed a fourth year of a water monitoring project in Story County. Updated through December.

Keigley Branch was partially frozen on December 20.

# 2023-01-31 Started over with 2023 data
# Import csv file provided by City of Ames
# Skip unneeded columns for tidy format
library(tidyverse)
library(readr)
library(lubridate)
ameslab2023 <- read_csv("data/ameslab2023.csv", na = "NULL",
                        col_types = cols(CollectionDate = col_date(format = "%m/%d/%Y"), 
                                         CollectionTime = col_skip(), Comment = col_skip(), 
                                         MRL = col_skip(), LabID = col_integer(),
                                         Method = col_skip(), Note = col_skip(), 
                                         Symbol = col_skip(), Unit = col_skip()))
# renames a column for clarity
ameslab2023 <- rename(ameslab2023, site = Description)
View(ameslab2023)

# Tidy the data, so each analyte is in a column
ames_tidy<- ameslab2023 %>%
pivot_wider( names_from = Analyte, values_from = Result) %>%
    mutate(Year = year(CollectionDate), Month = month(CollectionDate, label = TRUE), 
           Day = day(CollectionDate))
  # Adds a column from a lookup table to allow ordering sites from upstream to downstream
library(readr)
lookup_US_DS <- read_csv("data/lookup_US_DS.csv")
ames_tidy <- left_join(ames_tidy, lookup_US_DS, by = "site")

If you see a car stopped by a bridge in Story County with someone pulling up a milk jug of water on a rope, there’s a good chance it’s me or volunteer Rick Dietz, doing our monthly monitoring route. We collect water samples from 10 sites, and City of Ames staff cover another five. Laboratory Services for City of Ames Water and Pollution Control tests the samples for nitrate, total phosphorus, total suspended solids, and E. coli bacteria.

Weather and flow conditions

E. coli bacteria

The support of a certified lab provides a backstop for volunteer monitoring and allows us to make direct comparisons with laboratory data from DNR and other agencies. It also allows us to test for E. coli bacteria, an indicator of fecal contamination from human waste, livestock, pets, or wildlife.

Paddling and children’s play on the South Skunk River in Ames.

Single samples are evaluated using a threshold of 235 colonies per 100 mL in waters designated for primary contact recreation and children’s play, and a threshold of 2,880 colonies per 100mL is used for waters designated for secondary contact recreation.

The standards apply from March 15-November 15 and this is when some wastewater treatment plants run disinfecting equipment.

E. coli can be especially high after heavy rains, which can wash animal waste off of fields or out of storm sewers. On September 20 (one day after heavy rains), ten of fourteen sites tested exceeded the secondary contract recreation standard. E. coli counts in excess of 10,000 colonies per 100mL were observed in Clear Creek, and West Indian Creek. No streams met the primary contact recreation standard.

ggplot(data = ames_tidy) +
  geom_col(mapping = aes(x= US_DS_order, y = `E. coli`, fill = Month), position = "dodge2") +
  geom_hline(yintercept = 235, color = 'red') +
  scale_y_log10() +
  annotate("text", x = 4, y = 200, color = 'red', label = "Primary contact standard") +
  geom_hline(yintercept = 2880, color = 'brown')+
    annotate("text", x = 4, y = 2500, color = 'brown', label = "Secondary contact standard") +
  theme_light() +
  theme(axis.text.x = element_text(angle = 90))+
  labs(x = "Sites, arranged upstream to downstream", y = "E. coli (MPN/100mL), plotted on log scale", title = "E. coli in Story County streams, single samples") +
   annotation_logticks(sides = "l")

Beach monitoring ended on Labor Day. E. coli has consistently met the standard at Peterson Park West but often exceeded the standard at Hickory Grove Lake.

Phosphorus

Phosphorus is an essential plant nutrient that contributes to algae blooms when it gets to the water. Phosphorus is using the limiting factor for algae in lakes and reservoirs.

Algae growth in West Indian Creek.

Total phosphorus includes forms of phosphorus that are bound to sediment, so phosphorus concentrations are usually highest shortly after heavy rains when runoff can wash sediment into rivers or high flows can erode streambanks. In February, phosphorus concentrations at 11 out of 15 sites tested exceeded 1.0 mg/L total phosphorus.

However, effluent from wastewater treatment plants (WWTPs) can have a large influence on phosphorus concentrations when streamflow is low and effluent is less diluted. During a dry period in December, total phosphorus in West Indian Creek downstream of the Nevada wastewater treatment plant reached 3.5 mg/L, while a site upstream of Nevada was below the detection limit (0.1 mg/L).

ggplot(data = ames_tidy) +
  geom_col(mapping = aes(x= US_DS_order, y = `Total Phosphorus as P`, fill = Month), position = position_dodge(0.5), width = 0.5) +
    theme_light() +
  scale_y_continuous(breaks = c(seq(0,3.5, 0.5))) +
  theme(axis.text.x = element_text(angle = 90))+
  labs(x = "Sites, arranged upstream to downstream", y = "Total Phosphorus (mg/L)", title = "Lab results from Story County monitoring route")

Total Suspended Solids

Muddy water in Ballard Creek.

Total suspended solids (TSS) are a measure of water clarity that involves weighing the material that settles out the water. The material is usually sediment (mud) but can also include algae and other organic solids. More sediment can be carried when flows are high.

For example, TSS in Ioway Creek ranged from below the detection limit (2.5 mg/L) on a dry day in April to 730 mg/L after heavy rains and snowmelt in February.

During a drought in December, the highest TSS reading was 8.8 mg/L.

ggplot(data = ames_tidy) +
  geom_col(mapping = aes(x= US_DS_order, y = `Total Suspended Solids`, fill = Month), position = "dodge2") +
 # scale_y_log10() +
 #  annotation_logticks(sides = "l") +
  theme_light() +
    theme(axis.text.x = element_text(angle = 90))+
  labs(x = "Sites, arranged upstream to downstream", y = "Total Suspended Solids (mg/L)", title = "Lab results from Story County monitoring route")

Nitrogen

Nitrogen is an essential plant nutrient, but contributes to the “dead zone” when it reaches the Gulf of Mexico. Nitrogen losses are usually highest in watersheds with a lot of tile-drained agriculture, and during times when tile lines are flowing. Read here to see this in action.

Drainage tile outlet at Walnut Creek.

Typically nitrate levels are lowest in late summer and early fall, due to drier conditions, greater use of nitrogen by crops, and more active denitrifying bacteria in streams. In December, nitrate ranged from less than 1 mg/L at two sites to 8.5 mg/L in West Indian Creek below the Nevada WWTP.

ggplot(data = ames_tidy) +
  geom_col(mapping = aes(x= US_DS_order, y = `Nitrate Nitrogen as N`, fill = Month), position = "dodge2") +
    geom_hline(yintercept = 10, color = 'coral')+
    theme_light() +
    scale_y_continuous(breaks = c(seq(0,24,2))) +
  theme(axis.text.x = element_text(angle = 90))+
  labs(x = "Sites, arranged upstream to downstream", y = "Nitrate-N (mg/L)", title = "Lab results from Story County monitoring route")