Asparagopsis parameteristation

Author

Tormey Reimer

Modified

5 August 2026

All the code in this markdown is set to ‘fold’ by default. Click each folded code chunk to see its inner workings.
# You did it!

Introduction

Some global defaults I like to use
out_path <- here() %>% file.path("data")

prettyplot <- theme_classic() +
  theme(element_text(family = "sans", size = 12, colour = "black"),
        axis.title.y = element_text(vjust = 2),
        legend.position = "none")

format_sci2 <- function(x) {
  if (inherits(x, "units")) {format_sci(drop_units(x))} else {format_sci(x)}
}

remove_unit("gDW")
install_unit("gDW")
remove_unit("gFW")
install_unit("gFW")
remove_unit("photons")
install_unit("photons")

# This allows me to convert between moles and g of nitrogen
remove_unit("gN")
install_unit("gN")
remove_unit("molN")
install_unit("molN", "14.0067 gN")

S_uM <- set_units(seq(0, 200, 0.5), "umolN L-1")
S_mg <- set_units(S_uM, "mgN m-3")

The Asparagopsis genus (and especially A. armata) is invasive in the northeastern Atlantic and the Mediterranean (Zanolla et al. 2022). It has been studied more as an invasive genus than a native one. There are two species (or species complexes) within the genus Asparagopsis: A. armata is a temperate species while A. taxiformis is more commonly found in tropical areas (including northern Australia), and this might affect the results of the modelling - I may need to parameterise two different species, possibly distinct only in their temperature/light tolerance.

Phylogenetic analyses suggest that there is a clade within the species A. armata restricted only to Western Australia, Tasmania and New Zealand (Dijoux et al. 2014). It has been proposed that the species A. armata is actually two cryptic species: A. armata 1 is native to Tasmania and is invasive in the northern hemisphere, while A. armata 2 is restricted to Western Australia, Tasmania and New Zealand (Dijoux et al. 2014; Zanolla et al. 2022). Therefore, while the A. armata studied as an invasive species (A. armata 1) is partially representative of the Australian species, the lack of sampling in Australia and New Zealand may be leaving knowledge gaps of the potentially more widespread A. armata 2. It’s not known how much will this affect environmental growth responses in a model, given that the genus is very plastic in its environmental tolerance (Zanolla et al. 2022).

Both species follow a triphasic lifestyle, alternative between macroscopic diploid tetrasporophyte and haploid (male and female) gametophyte phases (Figure 1). Gametophytes produce gametes for sexual reproduction while tetrasporophytes produce tetrasporangia for asexual reproduction, and both phases additionally reproduce asexually through fragmentation (Zanolla et al. 2022). The phases are easy to distinguish morphologically - gametophytes look somewhat like asparagus shoots (giving the genus name) and grow as branching shoots up to ~30 cm long. Tetrasporophytes are much smaller with finer fronds, resembling pom-poms []. Tetrasporophytes are usually found year-round, while gametophytes are often only found in colder months (Zanolla, Altamirano, De La Rosa, et al. 2018). The phases may differ in their responses to environmental temperature (particularly temperature and light) and knowing the phases is important because some studies do not specify which phase of Asparagopsis they have collected or are working with.

Figure 1: Left: Gametophytes of Asparagopsis armata (above) and A. taxiformis (below) at 5 m depth. Arrows point to harpoon-like branches in A. armata. Right: Tetrasporophyte of Asparagopsis at 3-m depth, presenting pompom structure and attached to other algae. Collected from Granada, Spain. Photo credits: J. De la Rosa, reproduced from Zanolla et al. (2022).

The different forms may also be very physiologically different in some respects - at the very least with regard to temperature and daylength. Catriona Hurd also thinks it’s likely they’ll be different in their uptake rates of the different forms of nitrogen.

Still to investigate

  • Cole et al. (2014)
  • Dishon et al. (2023)
  • Kraan and Barrington (2005)
  • Mata (2008)
  • Monro (2007)
  • Torres et al. (2024)
  • Wiltshire et al. (2015)
  • Zanolla et al. (2019)

Nitrogen uptake

Linear uptake

It’s possible that the gametophyte and tetrasporophyte will have different uptake rates of ammonium and nitrate, and in the wild they do not appear to be affected by fluctuations in nutrients Zanolla, Altamirano, Carmona, et al. (2018). However, if we assume that the gametophyte has a similar preference for ammonium to the sporophyte then it’s not surprising that it would show little response to nutrients in the environment, as natural nitrogen is mostly in nitrate form with ammonium only being present at constant low levels generally.

Important

Zanolla, Altamirano, Carmona, et al. (2018) didn’t directly measure nutrients(?) but found that temperature was highly correlated with species distribution. Check Zanolla, Carmona, et al. (2018) - did they measure nutrients?

As far as I can tell, no-one has investigated nitrogen uptake directly in Asparagopsis gametophytes. I will therefore be using the uptake rates calculated for the tetrasporophyte.

Some very interesting things from reading Torres et al. (2021):

  • Asparagopsis prefers ammonium during the internally-controlled (non-surge) phase
  • Nitrate also taken up, but not preferred - even when nitrate was the only form available uptake was limited (limited use by seaweed)
  • Amino acids (a mix of several different ones, with alanine dominating) were also tested. Amino acids are released by decomposing fish food. I may need to include amino acids as “other N” in the model.

Torres et al. (2021) tested the surge and internally-controlled nitrogen uptake rates of A. armata when given nitrogen in the form of ammonium, nitrate and a mix of amino acids (dominated by alanine). Nitrogen uptake (in all three forms) did not saturate at ~200 \(\mu\)M concentration, so was was better described with a linear equation rather than with Michaelis-Menton uptake kinetics

Import Torres et al. (2021) data
remove_unit("molN") # Torres 2021 only used N-15 so need to readjust the units for this data
install_unit("molN", "15 gN")

torresNO3 <- read.csv(file.path("data_raw", "sources", "torres_2021", "tores-2021-Fig2-B.csv")) %>% 
  mutate(uptake = uptake %>% set_units("umolN gDW-1 h-1"),
         S = S %>% set_units("umolN L-1"))

ggplot(torresNO3, aes(x = S, y = uptake, colour = treatment)) +
  geom_point()

Import Torres et al. (2021) data
lm <- lm(uptake ~ S, data = filter(torresNO3, treatment == "alone"))
C_ni_alone <- coef(lm)["(Intercept)"] %>% unname() %>% set_units("umolN gDW-1 h-1")
M_ni_alone <- coef(lm)["S"] %>% unname() %>% set_units("L h-1 gDW-1")

lm <- lm(uptake ~ S, data = filter(torresNO3, treatment != "alone"))
C_ni_combo <- coef(lm)["(Intercept)"] %>% unname() %>% set_units("umolN gDW-1 h-1")
M_ni_combo <- coef(lm)["S"] %>% unname() %>% set_units("L h-1 gDW-1")

Torres et al. (2021) did not calculate a linear uptake rate for nitrate when it was tested alone - only a constant rate of 3.2 (or 1.08). In combination nitrate was also taken up at a com They did not offer an explanation beyond the observation that since A. armata did not show an increase in uptake rate with concentration it likely has a limited capacity to use nitrogen. However this does not explain why they provided a slope and constant for linear uptake of nitrate in combination with other N forms, as that also did not show an increase in uptake rate with increasing concentration (although the relationship was not significant). I have decided to use a constant rate of nitrate uptake independent of concentration.

Calculate uptake rates from Torres 2021 data
# From Torres et. al. 2021, Table 3
M_am_alone <- set_units(0.12, "L h-1 gDW-1") 
C_am_alone <- set_units(10.45, "umolN h-1 gDW-1")

M_am_combo <- set_units(0.14, "L h-1 gDW-1")
C_am_combo <- set_units(8.79, "umolN h-1 gDW-1 ")

M_aa_alone <- set_units(0.007, "L h-1 gDW-1")
C_aa_alone <- set_units(1.69, "umolN h-1 gDW-1 ")

M_aa_combo <- set_units(0.006, "L h-1 gDW-1")
C_aa_combo <- set_units(0.88, "umolN h-1 gDW-1")

torres_uptake <- as.data.frame(S_uM) %>% 
  mutate(ammonium_alone = lin_uptake(S_uM, M_am_alone, C_am_alone),
         ammonium_combo = lin_uptake(S_uM, M_am_combo, C_am_combo),
         nitrate_alone = lin_uptake(S_uM, M_ni_alone, C_ni_alone),
         nitrate_combo = lin_uptake(S_uM, M_ni_combo, C_ni_combo),
         nitrate_alone = lin_uptake(S_uM, M_ni_alone, C_ni_alone),
         nitrate_combo = lin_uptake(S_uM, M_ni_combo, C_ni_combo),
         amacids_alone = lin_uptake(S_uM, M_aa_alone, C_aa_alone),
         amacids_combo = lin_uptake(S_uM, M_aa_combo, C_aa_combo)) %>% 
  pivot_longer(cols = !contains("S_uM"), 
               names_to = c("form", "treatment"), names_sep = "_",
               values_to = "uptake",
               names_transform = list(form = as.factor, treatment = as.factor)) %>% 
  mutate(S = set_units(S_uM, "mgN m-3"),
         uptake = set_units(uptake, "mgN gDW-1 d-1"))

Ammonium is obviously the preferred form of nitrogen uptake in A. armata. Amino acids and nitrate are taken up at approximately the same rate.

Plot N uptake based on Torres et al. (2021) data
int1 <- 20 %>% set_units("umolN L-1") %>% set_units("mgN m-3")
int2 <- 50 %>% set_units("umolN L-1") %>% set_units("mgN m-3")

