Results: Supplemented growth and bioremediation

Modelling Asparagopsis nitrogen bioremediation efficiency in Australian coastal environments

Author

Tormey Reimer

Published

5 August 2026

Load in all the BARRA-R2 cells being used, with their coordinates.
cell_coords <- find_read(envi_data, "R2_cell_coords") %>% 
  mutate(state = factor(state, levels = states_ord)) %>% 
  dplyr::select(-layer)
cells_included <- find_read(runs_data, "include")
cells_omitted <- find_read(runs_data, "omit")

totals <- cell_coords %>% 
  filter(!cell_no %in% cells_omitted) %>% 
  group_by(state) %>% 
  reframe(cells = n())
Get cell growth in ambient (normal) conditions
norm_growth_end <- file.path(runs_data, "cell_growth_end.parquet") %>% 
  read_parquet(mmap = T) %>% 
  merge(cell_coords, by = "cell_no")

# Total N removed at each harvest
norm_growth_end <- norm_growth_end %>% 
  mutate(
    value = TN_end - TN_start,
    value_na = case_when(value <= 0 ~ NA, T ~ value),
    value_0 = case_when(value <= 0 ~ 0, T ~ value),
    month = as.factor(month(parse_date_time(start, orders = "j"))),
    species = factor(species, levels = c("armata", "taxiformis"), labels = c("A. armata", "A. taxiformis"))
  )

norm_growth_total <- norm_growth_end %>% 
  mutate(
    value_na = case_when(value <= 0 ~ NA, T ~ value),
    value_0 = case_when(value <= 0 ~ 0, T ~ value)
  ) %>% 
  group_by(state, species, cell_no, latitude, longitude) %>% 
  reframe(
    total = sumna(value),            # good growth months may be outweighed by bad growth months
    total_na = sumna(value_na),      # bad growth months are removed
    total_na = case_when(total_na == 0 ~ NA, T ~ total_na),
    total_0 = sumna(value_0)       # bad growth months count as zeros
  )
Get cell growth in nitrogen supplemented conditions
supp_growth_end_raw <- file.path(runs_data, "cell_growth_supp_end.parquet") %>% 
  read_parquet(mmap = T) %>% 
  merge(cell_coords, by = "cell_no")

supp_growth_end <- supp_growth_end_raw %>% 
  mutate(
    value = TN_end - TN_start,
    value_na = case_when(value <= 0 ~ NA, T ~ value),
    value_0 = case_when(value <= 0 ~ 0, T ~ value),
    month = as.factor(month(parse_date_time(start, orders = "j"))),
    species = factor(species, levels = c("armata", "taxiformis"), labels = c("A. armata", "A. taxiformis"))
  )

supp_growth_total <- supp_growth_end %>% 
  mutate(
    value_na = case_when(value <= 0 ~ NA, T ~ value),
    value_0 = case_when(value <= 0 ~ 0, T ~ value)
  ) %>% 
  group_by(state, species, cell_no, latitude, longitude) %>% 
  reframe(
    total = sumna(value),            # good growth months may be outweighed by bad growth months
    total_na = sumna(value_na),      # bad growth months are removed
    total_na = case_when(total_na == 0 ~ NA, T ~ total_na),
    total_0 = sumna(value_0)       # bad growth months count as zeros
  )
Join them together for comparison
supplement_change <- left_join(
  norm_growth_end %>% 
    select(-c("TN_start", "TN_end", "start", "value")) %>% 
    rename(
      norm_success = success, 
      norm_rem = TN_rem, 
      norm_value_na = value_na,
      norm_value_0 = value_0
      ), 
  supp_growth_end %>% 
    select(-c("TN_start", "TN_end", "start", "value")) %>% 
    rename(
      supp_success = success, 
      supp_rem = TN_rem,
      supp_value_na = value_na,
      supp_value_0 = value_0
      ), 
  by = c("state", "cell_no", "longitude", "latitude", "species", "month")
) %>% 
  relocate(state, .before = cell_no) %>% 
  relocate(species, .before = state) %>% 
  relocate(longitude, .after = cell_no) %>% 
  relocate(latitude, .after = longitude) %>% 
  relocate(month, .after = latitude)

supplement_change_total <- left_join(
  norm_growth_total %>% 
    rename(
      norm_total = total, 
      norm_total_na = total_na, 
      norm_total_0 = total_0
      ), 
  supp_growth_total %>% 
    rename(
      supp_total = total, 
      supp_total_na = total_na, 
      supp_total_0 = total_0
      ), 
  by = c("state", "cell_no", "longitude", "latitude", "species")
)

Supplemented success change

Provide summaries of the changes in success (ie whether the modelled seaweed was able to successfully growth at all within a cell) between normal and supplemented conditions.

How many/what proportion of cells became successful in each month (and overall) because of supplementation
tc <- supplement_change %>% pull(cell_no) %>% unique() %>% length()

# Which cells changed in success (per month)
norm_success <- supplement_change %>% 
  filter(norm_success) %>% 
  group_by(species, month) %>% 
  reframe(
    norm_success_cells = n(),
    perc_total_cells = 100*n()/tc
  )
success_change <- supplement_change %>% 
  filter(supp_success != norm_success) %>% 
  group_by(species, month) %>% 
  reframe(success_change_cells = n())

norm_success %>% 
  left_join(success_change, by = c("species", "month")) %>% 
  mutate(
    percdiff_change = round(100*success_change_cells/norm_success_cells, 1),
    perctotal_change = round(100*success_change_cells/tc, 1)
  ) %>% 
  select(-norm_success_cells, -success_change_cells) %>% 
  print(n = 24)
# A tibble: 24 × 5
   species       month perc_total_cells percdiff_change perctotal_change
   <fct>         <fct>            <dbl>           <dbl>            <dbl>
 1 A. armata     1               40.100             4.1              1.7
 2 A. armata     2               38.960             1.6              0.6
 3 A. armata     3               38.253             2.8              1.1
 4 A. armata     4               39.624             4.7              1.9
 5 A. armata     5               41.403             7.3              3  
 6 A. armata     6               46.161             9.3              4.3
 7 A. armata     7               51.362            11.9              6.1
 8 A. armata     8               54.665             7.2              3.9
 9 A. armata     9               54.069             4.8              2.6
10 A. armata     10              49.617             4.1              2  
11 A. armata     11              48.093             3.3              1.6
12 A. armata     12              44.484             4.6              2.1
13 A. taxiformis 1               47.506            29.7             14.1
14 A. taxiformis 2               53.115            15.9              8.5
15 A. taxiformis 3               50.724            21.5             10.9
16 A. taxiformis 4               49.966            23.6             11.8
17 A. taxiformis 5               67.084            18.7             12.6
18 A. taxiformis 6               63.526            14.6              9.3
19 A. taxiformis 7               58.180            13                7.6
20 A. taxiformis 8               56.537            12                6.8
21 A. taxiformis 9               57.584             8.9              5.1
22 A. taxiformis 10              54.733            14.4              7.9
23 A. taxiformis 11              39.130            42.6             16.7
24 A. taxiformis 12              40.773            32.9             13.4
How many/what proportion of cells became successful in each month (and overall) because of supplementation
# Which cells changed in success (overall)
norm_success <- supplement_change %>% 
  filter(norm_success) %>% 
  group_by(species) %>% 
  reframe(
    norm_success_cells = n(),
    perc_total_cells = 100*n()/(12*tc)
  )