ggplot(torres_uptake, aes(x = S, y = uptake, colour = form)) +
  geom_line() +
  facet_wrap(vars(treatment)) +
  geom_vline(aes(xintercept = int1), linetype = "dashed") +
  geom_vline(aes(xintercept = int2), linetype = "dashed") +
  labs(y = "Uptake rate", x = "Substrate concentration") +
  prettyplot + theme(legend.position = "bottom")

Linear uptake of ammonium (green), nitrate (blue) and amino acids (red) by A. armata. Dashed black lines show concentrations of 20 \muM and 50 \muM for reference.

Linear uptake of ammonium (green), nitrate (blue) and amino acids (red) by A. armata. Dashed black lines show concentrations of 20 \(\mu\)M and 50 \(\mu\)M for reference.
Reset molN back to 14.0067 g after Torres data
remove_unit("molN")
install_unit("molN", "15 gN")

Michaelis–Menten uptake

Schuenhoff et al. (2006) fit a Michaelis–Menten curve to their uptake rates. They measured day and night uptake rates separately and combined. Their night and combined measurements were fairly poorly described by a Michaelis–Menten curve (R = 0.189 and 0.21 respectively) but daytime uptake was better (R\(^2\) = 0.78). Since the model doesn’t have a day-night cycle anyway, I’ll be looking at the daytime parameters only.

Plot curves based on Schuenhoff et al. (2006) data
V_am <- 14.85 %>% set_units("umolN gDW-1 h-1")
K_am <- 10.01 %>% set_units("umolN L-1")

schuen_uptake <- data.frame(S = S_uM) %>% 
  mutate(uptake = MM_uptake(conc = S_uM, V = V_am, K = K_am),
         S = set_units(S_uM, "mgN m-3"),
         uptake = set_units(uptake, "mgN gDW-1 d-1"),
         form = factor("ammonium", levels = levels(torres_uptake$form)))

int1 <- 5 %>% set_units("umolN L-1") %>% set_units("mgN m-3")
int2 <- 20 %>% set_units("umolN L-1") %>% set_units("mgN m-3")
int3 <- 50 %>% set_units("umolN L-1") %>% set_units("mgN m-3")

schuen_uptake %>% 
  filter(S <= set_units(1000, "mgN m-3")) %>% 
  ggplot(aes(x = S, y = uptake, colour = form)) +
  geom_line() +
  geom_vline(aes(xintercept = int1), linetype = "dashed") +
  geom_vline(aes(xintercept = int2), linetype = "dashed") +
  geom_vline(aes(xintercept = int3), linetype = "dashed") +
  labs(y = "Uptake rate", x = "Substrate concentration") +
  theme_classic() + theme(legend.position = "bottom")

Michaelis–Menten uptake of ammonium by A. armata. Dashed black lines show concentrations of 5 \muM, 20 \muM and 50 \muM for reference.

Michaelis–Menten uptake of ammonium by A. armata. Dashed black lines show concentrations of 5 \(\mu\)M, 20 \(\mu\)M and 50 \(\mu\)M for reference.

It’s immediately obvious that even though ammonium uptake by MM kinetics increases quickly at low concentrations, the linear uptake rate calculated by Torres et al. (2021) is higher than the MM uptake rate calculated by Schuenhoff et al. (2006), especially at low (5 \(\mu\)M) and very high (50 \(\mu\)M) concentrations.

Compare Michaelis–Menten uptake with linear uptake of ammonium
both_uptake <- merge(torres_uptake, schuen_uptake, by = c("S", "form"), all = T) %>% 
  rename(torres = uptake.x, schuenhoff = uptake.y) %>% 
  pivot_longer(names_to = "source", values_to = "uptake", cols = c(torres, schuenhoff), 
               names_transform = list(source = as.factor))

both_uptake %>% 
  filter(S_uM <= set_units(55, "umolN L-1")) %>% 
  ggplot(aes(x = S, y = uptake, color = form, linetype = source)) +
  geom_line(linewidth = 0.75) +
  facet_wrap(vars(treatment)) +
  geom_vline(aes(xintercept = int1), linetype = "dotted") +
  geom_vline(aes(xintercept = int2), linetype = "dotted") +
  geom_vline(aes(xintercept = int3), linetype = "dotted") +
  labs(y = "Uptake rate", x = "Substrate concentration") +
  prettyplot + theme(legend.position = "bottom")

Uptake of ammonium (green), nitrate (blue) or amino acids (red) by A. armata via Michaelis–Menten kinetics (solid lines) or a linear rate (dashed lines) with increasing substrate concentration (maximum of 30\muM). Dotted lines show reference concentrations of 5, 20 and 50 \muM for reference. Uptake of ammonium (green), nitrate (blue) or amino acids (red) by A. armata via Michaelis–Menten kinetics (solid lines) or a linear rate (dashed lines) with increasing substrate concentration (maximum of 30\muM). Dotted lines show reference concentrations of 5, 20 and 50 \muM for reference.

Uptake of ammonium (green), nitrate (blue) or amino acids (red) by A. armata via Michaelis–Menten kinetics (solid lines) or a linear rate (dashed lines) with increasing substrate concentration (maximum of 30\(\mu\)M). Dotted lines show reference concentrations of 5, 20 and 50 \(\mu\)M for reference. Uptake of ammonium (green), nitrate (blue) or amino acids (red) by A. armata via Michaelis–Menten kinetics (solid lines) or a linear rate (dashed lines) with increasing substrate concentration (maximum of 30\(\mu\)M). Dotted lines show reference concentrations of 5, 20 and 50 \(\mu\)M for reference.
Choose which params of those investigated will make it into the model
# Note that even through MM uptake and linear uptake of ammonium are making it into the model, only one uptake shape can be used per nitrogen form at a time and this is specified in the model run.

# Note that even through MM uptake and linear uptake of ammonium are making it into the model, only one uptake shape can be used per nitrogen form at a time and this is specified in the model run.

V_am <- V_am # From Schuenhoff
K_am <- K_am # From Schuenhoff

M_am <- M_am_combo # From Torres
C_am <- C_am_combo # From Torres

M_ni <- M_ni_combo # From Torres (constant uptake)
M_ni <- M_ni_combo # From Torres (constant uptake)
C_ni <- C_ni_combo # From Torres

M_ot <- M_aa_combo # From Torres
C_ot <- C_aa_combo # From Torres
C_ot <- C_aa_combo # From Torres

Internal nutrient state

Tissue nitrogen concentration

The model requires minimum and maximum internal nitrogen concentrations. There are a couple of ways to go about estimating these:

  • Take the lowest and highest N-concentrations I can find in the literature
  • Take the lowest and highest protein concentrations I can find in the literature, and convert these into nitrogen. Protein estimates are much easier to find than N-concentration estimates, but the conversion to nitrogen adds uncertainty.

Protein conversion

Maximum (or, at least, very high) internal nitrogen concentrations for Asparagopsis are fairly easy to find. A. taxiformis had a protein content of 22.69 %DM in Nunes et al. (2024) and 23.76 %DM in Pacheco et al. (2020). Nunes et al. (2024) also found that A. armata had a protein concentration of 24.23 %DM. However, the A. taxiformis spp. gametophytes eaten in Hawaii have also been reported having protein concentrations <10 %DW (McDermid and Stuercke 2003), and all of these measurements came from the invasive range of Asparagopsis.

Samples of A. armata collected from New Zealand showed a protein concentrations ranging from of 10.94 to 15.2 %DW (Mihaila et al. 2022; Zemke-White and Clements 1999), while Australian samples of A. taxiformis had mean a protein concentration of 18.2 %DW (Brooke et al. 2020).

Range of protein concentrations
P_range_taxi <- sort(c(22.69, 23.76, 18.2, 7.5)) # Asparagopsis taxiformis
P_range_arma <- sort(c(24.23, 15.2, 10.94)) # Asparagopsis armata

N_conv_aspara <- 5.63
N_range_taxi_aspara <- P_range_taxi/N_conv_aspara # Asparagopsis taxiformis
N_range_arma_aspara <- P_range_arma/N_conv_aspara # Asparagopsis armata

N_conv_reds <- 5.1
N_range_taxi_reds <- P_range_taxi/N_conv_reds # Asparagopsis taxiformis
N_range_arma_reds <- P_range_arma/N_conv_reds # Asparagopsis armata

There are two observations made from this. First, A. armata appears to have a slightly higher average protein concentration than A. taxiformis, although this might be due to small sample sizes and a lack of direct comparison. Second, the samples collected from Australia and New Zealand had a much lower protein concentration than those collected elsewhere (Nunes et al. 2024; Mihaila et al. 2022), possibly reflecting the region’s naturally low nitrogen levels. Luckily, these results can still be useful as there appear to be no significant differences between the protein content of cultured and wild macroalgae, so intra-species variation is probably the largest factor determining the protein content of most macroalgae (Angell et al. 2016).

There are also different possible ways of converting protein to nitrogen: Angell et al. (2016) suggested that a factor 5.1 is most appropriate for red algae, although they also reported Asparagopsis specifically having a conversion factor of 5.63 which was used by Mihaila et al. (2022) in their calculations. The results of these conversions are summarised in Table 1.

Table 1: Observed protein concentrations in Asparagopsis species
Species Stat Protein % N (reds) N (Asparagopsis)
Mean 16.79 3.29 2.98
A. armata Min 10.94 2.15 1.94
Max 24.23 4.75 4.3
Mean 18.04 3.54 3.29
A. taxiformis Min 7.5 1.47 2.15
Max 23.76 4.66 4.75
Choose which params of those investigated will make it into the model
N_min <- set_units(min(P_range_arma/100)/N_conv_aspara, "gN gDW-1")
Q_min <- set_units(N_min, "mgN gDW-1")
N_min <- set_units(min(P_range_arma/100)/N_conv_aspara, "gN gDW-1")
Q_min <- set_units(N_min, "mgN gDW-1")
N_max <- set_units(0.065, "gN gDW-1") # Schuenhoff 2006
Q_max <- set_units(N_max, "mgN gDW-1")
Q_max <- set_units(N_max, "mgN gDW-1")

This gives a minimum N of 1.94% (a \(Q_{min}\) of 19.43 mg gDW\(^{-1}\)) and a maximum N-content of 6.5% (a \(Q_{max}\) of 65 mg gDW\(^{-1}\)), which is a relatively high value for macroalgae. This gives a minimum N of 1.94% (a \(Q_{min}\) of 19.43 mg gDW\(^{-1}\)) and a maximum N-content of 6.5% (a \(Q_{max}\) of 65 mg gDW\(^{-1}\)), which is a relatively high value for macroalgae.

Biomass factors

Dry weight to fresh weight

  • Schuenhoff et al. (2006) found that the DW:FW ratio of A. armata remained constant at 0.25 \(\pm\) 0.001 (mean \(\pm\) SD) regardless of season or stocking density (tetrasporophytes sourced from southern Portugal, tank-grown in fish farm effluent at a water exchange rate of 2 Vol hr\(^{-1}\)).
  • Sainz-Villegas et al. (2024) measured the change from FW to DW as 0.12.
  • Nunes et al. (2024) found a dry mass of 6.55 \(\pm\) 1.25% for A. taxiformis gametophytes and 7.68 \(\pm\) 1.07% for A. armata gametophytes, and reported that similar values were found by Roque et al. (2019).
Summarise possible DWWW values
# schuenhoff_tetrasporophyte_2006
remove_unit("gWW")
install_unit("gWW", "0.25 gDW")
DWWW_schuen <- set_units(1, "gDW") %>% set_units("gWW")

# sainz-villegas_exploring_2024
remove_unit("gWW")
install_unit("gWW", "0.12 gDW")
DWWW_sainz <- set_units(1, "gDW") %>% set_units("gWW")

# nunes_evaluation_2024/roque_effect_2019
remove_unit("gWW")
install_unit("gWW", "0.1302083 gDW") # 1/7.68
DWWW_nunes_arma <- set_units(1, "gDW") %>% set_units("gWW")
remove_unit("gWW")
install_unit("gWW", "0.1526718 gDW") # 1/6.55
DWWW_nunes_taxi <- set_units(1, "gDW") %>% set_units("gWW")

These options give DW:WW values of 4, 8.33, or 7.68 for A. armata and 6.55 (A. taxiformis). However, only Nunes et al. (2024) specifically looked at the gametophyte.

Choose which params of those investigated will make it into the model
DWWW <- mean(c(DWWW_nunes_arma, DWWW_nunes_taxi))
DWWW <- mean(c(DWWW_nunes_arma, DWWW_nunes_taxi))

Height

Within the model, “height” does not indicate height exactly, rather it indicates how much of the available space is being taken up by the macroalgae. This combines with density (mg m\(^{-3}\), i.e. growth) to indicate how much light and nutrients the macroalgae has access to. For example:

  • a macroalgae with a high growth rate but a low height-increase rate (e.g. an Asparagopsis tetrasporophyte) will be more dense in a smaller volume, potentially having higher self-shading rates and decreased access to nutrients
  • a macroalgae with a low growth rate and a high height-increase rate (e.g. Ecklonia) will be less dense in a larger volume, potentially lower self-shading rates and increased access to nutrients

Zanolla, Altamirano, De La Rosa, et al. (2018) reported that A, taxiformis gametophyte branches had a maximum length of ~26 cm at ~115 g DW m\(^{-2}\).

Height stats from Zanolla, Altamirano, De La Rosa, et al. (2018)
sizedis <- set_units(115,"gDW m-2")*set_units(0.26,"m-1")
sizedisN <- set_units(drop_units(sizedis*0.06), "g m-3")
sizedisN <- set_units(sizedisN, "mg m-3")

sizedis2 <- set_units(115,"gDW m-2")*set_units(0.26,"m-1")
sizedisN2 <- set_units(drop_units(sizedis2*0.06), "g m-3")
sizedisN2 <- set_units(sizedisN2, "mg m-3")/10

This is equivalent to approximately 29.9 g DW m\(^{-3}\) for a single plant to reach maximum height, or about 1794 g N mg\(^{-3}\). Zanolla, Altamirano, De La Rosa, et al. (2018) found that smaller size classes were more abundant than higher classes, indicating that the gametophyte prioritises new shoots (lateral growth) over increasing height (vertical growth). If we assume that 5 plants are growing within 1 m\(^{-3}\), then the maximum height will be reached much earlier, at 179.4 g N mg\(^{-3}\).

Create a realistic height curve
h_a <- drop_units(sizedisN)
h_b <- 1.5
h_c <- 0.01
h_max <- 0.26 %>% set_units("m")
h_max <- 0.26 %>% set_units("m")

dens <- seq(10, drop_units(sizedisN)+500, 10)
h <- sapply(X = dens, FUN = height, spec_params = c(h_a = h_a, h_b = h_b, h_c = h_c, h_max = drop_units(h_max)))
height <- data.frame(dens = set_units(dens, "mg m-3"), h = set_units(h, "m"))

ggplot(height) +
  geom_line(aes(x = dens, y = h)) +
  geom_vline(xintercept = sizedisN, linetype = "dashed") +
  prettyplot +
  labs(x = "Nf", y = "Height")
Figure 2: Algae height with Nf using spec_params = c(h_a = 3850, h_b = 1.75, h_c = 0.001, h_max = 0.26). The dashed line shows the point at which max height is reached (1794 g N m\(^{-3}\))

Growth rate & stocking density

Zanolla, Altamirano, De La Rosa, et al. (2018)? Wright et al. (2022)?

Schuenhoff et al. (2006) investigated the optimal stocking density for A. armata in spring and winter at a high water exchange rate (2 Vol hr\(^{-1}\)). Yield was determined via:

\[ Y(g DW m^{−2} week^{−1}) = \frac{N_t (g FW) − N_0 (g FW)}{t (weeks) \times DW:FW \times Area (m^{2})} \]

The area of each tank was 0.23 m\(^{-2}\) (with a depth of 0.48 m).

Maximum yields in Schuenhoff et al. (2006) in both seasons was achieved at a stocking density of 5 g FW l\(^{-1}\), but the yield in spring was higher than in winter (~700 vs ~520 g DW m\(^{-2}\) week\(^{-1}\)). These can be converted to mg N m\(^{-2}\) d\(^{-1}\):

Get Schuenhoff et al. (2006) starting condition and yield data
# schuenhoff_tetrasporophyte_2006 dry to wet conversion
remove_unit("gWW")
install_unit("gWW", "0.25 gDW")

spring <- read.csv(file.path("data_raw", "sources", "schuenhoff_2006", "schuenhoff_2006_Fig1_spring-data.csv"), header = F) %>%
  mutate(season = "spring")
winter <- read.csv(file.path("data_raw", "sources", "schuenhoff_2006", "schuenhoff_2006_Fig1_winter-data.csv"), header = F) %>%
  mutate(season = "winter")

N_perc <- set_units(0.065, "gN gDW-1")
C_perc <- set_units(0.355, "gN gDW-1") # C:N ratio (or C% of tissue) is not currently used within the model but might be useful later

# initial starting value
stock_dens <- set_units(5, "gWW L-1") %>% set_units("gDW m-3")
stock_dens <- (stock_dens*N_perc) %>% set_units("mgN m-3")

yield_spring <- set_units(700, "gDW m-2 week-1")
yield_spring <- yield_spring/set_units(0.48, "m")
yield_spring <- set_units(yield_spring*N_perc, "mgN m-3 d-1")

yield_winter <- set_units(520, "gDW m-2 week-1")
yield_winter <- yield_winter/set_units(0.48, "m")
yield_winter <- set_units(yield_winter*N_perc, "mgN m-3 d-1")

max_growth <- c(spring = yield_spring/stock_dens, winter = yield_winter/stock_dens)
mu <- max(max_growth)
Scale max growth with Q_lim
Qlim <- sapply(
  X = 1:250, 
  FUN = Q_lim, 
  Nf = 50, 
  spec_params = drop_units(c(Q_min = Q_min, Q_max = Q_max, K_c = Q_min * 0.85))
  ) 
plot(Qlim)

Scale max growth with Q_lim
max(Qlim)
[1] 0.9398813

The maximum growth rate (\(\mu\)) for A. armata reported in Schuenhoff et al. (2006) was 16.67% in spring and 12.38% in winter. Hard to know if these are being limited by factors other than temperature/light, so I am going to use the maximum $=$16.6666666666667% for growth in all seasons.

Salinity

Not much is known about how Asparagopsis responds to salinity, but it is thought to be fairly intolerant of low salinity (Camille White, pers. comm.). Mean salinity in most Tasmanian coastal waters is fairly consistent at ~35.25 PSU, so I’m going to set that as the optimum for both species.

Estimate salinity parameters
S_opt <- set_units(35.25, "g L-1") 
S_min <- set_units(21.15, "g L-1")  # ecklonia minimum is 80% of mean below mean. This is 40% of mean below mean.
S_max <- set_units(41.65, "g L-1")  # ecklonia minimum is 36% of mean below mean. This is 18% of mean below mean.
sal <- seq(0,50,0.5) %>% set_units("g L-1")
Slim <- sapply(X = sal, FUN = T_lim, spec_params = c(T_opt = S_opt, T_min = S_min, T_max = S_max))

ggplot(mapping = aes(x = sal, y = Slim)) +
  geom_line(size = 1) +
  theme_classic() +
  theme(legend.position = "none", element_text(family = "sans", colour = "black", size = 11),
        axis.title.y = element_text(vjust = 2)) +
  labs(x = expression("Salinity"), y = "Relative growth")

Temperature response