success_change <- supplement_change %>% 
  filter(supp_success != norm_success) %>% 
  group_by(species) %>% 
  reframe(success_change_cells = n())

norm_success %>% 
  left_join(success_change, by = c("species")) %>% 
  mutate(
    percdiff_change = round(100*success_change_cells/norm_success_cells, 1),
    perctotal_change = round(100*success_change_cells/(tc*12), 1)
  ) %>% 
  select(-norm_success_cells, -success_change_cells)
# A tibble: 2 × 4
  species       perc_total_cells percdiff_change perctotal_change
  <fct>                    <dbl>           <dbl>            <dbl>
1 A. armata               45.566             5.6              2.6
2 A. taxiformis           53.238            19.5             10.4
Calculate the area change (in km2) due to supplementation
library(terra)

rdata_norm <- norm_growth_end %>% 
  select(cell_no, species, success, longitude, latitude, month) %>% 
  group_by(species, cell_no, longitude, latitude) %>% 
  reframe(
    success = as.numeric(any(success)),
    success = case_when(success == 0 ~ NA, T ~ 1)
  )

rdata_norm_arma <- rdata_norm %>% filter(species == "A. armata")
rdata_norm_taxi <- rdata_norm %>% filter(species != "A. armata")

rdata_supp <- supp_growth_end %>% 
  select(cell_no, species, success, longitude, latitude, month) %>% 
  group_by(species, cell_no, longitude, latitude) %>% 
  reframe(
    success = as.numeric(any(success)),
    success = case_when(success == 0 ~ NA, T ~ 1)
  )

rdata_supp_arma <- rdata_supp %>% filter(species == "A. armata")
rdata_supp_taxi <- rdata_supp %>% filter(species != "A. armata")

r_template <- rast(
  extent = ext(c(min(rdata_norm$longitude), max(rdata_norm$longitude), 
                 min(rdata_norm$latitude), max(rdata_norm$latitude))), 
  resolution = 0.12
)

area_success_all <- list()

r <- rasterize(rdata_norm_arma[, c("longitude", "latitude")], r_template, values = rdata_norm_arma$success)
r_area <- cellSize(r, unit = "km")
r_area <- mask(r_area, r)
area_success_all[[1]] <- data.frame(
  species = "A. armata", treatment = "norm", 
  area_km2 = global(r_area, fun = sumna)[[1]]
)

r <- rasterize(rdata_supp_arma[, c("longitude", "latitude")], r_template, values = rdata_supp_arma$success)
r_area <- cellSize(r, unit = "km")
r_area <- mask(r_area, r)
area_success_all[[2]] <- data.frame(
  species = "A. armata", treatment = "supp", 
  area_km2 = global(r_area, fun = sumna)[[1]]
)

r <- rasterize(rdata_norm_taxi[, c("longitude", "latitude")], r_template, values = rdata_norm_taxi$success)
r_area <- cellSize(r, unit = "km")
r_area <- mask(r_area, r)
area_success_all[[3]] <- data.frame(
  species = "A. taxiformis", treatment = "norm", 
  area_km2 = global(r_area, fun = sumna)[[1]]
)

r <- rasterize(rdata_supp_taxi[, c("longitude", "latitude")], r_template, values = rdata_supp_taxi$success)
r_area <- cellSize(r, unit = "km")
r_area <- mask(r_area, r)
area_success_all[[4]] <- data.frame(
  species = "A. taxiformis", treatment = "supp", 
  area_km2 = global(r_area, fun = sumna)[[1]]
)

area_success_all %>% 
  bind_rows() %>% 
  pivot_wider(names_from = treatment, names_prefix = "km2_", values_from = area_km2) %>% 
  mutate(
    km2_diff = km2_supp - km2_norm,
    perc_diff = round(100*km2_diff/km2_norm, 1)
  )
# A tibble: 2 × 5
  species       km2_norm km2_supp km2_diff perc_diff
  <chr>            <dbl>    <dbl>    <dbl>     <dbl>
1 A. armata      873183.  894025.   20842.       2.4
2 A. taxiformis 1480785. 1521979.   41195.       2.8
Find out where cells changed from failure to success under supplemented conditions
supplement_change %>% 
  mutate(success_change = case_when(supp_success != norm_success ~ T, T ~ F)) %>% 
  filter(success_change & species == "A. armata") %>% 
  ggplot(aes(x = longitude, y = latitude, fill = success_change)) +
  geom_tile() +
  geom_sf(data = ozmap_data(data = "states"), inherit.aes = F) +
  coord_sf(
    xlim = c(111.5, 155),
    ylim = c(-44.5, -8.5),
    expand = F
  ) +
  theme_void() + theme(legend.position = "none") +
  facet_wrap(facets = vars(month), nrow = 4) +
  ggtitle("Cells where A. armata became successful in each month under supplementation")

Find out where cells changed from failure to success under supplemented conditions
supplement_change %>% 
  mutate(success_change = case_when(supp_success != norm_success ~ T, T ~ F)) %>% 
  filter(success_change & species == "A. taxiformis") %>% 
  ggplot(aes(x = longitude, y = latitude, fill = success_change)) +
  geom_tile() +
  geom_sf(data = ozmap_data(data = "states"), inherit.aes = F) +
  coord_sf(
    xlim = c(111.5, 155),
    ylim = c(-44.5, -8.5),
    expand = F
  ) +
  theme_void() + theme(legend.position = "none") +
  facet_wrap(facets = vars(month), nrow = 4) +
  ggtitle("Cells where A. taxiformis became successful in each month under supplementation")

Supplemented growth and nitrogen removal

Get mean nitrogen removed per each state/month
supp_growth_month <- supp_growth_end %>% 
  group_by(species, state, month) %>% 
  reframe(
    mean = round(meanna(value_0), 1) %>% set_units("mg m-2"),
    sd = round(sdna(value_0), 1) %>% set_units("mg m-2")
  )
  
supp_growth_month %>% 
  filter(species == "A. armata") %>% 
  select(-sd) %>% 
  pivot_wider(names_from = state, values_from = mean)