By default, the gametophyte temperature parameters for Asparagopsis in the model will be identical to the tetrasporophyte. This is because much less research has been done on the gametophyte phases. However, the gametophyte and tetrasporophyte phase might have similar temperature optima. In Chualáin et al. (2004) A.taxiformis tetrasporophytes had an optimum growth temperature of 25\(^{\circ}\), and this same growth optimum was observed in A.taxiformis gametophytes by Padilla-Gamiño and Carpenter (2007).

However, Mihaila et al. (2024) tested the growth of juvenile (microscopic) gametophytes at 15, 18 and 21\(^{\circ}\) and found that growth was highest at 18\(^{\circ}\), somewhat reduced at 15\(^{\circ}\) and substantially reduced at 21\(^{\circ}\). This temperature optimum is lower than the NA\(^{\circ}\) optimum found for the tetrasporophyte in Section 6, and the maximum is much lower. This might indicate that the gametophyte stage has a narrower temperature tolerance than the tetrasporophyte stage.

Figure 3: Timing of sea-cultured gametophytes and their appearance in the wild. Dark red indicates when the gametophyte is present on the reef, and lighter red indicates when gametophytes are just starting to appear or disappear, so less abundant. Tetrasporophytes have thus far been very difficult to find in the wild (Margie Rule, pers. comm.).

Previous studies on the temperature tolerance of Asparagopsis tetrasporophytes were reviewed by Zanolla et al. (2022), and Chualáin et al. (2004) collated previous studies’ observations on growth minima and maxima. They found that A. armata had a minimum growth temperature of 5-7\(^\circ\), an optimum growth temperature of 15 or 20\(^\circ\), and a maximum growth temperature of 25\(^\circ\)C. However, it should be noted that within Chualáin et al. (2004) the only sample collected from Australia (Sorrento Back Beach, Victoria, from the lower eulittoral zone) had an optimum growth temperature of 15\(^\circ\)C.

Get temperature/irradiance data from Zanolla et al. (2015), Figure 1
zanolla1 <- list(read.csv(file.path("data_raw", "sources", "zanolla_2015", "12 degrees.csv"), header = F) %>% mutate(temp = 12),
                 read.csv(file.path("data_raw", "sources", "zanolla_2015", "15 degrees.csv"), header = F) %>% mutate(temp = 15),
                 read.csv(file.path("data_raw", "sources", "zanolla_2015", "18 degrees.csv"), header = F) %>% mutate(temp = 18),
                 read.csv(file.path("data_raw", "sources", "zanolla_2015", "22 degrees.csv"), header = F) %>% mutate(temp = 22),
                 read.csv(file.path("data_raw", "sources", "zanolla_2015", "26 degrees.csv"), header = F) %>% mutate(temp = 26))

zanolla1 <- bind_rows(zanolla1)
colnames(zanolla1) <- c("Irradiance", "NPR", "Temperature")
zanolla1$NPR_rel <- zanolla1$NPR/max(zanolla1$NPR)

# # For when I need units
# zanolla1$Irradiance <- set_units(zanolla1$Irradiance, "umol m-2 s-1")
# zanolla1$NPR <- set_units(zanolla1$NPR, "mg gWW-1 h-1")
# zanolla1$Temperature <- set_units(zanolla1$Temperature, "C")
Get temperature/irradiance data from Zanolla et al. (2015)
zanolla1 <- zanolla1 %>% 
  mutate(Irr_group = case_when(
    Irradiance > 0 & Irradiance < 10 ~ "~5.7", Irradiance > 10 & Irradiance < 20 ~ "~19.8",
    Irradiance > 20 & Irradiance < 35 ~ "~32.3", Irradiance > 35 & Irradiance < 65 ~ "~55.3",
    Irradiance > 65 & Irradiance < 130 ~ "~124.1", Irradiance > 130 & Irradiance < 260 ~ "~254.4",
    Irradiance > 260 & Irradiance < 370 ~ "~365.9", Irradiance > 370 & Irradiance < 510 ~ "~504.5",
    Irradiance > 510 ~ "~598.5", TRUE ~ NA),
    Irr_group = factor(Irr_group, 
                       levels = c("~5.7", "~19.8", "~32.3", "~55.3", "~124.1", "~254.4", "~365.9", "~504.5", "~598.5")))

pT.1 <- ggplot(dplyr::filter(zanolla1, Irradiance > 0),
       aes(x = Temperature, y = NPR_rel, color = Irr_group)) +
  geom_line() +
  theme_classic()
# pT.1
Setting temperature params
both <- bind_rows(
  list(
    read.csv(file.path("data_raw", "sources", "chualain_2004", "armata.csv"), header = F) %>% mutate(species = "armata"),
    read.csv(file.path("data_raw", "sources", "chualain_2004", "taxiformis.csv"), header = F) %>% mutate(species = "taxiformis")
  )) %>% 
  mutate(sample = V3, 
         temperature = V2,
         variable = factor(V4, levels = c(" grow min", " grow max"), labels = c("grow_min", "grow_max"))) %>% 
  group_by(species, variable) %>% 
  reframe(temperature = mean(temperature))

T_max_arma <- both$temperature[both$species == "armata" & both$variable == "grow_max"] %>% set_units("degree_C")
T_min_arma <- both$temperature[both$species == "armata" & both$variable == "grow_min"] %>% set_units("degree_C")
T_max_taxi <- both$temperature[both$species == "taxiformis" & both$variable == "grow_max"] %>% set_units("degree_C")
T_min_taxi <- both$temperature[both$species == "taxiformis" & both$variable == "grow_min"] %>% set_units("degree_C")
T_opt_arma <- mean(c(20,20,15,15,20,20,20,20,20,20,20)) %>% set_units("degree_C")
T_opt_taxi <- mean(c(25,25,25,25,25,25,25,25,25,20,25,25,25)) %>% set_units("degree_C")
T_max_arma <- both$temperature[both$species == "armata" & both$variable == "grow_max"] %>% set_units("degree_C")
T_min_arma <- both$temperature[both$species == "armata" & both$variable == "grow_min"] %>% set_units("degree_C")
T_max_taxi <- both$temperature[both$species == "taxiformis" & both$variable == "grow_max"] %>% set_units("degree_C")
T_min_taxi <- both$temperature[both$species == "taxiformis" & both$variable == "grow_min"] %>% set_units("degree_C")
T_opt_arma <- mean(c(20,20,15,15,20,20,20,20,20,20,20)) %>% set_units("degree_C")
T_opt_taxi <- mean(c(25,25,25,25,25,25,25,25,25,20,25,25,25)) %>% set_units("degree_C")
Add a \(T_{lim}\) function to plot of temperature/irradiance data from Zanolla et al. (2015), Figure 1
test_T <- data.frame(Tc = seq(5, 28, 0.5))
test_params <- c(T_opt = T_opt_arma, T_max = T_max_arma, T_min = T_min_arma)
test_T$arma <- sapply(X = test_T$Tc, FUN = T_lim, spec_params = drop_units(test_params))
test_T$arma <- sapply(X = test_T$Tc, FUN = T_lim, spec_params = drop_units(test_params))
test_params <- c(T_opt = T_opt_taxi, T_max = T_max_taxi, T_min = T_min_taxi)
test_T$taxi <- sapply(X = test_T$Tc, FUN = T_lim, spec_params = drop_units(test_params))
test_T$taxi <- sapply(X = test_T$Tc, FUN = T_lim, spec_params = drop_units(test_params))

pT.2 <- pT.1 +
  geom_line(data = test_T, aes(x = Tc, y = arma), color = "black") +
  geom_line(data = test_T, aes(x = Tc, y = taxi), color = "black", linetype = "dashed") 
# pT.2

It seems that A. taxiformis has a slightly higher optimum temperature than A. armata * The optimum temperature for A. armata in Zanolla et al. (2015) was ~22\(^\circ\)C, although they only tested 5 temperatures (12, 15, 18, 22, and 26\(^\circ\)C). * Sainz-Villegas et al. (2024) also only tested three temperatures (15, 20, and 25\(^\circ\)C). There was no positive growth at 25\(^\circ\)C regardless of irradiance and 20\(^\circ\)C showed mixed results. However, their irradiance was kept between 55-60 \(\mu\)mol photons m\(^{-2}\) s\(^{-1}\), which seems very low to me. * Mata et al. (2006) found that net growth was significantly decreased above 29\(^\circ\)C due to an increase in respiration * Mata et al. (2017) investigated temperature limits of A. taxiformis, but like Zanolla et al. (2015) they didn’t actually do a full temperature range experiment and only tested three temperatures. Still, growth was best at 20.2\(^\circ\)C.

Light response

Figueroa et al. (2006) grew A. armata in fish pond effluent and measured \(K_d\) at different macroalgae densities. From this I can work out an \(a_cs\) (self-shading) value.

They expressed ETR in g DW but didn’t provide details of how g FW was converted to g DW. I’ll just use my previously calculated ratio of 7.11500003329053.

Conditions in Figueroa et al. (2006)
get_Kd <- function(z0 = 0, E0, z1, E1) {
  Kd <- #log(E2/E1) * (z1-z2)-1
  1/z1*log(E0/E1)
  return(unname(Kd))
}

cond <- data.frame(E_0 = c(2112, 2112, 2112, 2112), # umol photons m-2 s-1
                  dens = c(0, 4, 6, 8), # g (FW?) L-1
                  E_1 = c(2112*0.9, 264, 220, 110))

cond$Kd <- sapply(X = cond$E_1, FUN = get_Kd, E0 = 2112, z1 = -0.1, z0 = 0) * -1
cond$Kma <- cond$Kd - cond$Kd[cond$dens == 0]
cond$dens.DW <- set_units(cond$dens*drop_units(DWWW), "gDW L-1") # g WW L-1

# Figueroa 2006 did not measure N percentage, but we can take a minimum and maximum of 0.055 and 0.065 for starters
cond$dens.N.hi <- cond$dens.DW * N_perc
cond$dens.N.lo <- cond$dens.DW * set_units(N_min, "gN gDW-1")
cond$dens.N.hi <- set_units(cond$dens.N.hi, "mgN m-3")
cond$dens.N.lo <- set_units(cond$dens.N.lo, "mgN m-3")

# Within the model, k_ma = Nf * h_m * a_cs * max(h_m/d_top, 1) * 1/(min(h_m, d_top)), d_top =/= 0
# Assuming a maximum height of 26cm because the algae are so dense
cond$a_cs.lo <- 1/(cond$dens.N.lo * 
                     set_units(0.26, "m") * 
                     set_units(pmax(0.26/0.1, 1), "m") * 
                     set_units(1/(pmin(0.26, 0.1)), "m") * 
                     set_units(1/cond$Kma, "m-1"))
cond$a_cs.hi <- 1/(cond$dens.N.hi * 
                     set_units(0.26, "m") * 
                     set_units(pmax(0.26/0.1, 1), "m") * 
                     set_units(1/(pmin(0.26, 0.1)), "m") * 
                     set_units(1/cond$Kma, "m-1"))
all_acs <- c(cond$a_cs.lo[!is.na(cond$a_cs.lo)], cond$a_cs.hi[!is.na(cond$a_cs.hi)])
a_cs <- mean(all_acs)

all_acs <- drop_units(all_acs)

The above (from Figueroa et al. (2006)) actually gave a fairly narrow range of \(a_{cs}\) values to use, from \(1.139 \times 10^{-6}\) to \(5.280 \times 10^{-6}\). Taking an average of those values gives \(a_{cs}=\)\(2.801 \times 10^{-6}\>\mathrm{m\>mgN^{-1}}\).

The optimum irradiance in Zanolla et al. (2015) was ~150 \(\mu\)mol photons m\(^{-2}\) s\(^{-1}\) but this was only obvious in the 22\(^\circ\) trials.

Plot of temperature/irradiance data from Zanolla et al. (2015) Figure 1
pI.1 <- ggplot(zanolla1, aes(x = Irradiance, y = NPR_rel, colour = as.factor(Temperature))) +
  geom_line() +
  scale_y_continuous(limits = c(0,1)) +
  theme_classic()
pI.1

Relative NPR_{max} with changing irradiance.

Relative NPR\(_{max}\) with changing irradiance.

Using \(I_o=150\) in the \(I_{lim}\) function while trying to approximate the culture conditions (clear water, algae grown close to the surface) specified in Zanolla et al. (2015) produces a good approximation (black line, below). The self-shading constant used below is the one calculated from Figueroa et al. (2006) above.

Add an \(I_{lim}\) function to plot of temperature/irradiance data from Zanolla et al. (2015) Figure 1
# Convert density to N
dens.1 <- set_units(0.04/drop_units(DWWW), "gDW L-1") # Zanolla tested 1 individual in lab settings
dens.1 <- dens.1*N_perc
dens.1 <- set_units(dens.1, "mgN m-3")

I_o <- 150 %>% set_units("mol m-2 s-1")
I_o <- 150 %>% set_units("mol m-2 s-1")

test_I <- data.frame(Ic = seq(0, 800, 20))
site_params_light <- c(d_top = 0.05, hc = 1, kW = 1/100)
spec_params_light <- c(a_cs = drop_units(a_cs), # This is the a_cs value from Figueroa 2006
                       I_o = drop_units(I_o), 
                       h_max = 0.1) # height is constant at full culture depth range

test_I$I_lim <- diag(sapply(X = test_I$Ic, FUN = I_lim, Nf = drop_units(dens.1), kW = rep(0.1, nrow(test_I)),
                       spec_params = spec_params_light, site_params = site_params_light))
Plot \(I_{lim}\) function test
ggplot(test_I, aes(x = Ic, y = I_lim)) +
  geom_line() +
  scale_y_continuous(limits = c(0,1)) +
  theme_classic() +
  geom_vline(xintercept = drop_units(I_o), color = "grey", linetype = "dashed")

Relative NPR_{max} with changing irradiance from Zanolla et al. (2015) (colors) and from the I_{lim} function (black line). The grey dashed line shows the peak of I_o=150 \mumol photons m^{-2} s^{-1}.

Relative NPR\(_{max}\) with changing irradiance from Zanolla et al. (2015) (colors) and from the \(I_{lim}\) function (black line). The grey dashed line shows the peak of \(I_o=150\) \(\mu\)mol photons m\(^{-2}\) s\(^{-1}\).
Plot \(I_{lim}\) function test
  geom_vline(xintercept = drop_units(I_o), color = "grey", linetype = "dashed")
mapping: xintercept = ~xintercept 
geom_vline: na.rm = FALSE
stat_identity: na.rm = FALSE
position_identity 

Fragmentation with exposure

Hall (2023) counducted three (seemingly identical?) velocity treatments on gametophytes and measured % biomass lost. Experiments 1 and 2 showed no differences between treatments, but experiment 3 did. I’m going to use experiment 3’s results to get a linear rate with velocity, and set base and maximum rates based on observations from all three experiments.

  • It has been suggested that “this species prefer semi-exposed areas as biomass production decreased with wave exposure” (Sainz-Villegas 2024 pg 66) but this was not tested in that study.
  • May be worth including a dynamic “breakage” term, perhaps modifying \(D_m\) such that it has a minimum value and increases with \(U_0\) (or \(U_0^2\)?).

In Tasmania, A. armata are harvested after only 6 weeks because the shedding rate means they don’t get any additional biomass. There are two ways to implement this:

  1. Manually, i.e. the model is only ever run for 6 weeks at a time with Asparagopsis (Camille White, pers comm).
  • Disadvantage: no mechanistic recreation of shedding, that 6-week time frame will be fixed
  • Advantage: fast and easy
  1. Mechanistically, i.e. implementing a value of \(D_m\) that increases over time.
  • Disadvantage: additional uncertainty that comes with needing to create/parameterise a new function
  • Advantages: mechanistic recreation of realistic conditions and culture practices, and a possible synergies with an exposure-based \(D_m\) parameters

A loss term might end up looking like: \[ D_m = f(growdays) + f(h_m/h_{max}) + f(V) \]

Where \(D_m\) is the % of biomass lost d\(^{-1}\).

Important

Is fragmentation maybe a function of age (maturity) or length of thalli, in addition to exposure?

Velocity

Hall (2023) investigated tetrasporophyte and gametophyte fragmentation at different levels of turbulence and water velocities. Focus of the study was on how fragmentation can be used in nurseries to enhance stock production. The laminar water velocities tested were:

  • Low ( 0.25 m s\(^{-1}\))
  • Low-mid ( 0.37 m s\(^{-1}\))
  • Mid ( 0.52 m s\(^{-1}\))
  • Mid-high ( 0.81 m s\(^{-1}\))
  • High ( 1.14 m s\(^{-1}\))
  • Max-high ( 1.42 m s\(^{-1}\))

These results are summarised in Figures 3.17, 3.18 and 3.19.

Get Hall (2023) velocity data for gametophytes
hall_data <- here() %>% file.path("data_raw", "sources", "hall_2023", "hall_2023.csv") %>% read.csv()
hall_names <- c("hall_2.9", "hall_3.17", "hall_3.18", "hall_3.19", "hall_3.28", "hall_3.29")
labels_4 <- c('static', 'low', 'mid', 'high')
labels_5 <- c('low', 'low_mid', 'mid', 'mid_high', 'high')
labels_6 <- c(labels_5, 'max_high')

hall_data <- split.default(hall_data, rep(hall_names, each = 4)[1:ncol(hall_data)]) %>% 
  lapply(function(df){
    # Get information
    form <- ifelse(any(str_detect(colnames(df), "tetra")), "tetrasporophyte", "gametophyte") %>% unique()
    treat <- ifelse(any(str_detect(colnames(df), "VE")), "velocity", "turbulence") %>% unique()
    # Pare down to just data
    df <- df %>% 
      mutate_all(as.numeric) %>% 
      filter(!if_all(everything(), is.na))
    # Get the correct treatment labelling
    labels <- if (nrow(df) == 4) {labels_4} else if (nrow(df) == 5) {labels_5} else {labels_6}
    # Put dataframe together
    df <- df[,2:ncol(df)]
    colnames(df) <- c("mean", "label", "mean_se")
    df$label <- as.factor(labels)
    df$treat <- as.factor(treat)
    df$form <- as.factor(form)
    df
  }) %>% 
  purrr::imap(., ~ mutate(.x, fig = .y)) %>% 
  bind_rows() %>% 
  mutate(se = mean_se - mean,
         fig = as.factor(fig),
         label = factor(label, levels = c("static", labels_6)))
hall_data <- here() %>% file.path("data_raw", "sources", "hall_2023", "hall_2023.csv") %>% read.csv()
hall_names <- c("hall_2.9", "hall_3.17", "hall_3.18", "hall_3.19", "hall_3.28", "hall_3.29")
labels_4 <- c('static', 'low', 'mid', 'high')
labels_5 <- c('low', 'low_mid', 'mid', 'mid_high', 'high')
labels_6 <- c(labels_5, 'max_high')

hall_data <- split.default(hall_data, rep(hall_names, each = 4)[1:ncol(hall_data)]) %>% 
  lapply(function(df){
    # Get information
    form <- ifelse(any(str_detect(colnames(df), "tetra")), "tetrasporophyte", "gametophyte") %>% unique()
    treat <- ifelse(any(str_detect(colnames(df), "VE")), "velocity", "turbulence") %>% unique()
    # Pare down to just data
    df <- df %>% 
      mutate_all(as.numeric) %>% 
      filter(!if_all(everything(), is.na))
    # Get the correct treatment labelling
    labels <- if (nrow(df) == 4) {labels_4} else if (nrow(df) == 5) {labels_5} else {labels_6}
    # Put dataframe together
    df <- df[,2:ncol(df)]
    colnames(df) <- c("mean", "label", "mean_se")
    df$label <- as.factor(labels)
    df$treat <- as.factor(treat)
    df$form <- as.factor(form)
    df
  }) %>% 
  purrr::imap(., ~ mutate(.x, fig = .y)) %>% 
  bind_rows() %>% 
  mutate(se = mean_se - mean,
         fig = as.factor(fig),
         label = factor(label, levels = c("static", labels_6)))