# A tibble: 12 × 10
   species   month      NTE      QLD      NSW      SAU     TAS   VIC   WAN   WAS
   <fct>     <fct> [mg/m^2] [mg/m^2] [mg/m^2] [mg/m^2] [mg/m^… [mg/… [mg/… [mg/…
 1 A. armata 1          0        0       71.1    762.9   800.7 795.6   0   530.9
 2 A. armata 2          0        0       44.2    722.2   763.4 760.3   0   456.4
 3 A. armata 3          0        0       45.5    801.9   813.9 812.5   0   468.4
 4 A. armata 4          0        0.8    174.3    795.8   782.9 786.1   0   468.8
 5 A. armata 5          0        3.8    403.4    806.5   759.7 769.1   0.1 524.2
 6 A. armata 6          0       65.2    614.6    763     721.1 728.4   4.6 574.5
 7 A. armata 7          3.7    181      746.2    768.7   711.3 714.5  39.8 676.6
 8 A. armata 8          0      201.4    753.9    769.1   645.1 691.2  35.1 768.2
 9 A. armata 9          0      133.3    734.1    768.8   593.1 703.2  16   772.3
10 A. armata 10         0        2      628.7    804.6   677.7 764.3  12.2 784.1
11 A. armata 11         0        0      486.1    797     733.5 774.9   0.6 731  
12 A. armata 12         0        0      361.4    793.6   789.6 797.1   0   636.9
Get mean nitrogen removed per each state/month
supp_growth_month %>% 
  filter(species == "A. armata") %>% 
  select(-mean) %>% 
  pivot_wider(names_from = state, values_from = sd, names_prefix = "sd_")
# A tibble: 12 × 10
   species   month   sd_NTE   sd_QLD   sd_NSW sd_SAU sd_TAS sd_VIC sd_WAN sd_WAS
   <fct>     <fct> [mg/m^2] [mg/m^2] [mg/m^2] [mg/m… [mg/m… [mg/m… [mg/m… [mg/m…
 1 A. armata 1          0        0      191    161.9   37.3   52.6    0    349.7
 2 A. armata 2          0        0      157.4  162.3   36     43.6    0    358.6
 3 A. armata 3          0        0      166.1  102.4   44.8   42      0    387.5
 4 A. armata 4          0       19.8    274.2   40.9   71.9   72.5    0    369.9
 5 A. armata 5          0       48.2    348     48    140.1  102.3    1.9  359.4
 6 A. armata 6          0      192.2    260.1   92.8  148.7  159.5   52.9  310.5
 7 A. armata 7         42.3    309.9     94.2   99.6  146.8  175.7  161.1  228.9
 8 A. armata 8          0      334.8     68.4   78.6  163.7  171.6  145.6   74  
 9 A. armata 9          0      277.7     51.7   31.3  164     87.4   99.8   33.3
10 A. armata 10         0       31.2    245.8   18.1  108.2   43.6   88.3   58.2
11 A. armata 11         0        0.5    342.5   23.1   76.6   47      9.2  148.5
12 A. armata 12         0        0      354     93.4   45.5   62.4    0    274.9
Get mean nitrogen removed per each state/month
supp_growth_month %>% 
  filter(species != "A. armata") %>% 
  select(-sd) %>% 
  pivot_wider(names_from = state, values_from = mean)
# A tibble: 12 × 10
   species       month      NTE      QLD      NSW    SAU   TAS   VIC   WAN   WAS
   <fct>         <fct> [mg/m^2] [mg/m^2] [mg/m^2] [mg/m… [mg/… [mg/… [mg/… [mg/…
 1 A. taxiformis 1          2.2    327.8    671.8  644.1 235.5 563.3 194.6 748.2
 2 A. taxiformis 2          2.6    278.5    646.5  653.2 340.7 606.6 163.3 726.4
 3 A. taxiformis 3          2.8    336.4    718.3  663.7 340.9 582.1 107.2 780.3
 4 A. taxiformis 4          3.1    494.7    726.1  584.4  75.2 173.1 133.4 757.3
 5 A. taxiformis 5        528.8    763.3    727.4  293.2   0.8  50.4 560   730.6
 6 A. taxiformis 6        785.8    777      663.7   26.1   0     2.3 785.4 561.9
 7 A. taxiformis 7        817      792.7    559.2    0     0     0   813.5 447.3
 8 A. taxiformis 8        811.5    790.1    487.2    0     0     0   810.9 371.9
 9 A. taxiformis 9        784.6    771.7    435      6.9   0     0   783.8 336.8
10 A. taxiformis 10       542.7    779.3    578     13.2   0     0.6 697.1 364.2
11 A. taxiformis 11         3.7    592.5    660.1   89.2   0    31.7 434.4 444.3
12 A. taxiformis 12         0      411      694.4  334.1  10.6 132.5 302.7 685.5
Get mean nitrogen removed per each state/month
supp_growth_month %>% 
  filter(species != "A. armata") %>% 
  select(-mean) %>% 
  pivot_wider(names_from = state, values_from = sd, names_prefix = "sd_")
# A tibble: 12 × 10
   species       month   sd_NTE sd_QLD sd_NSW sd_SAU sd_TAS sd_VIC sd_WAN sd_WAS
   <fct>         <fct> [mg/m^2] [mg/m… [mg/m… [mg/m… [mg/m… [mg/m… [mg/m… [mg/m…
 1 A. taxiformis 1         35.7  365.9   91.4  213.3  257    195.3  327.8   55.5
 2 A. taxiformis 2         43.8  339.4   68.7  184.4  291.1  137.8  294.9   47.2
 3 A. taxiformis 3         43.8  355     59.2  234.4  306.2  198.6  259.8   53  
 4 A. taxiformis 4         48.1  330     84.4  257.6  171.2  285.2  256.6   68  
 5 A. taxiformis 5        201.8   60.9  126.7  277.1    8.6  162.5  271.4  127.8
 6 A. taxiformis 6         18.7   52.6  189.3   58.4    0     18.5   19.3  285.8
 7 A. taxiformis 7         10.5   53.1  273.3    0      0      0     14.3  347.9
 8 A. taxiformis 8         11.5   47.6  289.9    0      0      0     10.4  363  
 9 A. taxiformis 9         39.6   39    288.7   64.7    0      0     59.9  352.1
10 A. taxiformis 10       314     50.5  185.1   95.9    0      6.2  203.3  355.5
11 A. taxiformis 11        20.6  287.1  102    173.9    0.8  106.6  360.7  308.9
12 A. taxiformis 12         0    363.3   69.9  310.8   53.2  231.8  371.5   96.6
Get mean monthly nitrogen removed in each state
supp_growth_annual <- supp_growth_end %>% 
  group_by(species, state) %>% 
  reframe(
    mean = round(meanna(value_0), 1) %>% set_units("mg m-2"),
    sd = round(sdna(value_0), 1) %>% set_units("mg m-2")
  )

supp_growth_annual %>% 
  arrange(species, -mean)
# A tibble: 16 × 4
   species       state     mean       sd
   <fct>         <fct> [mg/m^2] [mg/m^2]
 1 A. armata     SAU      779.5     95.3
 2 A. armata     VIC      758.1    108.3
 3 A. armata     TAS      732.7    127.7
 4 A. armata     WAS      616      303.1
 5 A. armata     NSW      422      358.4
 6 A. armata     QLD       48.9    180.8
 7 A. armata     WAN        9       76.4
 8 A. armata     NTE        0.3     12.3
 9 A. taxiformis NSW      630.6    197.4
10 A. taxiformis QLD      592.9    316.2
11 A. taxiformis WAS      579.6    297  
12 A. taxiformis WAN      482.2    370.7
13 A. taxiformis NTE      357.1    382.2
14 A. taxiformis SAU      275.7    334.1
15 A. taxiformis VIC      178.5    283.1
16 A. taxiformis TAS       83.7    201.3
Get total removed in each state
supp_growth_total <- supp_growth_end %>% 
  group_by(species, state, cell_no) %>% 
  reframe(total = sum(value_0)) %>% 
  group_by(species, state) %>% 
  reframe(total = round(mean(total), 1)) %>% 
  arrange(species, -total)

supp_growth_total
# A tibble: 16 × 3
   species       state  total
   <fct>         <fct>  <dbl>
 1 A. armata     SAU   9354  
 2 A. armata     VIC   9097.1
 3 A. armata     TAS   8792.1
 4 A. armata     WAS   7392.3
 5 A. armata     NSW   5063.6
 6 A. armata     QLD    587.4
 7 A. armata     WAN    108.3
 8 A. armata     NTE      3.7
 9 A. taxiformis NSW   7567.6
10 A. taxiformis QLD   7114.9
11 A. taxiformis WAS   6954.8
12 A. taxiformis WAN   5786.3
13 A. taxiformis NTE   4285  
14 A. taxiformis SAU   3308.2
15 A. taxiformis VIC   2142.6
16 A. taxiformis TAS   1003.8
Code
plot_data <- supp_growth_month %>% 
  mutate(
    mean = drop_units(mean),
    sd = drop_units(sd),
    mean = case_when(is.na(mean) ~ 0, T ~ mean),
    sd = case_when(sd > mean ~ mean, is.na(sd) ~ 0, T ~ sd),
    state = factor(state, levels = states_ord, labels = states_lng),
    month = as.integer(month)
  ) 
  
plot_data %>%
  ggplot(aes(
      x = month, y = mean, ymin = mean - sd, ymax = mean + sd,
      color = state, fill = state, linetype = species
  )) +
  geom_line(linewidth = 0.75) +
  geom_ribbon(alpha = 0.25, linewidth = 0.25) +
  facet_wrap(facets = vars(state), ncol = 2) +
  # scale_y_continuous(breaks = seq(0, 150, 25), limits = c(0, 175), expand = c(0,0)) +
  scale_color_manual(values = states_pal) +
  scale_fill_manual(values = states_pal) +
  env_plot() +
  labs(x = "Day of the year", y = expression("Total N removed (mg m"^-2 *")"))
Figure 1
Code
supp_growth_total %>%
  ggplot(aes(x = longitude, y = latitude, fill = total_na)) +
  geom_tile() +
  geom_sf(data = ozmap_data(data = "states"), inherit.aes = F) +
  coord_sf(xlim = c(111.5, 155), ylim = c(-44.5, -8.5), expand = F) +
  scale_x_continuous(breaks = seq(100, 160, 10)) +
  scale_y_continuous(breaks = seq(-2.5, -45, -5)) +
  scale_fill_viridis_c(
    limits = c(0, 10000),
    breaks = seq(0, 10000, 1500),
    na.value = "grey",
    guide = guide_colorbar(
      title = expression("Total N removed (mg m"^-2 * ")"),
      barheight = 1,
      barwidth = 20,
      title.position = "top",
      title.hjust = 0.5
    )
  ) +
  labs(x = "Longitude", y = "Latitude") +
  prettyplot() +
  theme(legend.position = "top", strip.text = element_blank(), strip.background = element_blank()) +
  facet_grid(rows = vars(species))

Difference in nitrogen removal from ambient

Get difference in mean nitrogen removed per each state/month
norm_growth_month <- norm_growth_end %>% 
  group_by(species, state, month) %>% 
  reframe(
    mean = meanna(value_0) %>% set_units("mg m-2"),
    sd = sdna(value_0) %>% set_units("mg m-2")
  )
  
diff_growth_month <- left_join(
  norm_growth_month %>% select(-sd) %>% rename(norm_mean = mean),
  supp_growth_month %>% select(-sd) %>% rename(supp_mean = mean),
  by = c("species", "state", "month")
) %>% 
  mutate(
    perc_diff = round(100*(supp_mean-norm_mean)/norm_mean, 1),
    times = round(supp_mean/norm_mean, 1)
  )

diff_growth_month %>% 
  select(species, state, month, perc_diff) %>% 
  pivot_wider(names_from = state, values_from = perc_diff, names_prefix = "pd_") %>% 
  print(n=24)
# A tibble: 24 × 10
   species    month  pd_NTE pd_QLD pd_NSW   pd_SAU  pd_TAS  pd_VIC pd_WAN pd_WAS
   <fct>      <fct>     [1]    [1]    [1]      [1]     [1]     [1]    [1]    [1]
 1 A. armata  1       NaN    NaN   3360.1    893.3  1147.8  1140.6  NaN   1368.6
 2 A. armata  2       NaN    NaN   1927.4    578     680.3   660.7  NaN    774.3
 3 A. armata  3       NaN    NaN   1210.5    489.2   471.9   476    NaN   1104  
 4 A. armata  4       NaN   1254.5  851.1    398.6   367.1   362.2  NaN   1063.2
 5 A. armata  5       NaN   1402.3  774.5    454.6   438.2   461.1  Inf   1282.6
 6 A. armata  6       NaN   1129.5  522.1    478.4   477.9   448.8 1049.2 1314.4
 7 A. armata  7      7955.7  983.4  554.7    546.2   600.9   549.6 1615.2 1662.5
 8 A. armata  8       NaN    783.5  583.6    541.9   786.5   619.6 1703.4 1494.9
 9 A. armata  9       NaN    605.1  603.9    475.1   850.5   584.8 1655.3 1274.2
10 A. armata  10      NaN    518.8  937.9    435.9   686     475.3 1326.2 1494.4
11 A. armata  11      NaN    NaN    812.2    396.3   478.8   397.1  761.9 1192.3
12 A. armata  12      NaN    NaN   1632.8    621     686.3   666.9  NaN   1449.3
13 A. taxifo… 1       906.5 1352.8 4354.4   1090.1  4942.5  2252.8  517.9 1175.6
14 A. taxifo… 2       416   1047.2 2831.8    661.7  1321.4  1036.4  445.8  686.5
15 A. taxifo… 3       592   1942.8 2231.9    664.2  1038.2   916.4  572.5  951.8
16 A. taxifo… 4       440.6 1621.1  810.1    677    1294.1   669.6  836.6  892.6
17 A. taxifo… 5      1076.6 1197.7  726.7   1365.3   Inf     979.6  824.5 1200.3
18 A. taxifo… 6       833.7 1143.5  631.2 178986.    NaN     Inf    794.7 1360.5
19 A. taxifo… 7      1392.9 1397.1  871.8    NaN     NaN     NaN   1296.9 1791.3
20 A. taxifo… 8      1603.8 1288.5 1215      NaN     NaN     NaN   1482.2 1521.9
21 A. taxifo… 9      1135.3  993.6 1314     1404.3   NaN     NaN   1084.4 1285  
22 A. taxifo… 10      809.2  921.6 2272.9    970.4   NaN     Inf    975.7 1687.9
23 A. taxifo… 11    18685.   813.1 1506.1   1676.2   NaN   98371.   646.1 1386.1
24 A. taxifo… 12      NaN   1148.5 2489     1257.1 21006.   2453.5  595.4 1537.2
Get difference in mean nitrogen removed per each state/month
diff_growth_month %>% 
  select(species, state, month, times) %>% 
  pivot_wider(names_from = state, values_from = times, names_prefix = "t_") %>% 
  print(n=24)
# A tibble: 24 × 10
   species       month t_NTE t_QLD t_NSW  t_SAU t_TAS t_VIC t_WAN t_WAS
   <fct>         <fct>   [1]   [1]   [1]    [1]   [1]   [1]   [1]   [1]
 1 A. armata     1     NaN   NaN    34.6    9.9  12.5  12.4 NaN    14.7
 2 A. armata     2     NaN   NaN    20.3    6.8   7.8   7.6 NaN     8.7
 3 A. armata     3     NaN   NaN    13.1    5.9   5.7   5.8 NaN    12  
 4 A. armata     4     NaN    13.5   9.5    5     4.7   4.6 NaN    11.6
 5 A. armata     5     NaN    15     8.7    5.5   5.4   5.6 Inf    13.8
 6 A. armata     6     NaN    12.3   6.2    5.8   5.8   5.5  11.5  14.1
 7 A. armata     7      80.6  10.8   6.5    6.5   7     6.5  17.2  17.6
 8 A. armata     8     NaN     8.8   6.8    6.4   8.9   7.2  18    15.9
 9 A. armata     9     NaN     7.1   7      5.8   9.5   6.8  17.6  13.7
10 A. armata     10    NaN     6.2  10.4    5.4   7.9   5.8  14.3  15.9
11 A. armata     11    NaN   NaN     9.1    5     5.8   5     8.6  12.9
12 A. armata     12    NaN   NaN    17.3    7.2   7.9   7.7 NaN    15.5
13 A. taxiformis 1      10.1  14.5  44.5   11.9  50.4  23.5   6.2  12.8
14 A. taxiformis 2       5.2  11.5  29.3    7.6  14.2  11.4   5.5   7.9
15 A. taxiformis 3       6.9  20.4  23.3    7.6  11.4  10.2   6.7  10.5
16 A. taxiformis 4       5.4  17.2   9.1    7.8  13.9   7.7   9.4   9.9
17 A. taxiformis 5      11.8  13     8.3   14.7 Inf    10.8   9.2  13  
18 A. taxiformis 6       9.3  12.4   7.3 1790.9 NaN   Inf     8.9  14.6
19 A. taxiformis 7      14.9  15     9.7  NaN   NaN   NaN    14    18.9
20 A. taxiformis 8      17    13.9  13.1  NaN   NaN   NaN    15.8  16.2
21 A. taxiformis 9      12.4  10.9  14.1   15   NaN   NaN    11.8  13.9
22 A. taxiformis 10      9.1  10.2  23.7   10.7 NaN   Inf    10.8  17.9
23 A. taxiformis 11    187.8   9.1  16.1   17.8 NaN   984.7   7.5  14.9
24 A. taxiformis 12    NaN    12.5  25.9   13.6 211.1  25.5   7    16.4
Get difference in mean monthly nitrogen removed in each state
norm_growth_annual <- norm_growth_end %>% 
  group_by(species, state) %>% 
  reframe(
    mean = meanna(value_0) %>% set_units("mg m-2"),
    sd = sdna(value_0) %>% set_units("mg m-2")
  )

left_join(
  norm_growth_annual %>% select(-sd) %>% rename(norm_mean = mean),
  supp_growth_annual %>% select(-sd) %>% rename(supp_mean = mean),
  by = c("species", "state")
) %>% 
  mutate(
    perc_diff = round(100*(supp_mean-norm_mean)/norm_mean, 1),
    times = round(supp_mean/norm_mean, 1)
  ) %>% 
  arrange(species, -times)
# A tibble: 16 × 6
   species       state   norm_mean supp_mean perc_diff times
   <fct>         <fct>    [mg/m^2]  [mg/m^2]       [1]   [1]
 1 A. armata     NTE     0.0038275       0.3    7738    78.4
 2 A. armata     WAN     0.54197         9      1560.6  16.6
 3 A. armata     WAS    44.641         616      1279.9  13.8
 4 A. armata     QLD     5.3622         48.9     811.9   9.1
 5 A. armata     NSW    52.855         422       698.4   8  
 6 A. armata     TAS   107.32          732.7     582.7   6.8
 7 A. armata     VIC   120.54          758.1     528.9   6.3
 8 A. armata     SAU   129.13          779.5     503.6   6  
 9 A. taxiformis TAS     5.3362         83.7    1468.5  15.7
10 A. taxiformis NSW    45.342         630.6    1290.8  13.9
11 A. taxiformis VIC    13.915         178.5    1182.8  12.8
12 A. taxiformis QLD    47.322         592.9    1152.9  12.5
13 A. taxiformis WAS    46.599         579.6    1143.8  12.4
14 A. taxiformis NTE    29.698         357.1    1102.4  12  
15 A. taxiformis WAN    48.514         482.2     893.9   9.9
16 A. taxiformis SAU    29.441         275.7     836.5   9.4
Get total removed in each state
options(pillar.sigfig = 5)

norm_growth_total <- norm_growth_end %>% 
  group_by(species, state, cell_no) %>% 
  reframe(total = sum(value_0)) %>% 
  group_by(species, state) %>% 
  reframe(total = mean(total)) %>% 
  arrange(species, -total)

left_join(
  norm_growth_total %>% rename(norm_total = total),
  supp_growth_total %>% rename(supp_total = total),
  by = c("species", "state")
  ) %>% 
  mutate(
    perc_diff = round(100*(supp_total-norm_total)/norm_total, 1),
    times = round(supp_total/norm_total, 1)
  ) %>% 
  arrange(species, -times)
# A tibble: 16 × 6
   species       state  norm_total supp_total perc_diff times
   <fct>         <fct>       <dbl>      <dbl>     <dbl> <dbl>
 1 A. armata     NTE      0.045930        3.7    7955.7  80.6
 2 A. armata     WAN      6.5036        108.3    1565.2  16.7
 3 A. armata     WAS    535.70         7392.3    1279.9  13.8
 4 A. armata     QLD     64.346         587.4     812.9   9.1
 5 A. armata     NSW    634.26         5063.6     698.4   8  
 6 A. armata     TAS   1287.9          8792.1     582.7   6.8
 7 A. armata     VIC   1446.4          9097.1     528.9   6.3
 8 A. armata     SAU   1549.6          9354       503.6   6  
 9 A. taxiformis TAS     64.034        1003.8    1467.6  15.7
10 A. taxiformis NSW    544.10         7567.6    1290.8  13.9
11 A. taxiformis VIC    166.98         2142.6    1183.2  12.8
12 A. taxiformis QLD    567.86         7114.9    1152.9  12.5
13 A. taxiformis WAS    559.19         6954.8    1143.7  12.4
14 A. taxiformis NTE    356.38         4285      1102.4  12  
15 A. taxiformis WAN    582.17         5786.3     893.9   9.9
16 A. taxiformis SAU    353.29         3308.2     836.4   9.4
Code
all_growth_total <- rbind(
  norm_growth_total %>% mutate(scenario = "norm_conditions"),
  supp_growth_total %>% mutate(scenario = "supp_conditions")
)

# hist(all_growth_total$total_na[all_growth_total$scenario == "norm_conditions"])
# hist(all_growth_total$total_na[all_growth_total$scenario != "norm_conditions"])
# minna(all_growth_total$total_na)
# maxna(all_growth_total$total_na)

all_growth_total %>%
  ggplot(aes(x = longitude, y = latitude, fill = total_na)) +
  geom_tile() +
  geom_sf(data = ozmap_data(data = "states"), inherit.aes = F) +
  coord_sf(xlim = c(111.5, 155), ylim = c(-44.5, -8.5), expand = F) +
  scale_x_continuous(breaks = seq(100, 160, 10)) +
  scale_y_continuous(breaks = seq(-2.5, -45, -5)) +
  scale_fill_viridis_c(
    limits = c(1, 10000),
    labels = scales::label_number(),
    trans = "log10",
    na.value = "grey",
    guide = guide_colorbar(
      title = expression("Total N removed (mg m"^-2 * ")"),
      barheight = 1,
      barwidth = 20,
      title.position = "top",
      title.hjust = 0.5
    )
  ) +
  labs(x = "Longitude", y = "Latitude") +
  facet_grid(rows = vars(species), cols = vars(scenario)) +
  prettyplot() +
  theme(legend.position = "top", strip.text = element_blank(), strip.background = element_blank())

Focusing ONLY on removal changes (not range expansion)

Get difference in mean nitrogen removed per each state/month, discounting cells that were not successful under normal conditions
cell_filter <- norm_growth_end %>% 
  distinct(cell_no, species, month, success) %>% 
  rename(include = success)

norm_growth_month_nre <- norm_growth_end %>% 
  left_join(cell_filter, by = c("cell_no", "species", "month")) %>% 
  filter(include) %>% 
  group_by(species, state, month) %>% 
  reframe(
    mean = meanna(value_0) %>% set_units("mg m-2"),
    sd = sdna(value_0) %>% set_units("mg m-2")
  )

supp_growth_month_nre <- supp_growth_end %>% 
  left_join(cell_filter, by = c("cell_no", "species", "month")) %>% 
  filter(include) %>% 
  group_by(species, state, month) %>% 
  reframe(
    mean = meanna(value_0) %>% set_units("mg m-2"),
    sd = sdna(value_0) %>% set_units("mg m-2")
  )
  
diff_growth_month <- left_join(
  norm_growth_month_nre %>% select(-sd) %>% rename(norm_mean = mean),
  supp_growth_month_nre %>% select(-sd) %>% rename(supp_mean = mean),
  by = c("species", "state", "month")
) %>% 
  mutate(
    perc_diff = round(100*(supp_mean-norm_mean)/norm_mean, 1),
    times = round(supp_mean/norm_mean, 1)
  )

diff_growth_month %>% 
  select(species, state, month, perc_diff) %>% 
  pivot_wider(names_from = state, values_from = perc_diff, names_prefix = "pd_") %>% 
  print(n=24)
# A tibble: 24 × 10
   species       month pd_NTE pd_QLD pd_NSW pd_SAU pd_TAS  pd_VIC pd_WAN pd_WAS
   <fct>         <fct>    [1]    [1]    [1]    [1]    [1]     [1]    [1]    [1]
 1 A. armata     7     2861.7  897    535.7  544.5  600.8   548.3 1495.5 1307  
 2 A. armata     4       NA    959    732.1  398.6  366.9   361.8   NA    971.1
 3 A. armata     5       NA   1010.9  651.1  454.6  437.7   460.4   NA   1125.6
 4 A. armata     6       NA   1002    484.3  477.6  477.3   448.6  765.3 1147  
 5 A. armata     8       NA    760.4  533    540.4  782.7   618.1 1522.8 1331.1
 6 A. armata     9       NA    593.5  590.9  475.1  833.6   583.4 1388.9 1180.2
 7 A. armata     10      NA    487    847    436    685.4   475.3 1227.6 1403.3
 8 A. armata     1       NA     NA   1661.8  892.5 1147.8  1087.9   NA   1328.1
 9 A. armata     2       NA     NA   1582.2  577.8  680.3   660.7   NA    772  
10 A. armata     3       NA     NA   1064.1  489    471.8   476     NA   1028.5
11 A. armata     11      NA     NA    760    396.2  478.7   397.1  572.2 1116.3
12 A. armata     12      NA     NA   1403.8  621    686.3   650.9   NA   1320.5
13 A. taxiformis 1      863.8 1116.3 1956.4 1060.7 2617.2  1781.8  513.8 1149.6
14 A. taxiformis 2      423.7  892   1329.9  652.7 1232.1  1030.9  442.4  680  
15 A. taxiformis 3      595.4 1519.7 1375.1  650.4  977.3   875.7  569.7  878.5
16 A. taxiformis 4      444.6 1415    740.5  670    970.1   588.7  699.9  832.3
17 A. taxiformis 5      979.5 1092.8  698.5 1195.1   NA     875.4  776.4 1062.8
18 A. taxiformis 6      833.7 1072.4  623.2 8580.8   NA      NA    792.8 1146.8
19 A. taxiformis 7     1390.9 1247.3  832.7   NA     NA      NA   1285.4 1374.4
20 A. taxiformis 8     1603.9 1123.4 1014.3   NA     NA      NA   1478.7 1337.9
21 A. taxiformis 9     1135.2  934.3 1078   1383.4   NA      NA   1084.3 1181.3
22 A. taxiformis 10     806.4  853.5 1364.2  914.7   NA      NA    973.9 1511.5
23 A. taxiformis 11    4848.6  737.1 1079.1  849.6   NA   11328.   642.1 1091  
24 A. taxiformis 12      NA    957   1466   1133.8 2232    1658.6  594.7 1318.7
Get difference in mean nitrogen removed per each state/month, discounting cells that were not successful under normal conditions
diff_growth_month %>% 
  select(species, state, month, times) %>% 
  pivot_wider(names_from = state, values_from = times, names_prefix = "t_") %>% 
  print(n=24)
# A tibble: 24 × 10
   species       month t_NTE t_QLD t_NSW t_SAU t_TAS t_VIC t_WAN t_WAS
   <fct>         <fct>   [1]   [1]   [1]   [1]   [1]   [1]   [1]   [1]
 1 A. armata     7      29.6  10     6.4   6.4   7     6.5  16    14.1
 2 A. armata     4      NA    10.6   8.3   5     4.7   4.6  NA    10.7
 3 A. armata     5      NA    11.1   7.5   5.5   5.4   5.6  NA    12.3
 4 A. armata     6      NA    11     5.8   5.8   5.8   5.5   8.7  12.5
 5 A. armata     8      NA     8.6   6.3   6.4   8.8   7.2  16.2  14.3
 6 A. armata     9      NA     6.9   6.9   5.8   9.3   6.8  14.9  12.8
 7 A. armata     10     NA     5.9   9.5   5.4   7.9   5.8  13.3  15  
 8 A. armata     1      NA    NA    17.6   9.9  12.5  11.9  NA    14.3
 9 A. armata     2      NA    NA    16.8   6.8   7.8   7.6  NA     8.7
10 A. armata     3      NA    NA    11.6   5.9   5.7   5.8  NA    11.3
11 A. armata     11     NA    NA     8.6   5     5.8   5     6.7  12.2
12 A. armata     12     NA    NA    15     7.2   7.9   7.5  NA    14.2
13 A. taxiformis 1       9.6  12.2  20.6  11.6  27.2  18.8   6.1  12.5
14 A. taxiformis 2       5.2   9.9  14.3   7.5  13.3  11.3   5.4   7.8
15 A. taxiformis 3       7    16.2  14.8   7.5  10.8   9.8   6.7   9.8
16 A. taxiformis 4       5.4  15.1   8.4   7.7  10.7   6.9   8     9.3
17 A. taxiformis 5      10.8  11.9   8    13    NA     9.8   8.8  11.6
18 A. taxiformis 6       9.3  11.7   7.2  86.8  NA    NA     8.9  12.5
19 A. taxiformis 7      14.9  13.5   9.3  NA    NA    NA    13.9  14.7
20 A. taxiformis 8      17    12.2  11.1  NA    NA    NA    15.8  14.4
21 A. taxiformis 9      12.4  10.3  11.8  14.8  NA    NA    11.8  12.8
22 A. taxiformis 10      9.1   9.5  14.6  10.1  NA    NA    10.7  16.1
23 A. taxiformis 11     49.5   8.4  11.8   9.5  NA   114.3   7.4  11.9
24 A. taxiformis 12     NA    10.6  15.7  12.3  23.3  17.6   6.9  14.2
Get difference in mean monthly nitrogen removed in each state, discounting cells that were not successful under normal conditions
norm_growth_annual_nre <- norm_growth_end %>% 
  left_join(cell_filter, by = c("cell_no", "species", "month")) %>% 
  filter(include) %>% 
  group_by(species, state) %>% 
  reframe(
    mean = meanna(value_0) %>% set_units("mg m-2"),
    sd = sdna(value_0) %>% set_units("mg m-2")
  )

supp_growth_annual_nre <- supp_growth_end %>% 
  left_join(cell_filter, by = c("cell_no", "species", "month")) %>% 
  filter(include) %>% 
  group_by(species, state) %>% 
  reframe(
    mean = meanna(value_0) %>% set_units("mg m-2"),
    sd = sdna(value_0) %>% set_units("mg m-2")
  )

left_join(
  norm_growth_annual_nre %>% select(-sd) %>% rename(norm_mean = mean),
  supp_growth_annual_nre %>% select(-sd) %>% rename(supp_mean = mean),
  by = c("species", "state")
) %>% 
  mutate(
    norm_mean = round(norm_mean, 1),
    supp_mean = round(supp_mean, 1),
    perc_diff = round(100*(supp_mean-norm_mean)/norm_mean, 1),
    times = round(supp_mean/norm_mean, 1)
  ) %>% 
  arrange(species, -times)
# A tibble: 16 × 6
   species       state norm_mean supp_mean perc_diff times
   <fct>         <fct>  [mg/m^2]  [mg/m^2]       [1]   [1]
 1 A. armata     NTE        21.1     624.8    2861.1  29.6
 2 A. armata     WAN        44.3     664      1398.9  15  
 3 A. armata     WAS        60.7     767.8    1164.9  12.6
 4 A. armata     QLD        82.2     712.1     766.3   8.7
 5 A. armata     NSW        98.4     725.9     637.7   7.4
 6 A. armata     TAS       109.8     748.3     581.5   6.8
 7 A. armata     VIC       123.4     771.3     525     6.3
 8 A. armata     SAU       130.9     789.5     503.1   6  
 9 A. taxiformis TAS        46.4     600      1193.1  12.9
10 A. taxiformis NTE        63.5     754.8    1088.7  11.9
11 A. taxiformis VIC        55.4     632.7    1042.1  11.4
12 A. taxiformis QLD        67.9     766.8    1029.3  11.3
13 A. taxiformis WAS        66.3     746      1025.2  11.3
14 A. taxiformis NSW        68.3     713.8     945.1  10.5
15 A. taxiformis WAN        76.9     756.2     883.4   9.8
16 A. taxiformis SAU        77.1     683.9     787     8.9
Get total removed in each state, discounting cells that were not successful under normal conditions
norm_growth_total_nre <- norm_growth_end %>% 
  left_join(cell_filter, by = c("cell_no", "species", "month")) %>% 
  filter(include) %>% 
  group_by(species, state, cell_no) %>% 
  reframe(total = sum(value_0)) %>% 
  group_by(species, state) %>% 
  reframe(total = mean(total)) %>% 
  arrange(species, -total)

supp_growth_total_nre <- supp_growth_end %>% 
  left_join(cell_filter, by = c("cell_no", "species", "month")) %>% 
  filter(include) %>% 
  group_by(species, state, cell_no) %>% 
  reframe(total = sum(value_0)) %>% 
  group_by(species, state) %>% 
  reframe(total = mean(total)) %>% 
  arrange(species, -total)

left_join(
  norm_growth_total_nre %>% rename(norm_total = total),
  supp_growth_total_nre %>% rename(supp_total = total),
  by = c("species", "state")
  ) %>% 
  mutate(
    norm_total = round(norm_total, 1),
    supp_total = round(supp_total, 1),
    perc_diff = round(100*(supp_total-norm_total)/norm_total, 1),
    times = round(supp_total/norm_total, 1)
  ) %>% 
  arrange(species, -times)
# A tibble: 16 × 6
   species       state norm_total supp_total perc_diff times
   <fct>         <fct>      <dbl>      <dbl>     <dbl> <dbl>
 1 A. armata     NTE         21.1      624.8    2861.1  29.6
 2 A. armata     WAN         83.8     1256.6    1399.5  15  
 3 A. armata     WAS        535.7     6773.4    1164.4  12.6
 4 A. armata     QLD        226.5     1962.4     766.4   8.7
 5 A. armata     NSW        634.3     4678.5     637.6   7.4
 6 A. armata     TAS       1288.9     8782.7     581.4   6.8
 7 A. armata     VIC       1448.8     9055.6     525     6.3
 8 A. armata     SAU       1549.6     9347.9     503.2   6  
 9 A. taxiformis TAS        115       1486.7    1192.8  12.9
10 A. taxiformis NTE        356.4     4235.6    1088.4  11.9
11 A. taxiformis VIC        169.4     1936.6    1043.2  11.4
12 A. taxiformis QLD        577.2     6514.5    1028.6  11.3
13 A. taxiformis WAS        559.2     6291.9    1025.2  11.3
14 A. taxiformis NSW        544.1     5682.7     944.4  10.4
15 A. taxiformis WAN        582.2     5720.9     882.6   9.8
16 A. taxiformis SAU        381.9     3389.6     787.6   8.9

Supplemented bioremediation efficiency

Get total nitrogen made available in supplemented conditions
N_input <- file.path(envi_data, "cell_input_supp") %>% 
  list.files(full.names = T) %>% 
  purrr::map(function(fnm) {
    fnm %>% arrow::read_parquet(col_select = c("cell_no", "state", "yday", "Ni_input", "Am_input"))
  }) %>% 
  bind_rows() %>% 
  mutate(
    N_input = 5.5*(Ni_input + Am_input),
    month = month(make_date(2023, 12, 31) + days(yday)) %>% as.factor()
    ) %>% 
  group_by(state, cell_no, month) %>% 
  reframe(
    N_input = sum(N_input)
  ) %>% 
  mutate(
    N_input = set_units(N_input, "mg m-2")
  )

biorem_eff <- supp_growth_end %>% 
  select(-contains("TN"), -start, -longitude, -latitude) %>% 
  left_join(N_input, by = c("state", "cell_no", "month")) %>% 
  mutate(
    value_na = set_units(value_na, "mg m-2"),
    biorem_eff = value_na/N_input
  )
Total nitrogen removed of the supplemented nitrogen available
biorem_eff %>% 
  group_by(species, month) %>% 
  reframe(
    mean_biorem_eff = round(100*meanna(biorem_eff), 1),
    max_biorem_eff = round(100*maxna(biorem_eff), 1)
  ) %>% 
  print(n = 24)
# A tibble: 24 × 4
   species       month mean_biorem_eff max_biorem_eff
   <fct>         <fct>             [1]            [1]
 1 A. armata     1                 1.6            1.7
 2 A. armata     2                 2.9            3.1
 3 A. armata     3                 3.2            3.4
 4 A. armata     4                 3              3.4
 5 A. armata     5                 2.8            3.4
 6 A. armata     6                 2.7            3.4
 7 A. armata     7                 2.7            3.4
 8 A. armata     8                 2.7            3.4
 9 A. armata     9                 2.8            3.4
10 A. armata     10                2.9            3.4
11 A. armata     11                3              3.4
12 A. armata     12                3.1            3.4
13 A. taxiformis 1                 1.3            1.7
14 A. taxiformis 2                 2.5            3.1
15 A. taxiformis 3                 2.7            3.4
16 A. taxiformis 4                 2.6            3.5
17 A. taxiformis 5                 2.6            3.4
18 A. taxiformis 6                 2.9            3.5
19 A. taxiformis 7                 3.1            3.4
20 A. taxiformis 8                 3.1            3.4
21 A. taxiformis 9                 3.1            3.5
22 A. taxiformis 10                2.8            3.4
23 A. taxiformis 11                2.4            3.4
24 A. taxiformis 12                2.5            3.4
Total nitrogen removed of the supplemented nitrogen available
biorem_eff %>% 
  mutate(biorem_eff = 100*biorem_eff) %>% 
  ggplot(aes(x = biorem_eff, fill = species, colour = species)) +
  geom_histogram(position = "identity", alpha = 0.35, binwidth = 0.1) +
  theme_classic()
Warning: Removed 124407 rows containing non-finite outside the scale range
(`stat_bin()`).

Total nitrogen removed of the ambient nitrogen available (monthly, in each state)
biorem_eff %>% 
  group_by(species, state) %>% 
  reframe(
    mean_biorem_eff = round(100*meanna(biorem_eff), 1),
    max_biorem_eff = round(100*maxna(biorem_eff), 1)
  ) %>% 
  print(n = 24)
# A tibble: 16 × 4
   species       state mean_biorem_eff max_biorem_eff
   <fct>         <fct>             [1]            [1]
 1 A. armata     NTE               1.4            2.8
 2 A. armata     QLD               2.5            3.4
 3 A. armata     NSW               2.6            3.3
 4 A. armata     SAU               2.9            3.4
 5 A. armata     TAS               2.6            3.3
 6 A. armata     VIC               2.7            3.4
 7 A. armata     WAN               1.9            3.4
 8 A. armata     WAS               3              3.4
 9 A. taxiformis NTE               3              3.5
10 A. taxiformis QLD               2.9            3.5
11 A. taxiformis NSW               2.5            3.3
12 A. taxiformis SAU               2              3.4
13 A. taxiformis TAS               1.5            3.1
14 A. taxiformis VIC               1.7            3.2
15 A. taxiformis WAN               2.9            3.5
16 A. taxiformis WAS               2.6            3.4
Total nitrogen removed of the ambient nitrogen available (monthly, in each state)
biorem_eff %>% 
  group_by(species, state, month) %>% 
  reframe(
    mean_biorem_eff = round(100*meanna(biorem_eff), 1)
  ) %>% 
  pivot_wider(names_from = state, values_from = mean_biorem_eff) %>% 
  print(n = 24)
# A tibble: 24 × 10
   species       month   NTE   QLD NSW   SAU   TAS   VIC   WAN WAS
   <fct>         <fct>   [1]   [1] [1]   [1]   [1]   [1]   [1] [1]
 1 A. armata     1     NaN   NaN   0.7   1.6   1.6   1.6 NaN   1.5
 2 A. armata     2     NaN   NaN   2     2.9   3     3   NaN   2.8
 3 A. armata     3     NaN   NaN   2.1   3.2   3.2   3.2 NaN   3.1
 4 A. armata     4     NaN     1.5 2     3.1   3     3   NaN   3.1
 5 A. armata     5     NaN     1.4 2.3   3     2.7   2.7   0.2 3  
 6 A. armata     6     NaN     2.1 2.5   2.8   2.6   2.6   1.3 3  
 7 A. armata     7       1.4   2.5 2.7   2.7   2.4   2.5   2.3 3  
 8 A. armata     8     NaN     2.8 2.7   2.7   2.2   2.4   1.8 3.1
 9 A. armata     9     NaN     2.6 2.8   2.8   2.1   2.5   2.2 3.3
10 A. armata     10    NaN     0.7 2.6   3     2.4   2.7   2   3.2
11 A. armata     11    NaN     0.1 2.8   3.2   2.9   3     0.4 3.1
12 A. armata     12    NaN   NaN   2.7   3.2   3.2   3.2 NaN   3  
13 A. taxiformis 1       0.8   1.4 1.4   1.3   0.8   1.2   1.3 1.5
14 A. taxiformis 2       2.7   2.5 2.5   2.6   1.9   2.4   2.4 2.9
15 A. taxiformis 3       2.5   2.6 2.8   2.7   2     2.3   2.7 3.2
16 A. taxiformis 4       2.9   2.8 2.9   2.5   0.8   1.2   1.8 3.2
17 A. taxiformis 5       2.2   3.1 2.8   1.5   0.2   1.4   2.4 3  
18 A. taxiformis 6       3.3   3.3 2.6   0.4 NaN     0.3   3.3 2.6
19 A. taxiformis 7       3.4   3.2 2.3 NaN   NaN   NaN     3.3 2.5
20 A. taxiformis 8       3.3   3.2 2.2 NaN   NaN   NaN     3.3 2.6
21 A. taxiformis 9       3.3   3.2 2.1   2.3 NaN   NaN     3.3 2.5
22 A. taxiformis 10      2.5   3.1 2.3   2.4 NaN     0.1   2.9 2.5
23 A. taxiformis 11      0.3   2.8 2.7   1.1   0.1   1     2.7 2.1
24 A. taxiformis 12    NaN     2.7 2.8   1.9   0.7   1.5   2.9 2.8
Total nitrogen removed of the ambient nitrogen available across the entire year
biorem_eff_total <- supp_growth_end %>% 
  select(-contains("TN"), -start, -longitude, -latitude) %>% 
  left_join(N_input, by = c("state", "cell_no", "month")) %>% 
  mutate(
    N_input = drop_units(N_input)
  ) %>% 
  group_by(species, state, cell_no) %>% 
  reframe(
    value_na = sumna(value_na),
    N_input = sumna(N_input)
  ) %>% 
  mutate(
    value_na = set_units(value_na, "mg m-2"),
    N_input = set_units(N_input, "mg m-2"),
    biorem_eff = value_na/N_input
    )

biorem_eff %>% 
  group_by(species) %>% 
  reframe(
    mean_biorem_eff = round(100*meanna(biorem_eff), 1),
    max_biorem_eff = round(100*maxna(biorem_eff), 1)
  )
# A tibble: 2 × 3
  species       mean_biorem_eff max_biorem_eff
  <fct>                     [1]            [1]
1 A. armata                 2.8            3.4
2 A. taxiformis             2.6            3.5
Total nitrogen removed of the ambient nitrogen available across the entire year
biorem_eff_total %>% 
  mutate(biorem_eff = 100*biorem_eff) %>% 
  ggplot(aes(x = biorem_eff, fill = species, colour = species)) +
  geom_histogram(position = "identity", alpha = 0.35, binwidth = 1) +
  theme_classic()