hall_gam_vel <- filter(hall_data, form == "gametophyte" & treat == "velocity")

p1 <- ggplot(hall_gam_vel, aes(x = as.numeric(label), y = mean*100, colour = fig)) +
  geom_point() +
  prettyplot +
  scale_y_continuous(limits = c(0,15), breaks = seq(0,15,2.5)) +
  labs(x = "Velocity level", y = "Mean % biomass lost")

p1

Combined data from Figures 3.17 (red), 3.18 (green) and 3.19 (blue) from Hall (2023) as they appear to be three different experiments with the same treatments.

Combined data from Figures 3.17 (red), 3.18 (green) and 3.19 (blue) from Hall (2023) as they appear to be three different experiments with the same treatments.

I’m not sure what’s going on with Velocity Experiment 2 (in green, above) but the other two experiments show a clear trend of biomass lost with increasing velocity.

Create linear relationship for velocity
hall_gam_vel2 <- hall_gam_vel %>% 
  filter(fig != "hall_3.18")

line_a <- nls(
  formula = as.formula(mean ~ a * as.numeric(label)),
  start = c(a = 0.1),
  data = hall_gam_vel2
  )

D_ve <- unname(coef(line_a)) %>% set_units("d-1")

p2 <- p1 +
  geom_line(data = hall_gam_vel2, aes(x = as.numeric(label), y = 100*drop_units(D_ve)*as.numeric(label)), colour = "black")

p2

Add linear relationship to above plot

Add linear relationship to above plot

Turbulence

Hall (2023) also investigated fragmentation due to turbulence on the gametophyte, which is summarised in Figures 3.28 and 3.29.

Get Hall (2023) turbulence data for gametophytes
hall_gam_turb <- hall_data %>% 
  filter(form == "gametophyte" & treat == "turbulence")

p1 <- ggplot(hall_gam_turb, aes(x = as.numeric(label), y = mean*100, fill = fig)) +
  geom_col(position = "dodge") +
  prettyplot +
  labs(x = "Level of turbulence", y = "Mean % biomass lost")

p1

Combined data from Figures 3.28 (red) and 3.29 (blue) from Hall (2023) as they appear to be two different experiments with the same treatments.

Combined data from Figures 3.28 (red) and 3.29 (blue) from Hall (2023) as they appear to be two different experiments with the same treatments.

Looks very different between the two experiments, but I’m going to go with the one that shows a clear trend.

Get turbulence data ready for vector
D_st <- D_m <- hall_gam_turb$mean[hall_gam_turb$label == "static"] %>% mean() %>% set_units("d-1")
D_lo <- hall_gam_turb$mean[hall_gam_turb$label == "low"] %>% max() %>% set_units("d-1")
D_mi <- hall_gam_turb$mean[hall_gam_turb$label == "mid"] %>% max() %>% set_units("d-1")
D_hi <- hall_gam_turb$mean[hall_gam_turb$label == "high"] %>% max() %>% set_units("d-1")

Finishing up

All parameters and sources

Table 3 shows exactly what’s going into the species vectors. Note that only one of \(V_{am}\) & \(K_{am}\) or \(M_{am}\) & \(C_{am}\) will be used as the macroalgae will not have both linear and Michaelis-Menton uptake of the same nutrient.

Table 2: Final values for species parameters before saving. These are displayed both for transparency and to check that the units have converted correctly.
Parameter Units A. armata value A. taxiformis value Sources
\(V_{am}\) umolN/(gDW*h) \(14.85\) Schuenhoff et al. (2006)
\(K_{am}\) umolN/L \(10.01\) Schuenhoff et al. (2006)
\(M_{am}\) L/(h*gDW) \(0.1400\) Torres et al. (2021)
\(C_{am}\) umolN/(h*gDW) \(8.790\) Torres et al. (2021)
\(M_{ni}\) L/(h*gDW) \(-1.382 \times 10^{-3}\) Torres et al. (2021)
\(C_{ni}\) umolN/(gDW*h) \(0.4430\) Torres et al. (2021)
\(M_{ot}\) L/(h*gDW) \(6.000 \times 10^{-3}\) Torres et al. (2021)
\(C_{ot}\) umolN/(h*gDW) \(0.8800\) Torres et al. (2021)
\(K_{c}\) - \(\mathrm{NA}\) Hadley et al. (2015)
\(Q_{min}\) mgN/gDW \(19.43\) Mihaila et al. (2022); Zemke-White and Clements (1999); Angell et al. (2016)
\(Q_{max}\) mgN/gDW \(65.00\) Schuenhoff et al. (2006)
\(DWWW\) gWW \(7.115\) Nunes et al. (2024); Roque et al. (2019)
\(\mu\) 1/d \(0.1667\)
\(D_{m}\) 1/d \(3.133 \times 10^{-2}\)
\(D_{v}\) 1/d \(1.233 \times 10^{-2}\)
\(D_{lo}\) 1/d \(5.390 \times 10^{-2}\)
\(D_{mi}\) 1/d \(0.1270\)
\(D_{hi}\) 1/d \(0.2568\)
\(I_o\) mol/(m^2*s) \(150.0\)
\(a_{cs}\) m/mgN \(2.801 \times 10^{-6}\)
\(T_{opt}\) °C \(19.09\) \(24.62\)
\(T_{min}\) °C \(8.895\) \(16.03\)
\(T_{max}\) °C \(22.43\) \(29.23\)
\(S_{opt}\) g/L \(35.25\)
\(S_{min}\) g/L \(21.15\)
\(S_{max}\) g/L \(41.65\)
\(h_a\) - \(1.794 \times 10^{3}\)
\(h_b\) - \(1.500\)
\(h_c\) - \(1.000 \times 10^{-2}\)
\(h_{max}\) m \(0.2600\)
Table 3: Final values for species parameters before saving. These are displayed both for transparency and to check that the units have converted correctly.
Parameter Units A. armata value A. taxiformis value Sources
\(V_{am}\) umolN/(gDW*h) \(14.85\) Schuenhoff et al. (2006)
\(K_{am}\) umolN/L \(10.01\) Schuenhoff et al. (2006)
\(M_{am}\) L/(h*gDW) \(0.1400\) Torres et al. (2021)
\(C_{am}\) umolN/(h*gDW) \(8.790\) Torres et al. (2021)
\(M_{ni}\) L/(h*gDW) \(-1.382 \times 10^{-3}\) Torres et al. (2021)
\(C_{ni}\) umolN/(gDW*h) \(0.4430\) Torres et al. (2021)
\(M_{ot}\) L/(h*gDW) \(6.000 \times 10^{-3}\) Torres et al. (2021)
\(C_{ot}\) umolN/(h*gDW) \(0.8800\) Torres et al. (2021)
\(K_{c}\) - \(\mathrm{NA}\) Hadley et al. (2015)
\(Q_{min}\) mgN/gDW \(19.43\) Mihaila et al. (2022); Zemke-White and Clements (1999); Angell et al. (2016)
\(Q_{max}\) mgN/gDW \(65.00\) Schuenhoff et al. (2006)
\(DWWW\) gWW \(7.115\) Nunes et al. (2024); Roque et al. (2019)
\(\mu\) 1/d \(0.1667\)
\(D_{m}\) 1/d \(3.133 \times 10^{-2}\)
\(D_{v}\) 1/d \(1.233 \times 10^{-2}\)
\(D_{lo}\) 1/d \(5.390 \times 10^{-2}\)
\(D_{mi}\) 1/d \(0.1270\)
\(D_{hi}\) 1/d \(0.2568\)
\(I_o\) mol/(m^2*s) \(150.0\)
\(a_{cs}\) m/mgN \(2.801 \times 10^{-6}\)
\(T_{opt}\) °C \(19.09\) \(24.62\)
\(T_{min}\) °C \(8.895\) \(16.03\)
\(T_{max}\) °C \(22.43\) \(29.23\)
\(S_{opt}\) g/L \(35.25\)
\(S_{min}\) g/L \(21.15\)
\(S_{max}\) g/L \(41.65\)
\(h_a\) - \(1.794 \times 10^{3}\)
\(h_b\) - \(1.500\)
\(h_c\) - \(1.000 \times 10^{-2}\)
\(h_{max}\) m \(0.2600\)

Saving data

Insert values and units into named vector
param_units <- c(
  "mg gDW-1 d-1",                                              # V_am
  "mg m-3",                                                    # K_am
  rep("m3 gDW-1 d-1", 2),                                      # M_am, C_am
  "mg gDW-1 d-1",                                              # V_ni
  "mg m-3",                                                    # K_ni
  rep("m3 gDW-1 d-1", 2),                                      # M_ni, C_ni
  "mg gDW-1 d-1",                                              # V_ot
  "mg m-3",                                                    # K_ot
  rep("m3 gDW-1 d-1", 2),                                      # M_ot, C_ot
  rep("mg gDW-1", 3),                                          # Q_min, Q_max, K_c
  "d-1",                                                       # mu
  # rep("g gDW-1", 2),                                           # N_min, N_max
  rep("d-1", 5),                                               # D_m
  "m mg-1",                                                    # a_cs
  "umol photons m-2 s-1",                                      # I_o
  rep("degrees C", 3),                                         # T_opt, T_min, T_max
  rep("g L-1", 3),                                             # S_opt, S_min, S_max
  rep("d-1", 3),                                               # h_a, h_b, h_c
  "m",                                                         # h_max
  "gWW gDW-1"                                                  # DWWW
  )

a_armata <- c(
  V_am = V_am %>% set_units("mgN gDW-1 d-1") %>% drop_units(),
  K_am = K_am %>% set_units("mgN m-3") %>% drop_units(),
  M_am = M_am %>% set_units("m3 gDW-1 d-1") %>% drop_units(),
  C_am = C_am %>% set_units("mgN gDW-1 d-1") %>% drop_units(),
  V_ni = V_ni,
  K_ni = K_ni,
  M_ni = M_ni,
  C_ni = C_ni %>% set_units("mgN gDW-1 d-1") %>% drop_units(),
  V_ot = V_ot,
  K_ot = K_ot,
  M_ot = M_ot %>% set_units("m3 gDW-1 d-1") %>% drop_units(),
  C_ot = C_ot %>% set_units("mgN gDW-1 d-1") %>% drop_units(),
  Q_min = drop_units(Q_min), 
  Q_max = drop_units(Q_max), 
  K_c = drop_units(Q_min) * 0.85,
  mu = drop_units(mu),
  # N_min = N_min,
  # N_max = N_max,
  D_m = drop_units(D_m),
  D_ve = drop_units(D_ve), 
  D_lo = drop_units(D_lo),
  D_mi = drop_units(D_mi),
  D_hi = drop_units(D_hi),
  a_cs = drop_units(a_cs),                  # or a_cs from figueroa 2006?
  I_o = drop_units(I_o),
  T_opt = T_opt_arma,
  T_min = T_min_arma,
  T_max = T_max_arma,
  S_opt = S_opt,
  S_min = S_min,
  S_max = S_max,
  h_a = h_a,
  h_b = h_b,
  h_c = h_c,
  h_max = drop_units(h_max),
  DWWW = DWWW 
  )

a_taxiformis <- a_armata
a_taxiformis['T_opt'] <- T_opt_taxi
a_taxiformis['T_max'] <- T_max_taxi
a_taxiformis['T_min'] <- T_min_taxi
a_armata <- c(
  V_am = V_am %>% set_units("mgN gDW-1 d-1") %>% drop_units(),
  K_am = K_am %>% set_units("mgN m-3") %>% drop_units(),
  M_am = M_am %>% set_units("m3 gDW-1 d-1") %>% drop_units(),
  C_am = C_am %>% set_units("mgN gDW-1 d-1") %>% drop_units(),
  V_ni = V_ni,
  K_ni = K_ni,
  M_ni = M_ni,
  C_ni = C_ni %>% set_units("mgN gDW-1 d-1") %>% drop_units(),
  V_ot = V_ot,
  K_ot = K_ot,
  M_ot = M_ot %>% set_units("m3 gDW-1 d-1") %>% drop_units(),
  C_ot = C_ot %>% set_units("mgN gDW-1 d-1") %>% drop_units(),
  Q_min = drop_units(Q_min), 
  Q_max = drop_units(Q_max), 
  K_c = drop_units(Q_min) * 0.85,
  mu = drop_units(mu),
  # N_min = N_min,
  # N_max = N_max,
  D_m = drop_units(D_m),
  D_ve = drop_units(D_ve), 
  D_lo = drop_units(D_lo),
  D_mi = drop_units(D_mi),
  D_hi = drop_units(D_hi),
  a_cs = drop_units(a_cs),                  # or a_cs from figueroa 2006?
  I_o = drop_units(I_o),
  T_opt = T_opt_arma,
  T_min = T_min_arma,
  T_max = T_max_arma,
  S_opt = S_opt,
  S_min = S_min,
  S_max = S_max,
  h_a = h_a,
  h_b = h_b,
  h_c = h_c,
  h_max = drop_units(h_max),
  DWWW = DWWW 
  )

a_taxiformis <- a_armata
a_taxiformis['T_opt'] <- T_opt_taxi
a_taxiformis['T_max'] <- T_max_taxi
a_taxiformis['T_min'] <- T_min_taxi

The model uses a named vector, which can be loaded straight from Rdata files, but I’m saving as a .csv file because that’s easier for human reading.

Save named vector and .csv file
# Save data as a named vector - model uses this
qsave(a_armata, file = file.path(out_path, "asparagopsis_armata.qs"))
qsave(a_taxiformis, file = file.path(out_path, "asparagopsis_taxiformis.qs"))

# Save duplicates as CSV - easier for humans to read
write.csv(
  data.frame(
    parameter = names(a_armata),
    unit = as.character(param_units),
    value = (unname(a_armata))
  ),
  file.path(out_path, "asparagopsis_armata.csv")
)

write.csv(
  data.frame(
    parameter = names(a_taxiformis),
    unit = as.character(param_units),
    value = (unname(a_taxiformis))
  ),
  file.path(out_path, "asparagopsis_taxiformis.csv")
)

# Save duplicates as CSV - easier for humans to read
write.csv(
  data.frame(
    parameter = names(a_armata),
    unit = as.character(param_units),
    value = (unname(a_armata))
  ),
  file.path(out_path, "asparagopsis_armata.csv")
)

write.csv(
  data.frame(
    parameter = names(a_taxiformis),
    unit = as.character(param_units),
    value = (unname(a_taxiformis))
  ),
  file.path(out_path, "asparagopsis_taxiformis.csv")
)

Potential future extensions

Limitation by other nutrients

It has been suggested that the model should include the possibility of phosphorus limitation, as well as nitrogen limitation (switching between the limiting nutrient based on availability/internal conditions). This was considered because the places where macroalgae is being grown for nitrogen bioremediation purposes (river outflows, next to fish farms) are likely to be very high in nitrogen but not necessarily phosphates.

However, it was decided not to include phosphorus limitation. While the mechanics of including it would be fairly simple, research into the required parameters (shape and rate of uptake, internal requirements) are almost non-existent for Asparagopsis. Grisenthwaite (2023) may possibly have some of this data for tetrasporophytes(?) but I have yet to find anything similar for gametophytes. If the ‘standard’, not species-specific Atkinson ratio of N:P were assumed (Atkinson and Smith 1983), then the algae would require 1/30th as much phosphorus as nitrogen to maintain the modelled growth. Given that macroalgae require so much more nitrogen than phosphorus, it seems unlikely that they are ever going to be phosphorus limited in coastal or oceanic waters. Phosphates are also not often measured in marine waters, so obtaining ambient data would be extremely difficult.

Still, if the Atkinson ratio (30:1 N:P) were assumed and phosphate uptake kinetics were ignored, then the minimum phosphate concentrations required to maintain the modelled growth can be estimated and reported as an additional consideration.

  • Dissolved inorganic carbon may be a major (perhaps determining?) limiting factor for growth and photosynthesis in Asparagopsis (Zanolla et al. 2022; Mata et al. 2010)
  • Sainz-Villegas (2024) and Sainz-Villegas et al. (2024) investigated the survival of vegetative propagules (juvenile gametophytes) - potential to estimate propagation/spread based on wave exposure
  • Mata et al. (2017) looked at temperature effects on the production of bromoforms

References

Angell, Alex R., Leonardo Mata, Rocky De Nys, and Nicholas A. Paul. 2016. ‘The Protein Content of Seaweeds: A Universal Nitrogen-to-Protein Conversion Factor of Five’. Journal of Applied Phycology 28 (1): 511–24. http://doi.org/10.1007/s10811-015-0650-1.
Atkinson, M. J., and S. V. Smith. 1983. ‘C:N:P Ratios of Benthic Marine Plants’. Limnology and Oceanography 28 (3): 568–74. https://doi.org/10.4319/lo.1983.28.3.0568.
Brooke, Charles G., Breanna M. Roque, Claire Shaw, et al. 2020. ‘Methane Reduction Potential of Two Pacific Coast Macroalgae During in Vitro Ruminant Fermentation. Frontiers in Marine Science 7. https://doi.org/10.3389/fmars.2020.00561.
Chualáin, Fionnuala Ní, Christine A. Maggs, Gary W. Saunders, and Michael D. Guiry. 2004. ‘The Invasive Genus Asparagopsis (Bonnemaisoniaceae, Rhodophyta): Molecular Systematics, Morphology, and Ecophysiology of Falkenbergia Isolates. Journal of Phycology 40 (6): 1112–26. https://doi.org/10.1111/j.1529-8817.2004.03135.x.
Cole, Andrew J., Leonardo Mata, Nicholas A. Paul, and Rocky De Nys. 2014. ‘Using CO\(_{\textrm{2}}\) to Enhance Carbon Capture and Biomass Applications of Freshwater Macroalgae’. GCB Bioenergy 6 (6): 637–45. https://doi.org/10.1111/gcbb.12097.
Dijoux, Laury, Frédérique Viard, and Claude Payri. 2014. ‘The More We Search, the More We Find: Discovery of a New Lineage and a New Species Complex in the Genus Asparagopsis. PLOS ONE 9 (7): e103826. https://doi.org/10.1371/journal.pone.0103826.
Dishon, Gal, Hannah M. Resetarits, Brandon Tsai, Ashley L. Jones, Vinayak Agarwal, and Jennifer E. Smith. 2023. ‘The Effect of Light Intensity, Spectrum, and Photoperiod on the Physiological Performance of Asparagopsis Taxiformis Tetrasporophytes’. Algal Research 76: 103304. https://doi.org/10.1016/j.algal.2023.103304.
Figueroa, Félix L., Rui Santos, Rafael Conde-Álvarez, et al. 2006. ‘The Use of Chlorophyll Fluorescence for Monitoring Photosynthetic Condition of Two Tank-Cultivated Red Macroalgae Using Fishpond Effluents’. Botanica Marina 49 (4): 275–82. https://doi.org/10.1515/BOT.2006.035.
Grisenthwaite, Robert David Karr. 2023. ‘Establishing Land Tank Cultivation of Asparagopsis Taxiformis in Scotland. Master of {Research}, University of the Highlands; Islands.
Hadley, Scott A., Karen A. Wild-Allen, Craig R. Johnson, and Catriona K. MacLeod. 2015. ‘Modeling Macroalgae Growth and Nutrient Dynamics for Integrated Multi-Trophic Aquaculture’. Journal of Applied Phycology 27 (2): 901–16. http://doi.org/10.1007/s10811-014-0370-y.
Hall, Ailise Maree. 2023. ‘Investigating the Effects of Water Motion on Fragmentation of the Red Seaweed Asparagopsis Armata. Master of {Science}, University of Auckland.
Kraan, Stefan, and Kelly A. Barrington. 2005. ‘Commercial Farming of Asparagopsis Armata (Bonnemaisoniceae, Rhodophyta) in Ireland, Maintenance of an Introduced Species?’ Journal of Applied Phycology 17 (2): 103–10. https://doi.org/10.1007/s10811-005-2799-5.
Mata, Leonardo. 2008. ‘Integrated Aquaculture of Bonnemaisoniaceae: Physiological and Nutritional Controls of Biomass Production and of Halogenated Metabolite Content’. Doctor of {Philosophy} in {Marine} {Sciences}, University of Algarve.
Mata, Leonardo, Rebecca J. Lawton, Marie Magnusson, Nikos Andreakis, Rocky De Nys, and Nicholas A. Paul. 2017. ‘Within-Species and Temperature-Related Variation in the Growth and Natural Products of the Red Alga Asparagopsis Taxiformis. Journal of Applied Phycology 29 (3): 1437–47. http://doi.org/10.1007/s10811-016-1017-y.
Mata, Leonardo, Andreas Schuenhoff, and Rui Santos. 2010. ‘A Direct Comparison of the Performance of the Seaweed Biofilters, Asparagopsis Armata and Ulva Rigida. Journal of Applied Phycology 22 (5): 639–44. https://doi.org/10.1007/s10811-010-9504-z.
Mata, Leonardo, João Silva, Andreas Schuenhoff, and Rui Santos. 2006. ‘The Effects of Light and Temperature on the Photosynthesis of the Asparagopsis Armata Tetrasporophyte (Falkenbergia Rufolanosa), Cultivated in Tanks’. Aquaculture, Seaweed-Based Integrated Mariculture, vol. 252 (1): 12–19. https://doi.org/10.1016/j.aquaculture.2005.11.045.
McDermid, Karla J., and Brooke Stuercke. 2003. ‘Nutritional Composition of Edible Hawaiian Seaweeds’. Journal of Applied Phycology 15 (6): 513–24. https://doi.org/10.1023/B:JAPH.0000004345.31686.7f.
Mihaila, Alisa A., Christopher R. K. Glasson, Rebecca Lawton, Stefan Muetzel, German Molano, and Marie Magnusson. 2022. ‘New Temperate Seaweed Targets for Mitigation of Ruminant Methane Emissions: An in Vitro Assessment’. Applied Phycology 3 (1): 274–84. https://doi.org/10.1080/26388081.2022.2059700.
Mihaila, Alisa A., Rebecca J. Lawton, Christopher R. K. Glasson, and Marie Magnusson. 2024. ‘Moderate Temperature and Water Flow Increase Growth During the Nursery Phase of Asparagopsis Armata. Algal Research 78: 103380. https://doi.org/10.1016/j.algal.2023.103380.
Monro, Keyne. 2007. ‘Evolutionary Consequences of Growth-Form Plasticity in a Red Seaweed’. Doctor of {Philosophy}, University of New South Wales. http://doi.org/10.26190/unsworks/17535.
Nunes, Helder P. B., Cristiana S. A. M. Maduro Dias, Nuno V. Álvaro, and Alfredo E. S. Borba. 2024. ‘Evaluation of Two Species of Macroalgae from Azores Sea as Potential Reducers of Ruminal Methane Production: In Vitro Ruminal Assay. Animals 14 (6): 967. https://doi.org/10.3390/ani14060967.
Pacheco, Diana, Glacio Souza Araújo, João Cotas, Rui Gaspar, João M. Neto, and Leonel Pereira. 2020. ‘Invasive Seaweeds in the Iberian Peninsula: A Contribution for Food Supply. Marine Drugs 18 (11): 560. https://doi.org/10.3390/md18110560.
Padilla-Gamiño, Jacqueline L., and Robert C. Carpenter. 2007. ‘Seasonal Acclimatization of Asparagopsis Taxiformis (Rhodophyta) from Different Biogeographic Regions’. Limnology and Oceanography 52 (2): 833–42. https://doi.org/10.4319/lo.2007.52.2.0833.
Roque, Breanna Michell, Charles Garrett Brooke, Joshua Ladau, et al. 2019. ‘Effect of the Macroalgae Asparagopsis Taxiformis on Methane Production and Rumen Microbiome Assemblage’. Animal Microbiome 1 (1): 3. https://doi.org/10.1186/s42523-019-0004-4.
Sainz-Villegas, Samuel. 2024. ‘Modelling the Effects of Climate Change on the Distribution of Subtidal Macroalgae: The Role of Vegetative Propagation. Doctor of {Philosophy}, Universidad de Cantabria.
Sainz-Villegas, Samuel, Begoña Sánchez-Astráin, Araceli Puente, and José A. Juanes. 2024. ‘Exploring the Effects of Temperature and Light Availability on the Vegetative Propagation Processes of the Non-Native Species Asparagopsis Armata. Frontiers in Marine Science 10: 1343353. https://doi.org/10.3389/fmars.2023.1343353.
Schuenhoff, Andreas, Leonardo Mata, and Rui Santos. 2006. ‘The Tetrasporophyte of Asparagopsis Armata as a Novel Seaweed Biofilter’. Aquaculture, Seaweed-Based Integrated Mariculture, vol. 252 (1): 3–11. https://doi.org/10.1016/j.aquaculture.2005.11.044.
Torres, Raquel C., Ana M. Campos, Jacob Goldman, Isabel Barrote, Leonardo Mata, and João Silva. 2024. ‘Effects of Light Quality and Intensity on Growth and Bromoform Content of the Red Seaweed Asparagopsis Taxiformis. Journal of Applied Phycology 36 (2): 627–37. https://doi.org/10.1007/s10811-023-03052-6.
Torres, Raquel C., Leonardo Mata, Rui Santos, and Ana Alexandre. 2021. ‘Nitrogen Uptake Kinetics of an Enteric Methane Inhibitor, the Red Seaweed Asparagopsis Armata. Journal of Applied Phycology 33 (6): 4001–9. https://doi.org/10.1007/s10811-021-02604-y.
Wiltshire, Kathryn H., Jason E. Tanner, C. Fred D. Gurgel, and Marty R. Deveney. 2015. Feasibility Study for Integrated Multitrophic Aquaculture in Southern Australia. {SARDI} {Publication} F2015/000786-1.
Wright, Jeffrey T., Elysha J. Kennedy, Rocky de Nys, and Masayuki Tatsumi. 2022. ‘Asexual Propagation of Asparagopsis Armata Gametophytes: Fragmentation, Regrowth and Attachment Mechanisms for Sea-Based Cultivation’. Journal of Applied Phycology 34 (4): 2135–44. https://doi.org/10.1007/s10811-022-02763-6.
Zanolla, Marianela, María Altamirano, Raquel Carmona, et al. 2018. ‘Assessing Global Range Expansion in a Cryptic Species Complex: Insights from the Red Seaweed Genus Asparagopsis (Florideophyceae)’. Journal of Phycology 54 (1): 12–24. https://doi.org/10.1111/jpy.12598.
Zanolla, Marianela, María Altamirano, Julio De La Rosa, Francisco X. Niell, and Raquel Carmona. 2018. ‘Size Structure and Dynamics of an Invasive Population of Lineage 2 of Asparagopsis Taxiformis (Florideophyceae) in the Alboran Sea. Phycological Research 66 (1): 45–51. https://doi.org/10.1111/pre.12189.
Zanolla, Marianela, M. Altamirano, R. Carmona, J. De La Rosa, A. Sherwood, and N. Andreakis. 2015. ‘Photosynthetic Plasticity of the Genus Asparagopsis (Bonnemaisoniales, Rhodophyta) in Response to Temperature: Implications for Invasiveness’. Biological Invasions 17 (5): 1341–53. https://doi.org/10.1007/s10530-014-0797-8.
Zanolla, Marianela, M. Altamirano, F. X. Niell, and R. Carmona. 2019. ‘There Is More Than Meets the Eye: Primary Production of the Invasive Seaweed Asparagopsis Taxiformis (Bonnemaisoniaceae, Rhodophyta) Is Provided by Six Cohorts with Distinctive Characteristics’. Aquatic Botany 153: 24–28. https://doi.org/10.1016/j.aquabot.2018.11.007.
Zanolla, Marianela, Raquel Carmona, Julio De La Rosa, and María Altamirano. 2018. ‘Structure and Temporal Dynamics of a Seaweed Assemblage Dominated by the Invasive Lineage 2 of Asparagopsis Taxiformis (Bonnemaisoniaceae, Rhodophyta) in the Alboran Sea. Mediterranean Marine Science 19 (1): 147. https://doi.org/10.12681/mms.1892.
Zanolla, Marianela, Raquel Carmona, Leonardo Mata, et al. 2022. ‘Concise Review of the Genus Asparagopsis Montagne, 1840’. Journal of Applied Phycology 34 (1): 1–17. https://doi.org/10.1007/s10811-021-02665-z.
Zemke-White, W. Lindsey, and K. D. Clements. 1999. ‘Chlorophyte and Rhodophyte Starches as Factors in Diet Choice by Marine Herbivorous Fish’. Journal of Experimental Marine Biology and Ecology 240 (1): 137–49. https://doi.org/10.1016/S0022-0981(99)00056-8.