From 8d4491d1e40bb3e99bcfef167c53cac6165cc554 Mon Sep 17 00:00:00 2001
From: Debbie <51200142+Debbcwing@users.noreply.github.com>
Date: Wed, 25 Oct 2023 13:17:36 +0200
Subject: [PATCH 01/97] Update README.md
remove allometric scaling for Kn
---
README.md | 4 +---
1 file changed, 1 insertion(+), 3 deletions(-)
diff --git a/README.md b/README.md
index ef82fa5..390b372 100644
--- a/README.md
+++ b/README.md
@@ -25,15 +25,13 @@ The allometric relationships considered in the model are:
$$\mu_{max}(S_i^P) = \beta_{\mu_{max}}\cdot (S_i^P)^{\alpha_{\mu_{max}}}$$
-$$K_n(S_i^P) = \beta_{K_n}\cdot (S_i^P)^{\alpha_{K_n}}$$
-
$$T_{opt}(S_i^P) = \beta_{T_{opt}}\cdot (S_i^P)^{\alpha_{T_{opt}}}$$
$$I_{max}(S_j^Z) = \beta_{I_{max}}\cdot (S_j^Z)^{\alpha_{I_{max}}}$$
$$P_{opt}(S_i^P, S_j^Z) = \beta_{P_{opt}}\cdot (S_j^Z)^{\alpha_{P_{opt}}}$$
-representing, respectively, maximum growth rate, $\mu_{max}(S_i^P)$, half-saturation for nutrient uptake, $K_n(S_i^P)$, and thermal optima, $T_{opt}(S_i^P)$, for phytoplankton size class $i$, and maximum ingestion rate, $I_{max}(S_j^Z)$, and optimal prey size, $P_{opt}(S_i^P, S_j^Z)$, for zooplankton size class $j$.
+representing, respectively, maximum growth rate, $\mu_{max}(S_i^P)$, and thermal optima, $T_{opt}(S_i^P)$, for phytoplankton size class $i$, and maximum ingestion rate, $I_{max}(S_j^Z)$, and optimal prey size, $P_{opt}(S_i^P, S_j^Z)$, for zooplankton size class $j$.
From 8d58332e0174555b573f8b75618b09c50e7059fb Mon Sep 17 00:00:00 2001
From: Debbie <51200142+Debbcwing@users.noreply.github.com>
Date: Fri, 27 Oct 2023 13:58:17 +0200
Subject: [PATCH 02/97] Update README.md
added Shurin et al. (2012)
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 390b372..aad58c8 100644
--- a/README.md
+++ b/README.md
@@ -2,7 +2,7 @@
## Background
Over half of the global freshwater bodies are reporting threats of anthropogenic eutrophication (Ho et al. 2019). Anthropogenic eutrophication has become a major environmental problem since the mid-20th century. It is characterized by excessive input of nutrient in lakes that facilitates an overgrowth of algae in the aquatic ecosystem (Carpenter 2005). Such overabundance of phytoplantkon population can cause multiple harmful effects to the ecosystem like degradation in water quality, harmful algae blooms, and trophic disorganization such as mass fish kills due to the deprivation of oxygen by large-scale degradations of dead algae (Huisman et al. 2018).
-Climate warming is another factor increasingly threatening freshwater ecosystem biodiversity (Paerl et al. 2016; Dudgeon 2019; Reid et al. 2019). Phytoplankton is one of the groups at the forefront of rising water temperautures. Temperature change has led to alterations in the temporal dynamics of phytoplankton (i.e. phenological shifts), the community compositions and even the trophic structures. It is crucial to understand how temperature drives changes to the assembly and the dynamics of the phytoplankton community (Petchey et al. 1999; Yvon-Durocher et al. 2011; Striebel et al. 2016).
+Climate warming is another factor increasingly threatening freshwater ecosystem biodiversity (Paerl et al. 2016; Dudgeon 2019; Reid et al. 2019). Phytoplankton is one of the groups at the forefront of rising water temperautures. Temperature change has led to alterations in the temporal dynamics of phytoplankton (i.e. phenological shifts), the community compositions and even the trophic structures. It is crucial to understand how temperature drives changes to the assembly and the dynamics of the phytoplankton community (Petchey et al. 1999; Yvon-Durocher et al. 2011; Shurin et al. 2012; Striebel et al. 2016).
In the current realm of global environmental change, understanding the effects of temperature and eutrophication on phytoplankton community is highly important for ecosystem management (Paerl et al. 2016). Nevertheless, in a multi-stressor system, disentangling the effects of temperature on phytoplankotn is not easy (Dudgeon 2019). Temperature often interacts with other environmental factors like nutrient and zooplankton grazer (Pomati et al. 2020), thus contributing to various nonlinear feedbacks to the phytoplankton community and making predictions on community dynamics difficult. For example, the occurrence of phytoplankton blooms is becoming more unpredictable (e.g. Reinl et al. 2021, 2023).
From 92ba3040564ae70ad71dac271634561196f64adc Mon Sep 17 00:00:00 2001
From: Debbie <51200142+Debbcwing@users.noreply.github.com>
Date: Fri, 27 Oct 2023 14:02:31 +0200
Subject: [PATCH 03/97] Update README.md
added Sterner et al. (2020)
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index aad58c8..9e81f83 100644
--- a/README.md
+++ b/README.md
@@ -4,7 +4,7 @@ Over half of the global freshwater bodies are reporting threats of anthropogenic
Climate warming is another factor increasingly threatening freshwater ecosystem biodiversity (Paerl et al. 2016; Dudgeon 2019; Reid et al. 2019). Phytoplankton is one of the groups at the forefront of rising water temperautures. Temperature change has led to alterations in the temporal dynamics of phytoplankton (i.e. phenological shifts), the community compositions and even the trophic structures. It is crucial to understand how temperature drives changes to the assembly and the dynamics of the phytoplankton community (Petchey et al. 1999; Yvon-Durocher et al. 2011; Shurin et al. 2012; Striebel et al. 2016).
-In the current realm of global environmental change, understanding the effects of temperature and eutrophication on phytoplankton community is highly important for ecosystem management (Paerl et al. 2016). Nevertheless, in a multi-stressor system, disentangling the effects of temperature on phytoplankotn is not easy (Dudgeon 2019). Temperature often interacts with other environmental factors like nutrient and zooplankton grazer (Pomati et al. 2020), thus contributing to various nonlinear feedbacks to the phytoplankton community and making predictions on community dynamics difficult. For example, the occurrence of phytoplankton blooms is becoming more unpredictable (e.g. Reinl et al. 2021, 2023).
+In the current realm of global environmental change, understanding the effects of temperature and eutrophication on phytoplankton community is highly important for ecosystem management (Paerl et al. 2016). Nevertheless, in a multi-stressor system, disentangling the effects of temperature on phytoplankotn is not easy (Dudgeon 2019). Temperature often interacts with other environmental factors like nutrient and zooplankton grazer (Pomati et al. 2020), thus contributing to various nonlinear feedbacks to the phytoplankton community and making predictions on community dynamics difficult. For example, the occurrence of phytoplankton blooms is becoming more unpredictable (e.g. Sterner et al. 2020; Reinl et al. 2021, 2023).
Trait-based models have been applied to investigate the effects of environmental conditions on phytoplankton population dynamics (Litchman 2023). Phytoplantkon cell size is a master trait and has been used widely in modelling works (Litchman and Klausmeier 2008). Size-based models allow explorations on aggregated community properties such as total biomass, community mean cell size, and size variances (e.g. Ward et al. 2012; Acevedo-Trejos et al. 2018). They are useful for understanding changes in the macroecological patterns of the phytoplankton community size compositions (Merico et al. 2009).
From 2fc8a68e84e28a410ff0aa3427f68414c6c4c1e8 Mon Sep 17 00:00:00 2001
From: Debbie <51200142+Debbcwing@users.noreply.github.com>
Date: Fri, 2 Feb 2024 12:49:12 +0100
Subject: [PATCH 04/97] Update README.md
Added description for temperature dependence
---
README.md | 18 +++++++++++++-----
1 file changed, 13 insertions(+), 5 deletions(-)
diff --git a/README.md b/README.md
index 9e81f83..f2cff7c 100644
--- a/README.md
+++ b/README.md
@@ -10,7 +10,7 @@ Trait-based models have been applied to investigate the effects of environmental
## Model description
-The model is adapted from the well-established Nutrient-Phytoplankton-Zooplankton-Detritus (NPZD) model (_sensu_ Fasham et al., 1990) incorporated to a size-based framework (e.g. Moloney and Field 1991; Armstrong 1994; Stock et al. 2008). The model (differential equation-based) includes one nutrient source, phosphorus $PO_4^{3-}$, available for uptake by different phytoplankton size classes ($P_i$). The phytoplankton are subject to grazing by two zooplankton of different sizes ($Z_1$, $Z_2$). The phytoplankton growth is limited by light and nutrient, and is scaled by temperature dependence. The detritus pool, $D$, collects the dead and ungrazed matters, follows by recharging the nutrient pool through remineralization processes.
+The model is adapted from the well-established Nutrient-Phytoplankton-Zooplankton-Detritus (NPZD) model (_sensu_ Fasham et al., 1990) incorporated to a size-based framework (e.g. Moloney and Field 1991; Armstrong 1994; Stock et al. 2008). The model is differential equation-based and includes one nutrient source, phosphorus $PO_4^{3-}$, available for uptake by different phytoplankton size classes ($P_i$). The phytoplankton are subject to grazing by two zooplankton of different size groups ($Z_1$, $Z_2$). The phytoplankton growth is limited by light and nutrient, and is scaled by a temperature dependence. The detritus pool, $D$, collects the dead and ungrazed matters, follows by recharging the nutrient pool through remineralization processes.
@@ -18,20 +18,28 @@ The model is adapted from the well-established Nutrient-Phytoplankton-Zooplankto
The model focuses on capturing size-dependent bottom-up and top-down interactions through data-driven allometric relationships of phytoplankton growth and zooaplankton grazing (Hansen et al. 1994, 1997; Edwards et al. 2012). The model aims at studying changes in the size compositions of lake phytoplankton communities.
+## Temperature dependence in the model
+The temperature dependence for phytoplankton growth follows a bell-shaped thermal tolerance curve, given by,
+
+$$E(T) = e^{0.063T} \left[1- \left(\frac{T-T_{opt}}{\sigma_T}\right)^2 \right] $$
+
+, where $T$ is the ambient lake water surface temperature (LWST), $T_{opt}$ is the thermal optima that determines the median of the curve, and $\sigma_T$ is the thermal tolerance that determines the width of the curve. In this study, we assume a community mean thermal tolerance curve to all phytoplankton size classes.
+
+Zooplankton grazing follows a Q10 dependence such that, zooplankton graze stronger in higher temperature.
+
+
## Allometric relationships in the model
-Based on multiple allometric equations, the model produce an ecological trade-off that favour a certain phytoplantkon size classes at different environmental conditions.
+The model comprises of three allometric equations. These allometries allow an ecological trade-off to arise in the model based on water temperature throughout the year. The small phytoplantkon can grow faster than the large phytoplankton, but are subject to stronger grazing from the smaller zooplankton, who will selectively graze on the small cells.
The allometric relationships considered in the model are:
$$\mu_{max}(S_i^P) = \beta_{\mu_{max}}\cdot (S_i^P)^{\alpha_{\mu_{max}}}$$
-$$T_{opt}(S_i^P) = \beta_{T_{opt}}\cdot (S_i^P)^{\alpha_{T_{opt}}}$$
-
$$I_{max}(S_j^Z) = \beta_{I_{max}}\cdot (S_j^Z)^{\alpha_{I_{max}}}$$
$$P_{opt}(S_i^P, S_j^Z) = \beta_{P_{opt}}\cdot (S_j^Z)^{\alpha_{P_{opt}}}$$
-representing, respectively, maximum growth rate, $\mu_{max}(S_i^P)$, and thermal optima, $T_{opt}(S_i^P)$, for phytoplankton size class $i$, and maximum ingestion rate, $I_{max}(S_j^Z)$, and optimal prey size, $P_{opt}(S_i^P, S_j^Z)$, for zooplankton size class $j$.
+representing, respectively, maximum growth rate, $\mu_{max}(S_i^P)$, for phytoplankton size class $i$, and maximum ingestion rate, $I_{max}(S_j^Z)$, and optimal prey size, $P_{opt}(S_i^P, S_j^Z)$, for zooplankton size class $j$.
From efd4cac1edae7bd64efd89c46fff65c8f460dafa Mon Sep 17 00:00:00 2001
From: Debbie <51200142+Debbcwing@users.noreply.github.com>
Date: Fri, 2 Feb 2024 13:53:06 +0100
Subject: [PATCH 05/97] Add updated forcing files
---
LakeData/MLD_final.csv | 14 ++++++++++++++
LakeData/PAR_final.csv | 12 ++++++++++++
LakeData/PO4_final.csv | 12 ++++++++++++
LakeData/Temp_final.csv | 12 ++++++++++++
4 files changed, 50 insertions(+)
create mode 100644 LakeData/MLD_final.csv
create mode 100644 LakeData/PAR_final.csv
create mode 100644 LakeData/PO4_final.csv
create mode 100644 LakeData/Temp_final.csv
diff --git a/LakeData/MLD_final.csv b/LakeData/MLD_final.csv
new file mode 100644
index 0000000..0725046
--- /dev/null
+++ b/LakeData/MLD_final.csv
@@ -0,0 +1,14 @@
+0.000000000000000000e+00,3.000000000000000000e+01
+3.200000000000000000e+01,3.000000000000000000e+01
+7.500000000000000000e+01,3.000000000000000000e+01
+9.500000000000000000e+01,3.000000000000000000e+00
+1.210000000000000000e+02,5.000000000000000000e+00
+1.520000000000000000e+02,6.000000000000000000e+00
+1.820000000000000000e+02,6.500000000000000000e+00
+2.130000000000000000e+02,7.000000000000000000e+00
+2.440000000000000000e+02,8.000000000000000000e+00
+2.740000000000000000e+02,9.000000000000000000e+00
+3.050000000000000000e+02,1.200000000000000000e+01
+3.350000000000000000e+02,1.500000000000000000e+01
+3.450000000000000000e+02,3.000000000000000000e+01
+3.650000000000000000e+02,3.000000000000000000e+01
diff --git a/LakeData/PAR_final.csv b/LakeData/PAR_final.csv
new file mode 100644
index 0000000..f67ad8a
--- /dev/null
+++ b/LakeData/PAR_final.csv
@@ -0,0 +1,12 @@
+1.600000000000000000e+01,1.153217723134916994e+01
+4.700000000000000000e+01,2.052429139119716694e+01
+7.500000000000000000e+01,3.247001772847821854e+01
+1.060000000000000000e+02,4.723735027677198417e+01
+1.360000000000000000e+02,5.150805259040326689e+01
+1.670000000000000000e+02,5.337122856383459180e+01
+1.970000000000000000e+02,5.174539739177757269e+01
+2.280000000000000000e+02,4.493568695121085455e+01
+2.590000000000000000e+02,3.826222528464109729e+01
+2.890000000000000000e+02,2.256389789100668608e+01
+3.200000000000000000e+02,1.169416660589217472e+01
+3.500000000000000000e+02,7.678352084759956675e+00
diff --git a/LakeData/PO4_final.csv b/LakeData/PO4_final.csv
new file mode 100644
index 0000000..e0ea1b8
--- /dev/null
+++ b/LakeData/PO4_final.csv
@@ -0,0 +1,12 @@
+0.000000000000000000e+00,4.700000000000000000e+01
+4.700000000000000000e+01,3.091626053692527876e+01
+7.500000000000000000e+01,1.562859146644477804e+01
+1.060000000000000000e+02,4.189183767541666548e+00
+1.360000000000000000e+02,2.028841349777585457e+00
+1.670000000000000000e+02,3.003733603664022311e+00
+1.970000000000000000e+02,2.391293779641272099e+00
+2.280000000000000000e+02,2.446676674405127816e+00
+2.590000000000000000e+02,2.053143339012125423e+00
+2.890000000000000000e+02,2.100300062691874636e+00
+3.200000000000000000e+02,6.049784503957676307e+00
+3.640000000000000000e+02,4.500000000000000000e+01
diff --git a/LakeData/Temp_final.csv b/LakeData/Temp_final.csv
new file mode 100644
index 0000000..1269936
--- /dev/null
+++ b/LakeData/Temp_final.csv
@@ -0,0 +1,12 @@
+1.600000000000000000e+01,5.178983503182863934e+00
+4.700000000000000000e+01,4.745051867338969664e+00
+7.500000000000000000e+01,5.972354422700060894e+00
+1.060000000000000000e+02,9.322241824244862585e+00
+1.360000000000000000e+02,1.309111729681987946e+01
+1.670000000000000000e+02,1.788453118265105246e+01
+1.970000000000000000e+02,2.005705118008766163e+01
+2.280000000000000000e+02,2.038151101997201664e+01
+2.590000000000000000e+02,1.913035313051771524e+01
+2.890000000000000000e+02,1.520774802156532601e+01
+3.200000000000000000e+02,1.086064007456006841e+01
+3.500000000000000000e+02,6.932315581846554053e+00
From b0830db6733106dac73fdb3648ed2641960e799f Mon Sep 17 00:00:00 2001
From: Debbie <51200142+Debbcwing@users.noreply.github.com>
Date: Fri, 2 Feb 2024 13:54:43 +0100
Subject: [PATCH 06/97] Delete LakeData/MLDForc_Theoretical.csv
---
LakeData/MLDForc_Theoretical.csv | 365 -------------------------------
1 file changed, 365 deletions(-)
delete mode 100644 LakeData/MLDForc_Theoretical.csv
diff --git a/LakeData/MLDForc_Theoretical.csv b/LakeData/MLDForc_Theoretical.csv
deleted file mode 100644
index 5336f13..0000000
--- a/LakeData/MLDForc_Theoretical.csv
+++ /dev/null
@@ -1,365 +0,0 @@
-5.000000000000000000e+01
-5.000000000000000000e+01
-5.000000000000000000e+01
-5.000000000000000000e+01
-5.000000000000000000e+01
-5.000000000000000000e+01
-5.000000000000000000e+01
-5.000000000000000000e+01
-5.000000000000000000e+01
-5.000000000000000000e+01
-5.000000000000000000e+01
-5.000000000000000000e+01
-5.000000000000000000e+01
-5.000000000000000000e+01
-5.000000000000000000e+01
-5.000000000000000000e+01
-5.000000000000000000e+01
-5.000000000000000000e+01
-5.000000000000000000e+01
-5.000000000000000000e+01
-5.000000000000000000e+01
-5.000000000000000000e+01
-5.000000000000000000e+01
-5.000000000000000000e+01
-5.000000000000000000e+01
-5.000000000000000000e+01
-5.000000000000000000e+01
-5.000000000000000000e+01
-5.000000000000000000e+01
-5.000000000000000000e+01
-5.000000000000000000e+01
-5.000000000000000000e+01
-5.000000000000000000e+01
-5.000000000000000000e+01
-5.000000000000000000e+01
-5.000000000000000000e+01
-5.000000000000000000e+01
-5.000000000000000000e+01
-5.000000000000000000e+01
-5.000000000000000000e+01
-5.000000000000000000e+01
-5.000000000000000000e+01
-5.000000000000000000e+01
-5.000000000000000000e+01
-5.000000000000000000e+01
-5.000000000000000000e+01
-5.000000000000000000e+01
-5.000000000000000000e+01
-5.000000000000000000e+01
-5.000000000000000000e+01
-5.000000000000000000e+01
-5.000000000000000000e+01
-5.000000000000000000e+01
-5.000000000000000000e+01
-5.000000000000000000e+01
-5.000000000000000000e+01
-5.000000000000000000e+01
-5.000000000000000000e+01
-5.000000000000000000e+01
-5.000000000000000000e+01
-5.000000000000000000e+01
-5.000000000000000000e+01
-5.000000000000000000e+01
-5.000000000000000000e+01
-5.000000000000000000e+01
-5.000000000000000000e+01
-5.000000000000000000e+01
-5.000000000000000000e+01
-5.000000000000000000e+01
-5.000000000000000000e+01
-5.000000000000000000e+01
-5.000000000000000000e+01
-5.000000000000000000e+01
-5.000000000000000000e+01
-5.000000000000000000e+01
-5.000000000000000000e+01
-4.864200000000000301e+01
-4.495600000000000307e+01
-3.952400000000000091e+01
-3.292799999999999727e+01
-2.575000000000000000e+01
-1.857199999999999918e+01
-1.197599999999999909e+01
-6.543999999999996930e+00
-2.858000000000004093e+00
-1.500000000000000000e+00
-1.501464294140613998e+00
-1.505778012082188644e+00
-1.512822407104321920e+00
-1.522478732486612696e+00
-1.534628241508659174e+00
-1.549152187450059781e+00
-1.565931823590412941e+00
-1.584848403209317302e+00
-1.605783179586371068e+00
-1.628617406001172663e+00
-1.653232335733320957e+00
-1.679509222062413487e+00
-1.707329318268049567e+00
-1.736573877629827178e+00
-1.767124153427344968e+00
-1.798861398940201362e+00
-1.831666867447994340e+00
-1.865421812230322995e+00
-1.900007486566785087e+00
-1.935305143736979705e+00
-1.971196037020505054e+00
-2.007561419696959337e+00
-2.044282545045941202e+00
-2.081240666347049295e+00
-2.118317036879881599e+00
-2.155392909924037426e+00
-2.192349538759112981e+00
-2.229068176664709355e+00
-2.265430076920424085e+00
-2.301316492805854708e+00
-2.336608677600600537e+00
-2.371187884584259997e+00
-2.404935367036430627e+00
-2.437732378236712183e+00
-2.469460171464702647e+00
-2.500000000000000000e+00
-2.530038945625941782e+00
-2.560335678987107233e+00
-2.590878836654956441e+00
-2.621657055200951270e+00
-2.652658971196552251e+00
-2.683873221213220805e+00
-2.715288441822417020e+00
-2.746893269595601872e+00
-2.778676341104237224e+00
-2.810626292919783609e+00
-2.842731761613701558e+00
-2.874981383757452047e+00
-2.907363795922496941e+00
-2.939867634680295883e+00
-2.972481536602310737e+00
-3.005194138260002035e+00
-3.037994076224830753e+00
-3.070869987068258311e+00
-3.103810507361745241e+00
-3.136804273676752075e+00
-3.169839922584740233e+00
-3.202906090657170690e+00
-3.235991414465504423e+00
-3.269084530581201964e+00
-3.302174075575724732e+00
-3.335248686020533260e+00
-3.368296998487089411e+00
-3.401307649546852829e+00
-3.434269275771285379e+00
-3.467170513731847148e+00
-3.500000000000000000e+00
-3.532842965882923014e+00
-3.565787387100413319e+00
-3.598826016842859854e+00
-3.631951608300649781e+00
-3.665156914664171595e+00
-3.698434689123813346e+00
-3.731777684869962197e+00
-3.765178655093007531e+00
-3.798630352983336067e+00
-3.832125531731337187e+00
-3.865656944527397609e+00
-3.899217344561906273e+00
-3.932799485025250785e+00
-3.966396119107819640e+00
-4.000000000000000000e+00
-4.033603880892180804e+00
-4.067200514974748771e+00
-4.100782655438093727e+00
-4.134343055472601947e+00
-4.167874468268663257e+00
-4.201369647016663933e+00
-4.234821344906992024e+00
-4.268222315130037359e+00
-4.301565310876187098e+00
-4.334843085335828405e+00
-4.368048391699349331e+00
-4.401173983157139702e+00
-4.434212612899586681e+00
-4.467157034117077430e+00
-4.500000000000000000e+00
-4.532554665868448573e+00
-4.564668085349857130e+00
-4.596383859095627855e+00
-4.627745587757163825e+00
-4.658796871985866339e+00
-4.689581312433136695e+00
-4.720142509750377968e+00
-4.750524064588988793e+00
-4.780769577600374909e+00
-4.810922649435936727e+00
-4.841026880747076433e+00
-4.871125872185194439e+00
-4.901263224401693819e+00
-4.931482538047976760e+00
-4.961827413775444562e+00
-4.992341452235499411e+00
-5.023068254079541717e+00
-5.054051419958975444e+00
-5.085334550525201891e+00
-5.116961246429622356e+00
-5.148975108323639027e+00
-5.181419736858653202e+00
-5.214338732686067068e+00
-5.247775696457282812e+00
-5.281774228823703510e+00
-5.316377930436727794e+00
-5.351630401947759630e+00
-5.387575244008202091e+00
-5.424256057269454701e+00
-5.461716442382919645e+00
-5.500000000000000000e+00
-5.539299056676703081e+00
-5.579739911276174524e+00
-5.621267122910525771e+00
-5.663825250691867375e+00
-5.707358853732306336e+00
-5.751812491143955874e+00
-5.797130722038924766e+00
-5.843258105529322677e+00
-5.890139200727260160e+00
-5.937718566744845994e+00
-5.985940762694191619e+00
-6.034750347687407590e+00
-6.084091880836601796e+00
-6.133909921253886566e+00
-6.184149028051370678e+00
-6.234753760341162909e+00
-6.285668677235376478e+00
-6.336838337846118385e+00
-6.388207301285499184e+00
-6.439720126665630318e+00
-6.491321373098619674e+00
-6.542955599696580471e+00
-6.594567365571620599e+00
-6.646101229835848834e+00
-6.697501751601377507e+00
-6.748713489980315394e+00
-6.799681004084773051e+00
-6.850348853026860141e+00
-6.900661595918687219e+00
-6.950563791872363062e+00
-7.000000000000000000e+00
-7.049264448824383855e+00
-7.098681080650619535e+00
-7.148239025264290447e+00
-7.197927412450974671e+00
-7.247735371996257392e+00
-7.297652033685719353e+00
-7.347666527304943074e+00
-7.397767982639511075e+00
-7.447945529475004989e+00
-7.498188297597005558e+00
-7.548485416791096192e+00
-7.598826016842859410e+00
-7.649199227537875956e+00
-7.699594178661729238e+00
-7.750000000000000000e+00
-7.800405821338270762e+00
-7.850800772462124044e+00
-7.901173983157139702e+00
-7.951514583208902920e+00
-8.001811702402994442e+00
-8.052054470524996788e+00
-8.102232017360488925e+00
-8.152333472695056926e+00
-8.202347966314279759e+00
-8.252264628003741720e+00
-8.302072587549025329e+00
-8.351760974735709553e+00
-8.401318919349378689e+00
-8.450735551175617033e+00
-8.500000000000000000e+00
-8.547995724536049167e+00
-8.593768534193841901e+00
-8.637551084803806845e+00
-8.679576032196372637e+00
-8.720076032201964367e+00
-8.759283740651010675e+00
-8.797431813373938425e+00
-8.834752906201174483e+00
-8.871479674963147488e+00
-8.907844775490284306e+00
-8.944080863613013577e+00
-8.980420595161758612e+00
-9.017096625966953383e+00
-9.054341611859017647e+00
-9.092388208668385374e+00
-9.131469072225483430e+00
-9.171816858360735125e+00
-9.213664222904572654e+00
-9.257243821687417551e+00
-9.302788310539703787e+00
-9.350530345291854672e+00
-9.400702581774297073e+00
-9.453537675817461405e+00
-9.509268283251772758e+00
-9.568127059907659770e+00
-9.630346661615547532e+00
-9.696159744205868236e+00
-9.765798963509045194e+00
-9.839496975355510600e+00
-9.917486435575684212e+00
-1.000000000000000000e+01
-1.009577205335165218e+01
-1.021301826091934295e+01
-1.035119319938176119e+01
-1.050975144541759754e+01
-1.068814757570553553e+01
-1.088583616692426759e+01
-1.110227179575247547e+01
-1.133690903886885337e+01
-1.158920247295208661e+01
-1.185860667468086227e+01
-1.214457622073387100e+01
-1.244656568778979810e+01
-1.276402965252733424e+01
-1.309642269162516293e+01
-1.344319938176197837e+01
-1.380381429961646411e+01
-1.417772202186730723e+01
-1.456437712519319838e+01
-1.496323418627282642e+01
-1.537374778178487489e+01
-1.579537248840803798e+01
-1.622756288282099746e+01
-1.666977354170244396e+01
-1.712145904173106459e+01
-1.758207395958554997e+01
-1.805107287194458721e+01
-1.852791035548686338e+01
-1.901204098689106559e+01
-1.950291934283588091e+01
-2.000000000000000000e+01
-2.052203703703703752e+01
-2.108740740740740804e+01
-2.169500000000000028e+01
-2.234370370370370296e+01
-2.303240740740740833e+01
-2.376000000000000156e+01
-2.452537037037037138e+01
-2.532740740740741003e+01
-2.616499999999999915e+01
-2.703703703703703454e+01
-2.794240740740740847e+01
-2.887999999999999901e+01
-2.984870370370370551e+01
-3.084740740740740605e+01
-3.187500000000000000e+01
-3.293037037037036896e+01
-3.401240740740740875e+01
-3.512000000000000455e+01
-3.625203703703704150e+01
-3.740740740740741188e+01
-3.858500000000000085e+01
-3.978370370370370779e+01
-4.100240740740741074e+01
-4.224000000000000199e+01
-4.349537037037037379e+01
-4.476740740740741131e+01
-4.605499999999999972e+01
-4.735703703703703837e+01
-4.867240740740741245e+01
From 65b54a3471dc32041d0dd935e38be94ea5694674 Mon Sep 17 00:00:00 2001
From: Debbie <51200142+Debbcwing@users.noreply.github.com>
Date: Fri, 2 Feb 2024 13:54:54 +0100
Subject: [PATCH 07/97] Delete LakeData/TempForc_CTD.csv
---
LakeData/TempForc_CTD.csv | 365 --------------------------------------
1 file changed, 365 deletions(-)
delete mode 100644 LakeData/TempForc_CTD.csv
diff --git a/LakeData/TempForc_CTD.csv b/LakeData/TempForc_CTD.csv
deleted file mode 100644
index a81abbc..0000000
--- a/LakeData/TempForc_CTD.csv
+++ /dev/null
@@ -1,365 +0,0 @@
-1.446844297135358115e+00
-1.336631049903875823e+00
-1.289285116298358957e+00
-1.247112975639902199e+00
-1.210114627928505548e+00
-1.178290073164169005e+00
-1.151639311346892347e+00
-1.130162342476675796e+00
-1.113859166553519575e+00
-1.102729783577423017e+00
-1.096774193548387011e+00
-1.096774193548387455e+00
-1.107420566069286405e+00
-1.129495108193060204e+00
-1.162997819919709297e+00
-1.207928701249232795e+00
-1.264287752181631586e+00
-1.332074972716905226e+00
-1.411290362855054159e+00
-1.501933922596077942e+00
-1.604005651939976573e+00
-1.717505550886750498e+00
-1.842433619436399050e+00
-1.978789857588923118e+00
-2.126574265344321812e+00
-2.285786842702595134e+00
-2.456427589663744193e+00
-2.636372599036669762e+00
-2.812878427674780468e+00
-2.983821168386979306e+00
-3.149200821173264941e+00
-3.309017386033638264e+00
-3.463270862968100161e+00
-3.611961251976647524e+00
-3.755088553059283463e+00
-3.892652766216007532e+00
-4.024653891446817511e+00
-4.151091928751717397e+00
-4.271966878130702305e+00
-4.387278739583775788e+00
-4.497027513110936958e+00
-4.601213198712184926e+00
-4.699835796387520581e+00
-4.792895306136943923e+00
-4.880391727960454062e+00
-4.962325061858051889e+00
-5.038695307829737402e+00
-5.109502465875509714e+00
-5.174746535995370600e+00
-5.234427518189319173e+00
-5.288545412457354544e+00
-5.337100218799475826e+00
-5.380091937215687459e+00
-5.417520567705985002e+00
-5.449386110270370231e+00
-5.475688564908843148e+00
-5.496427931621402863e+00
-5.516862774183341145e+00
-5.542251656369947099e+00
-5.572594578181221614e+00
-5.607891539617162913e+00
-5.648142540677774548e+00
-5.693347581363052079e+00
-5.743506661672999059e+00
-5.798619781607613710e+00
-5.858686941166896034e+00
-5.923708140350846918e+00
-5.993683379159466362e+00
-6.068612657592754367e+00
-6.148495975650710044e+00
-6.233333333333334281e+00
-6.323124730640625302e+00
-6.417870167572584883e+00
-6.517569644129212136e+00
-6.622223160310509726e+00
-6.731830716116473212e+00
-6.846392311547106146e+00
-6.965907946602406753e+00
-7.090377621282375031e+00
-7.219801335587012758e+00
-7.354179089516318157e+00
-7.493510883070290340e+00
-7.637796716248931084e+00
-7.787036589052240387e+00
-7.941230501480217363e+00
-8.100378453532862011e+00
-8.263186138853606977e+00
-8.421887719303033037e+00
-8.575188888524568398e+00
-8.723089646518216611e+00
-8.865589993283975900e+00
-9.002689928821844489e+00
-9.134389453131825931e+00
-9.260688566213918449e+00
-9.381587268068122043e+00
-9.497085558694436713e+00
-9.607183438092864236e+00
-9.711880906263401059e+00
-9.811177963206050734e+00
-9.905074608920811485e+00
-9.993570843407681537e+00
-1.007666666666666444e+01
-1.015436207869775842e+01
-1.022665707950096348e+01
-1.029355166907627606e+01
-1.035504584742370682e+01
-1.041113961454324510e+01
-1.046183297043489446e+01
-1.050712591509865490e+01
-1.054701844853452997e+01
-1.058151057074251256e+01
-1.061060228172260800e+01
-1.063429358147481452e+01
-1.065258446999913033e+01
-1.066547494729556078e+01
-1.067296501336410053e+01
-1.067505466820475135e+01
-1.067907358620974811e+01
-1.069235144177132213e+01
-1.071488823488947695e+01
-1.074668396556420724e+01
-1.078773863379551834e+01
-1.083805223958340491e+01
-1.089762478292787229e+01
-1.096645626382891692e+01
-1.104454668228654057e+01
-1.113189603830074326e+01
-1.122850433187152319e+01
-1.133437156299888215e+01
-1.144949773168282192e+01
-1.157388283792333539e+01
-1.170752688172043143e+01
-1.185042986307410295e+01
-1.200259178198435706e+01
-1.216401263845118308e+01
-1.233469243247458991e+01
-1.251463116405457754e+01
-1.270382883319114242e+01
-1.290228543988428811e+01
-1.311000098413400750e+01
-1.332697546594030769e+01
-1.355320888530318868e+01
-1.378870124222264515e+01
-1.403345253669868065e+01
-1.428746276873129517e+01
-1.455073193832048695e+01
-1.482326004546625775e+01
-1.510278598166965480e+01
-1.537574309593696498e+01
-1.563987027976923017e+01
-1.589516753316645925e+01
-1.614163485612864335e+01
-1.637927224865578779e+01
-1.660807971074789080e+01
-1.682805724240495593e+01
-1.703920484362697962e+01
-1.724152251441396544e+01
-1.743501025476590627e+01
-1.761966806468280566e+01
-1.779549594416466363e+01
-1.796249389321148371e+01
-1.812066191182326591e+01
-1.826999999999999957e+01
-1.841050815774169891e+01
-1.854218638504835326e+01
-1.866503468191996618e+01
-1.877905304835653766e+01
-1.888424148435807481e+01
-1.898059998992456698e+01
-1.906812856505601772e+01
-1.914682720975243058e+01
-1.921669592401379845e+01
-1.927773470784012844e+01
-1.932994356123141699e+01
-1.937332248418766767e+01
-1.940787147670886981e+01
-1.943359053879503762e+01
-1.945047967044616399e+01
-1.946231842127516387e+01
-1.947288634089495218e+01
-1.948218342930552893e+01
-1.949020968650689767e+01
-1.949696511249905129e+01
-1.950244970728199334e+01
-1.950666347085572738e+01
-1.950960640322024631e+01
-1.951127850437555367e+01
-1.951167977432165657e+01
-1.951081021305854080e+01
-1.950866982058622057e+01
-1.950525859690468522e+01
-1.950057654201393831e+01
-1.949462365591398338e+01
-1.948739993860481690e+01
-1.947890539008643884e+01
-1.946914001035884567e+01
-1.945810379942204094e+01
-1.944579675727603529e+01
-1.943221888392080743e+01
-1.941737017935637510e+01
-1.940125064358273121e+01
-1.938386027659986866e+01
-1.936519907840780519e+01
-1.934526704900652661e+01
-1.932406418839603646e+01
-1.930159049657633119e+01
-1.927784597354742147e+01
-1.925283061930930018e+01
-1.922646815884204585e+01
-1.919830094202613324e+01
-1.916825269384165153e+01
-1.913632341428859718e+01
-1.910251310336697017e+01
-1.906682176107676696e+01
-1.902924938741799465e+01
-1.898979598239064259e+01
-1.894846154599472499e+01
-1.890524607823023118e+01
-1.886014957909716117e+01
-1.881317204859551850e+01
-1.876431348672530675e+01
-1.871357389348651523e+01
-1.866095326887915462e+01
-1.860645161290322491e+01
-1.855006892555871190e+01
-1.849180520684563334e+01
-1.843166045676397857e+01
-1.836963467531375116e+01
-1.830572786249494754e+01
-1.823994001830757838e+01
-1.817227114275162947e+01
-1.810272123582710790e+01
-1.803129029753401369e+01
-1.795797832787234682e+01
-1.788278532684210731e+01
-1.780571129444329159e+01
-1.772675623067590323e+01
-1.764592013553994576e+01
-1.756320300903541209e+01
-1.747836029358691334e+01
-1.738992464374212688e+01
-1.729765150192566381e+01
-1.720154086813752414e+01
-1.710159274237770433e+01
-1.699780712464620436e+01
-1.689018401494302068e+01
-1.677872341326816752e+01
-1.666342531962163420e+01
-1.654428973400342073e+01
-1.642131665641352711e+01
-1.629450608685195689e+01
-1.616385802531871008e+01
-1.602937247181378311e+01
-1.589104942633717599e+01
-1.574888888888889049e+01
-1.560289085946892840e+01
-1.545305533807728793e+01
-1.529938232471396731e+01
-1.514187181937897009e+01
-1.498052382207229627e+01
-1.481533833279393875e+01
-1.464631535154390818e+01
-1.447345487832219391e+01
-1.429675691312880303e+01
-1.411622145596373556e+01
-1.393184850682698972e+01
-1.374363806571856372e+01
-1.355159013263845758e+01
-1.335570470758667661e+01
-1.315598179056321548e+01
-1.295469777693865154e+01
-1.275412906208355857e+01
-1.255427564599793833e+01
-1.235513752868178727e+01
-1.215671471013510896e+01
-1.195900719035789805e+01
-1.176201496935016344e+01
-1.156573804711190157e+01
-1.137017642364310710e+01
-1.117533009894378537e+01
-1.098119907301393283e+01
-1.078778334585355303e+01
-1.059508291746264774e+01
-1.040309778784121164e+01
-1.021182795698924650e+01
-1.002127342490675233e+01
-9.831434191593729111e+00
-9.642310257050180411e+00
-9.453901621276099121e+00
-9.266208284271488793e+00
-9.079230246036352980e+00
-8.892967506570689906e+00
-8.707420065874494242e+00
-8.522587923947771316e+00
-8.338471080790521128e+00
-8.155069536402741903e+00
-7.972383290784433640e+00
-7.790412343935596340e+00
-7.609156695856231778e+00
-7.428616346546337290e+00
-7.249215014064402496e+00
-7.073495006761367776e+00
-6.901880042695716533e+00
-6.734370121867454984e+00
-6.570965244276577799e+00
-6.411665409923087644e+00
-6.256470618806982742e+00
-6.105380870928266646e+00
-5.958396166286935802e+00
-5.815516504882991988e+00
-5.676741886716434315e+00
-5.542072311787261896e+00
-5.411507780095478282e+00
-5.285048291641081697e+00
-5.162693846424069477e+00
-5.044444444444444287e+00
-4.930300085702207014e+00
-4.820260770197354994e+00
-4.714326497929889115e+00
-4.612497268899810265e+00
-4.514773083107117557e+00
-4.421153940551811878e+00
-4.331639841233893229e+00
-4.246230785153360721e+00
-4.164926772310213465e+00
-4.087727802704455016e+00
-4.014633876336081819e+00
-3.945644993205094764e+00
-3.880761153311495182e+00
-3.819982356655281741e+00
-3.763308603236454442e+00
-3.708248132165601785e+00
-3.652309182553310052e+00
-3.595491754399579243e+00
-3.537795847704409802e+00
-3.479221462467801285e+00
-3.419768598689753691e+00
-3.359437256370267022e+00
-3.298227435509342609e+00
-3.236139136106978675e+00
-3.173172358163176554e+00
-3.109327101677934024e+00
-3.044603366651254195e+00
-2.979001153083135733e+00
-2.912520460973577308e+00
-2.845161290322581138e+00
-2.776923641130144560e+00
-2.707807513396270238e+00
-2.637812907120957284e+00
-2.566939822304205254e+00
-2.495188258946014148e+00
-2.422558217046384410e+00
-2.349049696605316040e+00
-2.274662697622808150e+00
-2.199397220098862071e+00
-2.123253264033476917e+00
-2.046230829426653131e+00
-1.968329916278390268e+00
-1.889550524588688551e+00
-1.809892654357548425e+00
-1.729356305584969222e+00
-1.650967614024394070e+00
-1.577752715429267649e+00
-1.509711609799588627e+00
-1.446844297135358115e+00
From 8dff5d345fc41ab7a6079b00e36c040b87791762 Mon Sep 17 00:00:00 2001
From: Debbie <51200142+Debbcwing@users.noreply.github.com>
Date: Fri, 2 Feb 2024 13:55:04 +0100
Subject: [PATCH 08/97] Delete LakeData/nSSI_13p_syn.csv
---
LakeData/nSSI_13p_syn.csv | 13 -------------
1 file changed, 13 deletions(-)
delete mode 100644 LakeData/nSSI_13p_syn.csv
diff --git a/LakeData/nSSI_13p_syn.csv b/LakeData/nSSI_13p_syn.csv
deleted file mode 100644
index d09c079..0000000
--- a/LakeData/nSSI_13p_syn.csv
+++ /dev/null
@@ -1,13 +0,0 @@
-0,297.9206049,293.3837429,227.221172,158.8679245,97.73584906,55.09433962,24.1509434,9.433962264,228.160
-30.68584071,301.6377537,306.9307593,240.7681884,171.6981132,113.5849057,67.9245283,34.33962264,17.35849057,228.162
-61.77544248,310.6470716,329.9287351,281.1574686,210.1886792,160.754717,110.5660377,67.54716981,41.88679245,228.164
-92.46128319,304.1562808,338.9388895,318.1449387,258.1132075,223.7735849,175.8490566,120.754717,84.90566038,228.166
-123.550885,294.640079,332.0691905,336.6060525,295.4716981,282.6415094,253.2075472,191.3207547,144.5283019,228.168
-155.0442478,286.635328,311.588069,333.8943072,318.1132075,328.3018868,309.4339623,265.6603774,225.6603774,228.170
-185.7300885,285.059471,298.670057,323.2447262,322.6415094,350.1886792,327.5471698,310.5660377,298.8679245,228.172
-216.8196903,294.068789,303.142513,320.1557455,313.9622642,336.9811321,310.9433962,286.7924528,273.9622642,228.170
-247.909292,306.1026816,306.1026816,311.7737591,289.0566038,297.7358491,256.6037736,215.0943396,188.3018868,228.168
-279.4026549,310.952373,308.683942,292.4268531,256.9811321,235.0943396,183.7735849,132.4528302,103.0188679,228.166
-310.0884956,306.3519414,301.4370075,261.3613932,212.4528302,166.4150943,114.7169811,65.66037736,40,228.164
-341.1780973,299.8603142,293.0550212,236.3442461,173.9622642,115.0943396,67.54716981,29.81132075,14.33962264,228.162
-364,296.4083176,285.8223062,221.5500945,153.9622642,92.83018868,50.18867925,20.37735849,7.547169811,228.160
From 076bc3b50df16d16a09c95b0a1ef69a1b80bbc14 Mon Sep 17 00:00:00 2001
From: Debbie <51200142+Debbcwing@users.noreply.github.com>
Date: Fri, 2 Feb 2024 15:09:15 +0100
Subject: [PATCH 09/97] Update and rename note to README
---
LakeData/README | 15 +++++++++++++++
LakeData/note | 4 ----
2 files changed, 15 insertions(+), 4 deletions(-)
create mode 100644 LakeData/README
delete mode 100644 LakeData/note
diff --git a/LakeData/README b/LakeData/README
new file mode 100644
index 0000000..4b60612
--- /dev/null
+++ b/LakeData/README
@@ -0,0 +1,15 @@
+This model adapts data from a specific Swiss lake close to Zurich, Greifensee.
+There are three environmental forcing to the model, respectively, Lake Water Surface Temperature (LWST), Photosynthetically-active Radiance (PAR), and Mixed Layer Depth (MLD).
+These data are collected from different sources. LWST is obtained from the in-situ CTD probe (documented in Pomati et al. 2011) averaged from depths range from 0 to 8m. PAR is obtained from the nearby weather station by MeteoSwiss. Mixed layer depth is adopted from the published data for Greifensee in Pomati et al. (2020), https://zenodo.org/record/3582838#.YzQzuexBwc8.
+
+The original dataset contains an approximately three-year time-series from 13/3/2019 to 31/12/2022, containing 1390 data points. To generate an annual forcing profile, LWST was taken from a three-year mean, PAR was taken from a 75 percentile due to high daily variations, and MLD was derived by month to preserve the key mixing of the epilimnion in the water column.
+
+The steps deriving these forcing profile is shown in the python script 'TSM_TempForcing.py', 'TSM_PARForcing.py', and 'TSM_MLDForcing.py' respectively.
+
+
+
+
+Reference
+Pomati, F., J. Jokela, M. Simona, M. Veronesi, and B. W. Ibelings. 2011. An Automated Platform for Phytoplankton Ecology and Aquatic Ecosystem Monitoring. Environ. Sci. Technol. 45: 9658–9665. doi:10.1021/es201934n
+
+Pomati, F., J. B. Shurin, K. H. Andersen, C. Tellenbach, and A. D. Barton. 2020. Interacting Temperature, Nutrients and Zooplankton Grazing Control Phytoplankton Size-Abundance Relationships in Eight Swiss Lakes. Front. Microbiol. 10: 3155. doi:10.3389/fmicb.2019.03155
diff --git a/LakeData/note b/LakeData/note
deleted file mode 100644
index d94ed02..0000000
--- a/LakeData/note
+++ /dev/null
@@ -1,4 +0,0 @@
-This is the supplementary lake data (https://zenodo.org/record/3582838#.YzQzuexBwc8) from Pomati et al. (2020) and is used for comparison in this theoretical temperature size-based model.
-
-There are in total 8 lakes: Walensee (WA); Upper Lake Zurich (UZ); Lake Lucerne (LU); Lower Lake Zurich (LZ); Sempachersee (SE); Hallwilersee (HA); Baldeggersee (BA); Greifensee (GR).
-Further information on data format please refer to the readme.txt
From 56dbe089e23422d6fdc7d99690e18dc1de15d1c3 Mon Sep 17 00:00:00 2001
From: Debbie <51200142+Debbcwing@users.noreply.github.com>
Date: Fri, 2 Feb 2024 15:11:03 +0100
Subject: [PATCH 10/97] Delete LakeData/PO4_final.csv
---
LakeData/PO4_final.csv | 12 ------------
1 file changed, 12 deletions(-)
delete mode 100644 LakeData/PO4_final.csv
diff --git a/LakeData/PO4_final.csv b/LakeData/PO4_final.csv
deleted file mode 100644
index e0ea1b8..0000000
--- a/LakeData/PO4_final.csv
+++ /dev/null
@@ -1,12 +0,0 @@
-0.000000000000000000e+00,4.700000000000000000e+01
-4.700000000000000000e+01,3.091626053692527876e+01
-7.500000000000000000e+01,1.562859146644477804e+01
-1.060000000000000000e+02,4.189183767541666548e+00
-1.360000000000000000e+02,2.028841349777585457e+00
-1.670000000000000000e+02,3.003733603664022311e+00
-1.970000000000000000e+02,2.391293779641272099e+00
-2.280000000000000000e+02,2.446676674405127816e+00
-2.590000000000000000e+02,2.053143339012125423e+00
-2.890000000000000000e+02,2.100300062691874636e+00
-3.200000000000000000e+02,6.049784503957676307e+00
-3.640000000000000000e+02,4.500000000000000000e+01
From f1a1eadfb8e925c1b918c3ff97b07056ae056349 Mon Sep 17 00:00:00 2001
From: Debbie <51200142+Debbcwing@users.noreply.github.com>
Date: Fri, 2 Feb 2024 19:13:23 +0100
Subject: [PATCH 11/97] Update and rename README to README.md
---
LakeData/{README => README.md} | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
rename LakeData/{README => README.md} (93%)
diff --git a/LakeData/README b/LakeData/README.md
similarity index 93%
rename from LakeData/README
rename to LakeData/README.md
index 4b60612..619f552 100644
--- a/LakeData/README
+++ b/LakeData/README.md
@@ -1,5 +1,5 @@
This model adapts data from a specific Swiss lake close to Zurich, Greifensee.
-There are three environmental forcing to the model, respectively, Lake Water Surface Temperature (LWST), Photosynthetically-active Radiance (PAR), and Mixed Layer Depth (MLD).
+There are three environmental forcing to the model, respectively, Water Temperature from photic zone (WT), Photosynthetically-active Radiance (PAR), and Mixed Layer Depth (MLD).
These data are collected from different sources. LWST is obtained from the in-situ CTD probe (documented in Pomati et al. 2011) averaged from depths range from 0 to 8m. PAR is obtained from the nearby weather station by MeteoSwiss. Mixed layer depth is adopted from the published data for Greifensee in Pomati et al. (2020), https://zenodo.org/record/3582838#.YzQzuexBwc8.
The original dataset contains an approximately three-year time-series from 13/3/2019 to 31/12/2022, containing 1390 data points. To generate an annual forcing profile, LWST was taken from a three-year mean, PAR was taken from a 75 percentile due to high daily variations, and MLD was derived by month to preserve the key mixing of the epilimnion in the water column.
@@ -8,8 +8,8 @@ The steps deriving these forcing profile is shown in the python script 'TSM_Temp
+
Reference
Pomati, F., J. Jokela, M. Simona, M. Veronesi, and B. W. Ibelings. 2011. An Automated Platform for Phytoplankton Ecology and Aquatic Ecosystem Monitoring. Environ. Sci. Technol. 45: 9658–9665. doi:10.1021/es201934n
-
Pomati, F., J. B. Shurin, K. H. Andersen, C. Tellenbach, and A. D. Barton. 2020. Interacting Temperature, Nutrients and Zooplankton Grazing Control Phytoplankton Size-Abundance Relationships in Eight Swiss Lakes. Front. Microbiol. 10: 3155. doi:10.3389/fmicb.2019.03155
From 6f80017bf3d7a9e40e2dced34d3100a3aef01d23 Mon Sep 17 00:00:00 2001
From: Debbie <51200142+Debbcwing@users.noreply.github.com>
Date: Fri, 2 Feb 2024 19:17:43 +0100
Subject: [PATCH 12/97] Update README.md
Added forcing plots
---
LakeData/README.md | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/LakeData/README.md b/LakeData/README.md
index 619f552..7598d46 100644
--- a/LakeData/README.md
+++ b/LakeData/README.md
@@ -6,10 +6,13 @@ The original dataset contains an approximately three-year time-series from 13/3/
The steps deriving these forcing profile is shown in the python script 'TSM_TempForcing.py', 'TSM_PARForcing.py', and 'TSM_MLDForcing.py' respectively.
+
+
+
Reference
-Pomati, F., J. Jokela, M. Simona, M. Veronesi, and B. W. Ibelings. 2011. An Automated Platform for Phytoplankton Ecology and Aquatic Ecosystem Monitoring. Environ. Sci. Technol. 45: 9658–9665. doi:10.1021/es201934n
-Pomati, F., J. B. Shurin, K. H. Andersen, C. Tellenbach, and A. D. Barton. 2020. Interacting Temperature, Nutrients and Zooplankton Grazing Control Phytoplankton Size-Abundance Relationships in Eight Swiss Lakes. Front. Microbiol. 10: 3155. doi:10.3389/fmicb.2019.03155
++ Pomati, F., J. Jokela, M. Simona, M. Veronesi, and B. W. Ibelings. 2011. An Automated Platform for Phytoplankton Ecology and Aquatic Ecosystem Monitoring. Environ. Sci. Technol. 45: 9658–9665. doi:10.1021/es201934n
++ Pomati, F., J. B. Shurin, K. H. Andersen, C. Tellenbach, and A. D. Barton. 2020. Interacting Temperature, Nutrients and Zooplankton Grazing Control Phytoplankton Size-Abundance Relationships in Eight Swiss Lakes. Front. Microbiol. 10: 3155. doi:10.3389/fmicb.2019.03155
From a84db93e9ca91eb92da23f4f88055f3326fbff0f Mon Sep 17 00:00:00 2001
From: Debbie <51200142+Debbcwing@users.noreply.github.com>
Date: Fri, 2 Feb 2024 19:18:44 +0100
Subject: [PATCH 13/97] Add forcing python scripts
---
LakeData/TSM_MLDForcing.py | 82 +++++++++++++++++++++++++++++++
LakeData/TSM_PARForcing.py | 97 +++++++++++++++++++++++++++++++++++++
LakeData/TSM_TempForcing.py | 85 ++++++++++++++++++++++++++++++++
3 files changed, 264 insertions(+)
create mode 100644 LakeData/TSM_MLDForcing.py
create mode 100644 LakeData/TSM_PARForcing.py
create mode 100644 LakeData/TSM_TempForcing.py
diff --git a/LakeData/TSM_MLDForcing.py b/LakeData/TSM_MLDForcing.py
new file mode 100644
index 0000000..ef6fe8f
--- /dev/null
+++ b/LakeData/TSM_MLDForcing.py
@@ -0,0 +1,82 @@
+"""
+Generate MLD forcing from observation data of Greifensee
+"""
+import matplotlib.pyplot as plt
+import numpy as np
+import pandas as pd
+
+wd = 'your wd'
+
+data_mld = pd.read_csv(wd+'/Original_MLD.csv')
+
+# convert real data to julian day (0-365)
+import datetime
+
+def datestdtojd(stddate):
+ """
+ source: https://rafatieppo.github.io/post/2018_12_01_juliandate/
+ :param stddate: standard date for input
+ :return:
+ """
+ fmt = '%Y-%m-%d'
+ sdtdate = datetime.datetime.strptime(stddate, fmt)
+ sdtdate = sdtdate.timetuple()
+ jdate = sdtdate.tm_yday
+ return jdate
+
+jday = np.array([])
+for i in range(len(data_mld)):
+ jday = np.append(jday, datestdtojd(data_mld['date'][i]))
+data_mld.insert(1, 'Julian day', pd.DataFrame(jday)) # phychem data
+
+#---------------------------------------------------------------------
+"""
+Mixed Layer Depth (MLD)
+1. taking the mean for each julian day
+2. taking the mean for each month
+3. interpolate a function based on 12-month data points
+"""
+mld_GR = data_mld.groupby('Julian day', as_index=False)['thermocl'].median().to_numpy()
+
+condlist = [0., 32., 70., 90., 121., 152., 182., 213., 244., 274., 305., 330., 345, 365]
+
+# there are noise in MLD data, so we did some manipulation from visual inspection
+extrct_GR_mld = np.zeros((len(condlist), 2))
+extrct_GR_mld[:, 0] = condlist
+extrct_GR_mld[0:2, 1] = np.repeat(30, 2)
+extrct_GR_mld[2:, 1] = np.array([12, 3, 4, 5, 6, 7, 8, 9, 12, 18, 30, 30])
+
+
+## Quick plot
+fig, axs = plt.subplots(1, 1, figsize=(7, 4), sharex='all')
+fig.subplots_adjust(wspace=0.3, hspace=0.12, left=0.1, right=0.96, top=0.9, bottom=0.2)
+axs.scatter(mld_GR[:, 0], mld_GR[:, 1], s=15, color='gray')
+axs.scatter(extrct_GR_mld[:, 0], extrct_GR_mld[:, 1], s=25, color='r')
+axs.axis([0, 365, 35, -1])
+axs.set_xlabel('day', labelpad=10)
+axs.set_ylabel('MLD', labelpad=10)
+
+from scipy.interpolate import PchipInterpolator
+MLD_pchip_GR = PchipInterpolator(extrct_GR_mld[:, 0], extrct_GR_mld[:, 1], axis=0)
+MLD_pchip_GR_spl = MLD_pchip_GR(np.arange(365))
+
+# Detailed plot
+fig, axs = plt.subplots(figsize=(8, 4))
+fig.subplots_adjust(wspace=0.2, hspace=0.1, left=0.1, right=0.95, top=0.95, bottom=0.15)
+
+axs.plot(np.arange(365), MLD_pchip_GR_spl, color='r', lw=2.5, zorder=2, label='forcing')
+axs.scatter(mld_GR[:, 0], mld_GR[:, 1], s=15, facecolor='steelblue', edgecolor='k', lw=0.25, zorder=1, label='data')
+# axs.scatter(extrct_GR_mld[:, 0], extrct_GR_mld[:, 1], s=50, color='r', lw=1, edgecolor='k', zorder=3,
+# label='Extracted lake median')
+axs.axis([0, 365, 35, -1])
+axs.set_ylabel('Mixed layer depth, MLD (m)\nGreifen', fontsize=12, labelpad=10)
+axs.set_xlabel('Month', fontsize=12, labelpad=10)
+axs.legend(loc=4, fontsize=9, ncol=1, bbox_to_anchor=(0.9, 0))
+axs.set_xticks([1., 32., 60., 91., 121., 152., 182., 213., 244., 274., 305., 335])
+axs.set_xticklabels(['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], fontsize=12)
+
+plt.savefig(fname=wd + '/MLD_final.png', dpi=800)
+
+## save csv, save points and interpolate again in the run script
+MLD_pt = np.vstack((extrct_GR_mld[:, 0], extrct_GR_mld[:, 1])).T
+np.savetxt(wd+"/MLD_final.csv", MLD_pt, delimiter=",")
diff --git a/LakeData/TSM_PARForcing.py b/LakeData/TSM_PARForcing.py
new file mode 100644
index 0000000..e755593
--- /dev/null
+++ b/LakeData/TSM_PARForcing.py
@@ -0,0 +1,97 @@
+"""
+Generate PAR (irradiance) forcing from observation data of Greifensee
+irradiance is measured by the unit of W m-2
+"""
+import seaborn as sns
+import matplotlib.pyplot as plt
+import numpy as np
+import pandas as pd
+
+wd = 'your wd'
+
+data = pd.read_csv(wd+'/Original_Temp+PAR.csv')
+data_nSSI = data[['date', 'global_radiation']]
+
+
+# convert real data to julian day (0-365)
+import datetime
+
+def datestdtojd(stddate):
+ """
+ source: https://rafatieppo.github.io/post/2018_12_01_juliandate/
+ :param stddate: standard date for input
+ :return:
+ """
+ fmt = '%Y-%m-%d'
+ sdtdate = datetime.datetime.strptime(stddate, fmt)
+ sdtdate = sdtdate.timetuple()
+ jdate = sdtdate.tm_yday
+ return jdate
+
+jday = np.array([])
+for i in range(len(data_nSSI)):
+ jday = np.append(jday, datestdtojd(data_nSSI['date'][i]))
+data_nSSI.insert(1, 'Julian day', pd.DataFrame(jday)) # phychem data
+
+
+#---------------------------------------------------------------------
+data['month'] = pd.DatetimeIndex(data['date']).month
+dayno = np.array([1., 32., 60., 91., 121., 152., 182., 213., 244., 274., 305., 335])
+dayno_used = np.array([16, 47, 75, 106, 136, 167, 197, 228, 259, 289, 320, 350])
+
+
+"""
+Irradiance
+1. taking the interquartile range at 75% for each julian day
+2. taking the monthly mean of the daily interquantile
+3. calculating PAR
+5. interpolate a function based on 12-month data points
+"""
+nSSI_quart = data.groupby(['Julian day'], as_index=False)['global_radiation'].quantile(0.75)
+
+# adding the column month from julian day
+nSSI_quart.insert(1, 'year_fool', np.repeat(2000, len(nSSI_quart)))
+nSSI_quart['date_fool'] = pd.to_datetime(nSSI_quart['year_fool'], format='%Y') + pd.to_timedelta(nSSI_quart['Julian day'], unit='D') - pd.Timedelta('1D')
+nSSI_quart['month'] = pd.DatetimeIndex(nSSI_quart['date_fool']).month
+nSSI_quart_month = nSSI_quart.groupby(['month'], as_index=False)['global_radiation'].mean().to_numpy()
+
+
+def nSSI2PAR(netSSI):
+ """
+ This function is to convert nSSI (W m-2) into PAR (E m-2 d-1)
+ Procedure:
+ 1. extr = extraction factor (only about 45% of the nSSI is in the 400-700nm range, Howell et al. 1983)
+ 2. conv = conversion factor from W m-2 to Ein m-2 d-1 (Lampert and Sommer, 2007, pp.20)**
+ ** further details please see PAR_UnitConversion.docx
+ """
+ extr = 0.45
+ conv = 0.432
+ return netSSI * extr * conv
+
+#### Interpolation ####
+from scipy.interpolate import make_interp_spline
+PAR_pchip = make_interp_spline(dayno+15, nSSI2PAR(nSSI_quart_month[:, 1]), k=3)
+PAR_pchip_spl = PAR_pchip(np.arange(365))
+###################
+
+fig, axs = plt.subplots(figsize=(8, 4))
+fig.subplots_adjust(wspace=0.2, hspace=0.1, left=0.1, right=0.95, top=0.95, bottom=0.15)
+
+axs.scatter(x=data_nSSI['Julian day'], y=nSSI2PAR(data_nSSI['global_radiation']), s=15, color='steelblue', lw=0.25, ec='k')
+axs.set_ylabel('PAR (Ein m$^{-2}$ d$^{-1}$)', fontsize=12)
+axs.plot(np.arange(365), PAR_pchip_spl, color='r', lw=2.5, label='forcing')
+axs.set_xlim(0, 365)
+axs.set_ylim(0, 80)
+axs.set_xticks([1., 32., 60., 91., 121., 152., 182., 213., 244., 274., 305., 335])
+axs.set_xticklabels(['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'])
+axs.set_xlabel('Month', fontsize=12, labelpad=10)
+axs.legend(loc=1, fontsize=12)
+
+plt.savefig(fname=wd + '/PAR_final.png', dpi=800)
+
+## save csv, save points and interpolate again in the run script
+PAR_pt = np.vstack((dayno+15, nSSI2PAR(nSSI_quart_month[:, 1]))).T
+np.savetxt(wd+"TempSizeMod_TSM/Forcing/Final/PAR_final.csv", PAR_pt, delimiter=",")
+
+
+
diff --git a/LakeData/TSM_TempForcing.py b/LakeData/TSM_TempForcing.py
new file mode 100644
index 0000000..d47f652
--- /dev/null
+++ b/LakeData/TSM_TempForcing.py
@@ -0,0 +1,85 @@
+"""
+Generate temperature forcing from observation data of Greifensee
+"""
+import matplotlib.pyplot as plt
+import numpy as np
+import pandas as pd
+
+wd = 'your wd'
+
+data = pd.read_csv(wd+'/Original_forc_data.csv')
+data_temp = data[['date', 'water_temp']]
+
+
+# convert real data to julian day (0-365)
+import datetime
+
+def datestdtojd(stddate):
+ """
+ source: https://rafatieppo.github.io/post/2018_12_01_juliandate/
+ :param stddate: standard date for input
+ :return:
+ """
+ fmt = '%Y-%m-%d'
+ sdtdate = datetime.datetime.strptime(stddate, fmt)
+ sdtdate = sdtdate.timetuple()
+ jdate = sdtdate.tm_yday
+ return jdate
+
+jday = np.array([])
+for i in range(len(data_temp)):
+ jday = np.append(jday, datestdtojd(data_temp['date'][i]))
+data_temp.insert(1, 'Julian day', pd.DataFrame(jday))
+
+#---------------------------------------------------------------------
+data['month'] = pd.DatetimeIndex(data['date']).month
+dayno = np.array([1., 32., 60., 91., 121., 152., 182., 213., 244., 274., 305., 335])
+dayno_used = np.array([16, 47, 75, 106, 136, 167, 197, 228, 259, 289, 320, 350])
+
+"""
+Temperature
+1. taking the mean from each julian day
+2. taking the mean from each month
+3. interpolate a function based on 12-month data points
+"""
+
+temp = data_temp.groupby(['Julian day'], as_index=False)['water_temp'].mean()
+
+# adding the column month from julian day
+temp.insert(1, 'year_fool', np.repeat(2000, len(temp)))
+temp['date_fool'] = pd.to_datetime(temp['year_fool'], format='%Y') + pd.to_timedelta(temp['Julian day'], unit='D') - pd.Timedelta('1D')
+temp['month'] = pd.DatetimeIndex(temp['date_fool']).month
+
+temp_mean = temp.groupby(['month'], as_index=False)['water_temp'].mean().to_numpy()
+
+#### Interpolation ####
+from scipy.interpolate import make_interp_spline
+ext_time = np.append(np.append(dayno+15, 365+dayno+15), 365*2+dayno+15)
+Temp_pchip = make_interp_spline(ext_time, np.tile(temp_mean[:, 1], 3), k=3)
+Temp_pchip_spl = Temp_pchip(np.arange(365*3))
+Temp_pchip_spl = Temp_pchip_spl[365:730] # we select the middle year for a smoother forcing
+
+temp_val = []
+for i in range(len(dayno_used)):
+ temp_val = np.append(temp_val, Temp_pchip_spl[dayno_used[i]])
+
+###################
+fig, axs = plt.subplots(figsize=(8, 4))
+fig.subplots_adjust(wspace=0.2, hspace=0.1, left=0.1, right=0.95, top=0.95, bottom=0.15)
+
+axs.scatter(x=data_temp['Julian day'], y=data_temp['water_temp'], s=15, color='steelblue', lw=0.25, ec='k', label='data')
+axs.plot(np.arange(365), Temp_pchip_spl, color='r', lw=2.5, label='forcing')
+# axs.plot(dayno+15, temp_mean[:, 1], color='r', lw=2)
+axs.set_ylabel('Photic zone water temperature', fontsize=12)
+axs.set_xlim(0, 365)
+axs.set_ylim(0, 25)
+axs.set_xticks([1., 32., 60., 91., 121., 152., 182., 213., 244., 274., 305., 335])
+axs.set_xticklabels(['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'])
+axs.set_xlabel('Month', fontsize=12, labelpad=10)
+axs.legend(loc=2)
+
+plt.savefig(fname=wd + '/Temp_final.png', dpi=800)
+
+## save csv, save points and interpolate again in the run script
+Temp_pt = np.vstack((dayno_used, temp_val)).T
+np.savetxt(wd+"/Temp_final.csv", Temp_pt, delimiter=",")
From 69842a63eeda2ba27aef97c9c819e86feb1df3d3 Mon Sep 17 00:00:00 2001
From: Debbie <51200142+Debbcwing@users.noreply.github.com>
Date: Fri, 2 Feb 2024 19:20:07 +0100
Subject: [PATCH 14/97] Update README.md
Organize references
---
README.md | 46 +++++++++++++++++++++++-----------------------
1 file changed, 23 insertions(+), 23 deletions(-)
diff --git a/README.md b/README.md
index f2cff7c..aab91a6 100644
--- a/README.md
+++ b/README.md
@@ -45,27 +45,27 @@ representing, respectively, maximum growth rate, $\mu_{max}(S_i^P)$, for phytopl
Reference:
-Acevedo-Trejos, E., E. Marañón, and A. Merico. 2018. Phytoplankton size diversity and ecosystem function relationships across oceanic regions. Proc. R. Soc. B. 285: 20180621. doi:10.1098/rspb.2018.0621
-Armstrong, R. A. 1994. Grazing limitation and nutrient limitation in marine ecosystems: Steady state solutions of an ecosystem model with multiple food chains. Limnol. Oceanogr. 39: 597–608. doi:10.4319/lo.1994.39.3.0597
-Carpenter, S. R. 2005. Eutrophication of aquatic ecosystems: Bistability and soil phosphorus. Proc. Natl. Acad. Sci. U.S.A. 102: 10002–10005. doi:10.1073/pnas.0503959102
++ Acevedo-Trejos, E., E. Marañón, and A. Merico. 2018. Phytoplankton size diversity and ecosystem function relationships across oceanic regions. Proc. R. Soc. B. 285: 20180621. doi:10.1098/rspb.2018.0621
++ Armstrong, R. A. 1994. Grazing limitation and nutrient limitation in marine ecosystems: Steady state solutions of an ecosystem model with multiple food chains. Limnol. Oceanogr. 39: 597–608. doi:10.4319/lo.1994.39.3.0597
++ Carpenter, S. R. 2005. Eutrophication of aquatic ecosystems: Bistability and soil phosphorus. Proc. Natl. Acad. Sci. U.S.A. 102: 10002–10005. doi:10.1073/pnas.0503959102
Dudgeon, D. 2019. Multiple threats imperil freshwater biodiversity in the Anthropocene. Current Biology 29: R960–R967. doi:10.1016/j.cub.2019.08.002
-Edwards, K. F., M. K. Thomas, C. A. Klausmeier, and E. Litchman. 2012. Allometric scaling and taxonomic variation in nutrient utilization traits and maximum growth rate of phytoplankton. Limnol. Oceanogr. 57: 554–566. doi:10.4319/lo.2012.57.2.0554
-Fasham, M. J. R., H. W. Ducklow, and S. M. McKelvie. 1990. A nitrogen-based model of plankton dynamics in the oceanic mixed layer. j mar res 48: 591–639. doi:10.1357/002224090784984678
-Hansen, B., P. K. Bjørnsen, and P. J. Hansen. 1994. The size ratio between planktonic predators and their prey. Limnology and Oceanography 39: 395–403. doi:10.4319/lo.1994.39.2.0395
-Hansen, P. J., P. K. Bjørnsen, and B. Hansen. 1997. Zooplankton grazing and growth: Scaling within the 2-2,000um body size range. Limnology and Oceanography 42: 687–704.
-Ho, J. C., A. M. Michalak, and N. Pahlevan. 2019. Widespread global increase in intense lake phytoplankton blooms since the 1980s. Nature 574: 667–670. doi:10.1038/s41586-019-1648-7
-Huisman, J., G. A. Codd, H. W. Paerl, B. W. Ibelings, J. M. H. Verspagen, and P. M. Visser. 2018. Cyanobacterial blooms. Nature Reviews Microbiology 16: 471–483. doi:10.1038/s41579-018-0040-1
-Litchman, E. 2023. Understanding and predicting harmful algal blooms in a changing climate: A trait‐based framework. Limnol Oceanogr Letters 8: 229–246. doi:10.1002/lol2.10294
-Litchman, E., and C. A. Klausmeier. 2008. Trait-Based Community Ecology of Phytoplankton. Annu. Rev. Ecol. Evol. Syst. 39: 615–639. doi:10.1146/annurev.ecolsys.39.110707.173549
-Merico, A., J. Bruggeman, and K. Wirtz. 2009. A trait-based approach for downscaling complexity in plankton ecosystem models. Ecological Modelling 220: 3001–3010. doi:10.1016/j.ecolmodel.2009.05.005
-Moloney, C. L., and J. G. Field. 1991. The size-based dynamics of plankton food webs. I. A simulation model of carbon and nitrogen flows. J Plankton Res 13: 1003–1038. doi:10.1093/plankt/13.5.1003
-Paerl, H. W., W. S. Gardner, K. E. Havens, A. R. Joyner, M. J. McCarthy, S. E. Newell, B. Qin, and J. T. Scott. 2016. Mitigating cyanobacterial harmful algal blooms in aquatic ecosystems impacted by climate change and anthropogenic nutrients. Harmful Algae 54: 213–222. doi:10.1016/j.hal.2015.09.009
-Petchey, O. L., P. T. McPhearson, T. M. Casey, and P. J. Morin. 1999. Environmental warming alters food-web structure and ecosystem function. Nature 402: 69–72. doi:10.1038/47023
-Pomati, F., J. B. Shurin, K. H. Andersen, C. Tellenbach, and A. D. Barton. 2020. Interacting Temperature, Nutrients and Zooplankton Grazing Control Phytoplankton Size-Abundance Relationships in Eight Swiss Lakes. Front. Microbiol. 10: 3155. doi:10.3389/fmicb.2019.03155
-Reid, A. J., A. K. Carlson, I. F. Creed, and others. 2019. Emerging threats and persistent conservation challenges for freshwater biodiversity. Biological Reviews 94: 849–873. doi:10.1111/brv.12480
-Reinl, K. L., J. D. Brookes, C. C. Carey, and others. 2021. Cyanobacterial blooms in oligotrophic lakes: Shifting the high‐nutrient paradigm. Freshwater Biology 66: 1846–1859. doi:10.1111/fwb.13791
-Reinl, K. L., T. D. Harris, R. L. North, and others. 2023. Blooms also like it cold. Limnol Oceanogr Letters 8: 546–564. doi:10.1002/lol2.10316
-Stock, C. A., T. M. Powell, and S. A. Levin. 2008. Bottom–up and top–down forcing in a simple size-structured plankton dynamics model. Journal of Marine Systems 74: 134–152. doi:10.1016/j.jmarsys.2007.12.004
-Striebel, M., S. Schabhüttl, D. Hodapp, P. Hingsamer, and H. Hillebrand. 2016. Phytoplankton responses to temperature increases are constrained by abiotic conditions and community composition. Oecologia 182: 815–827. doi:10.1007/s00442-016-3693-3
-Ward, B. A., S. Dutkiewicz, O. Jahn, and M. J. Follows. 2012. A size-structured food-web model for the global ocean. Limnol. Oceanogr. 57: 1877–1891. doi:10.4319/lo.2012.57.6.1877
-Yvon-Durocher, G., J. M. Montoya, M. Trimmer, and G. Woodward. 2011. Warming alters the size spectrum and shifts the distribution of biomass in freshwater ecosystems: WARMING ALTERS COMMUNITY SIZE STRUCTURE. Global Change Biology 17: 1681–1694. doi:10.1111/j.1365-2486.2010.02321.x
++ Edwards, K. F., M. K. Thomas, C. A. Klausmeier, and E. Litchman. 2012. Allometric scaling and taxonomic variation in nutrient utilization traits and maximum growth rate of phytoplankton. Limnol. Oceanogr. 57: 554–566. doi:10.4319/lo.2012.57.2.0554
++ Fasham, M. J. R., H. W. Ducklow, and S. M. McKelvie. 1990. A nitrogen-based model of plankton dynamics in the oceanic mixed layer. j mar res 48: 591–639. doi:10.1357/002224090784984678
++ Hansen, B., P. K. Bjørnsen, and P. J. Hansen. 1994. The size ratio between planktonic predators and their prey. Limnology and Oceanography 39: 395–403. doi:10.4319/lo.1994.39.2.0395
++ Hansen, P. J., P. K. Bjørnsen, and B. Hansen. 1997. Zooplankton grazing and growth: Scaling within the 2-2,000um body size range. Limnology and Oceanography 42: 687–704.
++ Ho, J. C., A. M. Michalak, and N. Pahlevan. 2019. Widespread global increase in intense lake phytoplankton blooms since the 1980s. Nature 574: 667–670. doi:10.1038/s41586-019-1648-7
++ Huisman, J., G. A. Codd, H. W. Paerl, B. W. Ibelings, J. M. H. Verspagen, and P. M. Visser. 2018. Cyanobacterial blooms. Nature Reviews Microbiology 16: 471–483. doi:10.1038/s41579-018-0040-1
++ Litchman, E. 2023. Understanding and predicting harmful algal blooms in a changing climate: A trait‐based framework. Limnol Oceanogr Letters 8: 229–246. doi:10.1002/lol2.10294
++ Litchman, E., and C. A. Klausmeier. 2008. Trait-Based Community Ecology of Phytoplankton. Annu. Rev. Ecol. Evol. Syst. 39: 615–639. doi:10.1146/annurev.ecolsys.39.110707.173549
++ Merico, A., J. Bruggeman, and K. Wirtz. 2009. A trait-based approach for downscaling complexity in plankton ecosystem models. Ecological Modelling 220: 3001–3010. doi:10.1016/j.ecolmodel.2009.05.005
++ Moloney, C. L., and J. G. Field. 1991. The size-based dynamics of plankton food webs. I. A simulation model of carbon and nitrogen flows. J Plankton Res 13: 1003–1038. doi:10.1093/plankt/13.5.1003
++ Paerl, H. W., W. S. Gardner, K. E. Havens, A. R. Joyner, M. J. McCarthy, S. E. Newell, B. Qin, and J. T. Scott. 2016. Mitigating cyanobacterial harmful algal blooms in aquatic ecosystems impacted by climate change and anthropogenic nutrients. Harmful Algae 54: 213–222. doi:10.1016/j.hal.2015.09.009
++ Petchey, O. L., P. T. McPhearson, T. M. Casey, and P. J. Morin. 1999. Environmental warming alters food-web structure and ecosystem function. Nature 402: 69–72. doi:10.1038/47023
++ Pomati, F., J. B. Shurin, K. H. Andersen, C. Tellenbach, and A. D. Barton. 2020. Interacting Temperature, Nutrients and Zooplankton Grazing Control Phytoplankton Size-Abundance Relationships in Eight Swiss Lakes. Front. Microbiol. 10: 3155. doi:10.3389/fmicb.2019.03155
++ Reid, A. J., A. K. Carlson, I. F. Creed, and others. 2019. Emerging threats and persistent conservation challenges for freshwater biodiversity. Biological Reviews 94: 849–873. doi:10.1111/brv.12480
++ Reinl, K. L., J. D. Brookes, C. C. Carey, and others. 2021. Cyanobacterial blooms in oligotrophic lakes: Shifting the high‐nutrient paradigm. Freshwater Biology 66: 1846–1859. doi:10.1111/fwb.13791
++ Reinl, K. L., T. D. Harris, R. L. North, and others. 2023. Blooms also like it cold. Limnol Oceanogr Letters 8: 546–564. doi:10.1002/lol2.10316
++ Stock, C. A., T. M. Powell, and S. A. Levin. 2008. Bottom–up and top–down forcing in a simple size-structured plankton dynamics model. Journal of Marine Systems 74: 134–152. doi:10.1016/j.jmarsys.2007.12.004
++ Striebel, M., S. Schabhüttl, D. Hodapp, P. Hingsamer, and H. Hillebrand. 2016. Phytoplankton responses to temperature increases are constrained by abiotic conditions and community composition. Oecologia 182: 815–827. doi:10.1007/s00442-016-3693-3
++ Ward, B. A., S. Dutkiewicz, O. Jahn, and M. J. Follows. 2012. A size-structured food-web model for the global ocean. Limnol. Oceanogr. 57: 1877–1891. doi:10.4319/lo.2012.57.6.1877
++ Yvon-Durocher, G., J. M. Montoya, M. Trimmer, and G. Woodward. 2011. Warming alters the size spectrum and shifts the distribution of biomass in freshwater ecosystems: WARMING ALTERS COMMUNITY SIZE STRUCTURE. Global Change Biology 17: 1681–1694. doi:10.1111/j.1365-2486.2010.02321.x
From c2b0303fe21bf8df77a797ae593ba4f2b5c07e25 Mon Sep 17 00:00:00 2001
From: Debbie <51200142+Debbcwing@users.noreply.github.com>
Date: Fri, 2 Feb 2024 19:24:01 +0100
Subject: [PATCH 15/97] Rename MLD_final.csv to data_MLD.csv
---
LakeData/{MLD_final.csv => data_MLD.csv} | 0
1 file changed, 0 insertions(+), 0 deletions(-)
rename LakeData/{MLD_final.csv => data_MLD.csv} (100%)
diff --git a/LakeData/MLD_final.csv b/LakeData/data_MLD.csv
similarity index 100%
rename from LakeData/MLD_final.csv
rename to LakeData/data_MLD.csv
From 719a025976beda9d34c8ecab2518b5db0476f742 Mon Sep 17 00:00:00 2001
From: Debbie <51200142+Debbcwing@users.noreply.github.com>
Date: Fri, 2 Feb 2024 19:24:17 +0100
Subject: [PATCH 16/97] Rename Temp_final.csv to data_Temp.csv
---
LakeData/{Temp_final.csv => data_Temp.csv} | 0
1 file changed, 0 insertions(+), 0 deletions(-)
rename LakeData/{Temp_final.csv => data_Temp.csv} (100%)
diff --git a/LakeData/Temp_final.csv b/LakeData/data_Temp.csv
similarity index 100%
rename from LakeData/Temp_final.csv
rename to LakeData/data_Temp.csv
From 5aa8f2fda71f66ef5e219490d7f606038792e646 Mon Sep 17 00:00:00 2001
From: Debbie <51200142+Debbcwing@users.noreply.github.com>
Date: Fri, 2 Feb 2024 19:24:31 +0100
Subject: [PATCH 17/97] Rename PAR_final.csv to data_PAR.csv
---
LakeData/{PAR_final.csv => data_PAR.csv} | 0
1 file changed, 0 insertions(+), 0 deletions(-)
rename LakeData/{PAR_final.csv => data_PAR.csv} (100%)
diff --git a/LakeData/PAR_final.csv b/LakeData/data_PAR.csv
similarity index 100%
rename from LakeData/PAR_final.csv
rename to LakeData/data_PAR.csv
From 6568e3187ac2f3e79be1aae8eaf570e37c0e246e Mon Sep 17 00:00:00 2001
From: Debbie <51200142+Debbcwing@users.noreply.github.com>
Date: Fri, 2 Feb 2024 19:25:00 +0100
Subject: [PATCH 18/97] Rename data_MLD.csv to ForcData_MLD.csv
---
LakeData/{data_MLD.csv => ForcData_MLD.csv} | 0
1 file changed, 0 insertions(+), 0 deletions(-)
rename LakeData/{data_MLD.csv => ForcData_MLD.csv} (100%)
diff --git a/LakeData/data_MLD.csv b/LakeData/ForcData_MLD.csv
similarity index 100%
rename from LakeData/data_MLD.csv
rename to LakeData/ForcData_MLD.csv
From c7d05f30616ad46aceb6ec7fe29b500bd78e4102 Mon Sep 17 00:00:00 2001
From: Debbie <51200142+Debbcwing@users.noreply.github.com>
Date: Fri, 2 Feb 2024 19:25:15 +0100
Subject: [PATCH 19/97] Rename data_PAR.csv to ForcData_PAR.csv
---
LakeData/{data_PAR.csv => ForcData_PAR.csv} | 0
1 file changed, 0 insertions(+), 0 deletions(-)
rename LakeData/{data_PAR.csv => ForcData_PAR.csv} (100%)
diff --git a/LakeData/data_PAR.csv b/LakeData/ForcData_PAR.csv
similarity index 100%
rename from LakeData/data_PAR.csv
rename to LakeData/ForcData_PAR.csv
From 27857ff55a1ec7d41c99d007491393df4d8ccd17 Mon Sep 17 00:00:00 2001
From: Debbie <51200142+Debbcwing@users.noreply.github.com>
Date: Fri, 2 Feb 2024 19:25:30 +0100
Subject: [PATCH 20/97] Rename data_Temp.csv to ForcData_Temp.csv
---
LakeData/{data_Temp.csv => ForcData_Temp.csv} | 0
1 file changed, 0 insertions(+), 0 deletions(-)
rename LakeData/{data_Temp.csv => ForcData_Temp.csv} (100%)
diff --git a/LakeData/data_Temp.csv b/LakeData/ForcData_Temp.csv
similarity index 100%
rename from LakeData/data_Temp.csv
rename to LakeData/ForcData_Temp.csv
From f0b97e6fba0f39dd2d8f86d29dc1287b148455c1 Mon Sep 17 00:00:00 2001
From: Debbie <51200142+Debbcwing@users.noreply.github.com>
Date: Fri, 2 Feb 2024 19:26:13 +0100
Subject: [PATCH 21/97] Upload raw files
---
LakeData/Original_MLD.csv | 520 ++++++++++++
LakeData/Original_Temp+PAR.csv | 1391 ++++++++++++++++++++++++++++++++
2 files changed, 1911 insertions(+)
create mode 100644 LakeData/Original_MLD.csv
create mode 100644 LakeData/Original_Temp+PAR.csv
diff --git a/LakeData/Original_MLD.csv b/LakeData/Original_MLD.csv
new file mode 100644
index 0000000..d229924
--- /dev/null
+++ b/LakeData/Original_MLD.csv
@@ -0,0 +1,520 @@
+,date,thermocl
+0,1972-01-18,10.6760152218561
+1,1972-02-22,18.271766927339
+2,1972-03-16,1.25
+3,1972-04-10,5.74643394109208
+4,1972-05-16,8.52104573791643
+5,1972-06-13,6.47119444863593
+6,1972-07-11,4.6641868118616
+7,1972-08-15,4.65507150678453
+8,1972-09-26,9.00106198554738
+9,1972-10-17,9.13942394678573
+10,1972-11-27,30.0
+11,1972-12-20,30.0
+12,1973-01-24,1.25
+13,1973-03-21,30.0
+14,1973-04-24,2.58724643029924
+15,1973-05-22,1.25
+16,1973-06-26,5.38642781468599
+17,1973-07-24,6.79483034594974
+18,1973-08-22,4.59872867659854
+19,1973-10-23,11.3356052570391
+20,1973-11-20,23.5633946745243
+21,1973-12-11,30.0
+22,1974-01-09,30.0
+23,1974-02-11,30.0
+24,1974-03-05,30.0
+25,1974-04-02,1.25
+26,1974-05-14,6.6401494414211
+27,1974-06-05,1.25
+28,1974-07-09,5.39676421855324
+29,1974-08-06,4.65375818462913
+30,1974-09-03,6.30033540362093
+31,1974-10-08,10.9446274725989
+32,1974-11-06,16.4659509862074
+33,1974-12-03,30.0
+34,1975-01-14,30.0
+35,1975-02-06,30.0
+36,1975-03-12,1.25
+37,1975-04-08,1.25
+38,1975-05-12,6.29984259303252
+39,1975-06-10,5.01074191313651
+40,1975-07-02,6.09095006751798
+41,1975-08-06,3.31022929745277
+42,1975-09-03,8.40256079404812
+43,1975-10-20,9.49326142003127
+44,1975-11-11,6.25
+45,1975-12-10,30.0
+46,1976-01-05,30.0
+47,1976-03-01,30.0
+48,1976-03-29,1.76663542912639
+49,1976-04-26,4.22382352191544
+50,1976-05-24,6.61740513151621
+51,1976-06-21,3.93457349453207
+52,1976-09-13,8.55317597807948
+53,1976-10-11,8.63854167686825
+54,1976-11-08,12.5657764341917
+55,1976-12-06,17.6753181174719
+56,1977-01-03,2.12786799289649
+57,1977-01-31,17.4012343517049
+58,1977-02-28,30.0
+59,1977-03-28,4.63852770716949
+60,1977-04-25,4.47798328009008
+61,1977-05-23,4.41351317464396
+62,1977-06-20,6.29935284109062
+63,1977-07-18,6.71379391377146
+64,1977-08-15,4.70231894187453
+65,1977-09-12,8.27793559643956
+66,1977-10-10,11.5319855136318
+67,1977-11-07,12.5835491766988
+68,1977-12-05,30.0
+69,1978-01-03,30.0
+70,1978-01-30,30.0
+71,1978-03-13,30.0
+72,1978-03-28,30.0
+73,1978-04-10,1.62236179146361
+74,1978-05-08,7.85029652051893
+75,1978-06-05,0.5
+76,1978-07-03,6.2335703221576
+77,1978-08-02,4.42839029914478
+78,1978-08-28,6.46317962325731
+79,1978-09-25,8.7243363161159
+80,1978-10-23,10.8800396583517
+81,1978-11-20,13.4468520427116
+82,1978-12-18,30.0
+83,1979-03-13,30.0
+84,1979-04-10,23.8847795738388
+85,1979-05-07,10.4801633124737
+86,1979-06-05,2.07856218205567
+87,1979-07-02,5.99129249866597
+88,1979-07-30,4.61497374939434
+89,1979-08-27,7.05461551799488
+90,1979-09-24,8.73769737965307
+91,1979-10-22,9.07771452970502
+92,1979-11-19,15.7849433921846
+93,1979-12-17,30.0
+94,1980-02-04,30.0
+95,1980-03-10,30.0
+96,1980-04-08,30.0
+97,1980-05-05,6.15709154820296
+98,1980-05-27,5.13265367616861
+99,1980-06-30,6.79194159767305
+100,1980-07-28,4.98035880988569
+101,1980-08-25,6.37779631775546
+102,1980-09-22,8.57932573681128
+103,1980-10-20,11.2125547834401
+104,1980-11-10,0.5
+105,1980-12-15,30.0
+106,1981-01-12,30.0
+107,1981-04-06,4.44112137769625
+108,1981-05-05,8.80984490096632
+109,1981-06-02,5.69842195889574
+110,1981-06-29,6.37202426923441
+111,1981-08-04,7.97855040339458
+112,1981-09-21,8.21404533314421
+113,1981-10-20,11.1341078154742
+114,1981-11-16,16.2395606305469
+115,1981-12-14,30.0
+116,1982-03-15,30.0
+117,1982-04-13,13.9447084502475
+118,1982-06-07,4.47849989959596
+119,1982-07-05,5.17487506848145
+120,1982-08-10,7.55444833285978
+121,1982-08-30,8.18722116213291
+122,1982-10-04,8.38660856700695
+123,1982-10-25,11.2008329138475
+124,1982-11-22,15.049542713794
+125,1982-12-13,30.0
+126,1983-01-17,30.0
+127,1983-04-18,1.28358077819435
+128,1983-05-24,6.70471904650345
+129,1983-06-20,6.4408646984785
+130,1983-07-11,4.70913985420613
+131,1983-08-29,6.16642832672908
+132,1983-09-26,8.88815337961294
+133,1983-10-24,11.3512390300093
+134,1983-11-21,16.3244773724228
+135,1983-12-12,30.0
+136,1984-01-10,30.0
+137,1984-02-06,30.0
+138,1984-03-05,0.5
+139,1984-04-02,1.33203028668596
+140,1984-04-30,6.88484556465932
+141,1984-06-12,8.2095655556304
+142,1984-07-02,6.4400619797752
+143,1984-08-13,8.53001518443577
+144,1984-09-10,6.89769127626812
+145,1984-10-01,11.2343832571435
+146,1984-11-05,11.5987576503224
+147,1984-12-03,16.4147914140091
+148,1985-03-11,30.0
+149,1985-04-09,9.08999566211785
+150,1985-05-06,1.98676467576328
+151,1985-06-03,4.19134415655172
+152,1985-07-01,6.19867982939078
+153,1985-08-26,7.60139351829305
+154,1985-09-23,8.81798700258093
+155,1985-10-22,10.5732864482256
+156,1985-11-18,17.8136572558974
+157,1985-12-09,30.0
+158,1986-01-13,30.0
+159,1986-04-07,30.0
+160,1986-05-05,2.01333639315037
+161,1986-06-02,5.74861128282388
+162,1986-06-30,4.16216716038323
+163,1986-07-28,5.3824465389994
+164,1986-08-25,6.31871423843405
+165,1986-09-22,7.09399309836235
+166,1986-10-20,8.94440256407226
+167,1986-11-17,11.8875976513815
+168,1986-12-15,30.0
+169,1987-03-09,30.0
+170,1987-04-13,0.5
+171,1987-04-24,1.93853862541941
+172,1987-05-04,8.38889260286225
+173,1987-05-11,6.79034705379376
+174,1987-05-25,1.98620886129767
+175,1987-06-09,8.19045475629171
+176,1987-07-06,4.17858314858729
+177,1987-08-10,6.60642664581765
+178,1987-09-07,6.4803802782579
+179,1987-10-05,8.84582597917476
+180,1987-11-02,10.4846253390803
+181,1987-12-07,18.8720052450759
+182,1988-01-04,30.0
+183,1988-02-01,30.0
+184,1988-02-29,30.0
+185,1988-03-28,30.0
+186,1988-04-27,2.27835708261737
+187,1988-05-09,4.45398617616201
+188,1988-05-25,5.65362717019445
+189,1988-06-06,7.22797915293658
+190,1988-06-20,4.68114950211444
+191,1988-07-11,6.15835148340129
+192,1988-08-15,5.97363724021077
+193,1988-09-12,7.96244802320119
+194,1988-10-03,8.85718844011148
+195,1988-11-07,11.5269702476114
+196,1988-12-05,30.0
+197,1989-01-03,30.0
+198,1989-01-30,30.0
+199,1989-02-27,30.0
+200,1989-03-28,2.00299601363144
+201,1989-04-21,8.56060472056177
+202,1989-05-22,4.56062788878911
+203,1989-06-21,6.28223018270315
+204,1989-07-17,6.46234843289543
+205,1989-08-14,6.94812960843821
+206,1989-09-12,8.70615718191904
+207,1989-10-16,9.7137900408882
+208,1989-11-06,9.54794742463331
+209,1989-12-04,30.0
+210,1990-01-08,30.0
+211,1990-02-05,30.0
+212,1990-03-05,30.0
+213,1990-04-02,2.85152528922027
+214,1990-04-30,6.38304426696813
+215,1990-06-25,5.92581292649869
+216,1990-07-18,4.62023697161714
+217,1990-08-20,6.58354292775335
+218,1990-09-18,8.89626346752878
+219,1990-10-15,11.2195617655542
+220,1990-11-12,13.8050767074021
+221,1990-12-10,30.0
+222,1991-01-07,30.0
+223,1991-01-28,30.0
+224,1991-03-04,30.0
+225,1991-03-25,13.470788925859
+226,1991-04-29,5.93540992541236
+227,1991-05-27,4.93051991968538
+228,1991-06-24,6.27249189358188
+229,1991-07-22,5.84900966056092
+230,1991-08-19,6.31048711931486
+231,1991-09-16,7.22236138198839
+232,1991-10-14,8.83814994434733
+233,1991-11-11,11.563641411387
+234,1991-12-09,30.0
+235,1992-01-06,30.0
+236,1992-02-24,0.5
+237,1992-03-30,30.0
+238,1992-04-24,4.12201536237967
+239,1992-05-15,5.43018963002124
+240,1992-05-25,4.78147022148197
+241,1992-06-22,6.56320917727705
+242,1992-07-20,5.77117415696741
+243,1992-08-17,6.47502434639313
+244,1992-09-14,8.57210489969744
+245,1992-10-12,8.91043614468066
+246,1992-11-09,13.835320333469
+247,1992-12-07,21.6049570104201
+248,1993-02-01,30.0
+249,1993-03-01,30.0
+250,1993-03-29,26.25
+251,1993-04-28,4.19268065045099
+252,1993-05-24,5.62236195514001
+253,1993-06-21,6.15260419114063
+254,1993-07-19,6.63546396680663
+255,1993-08-16,4.25088366102736
+256,1993-09-13,8.30800705663953
+257,1993-10-04,8.87081397037622
+258,1993-11-15,12.7317683886856
+259,1993-12-06,30.0
+260,1994-01-03,30.0
+261,1994-01-31,30.0
+262,1994-02-28,30.0
+263,1994-03-28,0.5
+264,1994-04-25,1.95787551710359
+265,1994-05-25,5.60635766915324
+266,1994-06-20,5.21648817571605
+267,1994-07-11,5.54963838415652
+268,1994-08-15,6.50064104243797
+269,1994-09-19,8.90051766918898
+270,1994-10-10,9.03893113622857
+271,1994-11-09,11.4713890950012
+272,1994-12-05,13.8957545020861
+273,1995-02-06,30.0
+274,1995-03-06,30.0
+275,1995-04-03,30.0
+276,1995-05-02,5.48678886136478
+277,1995-05-30,4.58203361829649
+278,1995-06-26,5.43492927273843
+279,1995-07-26,4.81180685167714
+280,1995-08-21,6.32151841536755
+281,1995-09-18,8.7903299884432
+282,1995-10-16,9.02774530134421
+283,1995-11-13,11.3977568287828
+284,1995-12-13,30.0
+285,1996-01-10,30.0
+286,1996-02-05,1.9
+287,1996-03-04,30.0
+288,1996-04-01,30.0
+289,1996-04-29,3.8289843173856
+290,1996-05-29,6.50449059332778
+291,1996-06-24,6.55792670652339
+292,1996-07-22,5.24831000996919
+293,1996-08-19,6.94263074456044
+294,1996-09-23,8.94725069868211
+295,1996-10-21,10.9107202572504
+296,1996-11-11,13.6484285839085
+297,1996-12-09,30.0
+298,1997-03-03,30.0
+299,1997-04-01,11.0592792268136
+300,1997-04-28,4.56712346849844
+301,1997-05-26,5.88110268991808
+302,1997-06-23,6.80232800384899
+303,1997-07-14,8.45132491865107
+304,1997-08-11,5.85515989088205
+305,1997-09-04,8.12856292136147
+306,1997-10-13,8.96430698964571
+307,1997-10-31,12.8807076445365
+308,1997-12-08,30.0
+309,1998-01-05,30.0
+310,1998-02-02,30.0
+311,1998-03-02,30.0
+312,1998-04-06,1.85266523349572
+313,1998-04-28,2.90032794607006
+314,1998-05-25,5.78622591225528
+315,1998-06-22,6.09994924439675
+316,1998-07-21,6.25600579229243
+317,1998-08-18,6.45571774376644
+318,1998-09-14,8.87979126333108
+319,1998-10-12,11.2888342292196
+320,1998-11-09,14.2670026685334
+321,1998-12-07,30.0
+322,1999-01-04,30.0
+323,1999-02-03,30.0
+324,1999-03-01,30.0
+325,1999-03-29,0.5
+326,1999-04-26,2.07856794304964
+327,1999-05-25,6.41015387020322
+328,1999-06-21,6.35338231689957
+329,1999-07-19,5.55716289197423
+330,1999-08-16,6.40347638642316
+331,1999-09-06,6.71587150515854
+332,1999-11-08,11.3617010367815
+333,1999-12-06,30.0
+334,2000-02-22,30.0
+335,2000-03-20,8.75
+336,2000-04-06,11.053398930533
+337,2000-05-15,4.23245002225315
+338,2000-06-13,5.41464647772331
+339,2000-07-10,6.44333031798958
+340,2000-08-07,7.89425207692468
+341,2000-09-06,6.80426633505428
+342,2000-11-06,11.3619313229456
+343,2000-12-13,16.4750070867297
+344,2001-01-23,30.0
+345,2001-02-19,30.0
+346,2001-03-26,21.4950663552941
+347,2001-04-24,11.591812681452
+348,2001-05-30,5.3444042918373
+349,2001-06-25,6.25106988155891
+350,2001-07-23,6.71145806426202
+351,2001-08-27,5.95883963326542
+352,2001-09-24,9.46060447463354
+353,2001-10-22,9.42891918058172
+354,2001-11-19,16.3606290383984
+355,2001-12-17,30.0
+356,2002-01-28,30.0
+357,2002-02-28,30.0
+358,2002-03-25,8.88230819119676
+359,2002-04-29,7.16235425210625
+360,2002-05-27,5.72252805770926
+361,2002-06-25,4.62468804511378
+362,2002-07-22,6.44124768746202
+363,2002-08-26,7.00266345475147
+364,2002-09-23,8.91517188864647
+365,2002-10-21,11.5135717650244
+366,2002-11-18,16.3222908955128
+367,2002-12-16,30.0
+368,2003-01-20,30.0
+369,2003-03-10,30.0
+370,2003-04-14,5.79020754984845
+371,2003-05-19,5.56103628554378
+372,2003-06-16,30.0
+373,2003-07-21,6.13694687226176
+374,2003-08-13,5.66191608898674
+375,2003-09-16,8.42615773241906
+376,2003-10-20,11.2639626940526
+377,2003-11-17,13.8459434129147
+378,2003-12-11,19.4299275166573
+379,2004-01-26,30.0
+380,2004-02-16,30.0
+381,2004-03-08,30.0
+382,2004-04-14,8.99777183701317
+383,2004-05-18,5.18685165086958
+384,2004-06-21,5.91774876018568
+385,2004-07-19,5.87265698256562
+386,2004-08-16,6.35602811719199
+387,2004-09-20,6.78937842843
+388,2004-10-18,9.10764206008245
+389,2004-11-15,11.4610854739736
+390,2004-12-13,30.0
+391,2005-01-31,30.0
+392,2005-02-21,30.0
+393,2005-03-15,30.0
+394,2005-04-19,7.74878983060749
+395,2005-05-23,8.14202958661837
+396,2005-06-20,5.87149432037183
+397,2005-07-18,6.20533130464474
+398,2005-08-22,7.25550342516905
+399,2005-09-19,8.2214366333801
+400,2005-10-17,8.9822979806387
+401,2005-11-14,11.2551737600672
+402,2005-12-12,30.0
+403,2006-02-27,30.0
+404,2006-03-20,30.0
+405,2006-04-18,2.31196546510177
+406,2006-05-15,4.60653857881892
+407,2006-06-12,5.68171105335033
+408,2006-07-10,6.06941194806964
+409,2006-08-14,7.38388539858238
+410,2006-09-12,7.92193907553671
+411,2006-10-16,9.33914826765841
+412,2006-11-06,11.2728322993647
+413,2006-12-04,13.8294851996958
+414,2007-01-22,30.0
+415,2007-02-12,30.0
+416,2007-03-12,13.6239072647292
+417,2007-04-10,3.50295395249508
+418,2007-05-14,7.75026148236322
+419,2007-06-11,5.60294584450674
+420,2007-07-09,8.34184957269448
+421,2007-08-06,6.84656747493462
+422,2007-09-11,8.79064524036507
+423,2007-10-08,8.90402179175439
+424,2007-11-05,13.8072913803781
+425,2007-12-05,30.0
+426,2008-01-14,30.0
+427,2008-02-11,30.0
+428,2008-03-10,30.0
+429,2008-04-15,4.30744888850728
+430,2008-05-13,3.96635227497169
+431,2008-06-09,5.92649788822856
+432,2008-07-14,6.36784327816168
+433,2008-08-11,6.29666988223726
+434,2008-09-15,8.60943698603688
+435,2008-10-13,10.2508946725896
+436,2008-11-10,11.6557451111911
+437,2008-12-08,30.0
+438,2009-02-09,30.0
+439,2009-03-02,30.0
+440,2009-04-06,1.91881170913658
+441,2009-05-11,4.47131081190569
+442,2009-06-15,7.87614275354291
+443,2009-07-13,7.13035433699768
+444,2009-08-10,30.0
+445,2009-09-07,8.81560499710581
+446,2009-10-19,11.4443941034218
+447,2009-11-09,13.8006106587955
+448,2009-12-07,16.1872389523444
+449,2010-01-11,30.0
+450,2010-02-08,30.0
+451,2010-03-10,30.0
+452,2010-04-12,4.76139943798049
+453,2010-05-10,6.0265853580202
+454,2010-06-14,4.47380869175262
+455,2010-07-12,4.29899967581864
+456,2010-08-09,8.6689682779934
+457,2010-09-15,11.0265803481255
+458,2010-10-18,11.3763396609837
+459,2010-11-08,12.53677760004
+460,2010-12-07,30.0
+461,2011-01-10,30.0
+462,2011-02-14,30.0
+463,2011-03-07,30.0
+464,2011-04-05,1.93573101887847
+465,2011-06-06,6.39810161387208
+466,2011-07-11,6.64639219057342
+467,2011-08-15,8.28478540199851
+468,2011-09-14,8.52955972632659
+469,2011-10-10,10.36900581617
+470,2011-11-07,12.0242139965186
+471,2011-12-12,18.8901922284294
+472,2012-01-09,30.0
+473,2012-03-05,30.0
+474,2012-04-02,4.1373312925509
+475,2012-05-07,4.5871464518101
+476,2012-06-04,4.63219852701259
+477,2012-07-02,6.10374442274473
+478,2012-08-06,7.75039339097707
+479,2012-09-03,8.72662049637925
+480,2012-10-01,9.22268908863665
+481,2012-11-05,13.8321845177547
+482,2012-12-10,30.0
+483,2013-01-08,30.0
+484,2013-02-04,30.0
+485,2013-03-04,0.5
+486,2013-04-08,30.0
+487,2013-05-13,4.06532970550165
+488,2013-06-03,8.58779944270316
+489,2013-07-01,6.34094206986937
+490,2013-08-05,5.73463281905828
+491,2013-09-02,8.07459500525171
+492,2013-10-07,9.07095906626706
+493,2013-11-04,11.4445399802223
+494,2013-12-02,14.0129808774715
+495,2014-01-07,30.0
+496,2014-02-03,30.0
+497,2014-03-03,30.0
+498,2014-04-07,2.09918948092618
+499,2014-05-05,6.34119716058318
+500,2014-06-02,6.23644589528498
+501,2014-07-07,6.35014489987706
+502,2014-08-04,8.28190687060238
+503,2014-09-01,9.79097771993461
+504,2014-10-06,9.21306005675791
+505,2014-11-03,11.3666102323043
+506,2014-12-01,13.8777882498695
+507,2015-01-06,30.0
+508,2015-02-02,30.0
+509,2015-03-02,30.0
+510,2015-04-13,0.5
+511,2015-05-04,8.53142282624368
+512,2015-06-01,6.23173549441366
+513,2015-07-06,5.27114414086356
+514,2015-08-03,5.98500553168467
+515,2015-09-07,8.44136623199955
+516,2015-10-05,9.57428527770879
+517,2015-11-02,11.4232336575245
+518,2015-12-02,17.7576380381589
diff --git a/LakeData/Original_Temp+PAR.csv b/LakeData/Original_Temp+PAR.csv
new file mode 100644
index 0000000..836985c
--- /dev/null
+++ b/LakeData/Original_Temp+PAR.csv
@@ -0,0 +1,1391 @@
+,date,global_radiation,water_temp
+0,2019-03-13,NA,5.098031
+1,2019-03-14,NA,5.07561875
+2,2019-03-15,NA,5.148357375
+3,2019-03-16,NA,5.268759375
+4,2019-03-17,NA,5.344516125
+5,2019-03-18,NA,5.308703875
+6,2019-03-19,NA,5.420210375
+7,2019-03-20,NA,5.565108375
+8,2019-03-21,NA,5.79838075
+9,2019-03-22,NA,6.046095875
+10,2019-03-23,NA,6.347609125
+11,2019-03-24,NA,6.506589
+12,2019-03-25,NA,5.954534625
+13,2019-03-26,NA,5.53587366666667
+14,2019-03-27,NA,6.3815495
+15,2019-03-28,NA,6.229191
+16,2019-03-29,NA,NA
+17,2019-03-30,NA,NA
+18,2019-03-31,NA,7.564806
+19,2019-04-01,NA,7.14100183333333
+20,2019-04-02,NA,8.07987775
+21,2019-04-03,NA,7.47589575
+22,2019-04-04,NA,7.518456375
+23,2019-04-05,NA,8.278666625
+24,2019-04-06,NA,8.194972
+25,2019-04-07,NA,8.18546025
+26,2019-04-08,NA,8.378585625
+27,2019-04-09,NA,8.63527066666667
+28,2019-04-10,NA,8.676671
+29,2019-04-11,NA,8.423361
+30,2019-04-12,NA,8.1539855
+31,2019-04-13,NA,8.261658625
+32,2019-04-14,NA,8.060908125
+33,2019-04-15,NA,8.712015125
+34,2019-04-16,NA,9.138882125
+35,2019-04-17,NA,9.1609265
+36,2019-04-18,NA,9.484108125
+37,2019-04-19,NA,10.080818625
+38,2019-04-20,NA,10.0321225714286
+39,2019-04-21,NA,10.34714175
+40,2019-04-22,NA,10.52699
+41,2019-04-23,NA,11.11194625
+42,2019-04-24,NA,11.96325375
+43,2019-04-25,NA,11.720882375
+44,2019-04-26,NA,11.22304625
+45,2019-04-27,NA,11.232218875
+46,2019-04-28,NA,10.868556
+47,2019-04-29,NA,11.02242875
+48,2019-04-30,NA,11.23636125
+49,2019-05-01,NA,11.12485
+50,2019-05-02,NA,11.0442425
+51,2019-05-03,NA,11.1357875
+52,2019-05-04,NA,11.081769375
+53,2019-05-05,NA,10.537780875
+54,2019-05-06,NA,11.042305
+55,2019-05-07,NA,11.168128
+56,2019-05-08,NA,11.026106
+57,2019-05-09,NA,11.14206125
+58,2019-05-10,216.028169014085,11.44999
+59,2019-05-11,105.810606060606,11.7188825
+60,2019-05-12,219.606060606061,11.30719625
+61,2019-05-13,217.683823529412,11.46015125
+62,2019-05-14,341.113636363636,11.62388
+63,2019-05-15,205.888111888112,11.69084
+64,2019-05-16,318.5,11.740416
+65,2019-05-17,267.426573426573,11.85101
+66,2019-05-18,208.354166666667,NA
+67,2019-05-19,170.608391608392,NA
+68,2019-05-20,45.0972222222222,12.777294
+69,2019-05-21,92.6344827586207,12.326125
+70,2019-05-22,251.555555555556,12.6771225
+71,2019-05-23,344.986013986014,12.91711
+72,2019-05-24,301.951388888889,13.26806625
+73,2019-05-25,106.552447552448,13.79790125
+74,2019-05-26,231.611111111111,13.78302875
+75,2019-05-27,231.636363636364,13.82223625
+76,2019-05-28,91.7847222222222,13.7426025
+77,2019-05-29,161.097902097902,14.2416325
+78,2019-05-30,270.9375,14.34253125
+79,2019-05-31,327.727272727273,14.58693
+80,2019-06-01,324.840277777778,14.86842875
+81,2019-06-02,305.482517482517,15.6199825
+82,2019-06-03,274.013888888889,15.37784125
+83,2019-06-04,246.531468531469,15.9680575
+84,2019-06-05,291.229166666667,16.30669625
+85,2019-06-06,117.569444444444,15.44752625
+86,2019-06-07,281.496503496504,15.32942375
+87,2019-06-08,272.361111111111,16.65778625
+88,2019-06-09,114.517482517483,16.59301375
+89,2019-06-10,68.8611111111111,16.52676125
+90,2019-06-11,127.706293706294,16.3394075
+91,2019-06-12,240.673611111111,16.377595
+92,2019-06-13,297.531468531469,16.837528
+93,2019-06-14,255.666666666667,17.04445375
+94,2019-06-15,263.72027972028,17.0945685714286
+95,2019-06-16,241.222222222222,18.31223
+96,2019-06-17,303.832167832168,NA
+97,2019-06-18,249.243055555556,NA
+98,2019-06-19,241.468531468531,18.009395
+99,2019-06-20,168.222222222222,18.869895
+100,2019-06-21,210.13986013986,18.35647625
+101,2019-06-22,109.201388888889,18.417305
+102,2019-06-23,255.930555555556,18.56424875
+103,2019-06-24,303.552447552448,18.93363
+104,2019-06-25,232.125,19.17946875
+105,2019-06-26,264.398601398601,19.80623375
+106,2019-06-27,247.555555555556,20.0198257142857
+107,2019-06-28,355.062937062937,19.91070875
+108,2019-06-29,368.666666666667,20.056085
+109,2019-06-30,250.321678321678,20.4035725
+110,2019-07-01,332.451388888889,20.9038575
+111,2019-07-02,168.573426573427,21.16262125
+112,2019-07-03,249.305555555556,20.4896375
+113,2019-07-04,318.167832167832,20.0251066666667
+114,2019-07-05,239.027777777778,20.877958
+115,2019-07-06,181.433566433566,20.98512875
+116,2019-07-07,232.618055555556,20.68408625
+117,2019-07-08,181.545454545455,20.61036625
+118,2019-07-09,219.479166666667,20.09024875
+119,2019-07-10,359.486111111111,19.9166883333333
+120,2019-07-11,142.293706293706,20.0866316666667
+121,2019-07-12,193.208333333333,20.2319775
+122,2019-07-13,284.307692307692,19.75857125
+123,2019-07-14,293.347222222222,19.640985
+124,2019-07-15,198.654929577465,19.418505
+125,2019-07-16,331.861111111111,19.7769475
+126,2019-07-17,318.440559440559,19.88398875
+127,2019-07-18,299.659722222222,20.18240625
+128,2019-07-19,273.440559440559,20.2915875
+129,2019-07-20,272.708333333333,20.4821025
+130,2019-07-21,196.706293706294,20.7391925
+131,2019-07-22,264.798611111111,21.0014533333333
+132,2019-07-23,241.041958041958,20.96593875
+133,2019-07-24,234.479166666667,21.12410375
+134,2019-07-25,232.965034965035,21.35500625
+135,2019-07-26,270.520833333333,21.49629
+136,2019-07-27,206.41958041958,21.454925
+137,2019-07-28,59.0625,20.69808625
+138,2019-07-29,262.895104895105,21.2512125
+139,2019-07-30,322.083333333333,20.82846
+140,2019-07-31,171.680555555556,21.36107125
+141,2019-08-01,309.321678321678,21.15533125
+142,2019-08-02,122.916666666667,21.1289016666667
+143,2019-08-03,294.146853146853,20.82694625
+144,2019-08-04,304.423611111111,21.2914125
+145,2019-08-05,255.79020979021,21.2686325
+146,2019-08-06,123.993055555556,21.65444
+147,2019-08-07,60.3286713286713,21.23243
+148,2019-08-08,272.923611111111,21.128635
+149,2019-08-09,268.566433566434,21.130275
+150,2019-08-10,105.909722222222,21.60417375
+151,2019-08-11,274.559440559441,21.11748375
+152,2019-08-12,75.3888888888889,20.943775
+153,2019-08-13,144.118881118881,21.04886375
+154,2019-08-14,295.25,20.9208857142857
+155,2019-08-15,132.659722222222,NA
+156,2019-08-16,282.839160839161,20.978716
+157,2019-08-17,132.75,20.9033475
+158,2019-08-18,303.41958041958,20.71923625
+159,2019-08-19,118.916666666667,20.76613625
+160,2019-08-20,33.5244755244755,20.4268475
+161,2019-08-21,173.354166666667,20.41122375
+162,2019-08-22,80.2797202797203,20.10015125
+163,2019-08-23,95.4583333333333,19.9647825
+164,2019-08-24,196.293706293706,20.0549575
+165,2019-08-25,269.625,20.13019875
+166,2019-08-26,278.832167832168,20.2635285714286
+167,2019-08-27,265.041666666667,20.37481125
+168,2019-08-28,204.363636363636,20.61278375
+169,2019-08-29,169.104166666667,21.18111625
+170,2019-08-30,273.673611111111,20.5136175
+171,2019-08-31,225.426573426573,20.95250875
+172,2019-09-01,112.594405594406,20.8860625
+173,2019-09-02,33.4895104895105,20.62727625
+174,2019-09-03,230.604166666667,20.279935
+175,2019-09-04,249.706293706294,20.365515
+176,2019-09-05,56.8333333333333,20.111235
+177,2019-09-06,55.6028368794326,19.82443375
+178,2019-09-07,164.909722222222,19.7577883333333
+179,2019-09-08,50.7622377622378,19.37283125
+180,2019-09-09,153.972222222222,18.91574625
+181,2019-09-10,206.643356643357,18.8329725
+182,2019-09-11,210.361111111111,18.76678375
+183,2019-09-12,251.538461538462,19.006275
+184,2019-09-13,248.090277777778,19.1156385714286
+185,2019-09-14,214.069444444444,NA
+186,2019-09-15,226.062937062937,NA
+187,2019-09-16,231.708333333333,19.43712
+188,2019-09-17,233.965034965035,19.311445
+189,2019-09-18,152.520833333333,19.008845
+190,2019-09-19,233.244755244755,18.8065675
+191,2019-09-20,230.395833333333,18.6011933333333
+192,2019-09-21,222.468531468531,18.6089975
+193,2019-09-22,170.236111111111,18.7077425
+194,2019-09-23,89.5034965034965,18.62775125
+195,2019-09-24,100.270833333333,18.51049625
+196,2019-09-25,157.538461538462,18.426615
+197,2019-09-26,84.2569444444444,18.38717875
+198,2019-09-27,155.160839160839,18.30339125
+199,2019-09-28,156.236111111111,18.078285
+200,2019-09-29,203.874125874126,18.1674025
+201,2019-09-30,127.375,17.57288
+202,2019-10-01,190.069444444444,17.8107633333333
+203,2019-10-02,88.4405594405594,17.616115
+204,2019-10-03,154.881944444444,17.474295
+205,2019-10-04,42.5454545454545,17.2732266666667
+206,2019-10-05,74.9444444444444,NA
+207,2019-10-06,53.0559440559441,NA
+208,2019-10-07,145.784722222222,16.557282
+209,2019-10-08,99.7062937062937,16.4037925
+210,2019-10-09,20.3541666666667,16.2834
+211,2019-10-10,114.041958041958,15.85279
+212,2019-10-11,176.166666666667,15.69606125
+213,2019-10-12,159.146853146853,15.77339125
+214,2019-10-13,142.006944444444,15.83993
+215,2019-10-14,161.482517482517,15.78356625
+216,2019-10-15,51.9513888888889,15.64955875
+217,2019-10-16,166.51048951049,15.44082375
+218,2019-10-17,143.527777777778,15.3985671428571
+219,2019-10-18,68.2361111111111,15.45646625
+220,2019-10-19,74.4265734265734,15.371705
+221,2019-10-20,84.3263888888889,15.26176
+222,2019-10-21,73.5874125874126,15.19050625
+223,2019-10-22,39.125,15.17621375
+224,2019-10-23,99.8461538461538,15.12968875
+225,2019-10-24,53.875,15.066015
+226,2019-10-25,83.3076923076923,15.05681125
+227,2019-10-26,94.3055555555556,15.03038625
+228,2019-10-27,113.14598540146,14.99975375
+229,2019-10-28,25.4166666666667,15.00427875
+230,2019-10-29,24.4545454545455,14.6487666666667
+231,2019-10-30,22.8819444444444,14.403735
+232,2019-10-31,29.2797202797203,14.1209525
+233,2019-11-01,41.2083333333333,13.948845
+234,2019-11-02,68.2430555555556,13.9397625
+235,2019-11-03,29.5664335664336,13.86858625
+236,2019-11-04,82.1111111111111,13.6175875
+237,2019-11-05,80.6713286713287,13.48645375
+238,2019-11-06,51.0555555555556,13.32502125
+239,2019-11-07,45.993006993007,13.0721425
+240,2019-11-08,18.8611111111111,12.8449025
+241,2019-11-09,53.2307692307692,12.5995585714286
+242,2019-11-10,46.5486111111111,12.3444425
+243,2019-11-11,73.986013986014,12.10026125
+244,2019-11-12,72.7152777777778,11.9014671428571
+245,2019-11-13,51.3076923076923,11.63233
+246,2019-11-14,57.2222222222222,11.435268
+247,2019-11-15,42.3706293706294,11.11299
+248,2019-11-16,51.8888888888889,10.9165675
+249,2019-11-17,17.7972027972028,10.7017225
+250,2019-11-18,88.1875,10.5300475
+251,2019-11-19,54.6944444444444,10.3546575
+252,2019-11-20,19.7062937062937,10.20526
+253,2019-11-21,20.8333333333333,10.072935
+254,2019-11-22,79.0909090909091,9.9290155
+255,2019-11-23,21.1180555555556,9.696141
+256,2019-11-24,40.5314685314685,9.579132
+257,2019-11-25,20.1736111111111,9.52824575
+258,2019-11-26,55.8251748251748,9.5006845
+259,2019-11-27,42.6319444444444,9.445922
+260,2019-11-28,20.8811188811189,9.36838866666667
+261,2019-11-29,17.7569444444444,9.26032525
+262,2019-11-30,72.041958041958,9.18245375
+263,2019-12-01,24.375,9.0058545
+264,2019-12-02,14.6293706293706,8.8609455
+265,2019-12-03,81.4444444444444,8.60251875
+266,2019-12-04,34.9090909090909,8.39003475
+267,2019-12-05,23.5694444444444,8.229855
+268,2019-12-06,40.8541666666667,8.08394225
+269,2019-12-07,34.7412587412587,8.01222925
+270,2019-12-08,71.9236111111111,8.01195075
+271,2019-12-09,26.7972027972028,7.9248755
+272,2019-12-10,65.5347222222222,7.81272
+273,2019-12-11,21.7132867132867,7.6384735
+274,2019-12-12,44.0416666666667,7.5543685
+275,2019-12-13,21.986013986014,7.4132185
+276,2019-12-14,36.3263888888889,7.3121005
+277,2019-12-15,40.8531468531469,7.2688405
+278,2019-12-16,44.0972222222222,7.2323285
+279,2019-12-17,31.1468531468531,7.16731975
+280,2019-12-18,44.6666666666667,7.12918975
+281,2019-12-19,36.4405594405594,7.0855485
+282,2019-12-20,18.3263888888889,7.0205125
+283,2019-12-21,31.6736111111111,6.98897633333333
+284,2019-12-22,20.1818181818182,6.945185
+285,2019-12-23,18.6597222222222,6.896964
+286,2019-12-24,13.1398601398601,6.851615
+287,2019-12-25,28.0763888888889,6.81974625
+288,2019-12-26,32.4965034965035,6.782367
+289,2019-12-27,17.1597222222222,6.744968
+290,2019-12-28,38.0909090909091,6.736814
+291,2019-12-29,75.1458333333333,6.6183655
+292,2019-12-30,24.6503496503496,6.51357875
+293,2019-12-31,19.043795620438,6.41404075
+294,2020-01-01,13.6993006993007,6.35725375
+295,2020-01-02,16.1458333333333,6.292592
+296,2020-01-03,54.0909090909091,6.21375925
+297,2020-01-04,23.4722222222222,6.212105
+298,2020-01-05,82.1805555555556,6.160389
+299,2020-01-06,42.7622377622378,6.10967675
+300,2020-01-07,25.2152777777778,6.06860275
+301,2020-01-08,55.3496503496503,6.0215415
+302,2020-01-09,60.7708333333333,5.9414515
+303,2020-01-10,58.2167832167832,5.89432175
+304,2020-01-11,52.9861111111111,5.8764225
+305,2020-01-12,62.2377622377622,5.81320225
+306,2020-01-13,56.2361111111111,5.78085425
+307,2020-01-14,78.4195804195804,5.73116375
+308,2020-01-15,80.0833333333333,5.68818275
+309,2020-01-16,86.1258741258741,NA
+310,2020-01-17,33.2982456140351,5.6484365
+311,2020-01-18,NA,5.6453585
+312,2020-01-19,NA,5.58460675
+313,2020-01-20,NA,5.48656
+314,2020-01-21,NA,5.422593
+315,2020-01-22,34.9875,5.34034875
+316,2020-01-23,21.0769230769231,5.26503475
+317,2020-01-24,41.4054054054054,5.19717025
+318,2020-01-25,NA,5.14150275
+319,2020-01-26,NA,5.05298625
+320,2020-01-27,NA,5.09153625
+321,2020-01-28,NA,5.06989575
+322,2020-01-29,NA,4.9845085
+323,2020-01-30,NA,5.00704725
+324,2020-01-31,NA,5.09059025
+325,2020-02-01,NA,5.17755575
+326,2020-02-02,NA,5.14441975
+327,2020-02-03,NA,5.23357275
+328,2020-02-04,NA,5.325997
+329,2020-02-05,NA,5.37644366666667
+330,2020-02-06,170.822222222222,5.33045625
+331,2020-02-07,128.972027972028,5.28083675
+332,2020-02-08,107.340277777778,5.2687015
+333,2020-02-09,119.86013986014,5.26638575
+334,2020-02-10,54.0972222222222,5.34149175
+335,2020-02-11,43.034965034965,5.37781325
+336,2020-02-12,48.4444444444444,5.356487
+337,2020-02-13,51.7132867132867,5.31174125
+338,2020-02-14,82.4166666666667,5.29597133333333
+339,2020-02-15,126.034965034965,5.321014
+340,2020-02-16,60.4305555555556,5.40232025
+341,2020-02-17,55.5314685314685,5.463238
+342,2020-02-18,114.645833333333,5.51184375
+343,2020-02-19,86.05,5.43891825
+344,2020-02-20,133.138888888889,5.4689485
+345,2020-02-21,121.479166666667,5.53197
+346,2020-02-22,128.0,5.64149275
+347,2020-02-23,47.6736111111111,5.817506
+348,2020-02-24,140.776223776224,5.68526
+349,2020-02-25,66.1875,5.6381745
+350,2020-02-26,67.7132867132867,5.67437375
+351,2020-02-27,46.375,5.625611
+352,2020-02-28,153.426573426573,5.66352275
+353,2020-02-29,114.951388888889,5.74582825
+354,2020-03-01,164.559440559441,6.04318025
+355,2020-03-02,49.6527777777778,6.0486815
+356,2020-03-03,159.223776223776,5.815058
+357,2020-03-04,111.298611111111,5.9121405
+358,2020-03-05,28.2307692307692,6.0357525
+359,2020-03-06,48.5277777777778,5.948996
+360,2020-03-07,88.3216783216783,5.891672
+361,2020-03-08,164.604166666667,5.9883715
+362,2020-03-09,85.7482517482517,6.1521725
+363,2020-03-10,34.2727272727273,6.101204
+364,2020-03-11,99.1666666666667,6.1102145
+365,2020-03-12,119.48951048951,6.39184325
+366,2020-03-13,154.305555555556,NA
+367,2020-03-14,91.2097902097902,NA
+368,2020-03-15,197.506944444444,NA
+369,2020-03-16,188.72027972028,6.641099
+370,2020-03-17,163.819444444444,7.139014
+371,2020-03-18,198.636363636364,6.9604295
+372,2020-03-19,195.340277777778,7.313003
+373,2020-03-20,173.447552447552,7.559171
+374,2020-03-21,70.2222222222222,7.6924605
+375,2020-03-22,114.377622377622,6.48635775
+376,2020-03-23,222.777777777778,6.670629
+377,2020-03-24,220.194444444444,6.613056
+378,2020-03-25,204.475524475524,6.68261975
+379,2020-03-26,147.944444444444,6.70069075
+380,2020-03-27,182.398601398601,6.77898625
+381,2020-03-28,218.319444444444,6.99600725
+382,2020-03-29,62.6363636363636,7.07497925
+383,2020-03-30,59.4791666666667,6.605019
+384,2020-03-31,250.293706293706,6.766912
+385,2020-04-01,250.0625,6.7901215
+386,2020-04-02,242.090909090909,7.0305425
+387,2020-04-03,243.368055555556,7.04671775
+388,2020-04-04,252.433566433566,6.9839315
+389,2020-04-05,247.736111111111,7.72435325
+390,2020-04-06,258.41958041958,8.37252816666667
+391,2020-04-07,257.604166666667,8.73742814285714
+392,2020-04-08,258.503496503496,8.745666375
+393,2020-04-09,234.333333333333,9.173952875
+394,2020-04-10,262.361111111111,9.348817125
+395,2020-04-11,265.335664335664,9.4573225
+396,2020-04-12,241.333333333333,9.7694125
+397,2020-04-13,246.013986013986,9.86217485714286
+398,2020-04-14,278.166666666667,8.94394514285714
+399,2020-04-15,283.391608391608,10.563728
+400,2020-04-16,259.270833333333,10.6402725
+401,2020-04-17,262.34965034965,10.81550875
+402,2020-04-18,275.729166666667,10.69633375
+403,2020-04-19,217.195804195804,11.418336125
+404,2020-04-20,236.076388888889,10.893475
+405,2020-04-21,163.391608391608,11.455415
+406,2020-04-22,293.840277777778,11.063278
+407,2020-04-23,296.629370629371,11.8303
+408,2020-04-24,267.791666666667,11.8770375
+409,2020-04-25,219.354166666667,12.69511
+410,2020-04-26,192.202797202797,12.502705
+411,2020-04-27,251.104166666667,13.1002575
+412,2020-04-28,82.2727272727273,12.76013
+413,2020-04-29,183.506944444444,13.2563471428571
+414,2020-04-30,54.7132867132867,13.81744625
+415,2020-05-01,76.9375,12.4614775
+416,2020-05-02,110.167832167832,12.5027015
+417,2020-05-03,287.229166666667,12.9844475
+418,2020-05-04,212.58041958042,12.93295125
+419,2020-05-05,44.2222222222222,13.08216875
+420,2020-05-06,267.034965034965,12.68096125
+421,2020-05-07,286.166666666667,13.41374125
+422,2020-05-08,262.944055944056,13.766685
+423,2020-05-09,255.520833333333,13.84372875
+424,2020-05-10,268.944055944056,14.382565
+425,2020-05-11,75.1805555555556,13.123395
+426,2020-05-12,224.405594405594,14.15524875
+427,2020-05-13,95.0069444444444,13.6498
+428,2020-05-14,68.4097222222222,13.2920375
+429,2020-05-15,96.6853146853147,13.647405
+430,2020-05-16,290.652777777778,13.5203925
+431,2020-05-17,351.342657342657,13.77856125
+432,2020-05-18,348.923611111111,14.1472285714286
+433,2020-05-19,314.133802816901,14.5255657142857
+434,2020-05-20,326.875,14.8081975
+435,2020-05-21,347.622377622378,15.37912125
+436,2020-05-22,237.145833333333,15.73838625
+437,2020-05-23,118.657342657343,15.387085
+438,2020-05-24,290.520833333333,16.2211825
+439,2020-05-25,334.762237762238,15.90030625
+440,2020-05-26,330.111111111111,16.139985
+441,2020-05-27,372.755244755245,16.3541525
+442,2020-05-28,303.5,16.76126875
+443,2020-05-29,369.587412587413,16.21910125
+444,2020-05-30,312.3125,16.5587757142857
+445,2020-05-31,363.594405594406,16.63406
+446,2020-06-01,372.388888888889,16.85692
+447,2020-06-02,352.090909090909,17.05960125
+448,2020-06-03,263.284722222222,17.63598
+449,2020-06-04,57.9305555555556,17.61870625
+450,2020-06-05,115.832167832168,17.0139775
+451,2020-06-06,108.847222222222,16.9928725
+452,2020-06-07,102.629370629371,17.2613925
+453,2020-06-08,249.840277777778,16.72336375
+454,2020-06-09,93.7902097902098,16.61829
+455,2020-06-10,82.2152777777778,16.75786
+456,2020-06-11,239.839160839161,16.74601875
+457,2020-06-12,285.020833333333,17.09116125
+458,2020-06-13,308.797202797203,16.71658625
+459,2020-06-14,58.9513888888889,17.707515
+460,2020-06-15,172.86013986014,17.716135
+461,2020-06-16,225.854166666667,17.7484675
+462,2020-06-17,100.48951048951,17.59346125
+463,2020-06-18,248.4375,17.85639625
+464,2020-06-19,119.440559440559,18.0062675
+465,2020-06-20,294.666666666667,17.774425
+466,2020-06-21,319.468531468531,18.10654125
+467,2020-06-22,278.493055555556,18.3654066666667
+468,2020-06-23,365.356643356643,18.42176875
+469,2020-06-24,375.958333333333,18.81287625
+470,2020-06-25,366.950704225352,19.0897
+471,2020-06-26,179.298611111111,19.44914
+472,2020-06-27,249.034965034965,19.89238875
+473,2020-06-28,157.625,19.6299625
+474,2020-06-29,200.097902097902,19.62701125
+475,2020-06-30,252.881944444444,19.6957625
+476,2020-07-01,280.041958041958,19.9864871428571
+477,2020-07-02,148.173611111111,19.90848
+478,2020-07-03,107.27972027972,20.055215
+479,2020-07-04,268.354166666667,19.75267625
+480,2020-07-05,292.576388888889,19.7738225
+481,2020-07-06,219.58041958042,19.26484875
+482,2020-07-07,306.083333333333,19.7208525
+483,2020-07-08,300.223776223776,19.8971025
+484,2020-07-09,270.5,20.03452125
+485,2020-07-10,248.664335664336,20.0515025
+486,2020-07-11,101.715277777778,20.55002625
+487,2020-07-12,319.538461538462,20.15149375
+488,2020-07-13,240.013888888889,20.3699
+489,2020-07-14,265.384615384615,20.48949
+490,2020-07-15,99.0972222222222,NA
+491,2020-07-16,48.2867132867133,NA
+492,2020-07-17,134.090277777778,NA
+493,2020-07-18,250.48951048951,NA
+494,2020-07-19,288.652777777778,NA
+495,2020-07-20,247.104895104895,NA
+496,2020-07-21,171.145833333333,NA
+497,2020-07-22,167.0,20.60314
+498,2020-07-23,207.013888888889,20.7863066666667
+499,2020-07-24,97.7972027972028,21.082405
+500,2020-07-25,254.590277777778,20.65231
+501,2020-07-26,230.5,20.72972625
+502,2020-07-27,349.888111888112,21.06321375
+503,2020-07-28,216.868055555556,21.2281625
+504,2020-07-29,264.363636363636,21.18547
+505,2020-07-30,314.708333333333,21.43129125
+506,2020-07-31,290.013986013986,21.77596875
+507,2020-08-01,222.854166666667,22.1079825
+508,2020-08-02,95.6013986013986,21.38676875
+509,2020-08-03,49.3194444444444,21.4675425
+510,2020-08-04,86.9440559440559,20.83808375
+511,2020-08-05,227.166666666667,20.72572375
+512,2020-08-06,274.286713286713,20.84629
+513,2020-08-07,254.333333333333,21.036135
+514,2020-08-08,293.384615384615,21.15064625
+515,2020-08-09,273.284722222222,21.3534175
+516,2020-08-10,279.41958041958,21.6109875
+517,2020-08-11,231.340277777778,21.8884425
+518,2020-08-12,247.265734265734,21.9396833333333
+519,2020-08-13,141.513888888889,22.352654
+520,2020-08-14,126.923611111111,21.8700575
+521,2020-08-15,310.13986013986,21.76980125
+522,2020-08-16,272.986111111111,21.67231375
+523,2020-08-17,220.706293706294,22.00173875
+524,2020-08-18,240.305555555556,21.96856375
+525,2020-08-19,263.510489510489,22.01551625
+526,2020-08-20,245.777777777778,21.80482375
+527,2020-08-21,297.27972027972,21.88644
+528,2020-08-22,86.9375,21.79151375
+529,2020-08-23,142.713286713287,21.57941625
+530,2020-08-24,245.673611111111,21.61384875
+531,2020-08-25,240.468531468531,21.63621125
+532,2020-08-26,261.833333333333,21.1630775
+533,2020-08-27,232.853146853147,21.59395125
+534,2020-08-28,123.597222222222,21.47830125
+535,2020-08-29,30.0559440559441,21.218415
+536,2020-08-30,24.2464788732394,20.44660375
+537,2020-08-31,202.715277777778,20.2583625
+538,2020-09-01,173.223776223776,20.11582125
+539,2020-09-02,238.125,19.77122
+540,2020-09-03,269.992957746479,19.97058
+541,2020-09-04,260.590277777778,20.05345125
+542,2020-09-05,243.412587412587,20.1759475
+543,2020-09-06,43.5694444444444,19.66508
+544,2020-09-07,193.566433566434,19.84793
+545,2020-09-08,255.416666666667,19.74061
+546,2020-09-09,231.527777777778,19.80424625
+547,2020-09-10,245.923076923077,19.84253875
+548,2020-09-11,240.338028169014,19.7019025
+549,2020-09-12,232.409722222222,20.07634625
+550,2020-09-13,231.756944444444,20.035225
+551,2020-09-14,237.371428571429,20.13921625
+552,2020-09-15,231.493055555556,20.18825875
+553,2020-09-16,171.51048951049,20.3235475
+554,2020-09-17,215.652777777778,20.2996028571429
+555,2020-09-18,175.062937062937,20.01044
+556,2020-09-19,118.458333333333,20.0042275
+557,2020-09-20,206.503496503497,20.177205
+558,2020-09-21,196.013888888889,20.36679375
+559,2020-09-22,129.846153846154,20.50551875
+560,2020-09-23,95.986013986014,20.481325
+561,2020-09-24,126.048611111111,20.465305
+562,2020-09-25,33.4685314685315,19.81027
+563,2020-09-26,52.3055555555556,18.93941125
+564,2020-09-27,106.86013986014,18.2519275
+565,2020-09-28,178.347222222222,17.864535
+566,2020-09-29,42.0208333333333,17.60857375
+567,2020-09-30,154.524475524476,17.43961625
+568,2020-10-01,111.958333333333,17.37501625
+569,2020-10-02,70.020979020979,17.267175
+570,2020-10-03,122.9375,17.02133125
+571,2020-10-04,146.090909090909,16.81585
+572,2020-10-05,87.5625,16.6425425
+573,2020-10-06,72.75,16.400215
+574,2020-10-07,91.2916666666667,16.145645
+575,2020-10-08,147.601398601399,16.021935
+576,2020-10-09,149.868055555556,15.97943
+577,2020-10-10,40.3426573426573,15.99099875
+578,2020-10-11,104.916666666667,15.80282625
+579,2020-10-12,56.6319444444444,15.50307875
+580,2020-10-13,126.006993006993,15.18377625
+581,2020-10-14,166.75,14.897215
+582,2020-10-15,33.4545454545455,14.62154875
+583,2020-10-16,45.9166666666667,14.3954071428571
+584,2020-10-17,69.4265734265734,NA
+585,2020-10-18,106.618055555556,NA
+586,2020-10-19,109.804195804196,13.9902275
+587,2020-10-20,112.944444444444,13.87843
+588,2020-10-21,49.1468531468531,13.7807025
+589,2020-10-22,91.4652777777778,13.72043125
+590,2020-10-23,28.4545454545455,13.7505725
+591,2020-10-24,114.708333333333,13.7815275
+592,2020-10-25,119.867132867133,13.7807542857143
+593,2020-10-26,12.125,13.65151875
+594,2020-10-27,102.972027972028,13.2933525
+595,2020-10-28,67.9444444444444,13.119945
+596,2020-10-29,37.4755244755245,12.98148625
+597,2020-10-30,123.423611111111,12.92706875
+598,2020-10-31,62.0555555555556,12.8659475
+599,2020-11-01,44.8601398601399,12.7517075
+600,2020-11-02,106.034722222222,12.8281775
+601,2020-11-03,19.2237762237762,12.87957
+602,2020-11-04,21.0416666666667,12.69544375
+603,2020-11-05,27.7482517482517,12.505485
+604,2020-11-06,79.1041666666667,12.42545875
+605,2020-11-07,86.2237762237762,12.3903875
+606,2020-11-08,65.3888888888889,12.28185125
+607,2020-11-09,90.1468531468531,12.19488375
+608,2020-11-10,48.6041666666667,12.08555125
+609,2020-11-11,24.3776223776224,11.9614428571429
+610,2020-11-12,84.3194444444444,11.86896
+611,2020-11-13,96.7762237762238,11.7571425
+612,2020-11-14,100.854166666667,11.65712375
+613,2020-11-15,90.3496503496503,11.52658875
+614,2020-11-16,55.8680555555556,11.44616375
+615,2020-11-17,91.5314685314685,11.41442875
+616,2020-11-18,70.6388888888889,11.350365
+617,2020-11-19,20.1538461538462,11.179785
+618,2020-11-20,37.5138888888889,10.95937625
+619,2020-11-21,86.8958333333333,10.73457125
+620,2020-11-22,42.9090909090909,10.4984275
+621,2020-11-23,67.4375,10.32772625
+622,2020-11-24,34.1468531468531,10.1604525
+623,2020-11-25,13.3194444444444,9.9849265
+624,2020-11-26,21.4895104895105,9.820052875
+625,2020-11-27,24.25,9.67261571428571
+626,2020-11-28,16.5664335664336,9.4595845
+627,2020-11-29,6.77083333333333,9.23613725
+628,2020-11-30,14.8391608391608,8.99339075
+629,2020-12-01,12.4513888888889,8.74066825
+630,2020-12-02,15.013986013986,8.5404085
+631,2020-12-03,63.9930555555556,8.3781445
+632,2020-12-04,19.4475524475524,8.19344725
+633,2020-12-05,21.8333333333333,8.03004925
+634,2020-12-06,13.8741258741259,7.8802605
+635,2020-12-07,31.1180555555556,7.7325985
+636,2020-12-08,20.3333333333333,7.62544375
+637,2020-12-09,11.5594405594406,7.52043325
+638,2020-12-10,18.4275362318841,7.40358475
+639,2020-12-11,34.1987639060569,7.26927125
+640,2020-12-12,25.5966666666667,7.19382775
+641,2020-12-13,14.2618649965205,7.1248205
+642,2020-12-14,34.859735744089,7.047053
+643,2020-12-15,24.4700486448923,6.974447
+644,2020-12-16,25.6118219749652,6.92766225
+645,2020-12-17,46.9698887343533,6.87671825
+646,2020-12-18,47.4569541029207,6.82855975
+647,2020-12-19,20.703125,6.76346825
+648,2020-12-20,32.341225626741,6.69344025
+649,2020-12-21,20.1525400139179,6.6546055
+650,2020-12-22,47.4659470752089,6.65911975
+651,2020-12-23,30.8848400556328,6.73255975
+652,2020-12-24,29.6311670160727,6.74822175
+653,2020-12-25,16.1061111111111,6.671683
+654,2020-12-26,77.181223922114,6.576662
+655,2020-12-27,34.3351388888889,6.394359
+656,2020-12-28,12.7058536585366,6.33223225
+657,2020-12-29,37.1034794711204,6.196067
+658,2020-12-30,27.0441973592773,6.1084965
+659,2020-12-31,33.1763425253991,6.0494645
+660,2021-01-01,25.4538247566064,5.98158475
+661,2021-01-02,8.13986111111111,5.944373
+662,2021-01-03,16.8446527777778,5.88897175
+663,2021-01-04,24.7519259259259,5.79190125
+664,2021-01-05,11.5741754385965,5.7008485
+665,2021-01-06,32.0505555555556,5.62405975
+666,2021-01-07,44.15375,5.53904225
+667,2021-01-08,43.5828472222222,5.4310915
+668,2021-01-09,59.7122222222222,5.2562885
+669,2021-01-10,74.8053472222222,5.173148
+670,2021-01-11,66.1777777777778,5.135898
+671,2021-01-12,15.821875,4.979676
+672,2021-01-13,45.2795264623955,4.899852
+673,2021-01-14,8.92145428365731,4.8067115
+674,2021-01-15,29.8685933147632,4.69180625
+675,2021-01-16,39.7498611111111,4.528183
+676,2021-01-17,30.6835187760779,4.421046
+677,2021-01-18,40.7009728978457,4.405961
+678,2021-01-19,77.7638888888889,4.33023925
+679,2021-01-20,70.5627083333333,4.286366
+680,2021-01-21,66.7420138888889,4.2165315
+681,2021-01-22,63.5059027777778,4.26066925
+682,2021-01-23,64.18617095205,4.2517885
+683,2021-01-24,101.020013898541,4.180732
+684,2021-01-25,49.4520833333333,4.0951975
+685,2021-01-26,72.0506944444444,4.04988025
+686,2021-01-27,20.0806115357887,3.9770775
+687,2021-01-28,20.5611739745403,3.9277255
+688,2021-01-29,35.4125628140703,3.99813375
+689,2021-01-30,28.3920083391244,4.03405975
+690,2021-01-31,35.3243055555556,4.08121825
+691,2021-02-01,30.5548364648573,4.123377
+692,2021-02-02,31.0627083333333,4.19519375
+693,2021-02-03,18.9189378057303,4.26675725
+694,2021-02-04,59.6452397498263,4.32957
+695,2021-02-05,93.4263194444444,4.4856055
+696,2021-02-06,30.6779554937413,4.48859875
+697,2021-02-07,23.0271527777778,4.4200105
+698,2021-02-08,58.0824305555556,4.33869375
+699,2021-02-09,36.7056406685237,4.27606675
+700,2021-02-10,25.7917246175243,4.1922535
+701,2021-02-11,75.4559027777778,4.09515475
+702,2021-02-12,77.3139583333333,3.95446475
+703,2021-02-13,97.9597222222222,3.794549
+704,2021-02-14,138.818958333333,3.680972
+705,2021-02-15,74.7498262682418,3.487423
+706,2021-02-16,99.3018055555556,3.560305
+707,2021-02-17,106.868450312717,3.652831
+708,2021-02-18,107.429027777778,3.70679225
+709,2021-02-19,118.303541666667,3.75370425
+710,2021-02-20,153.336527777778,3.88169375
+711,2021-02-21,155.296597222222,3.94579575
+712,2021-02-22,131.201875,3.97584875
+713,2021-02-23,138.300486111111,4.09005975
+714,2021-02-24,142.436944444444,4.294919
+715,2021-02-25,161.249583333333,4.347021
+716,2021-02-26,126.636527777778,4.52961625
+717,2021-02-27,38.5125694444444,4.21227125
+718,2021-02-28,121.884652777778,4.157352
+719,2021-03-01,156.953333333333,4.38981725
+720,2021-03-02,177.053125,4.42282025
+721,2021-03-03,71.4020138888889,4.57774275
+722,2021-03-04,98.3095138888889,4.76066925
+723,2021-03-05,28.4824305555556,4.7639085
+724,2021-03-06,126.228402777778,4.5354225
+725,2021-03-07,94.3320833333333,4.50771125
+726,2021-03-08,165.487569444444,4.625701
+727,2021-03-09,128.744513888889,4.676136
+728,2021-03-10,171.074236111111,4.775193625
+729,2021-03-11,86.9795874822191,5.1068345
+730,2021-03-12,183.534912891986,4.728683
+731,2021-03-13,132.484421052632,NA
+732,2021-03-14,102.493584379358,NA
+733,2021-03-15,60.2972765363129,4.929906
+734,2021-03-16,91.2403752605976,4.946901375
+735,2021-03-17,93.5944328462074,4.958112625
+736,2021-03-18,125.211597222222,5.0293715
+737,2021-03-19,172.51125,5.04760025
+738,2021-03-20,172.183687943262,4.97709325
+739,2021-03-21,63.2929861111111,5.024736
+740,2021-03-22,96.5790277777778,5.09033275
+741,2021-03-23,211.236736111111,5.142008625
+742,2021-03-24,235.078819444444,5.3328505
+743,2021-03-25,225.110347222222,5.596669
+744,2021-03-26,211.386458333333,5.77166725
+745,2021-03-27,109.409880028229,5.79867425
+746,2021-03-28,253.498188405797,5.64400675
+747,2021-03-29,246.348125,6.5264385
+748,2021-03-30,241.100070921986,6.6808485
+749,2021-03-31,249.470972222222,6.817410125
+750,2021-04-01,245.668402777778,7.327148
+751,2021-04-02,212.559097222222,6.979017625
+752,2021-04-03,194.325833333333,5.816801125
+753,2021-04-04,265.669513888889,6.670977125
+754,2021-04-05,167.087282835302,7.33634325
+755,2021-04-06,146.121944444444,6.324308125
+756,2021-04-07,148.446597222222,7.0059085
+757,2021-04-08,259.814606741573,6.7400105
+758,2021-04-09,238.186041666667,7.483621375
+759,2021-04-10,205.424930555556,7.78556875
+760,2021-04-11,229.183819444444,7.484730625
+761,2021-04-12,90.8639332870049,6.575952375
+762,2021-04-13,177.868541666667,7.654859125
+763,2021-04-14,232.676666666667,7.699290625
+764,2021-04-15,175.348194444444,7.52540657142857
+765,2021-04-16,280.336388888889,7.629204375
+766,2021-04-17,217.140694444444,7.415762375
+767,2021-04-18,150.794722222222,7.679401375
+768,2021-04-19,251.139444444444,7.753580875
+769,2021-04-20,284.724652777778,8.137882
+770,2021-04-21,222.975460992908,8.73535925
+771,2021-04-22,251.416736111111,9.061158375
+772,2021-04-23,309.313125,8.575866
+773,2021-04-24,300.174496177901,9.393549375
+774,2021-04-25,307.995416666667,9.4552835
+775,2021-04-26,260.872291666667,9.004665625
+776,2021-04-27,251.948888888889,9.823398875
+777,2021-04-28,199.257272094642,10.3537225
+778,2021-04-29,103.034631432545,10.424813
+779,2021-04-30,179.676270006959,NA
+780,2021-05-01,43.7660839160839,NA
+781,2021-05-02,121.893732590529,NA
+782,2021-05-03,282.357262569832,10.9481425
+783,2021-05-04,223.022916666667,11.01027
+784,2021-05-05,114.719632768362,10.41029525
+785,2021-05-06,75.7031601123596,10.97682375
+786,2021-05-07,169.040407589599,10.648750875
+787,2021-05-08,278.202855153203,10.88251625
+788,2021-05-09,273.845448227936,11.14441
+789,2021-05-10,176.059861111111,11.48196425
+790,2021-05-11,94.8771210013908,11.75572
+791,2021-05-12,172.768292682927,12.3909342857143
+792,2021-05-13,146.379675370501,11.811478
+793,2021-05-14,231.552470424495,12.13690125
+794,2021-05-15,155.725312934631,12.32517375
+795,2021-05-16,131.427000695894,12.7482375
+796,2021-05-17,236.563216783217,12.24852375
+797,2021-05-18,191.090403337969,12.4458125
+798,2021-05-19,192.018213538032,12.5712475
+799,2021-05-20,185.519024390244,12.9053025
+800,2021-05-21,33.9531988873435,13.12016875
+801,2021-05-22,251.646314325452,12.93992
+802,2021-05-23,252.527266387727,12.9043875
+803,2021-05-24,83.0078581363004,13.2670825
+804,2021-05-25,326.859287709497,13.1363225
+805,2021-05-26,150.344791666667,13.3751825
+806,2021-05-27,162.590459610028,13.37551125
+807,2021-05-28,343.252536483669,13.513705
+808,2021-05-29,282.064583333333,13.5705925
+809,2021-05-30,359.652016689847,13.93657375
+810,2021-05-31,342.76233495483,14.2436075
+811,2021-06-01,334.222376650452,14.5937225
+812,2021-06-02,213.167824878388,15.10628375
+813,2021-06-03,239.558263888889,15.60115375
+814,2021-06-04,173.467222222222,15.57634125
+815,2021-06-05,79.8940277777778,15.75912125
+816,2021-06-06,94.8203472222222,16.0398775
+817,2021-06-07,105.649444444444,15.40243625
+818,2021-06-08,207.205902777778,16.11852375
+819,2021-06-09,247.112847222222,16.050716
+820,2021-06-10,311.064375,16.462235
+821,2021-06-11,349.850972222222,16.78402625
+822,2021-06-12,322.914930555556,17.0025675
+823,2021-06-13,295.322916666667,17.1667125
+824,2021-06-14,353.450972222222,17.35275
+825,2021-06-15,267.705277777778,17.8679925
+826,2021-06-16,271.62625,18.08938875
+827,2021-06-17,271.95875,18.31497
+828,2021-06-18,267.456597222222,18.4922525
+829,2021-06-19,298.648541666667,18.894655
+830,2021-06-20,186.968055555556,18.8017875
+831,2021-06-21,243.793680555556,18.6332025
+832,2021-06-22,119.0725,19.3758225
+833,2021-06-23,200.001041666667,19.18302375
+834,2021-06-24,155.439583333333,19.33061375
+835,2021-06-25,163.687986111111,19.0691675
+836,2021-06-26,284.637152777778,19.02667375
+837,2021-06-27,317.217777777778,19.077955
+838,2021-06-28,263.962708333333,19.244595
+839,2021-06-29,194.615347222222,19.639495
+840,2021-06-30,258.850138888889,19.3460325
+841,2021-07-01,153.937222222222,19.56919
+842,2021-07-02,318.056944444444,19.34001375
+843,2021-07-03,223.660416666667,19.4053225
+844,2021-07-04,120.040763888889,19.58058375
+845,2021-07-05,164.732361111111,19.66529125
+846,2021-07-06,206.591875,19.04765875
+847,2021-07-07,81.7985416666667,19.767825
+848,2021-07-08,72.4854166666667,19.454902
+849,2021-07-09,232.702013888889,19.5123625
+850,2021-07-10,285.809097222222,19.3212325
+851,2021-07-11,227.397430555556,19.4003575
+852,2021-07-12,263.033055555556,19.29401125
+853,2021-07-13,69.754375,19.43581
+854,2021-07-14,138.514791666667,19.4636414285714
+855,2021-07-15,98.9430555555556,19.4186075
+856,2021-07-16,189.258680555556,18.9262525
+857,2021-07-17,154.685208333333,18.999545
+858,2021-07-18,247.608333333333,18.88875875
+859,2021-07-19,334.320694444444,19.19747125
+860,2021-07-20,330.231805555556,18.924505
+861,2021-07-21,327.014930555556,19.180005
+862,2021-07-22,283.068125,19.38785375
+863,2021-07-23,309.210694444444,19.5433725
+864,2021-07-24,144.368263888889,19.3752325
+865,2021-07-25,123.870833333333,19.34209625
+866,2021-07-26,161.449861111111,19.56279625
+867,2021-07-27,185.027569444444,19.49487625
+868,2021-07-28,88.815625,19.4748125
+869,2021-07-29,285.930694444444,19.35098375
+870,2021-07-30,158.167638888889,19.38305875
+871,2021-07-31,181.429097222222,19.19551
+872,2021-08-01,97.8335416666667,19.06242625
+873,2021-08-02,174.268541666667,19.34733625
+874,2021-08-03,160.620138888889,18.9652525
+875,2021-08-04,65.5277083333333,19.3509775
+876,2021-08-05,120.399722222222,18.86719875
+877,2021-08-06,112.038611111111,19.06380625
+878,2021-08-07,59.005,18.7348375
+879,2021-08-08,78.4666666666667,18.9396125
+880,2021-08-09,182.371666666667,18.58108375
+881,2021-08-10,241.184583333333,18.69116875
+882,2021-08-11,232.251180555556,18.720985
+883,2021-08-12,228.485694444444,18.80059375
+884,2021-08-13,190.126736111111,18.8885325
+885,2021-08-14,224.207986111111,19.05052
+886,2021-08-15,199.195486111111,18.84479125
+887,2021-08-16,59.6150694444444,19.22977125
+888,2021-08-17,133.335625,18.8663525
+889,2021-08-18,154.270347222222,18.91219125
+890,2021-08-19,114.514236111111,18.9463142857143
+891,2021-08-20,229.331111111111,19.126115
+892,2021-08-21,274.6225,19.2208
+893,2021-08-22,86.1588194444444,19.19055875
+894,2021-08-23,180.8,19.3665675
+895,2021-08-24,74.3145519713262,18.8801525
+896,2021-08-25,110.429583333333,18.81135125
+897,2021-08-26,177.062569444444,18.50904375
+898,2021-08-27,189.138680555556,18.60037625
+899,2021-08-28,81.5827083333333,18.7186075
+900,2021-08-29,103.342222222222,18.46946375
+901,2021-08-30,82.8,18.39874
+902,2021-08-31,203.353541666667,18.22571875
+903,2021-09-01,264.473402777778,18.21249
+904,2021-09-02,259.342430555556,18.43787625
+905,2021-09-03,254.289375,18.45701
+906,2021-09-04,181.192361111111,18.61033625
+907,2021-09-05,249.74125,18.68002
+908,2021-09-06,227.215347222222,18.77339625
+909,2021-09-07,208.315763888889,18.8087
+910,2021-09-08,204.106041666667,18.7969625
+911,2021-09-09,187.791319444444,19.7352075
+912,2021-09-10,93.159375,19.0004
+913,2021-09-11,198.239930555556,19.13633125
+914,2021-09-12,141.308611111111,19.1182775
+915,2021-09-13,194.182847222222,19.20925375
+916,2021-09-14,152.388194444444,19.10334
+917,2021-09-15,58.9111805555556,19.135265
+918,2021-09-16,72.0710638297872,19.18931625
+919,2021-09-17,165.284166666667,19.03434125
+920,2021-09-18,190.254791666667,18.98388375
+921,2021-09-19,27.9828472222222,18.9509675
+922,2021-09-20,53.940625,18.94166625
+923,2021-09-21,164.094960965224,18.3414028571429
+924,2021-09-22,165.605976372481,18.3062225
+925,2021-09-23,149.550763888889,18.13078
+926,2021-09-24,178.889097222222,18.19482375
+927,2021-09-25,158.420416666667,18.0969775
+928,2021-09-26,66.8149305555555,18.190095
+929,2021-09-27,137.041527777778,18.27645125
+930,2021-09-28,96.0388888888889,18.03335875
+931,2021-09-29,131.727013888889,18.02047
+932,2021-09-30,176.448472222222,18.137925
+933,2021-10-01,166.148055555556,17.94148125
+934,2021-10-02,161.340902777778,18.0454025
+935,2021-10-03,109.852986111111,17.760115
+936,2021-10-04,60.0618055555556,17.6174875
+937,2021-10-05,70.2286111111111,17.5862825
+938,2021-10-06,94.8097289784573,17.43162125
+939,2021-10-07,94.5495035460993,17.2164025
+940,2021-10-08,80.8495138888889,16.89228
+941,2021-10-09,94.0288888888889,16.53722125
+942,2021-10-10,86.1586111111111,16.25906875
+943,2021-10-11,133.778611111111,15.9651175
+944,2021-10-12,58.6018068102849,15.71054125
+945,2021-10-13,148.989305555556,15.48175625
+946,2021-10-14,151.271527777778,15.205156
+947,2021-10-15,149.725833333333,15.00080125
+948,2021-10-16,118.346805555556,14.92481
+949,2021-10-17,117.025138888889,14.84237
+950,2021-10-18,133.440555555556,14.7539125
+951,2021-10-19,73.1142361111111,14.647715
+952,2021-10-20,108.527986111111,14.62368375
+953,2021-10-21,151.12875,14.311295
+954,2021-10-22,43.8927777777778,14.12682
+955,2021-10-23,150.523472222222,13.83393
+956,2021-10-24,115.811605281445,13.56605
+957,2021-10-25,105.908055555556,13.50930875
+958,2021-10-26,72.8647222222222,13.42332375
+959,2021-10-27,90.0673611111111,13.3158371428571
+960,2021-10-28,117.536388888889,13.20800375
+961,2021-10-29,57.3137595552467,13.12853
+962,2021-10-30,31.0843055555556,12.9507325
+963,2021-10-31,116.022748498999,12.8459085714286
+964,2021-11-01,26.733125,12.7750925
+965,2021-11-02,61.1043871866295,12.59664125
+966,2021-11-03,35.6863794301598,12.3498225
+967,2021-11-04,34.3501737317582,12.082865
+968,2021-11-05,61.4890972222222,11.83237875
+969,2021-11-06,104.916180555556,11.66860625
+970,2021-11-07,100.019930555556,11.502025
+971,2021-11-08,61.0195833333333,11.40228375
+972,2021-11-09,94.1303472222222,11.1768025
+973,2021-11-10,42.0980555555556,10.9744225
+974,2021-11-11,47.1441666666667,10.80653375
+975,2021-11-12,25.4058333333333,10.6765366666667
+976,2021-11-13,19.2706944444444,10.5459675
+977,2021-11-14,29.3715972222222,10.496345
+978,2021-11-15,32.4967361111111,10.3935975
+979,2021-11-16,9.60784722222222,10.26774
+980,2021-11-17,15.5886805555556,10.1131875
+981,2021-11-18,76.1157638888889,9.9841335
+982,2021-11-19,24.3897916666667,9.80329575
+983,2021-11-20,16.5395833333333,9.6470035
+984,2021-11-21,32.9197916666667,9.56111975
+985,2021-11-22,13.87,9.4315182
+986,2021-11-23,19.4656944444444,9.2153875
+987,2021-11-24,24.8463888888889,9.03090125
+988,2021-11-25,21.4304861111111,8.896905
+989,2021-11-26,14.885625,8.69292575
+990,2021-11-27,31.9764583333333,8.47279575
+991,2021-11-28,28.933148019458,8.30428525
+992,2021-11-29,35.1036111111111,8.144669
+993,2021-11-30,18.7906620209059,7.92343675
+994,2021-12-01,34.357810320781,7.80715875
+995,2021-12-02,39.0718162839248,7.7284965
+996,2021-12-03,73.8372222222222,7.6156725
+997,2021-12-04,12.5723359209598,7.4782535
+998,2021-12-05,47.1285813630042,7.3533205
+999,2021-12-06,31.2972202918694,7.27912325
+1000,2021-12-07,58.4170375521558,7.16319375
+1001,2021-12-08,7.91004884856943,7.03805625
+1002,2021-12-09,28.2079861111111,6.92595075
+1003,2021-12-10,15.2043175487465,6.797824
+1004,2021-12-11,29.0995138888889,6.6706795
+1005,2021-12-12,42.0326388888889,6.64394725
+1006,2021-12-13,65.9873435326843,6.6172535
+1007,2021-12-14,19.3584027777778,6.5637395
+1008,2021-12-15,15.4559027777778,6.498257
+1009,2021-12-16,14.226875,6.408056
+1010,2021-12-17,14.0965933286018,6.36972175
+1011,2021-12-18,66.7781944444444,6.2721795
+1012,2021-12-19,23.4353022932592,6.17197875
+1013,2021-12-20,41.8907510431154,6.11439425
+1014,2021-12-21,15.3588888888889,6.09396825
+1015,2021-12-22,40.0990277777778,6.0034505
+1016,2021-12-23,52.8545833333333,5.91019
+1017,2021-12-24,14.7444753300903,5.86333825
+1018,2021-12-25,13.7089645587213,5.83231325
+1019,2021-12-26,25.3823938761308,5.82691525
+1020,2021-12-27,43.0218358831711,5.83221475
+1021,2021-12-28,24.0069473684211,5.81797175
+1022,2021-12-29,8.48817802503477,5.81625
+1023,2021-12-30,38.8891666666667,5.8977675
+1024,2021-12-31,78.9995333333333,5.983
+1025,2022-01-01,76.9204861111111,5.913736
+1026,2022-01-02,50.3375694444444,5.882074
+1027,2022-01-03,29.347255038221,5.86015475
+1028,2022-01-04,41.9616409537167,5.902951
+1029,2022-01-05,28.2275766016713,5.84078175
+1030,2022-01-06,26.8518776077886,5.75618675
+1031,2022-01-07,43.2127083333333,5.64870425
+1032,2022-01-08,43.973106323836,5.58653875
+1033,2022-01-09,43.104688593422,5.53437325
+1034,2022-01-10,43.2236805555556,5.505229
+1035,2022-01-11,26.5624478442281,5.499676
+1036,2022-01-12,73.8952777777778,5.4387535
+1037,2022-01-13,83.5965277777778,5.32553525
+1038,2022-01-14,83.2852083333333,5.24234875
+1039,2022-01-15,33.2675694444444,5.147123
+1040,2022-01-16,56.474375,5.05223466666667
+1041,2022-01-17,89.9604861111111,5.00187675
+1042,2022-01-18,50.6776388888889,4.965588
+1043,2022-01-19,76.3379166666667,4.9080315
+1044,2022-01-20,21.564375,4.86202333333333
+1045,2022-01-21,91.8011805555556,4.838528
+1046,2022-01-22,55.4447916666667,4.80040475
+1047,2022-01-23,84.9440972222222,4.69190475
+1048,2022-01-24,35.2206944444444,4.623049
+1049,2022-01-25,70.1957638888889,4.60956325
+1050,2022-01-26,66.646875,4.57953525
+1051,2022-01-27,64.571875,4.53047525
+1052,2022-01-28,90.304375,4.52704925
+1053,2022-01-29,82.5469444444444,4.572486
+1054,2022-01-30,68.4263194444444,4.576141
+1055,2022-01-31,25.3970546984572,4.5604825
+1056,2022-02-01,24.7559109874826,4.51454225
+1057,2022-02-02,16.5504867872045,4.482331
+1058,2022-02-03,68.6771527777778,4.51755975
+1059,2022-02-04,78.37625,4.5728205
+1060,2022-02-05,108.68496868476,4.59507375
+1061,2022-02-06,55.5256661991585,4.52194025
+1062,2022-02-07,88.4907770515614,4.544074
+1063,2022-02-08,112.063611111111,4.538095
+1064,2022-02-09,118.592777777778,4.53363025
+1065,2022-02-10,116.823055555556,4.511901
+1066,2022-02-11,88.7516353514266,4.6284435
+1067,2022-02-12,121.398958333333,4.628574
+1068,2022-02-13,125.1425,4.64965525
+1069,2022-02-14,62.1375694444444,4.5913275
+1070,2022-02-15,47.2332870048645,4.5597815
+1071,2022-02-16,34.0573611111111,4.540458
+1072,2022-02-17,39.8168289290682,4.61987675
+1073,2022-02-18,65.2849056603774,4.6410425
+1074,2022-02-19,65.9732453092425,4.755444
+1075,2022-02-20,99.7404861111111,4.77082725
+1076,2022-02-21,55.06,4.8227115
+1077,2022-02-22,82.4088194444444,4.8724615
+1078,2022-02-23,128.669652777778,4.96245775
+1079,2022-02-24,99.3206944444444,4.9615775
+1080,2022-02-25,101.104305555556,4.96390475
+1081,2022-02-26,135.656666666667,4.95877825
+1082,2022-02-27,154.448472222222,4.96303175
+1083,2022-02-28,153.718611111111,5.09196475
+1084,2022-03-01,149.423263888889,5.13426775
+1085,2022-03-02,123.979444444444,5.15160925
+1086,2022-03-03,154.07375,5.25321125
+1087,2022-03-04,158.175277777778,5.137958
+1088,2022-03-05,158.958958333333,5.07494025
+1089,2022-03-06,146.358402777778,5.033824
+1090,2022-03-07,155.142222222222,5.07035925
+1091,2022-03-08,155.527013888889,5.06903525
+1092,2022-03-09,163.143611111111,5.04878433333333
+1093,2022-03-10,168.808136300417,5.1997535
+1094,2022-03-11,145.022307157748,5.198317
+1095,2022-03-12,133.252430555556,5.3061305
+1096,2022-03-13,169.392916666667,5.5606725
+1097,2022-03-14,173.606397774687,5.87270425
+1098,2022-03-15,28.2816979819067,5.90501775
+1099,2022-03-16,104.915379262352,6.0969155
+1100,2022-03-17,118.02744961779,5.891278
+1101,2022-03-18,33.3539958304378,5.56586975
+1102,2022-03-19,169.078109798471,5.98315125
+1103,2022-03-20,176.578233657858,6.0680845
+1104,2022-03-21,160.993680555556,6.39432725
+1105,2022-03-22,188.667708333333,6.6444295
+1106,2022-03-23,192.201041666667,6.89271125
+1107,2022-03-24,193.662152777778,7.16862325
+1108,2022-03-25,190.072361111111,7.3665035
+1109,2022-03-26,188.600416666667,6.90057075
+1110,2022-03-27,198.112916666667,7.7420775
+1111,2022-03-28,194.066527777778,7.923648
+1112,2022-03-29,121.076180555556,7.9858135
+1113,2022-03-30,71.425851285615,7.741167375
+1114,2022-03-31,60.4627083333333,7.97526357142857
+1115,2022-04-01,32.6567755385685,7.2595475
+1116,2022-04-02,56.3524305555556,6.74191375
+1117,2022-04-03,140.189652777778,6.95096125
+1118,2022-04-04,189.709444444444,7.11403525
+1119,2022-04-05,82.071914893617,7.751607625
+1120,2022-04-06,180.481041666667,7.964471875
+1121,2022-04-07,83.2381754385965,7.8583485
+1122,2022-04-08,87.3634655532359,7.622293875
+1123,2022-04-09,107.500280504909,7.163151375
+1124,2022-04-10,197.603819444444,7.84104925
+1125,2022-04-11,214.802013888889,8.019318625
+1126,2022-04-12,203.607916666667,8.0849895
+1127,2022-04-13,224.862361111111,8.41653142857143
+1128,2022-04-14,227.447291666667,8.6333744
+1129,2022-04-15,155.872361111111,8.60875875
+1130,2022-04-16,162.913888888889,8.619644375
+1131,2022-04-17,246.656597222222,8.98008625
+1132,2022-04-18,234.72125,9.513686875
+1133,2022-04-19,148.246736111111,9.996811125
+1134,2022-04-20,259.380203045685,9.036198875
+1135,2022-04-21,288.059318497914,9.7790435
+1136,2022-04-22,267.727152777778,10.171852625
+1137,2022-04-23,155.423194444444,10.069025375
+1138,2022-04-24,101.396100278552,10.216739875
+1139,2022-04-25,127.278248783878,11.58870625
+1140,2022-04-26,173.64213091922,11.1551625
+1141,2022-04-27,289.726666666667,11.105335
+1142,2022-04-28,313.20125,11.2251275
+1143,2022-04-29,262.243262411348,11.79898
+1144,2022-04-30,146.89170153417,11.93211
+1145,2022-05-01,277.887143849896,11.932595
+1146,2022-05-02,286.85702364395,12.16607375
+1147,2022-05-03,186.691535150646,12.52932
+1148,2022-05-04,182.527310632384,12.7761025
+1149,2022-05-05,94.5412754029432,12.60853
+1150,2022-05-06,60.0468336812804,12.80889375
+1151,2022-05-07,116.141209173037,12.9610175
+1152,2022-05-08,137.563333333333,12.93216
+1153,2022-05-09,251.028492008339,13.1103075
+1154,2022-05-10,281.12383599722,13.70423375
+1155,2022-05-11,305.995069444444,13.73207375
+1156,2022-05-12,263.070972222222,13.9382428571429
+1157,2022-05-13,120.327291666667,14.40118875
+1158,2022-05-14,309.814375,14.195555
+1159,2022-05-15,303.697291666667,14.53669
+1160,2022-05-16,261.106805555556,15.25673375
+1161,2022-05-17,313.731944444444,15.570525
+1162,2022-05-18,325.341111111111,15.5726625
+1163,2022-05-19,214.875277777778,16.398465
+1164,2022-05-20,224.147083333333,15.7681375
+1165,2022-05-21,205.403055555556,16.23484
+1166,2022-05-22,203.287013888889,15.89069125
+1167,2022-05-23,195.425208333333,16.04096125
+1168,2022-05-24,84.0435416666667,16.552845
+1169,2022-05-25,249.967013888889,16.351965
+1170,2022-05-26,321.712013888889,16.34187375
+1171,2022-05-27,343.733263888889,16.0915075
+1172,2022-05-28,206.740694444444,16.92556875
+1173,2022-05-29,280.113263888889,15.9601375
+1174,2022-05-30,346.410277777778,16.5994425
+1175,2022-05-31,156.276875,16.5799225
+1176,2022-06-01,153.275347222222,16.67001125
+1177,2022-06-02,244.568888888889,16.78164
+1178,2022-06-03,190.378541666667,16.94601625
+1179,2022-06-04,310.320486111111,16.91681875
+1180,2022-06-05,124.514722222222,17.3432625
+1181,2022-06-06,248.812569444444,17.17895625
+1182,2022-06-07,170.912638888889,17.59992
+1183,2022-06-08,201.821875,17.3447775
+1184,2022-06-09,179.01,17.54394125
+1185,2022-06-10,334.017430555556,17.50161875
+1186,2022-06-11,316.037847222222,17.85456125
+1187,2022-06-12,302.516458333333,17.829785
+1188,2022-06-13,285.454305555556,18.0173175
+1189,2022-06-14,336.724722222222,18.11146125
+1190,2022-06-15,234.349722222222,18.50465
+1191,2022-06-16,317.642916666667,18.75919875
+1192,2022-06-17,352.203541666667,19.0245725
+1193,2022-06-18,318.232708333333,19.2413025
+1194,2022-06-19,312.491666666667,19.406165
+1195,2022-06-20,276.800694444444,19.513875
+1196,2022-06-21,218.242916666667,19.607585
+1197,2022-06-22,155.39125,19.7682575
+1198,2022-06-23,319.732013888889,20.07852375
+1199,2022-06-24,103.157222222222,20.50797375
+1200,2022-06-25,362.977013888889,19.9393025
+1201,2022-06-26,311.696597222222,20.078035
+1202,2022-06-27,217.500138888889,19.80811375
+1203,2022-06-28,104.081944444444,20.35160625
+1204,2022-06-29,261.838680555556,19.99310875
+1205,2022-06-30,221.106041666667,20.07915125
+1206,2022-07-01,153.566944444444,20.21235125
+1207,2022-07-02,354.795763888889,19.88028125
+1208,2022-07-03,326.479791666667,20.29371875
+1209,2022-07-04,147.879513888889,20.4454275
+1210,2022-07-05,184.309722222222,20.59591875
+1211,2022-07-06,210.552013888889,20.51786125
+1212,2022-07-07,207.229861111111,20.10956625
+1213,2022-07-08,311.523125,20.53824
+1214,2022-07-09,305.924027777778,20.47839875
+1215,2022-07-10,267.231388888889,20.58784125
+1216,2022-07-11,309.944930555556,20.54436875
+1217,2022-07-12,306.239930555556,20.61280625
+1218,2022-07-13,239.931458333333,20.8389057142857
+1219,2022-07-14,235.413888888889,20.806448
+1220,2022-07-15,237.325555555556,20.64758875
+1221,2022-07-16,275.933541666667,20.83663125
+1222,2022-07-17,329.222361111111,21.01933
+1223,2022-07-18,287.149444444444,21.297615
+1224,2022-07-19,227.225555555556,21.45448875
+1225,2022-07-20,139.601597222222,21.58190625
+1226,2022-07-21,126.228156028369,21.71308375
+1227,2022-07-22,244.882152777778,21.72385
+1228,2022-07-23,99.6743055555555,21.85026375
+1229,2022-07-24,218.505347222222,21.7615275
+1230,2022-07-25,206.0475,21.61508
+1231,2022-07-26,118.811041666667,21.97330375
+1232,2022-07-27,155.292482269504,21.8436525
+1233,2022-07-28,169.296805555556,21.6760025
+1234,2022-07-29,67.3904861111111,21.93765625
+1235,2022-07-30,139.611319444444,21.90307
+1236,2022-07-31,263.76125,21.5987325
+1237,2022-08-01,205.730208333333,21.62598125
+1238,2022-08-02,206.17625,21.77429875
+1239,2022-08-03,226.7375,22.0204925
+1240,2022-08-04,189.245,22.23992625
+1241,2022-08-05,180.585694444444,22.7299825
+1242,2022-08-06,60.3371527777778,22.25436
+1243,2022-08-07,90.3376388888889,21.91032375
+1244,2022-08-08,229.0275,21.75372
+1245,2022-08-09,311.786805555556,21.82805
+1246,2022-08-10,310.356805555556,21.7572257142857
+1247,2022-08-11,301.443263888889,21.7848
+1248,2022-08-12,315.420625,21.601405
+1249,2022-08-13,317.17375,21.6756225
+1250,2022-08-14,231.967708333333,21.7369275
+1251,2022-08-15,143.331180555556,21.86606375
+1252,2022-08-16,228.162777777778,21.6939425
+1253,2022-08-17,229.629032258065,21.843545
+1254,2022-08-18,121.461388888889,21.7239625
+1255,2022-08-19,33.9194444444444,21.56188125
+1256,2022-08-20,140.265555555556,21.70006375
+1257,2022-08-21,237.950833333333,21.34214
+1258,2022-08-22,284.064444444444,21.535535
+1259,2022-08-23,280.464722222222,21.56617625
+1260,2022-08-24,263.384513888889,21.6143175
+1261,2022-08-25,263.598611111111,21.77071
+1262,2022-08-26,197.516736111111,21.61485625
+1263,2022-08-27,147.348472222222,21.8823675
+1264,2022-08-28,175.130277777778,21.58323375
+1265,2022-08-29,251.044802867384,21.65137875
+1266,2022-08-30,225.928745519713,21.78764625
+1267,2022-08-31,97.8103472222222,21.77783
+1268,2022-09-01,157.969097222222,21.57141
+1269,2022-09-02,226.13125,21.3669375
+1270,2022-09-03,159.465694444444,21.5579675
+1271,2022-09-04,225.044236111111,21.47893
+1272,2022-09-05,189.531736111111,21.52766
+1273,2022-09-06,97.7195138888889,21.53453
+1274,2022-09-07,163.594027777778,21.4990375
+1275,2022-09-08,188.16498245614,21.3331025
+1276,2022-09-09,164.302152777778,21.16255375
+1277,2022-09-10,112.590833333333,20.85793125
+1278,2022-09-11,232.670833333333,20.8699475
+1279,2022-09-12,233.99625,20.8117325
+1280,2022-09-13,187.829583333333,20.835495
+1281,2022-09-14,75.6179861111111,21.02386
+1282,2022-09-15,64.7794444444445,20.79448875
+1283,2022-09-16,68.4507638888889,20.48899375
+1284,2022-09-17,134.509318497914,19.857965
+1285,2022-09-18,174.032569444444,19.60855875
+1286,2022-09-19,207.969097222222,19.211875
+1287,2022-09-20,204.343194444444,19.02848375
+1288,2022-09-21,212.000625,18.77677875
+1289,2022-09-22,210.880486111111,18.525005
+1290,2022-09-23,176.863888888889,18.3982975
+1291,2022-09-24,63.3075694444444,18.548465
+1292,2022-09-25,52.7317581653926,18.46119375
+1293,2022-09-26,111.640280701754,18.1973425
+1294,2022-09-27,82.1096546863989,17.8154
+1295,2022-09-28,32.4520194986072,17.34117125
+1296,2022-09-29,63.7543055555556,16.96221125
+1297,2022-09-30,74.0075694444444,16.76763125
+1298,2022-10-01,25.9027777777778,16.5318725
+1299,2022-10-02,98.7609722222222,16.33301125
+1300,2022-10-03,118.077569444444,16.2678875
+1301,2022-10-04,151.837847222222,16.29024625
+1302,2022-10-05,189.939097222222,16.22176375
+1303,2022-10-06,175.209375,16.3401425
+1304,2022-10-07,113.298263888889,16.198605
+1305,2022-10-08,42.4140277777778,16.36357875
+1306,2022-10-09,52.6479166666667,16.12678875
+1307,2022-10-10,105.697638888889,16.02170125
+1308,2022-10-11,136.114305555556,16.05025875
+1309,2022-10-12,45.9322222222222,16.03642
+1310,2022-10-13,90.2619444444444,15.97384875
+1311,2022-10-14,53.5444912280702,15.989425
+1312,2022-10-15,90.0897222222222,15.9995475
+1313,2022-10-16,151.022847222222,16.08638875
+1314,2022-10-17,145.597222222222,16.09538125
+1315,2022-10-18,135.792569444444,16.06401
+1316,2022-10-19,101.433472222222,16.01899375
+1317,2022-10-20,64.0022222222222,15.953245
+1318,2022-10-21,35.0226388888889,15.99705375
+1319,2022-10-22,142.671041666667,16.04449
+1320,2022-10-23,84.9161111111111,16.0377725
+1321,2022-10-24,21.3189583333333,15.980115
+1322,2022-10-25,124.796944444444,15.822175
+1323,2022-10-26,117.762569444444,15.84840875
+1324,2022-10-27,130.111180555556,15.87292375
+1325,2022-10-28,80.9911111111111,15.83021625
+1326,2022-10-29,108.670763888889,15.74833
+1327,2022-10-30,71.8536805555556,15.6434114285714
+1328,2022-10-31,84.9479861111111,15.54606875
+1329,2022-11-01,59.3438888888889,15.444495
+1330,2022-11-02,50.1139583333333,15.3564775
+1331,2022-11-03,39.1682960893855,15.1837614285714
+1332,2022-11-04,62.4742361111111,14.92843625
+1333,2022-11-05,39.5569444444444,14.67290875
+1334,2022-11-06,68.1113684210526,14.39634875
+1335,2022-11-07,122.954047619048,14.188305
+1336,2022-11-08,71.7062222222222,13.9933366666667
+1337,2022-11-09,24.8809589993051,13.7873
+1338,2022-11-10,95.6414583333333,13.7260625
+1339,2022-11-11,66.1802777777778,13.60239
+1340,2022-11-12,47.2495833333333,13.4949575
+1341,2022-11-13,16.3439583333333,13.3462325
+1342,2022-11-14,27.8257638888889,13.1433325
+1343,2022-11-15,49.3994444444444,12.9663925
+1344,2022-11-16,76.8527083333333,12.8622625
+1345,2022-11-17,60.916399162596,12.7462525
+1346,2022-11-18,42.1422594142259,12.5887675
+1347,2022-11-19,64.1714583333333,12.41674
+1348,2022-11-20,65.6573136427567,12.24014
+1349,2022-11-21,67.5974982626824,11.9378475
+1350,2022-11-22,30.9108333333333,11.777005
+1351,2022-11-23,84.958019525802,11.564535
+1352,2022-11-24,59.2262617621899,11.349
+1353,2022-11-25,32.0682926829268,11.1381475
+1354,2022-11-26,83.0135416666667,11.0140525
+1355,2022-11-27,53.2824305555556,10.8761125
+1356,2022-11-28,40.7881081081081,10.7189033333333
+1357,2022-11-29,19.2093333333333,10.59013
+1358,2022-11-30,13.1201388888889,10.49159
+1359,2022-12-01,8.66520833333333,10.2877675
+1360,2022-12-02,23.0292907801418,10.0683175
+1361,2022-12-03,27.8279166666667,9.7998945
+1362,2022-12-04,15.1414583333333,9.5644895
+1363,2022-12-05,25.1076388888889,9.404324
+1364,2022-12-06,66.7876388888889,9.22229575
+1365,2022-12-07,14.8955555555556,9.10735925
+1366,2022-12-08,39.5541666666667,8.93119375
+1367,2022-12-09,17.9867361111111,8.72427125
+1368,2022-12-10,11.0536111111111,8.52295425
+1369,2022-12-11,70.6654861111111,8.2724225
+1370,2022-12-12,25.3418055555556,8.01464775
+1371,2022-12-13,35.9249305555556,7.668148
+1372,2022-12-14,32.2527816411683,7.46006675
+1373,2022-12-15,16.0581944444444,7.363866
+1374,2022-12-16,22.0488517745303,7.1704225
+1375,2022-12-17,27.7445138888889,7.00889425
+1376,2022-12-18,27.4051388888889,6.84597525
+1377,2022-12-19,47.0029166666667,6.73475
+1378,2022-12-20,38.2158333333333,6.6314825
+1379,2022-12-21,9.89756944444444,6.644222
+1380,2022-12-22,40.1163307852676,6.64961275
+1381,2022-12-23,10.7038220986796,6.685648
+1382,2022-12-24,13.1240250696379,6.753426
+1383,2022-12-25,25.8452777777778,6.73946475
+1384,2022-12-26,15.568362369338,6.738486
+1385,2022-12-27,28.2569444444444,6.73352125
+1386,2022-12-28,69.8960416666667,6.70347875
+1387,2022-12-29,28.3712595685456,6.652627
+1388,2022-12-30,43.6954829742877,6.6562605
+1389,2022-12-31,54.9155797101449,6.668514
From a9b76f3c91e07d3cc415b2941608c5dbfa6593e5 Mon Sep 17 00:00:00 2001
From: Debbie <51200142+Debbcwing@users.noreply.github.com>
Date: Fri, 2 Feb 2024 19:26:34 +0100
Subject: [PATCH 22/97] Rename Original_MLD.csv to RawData_MLD.csv
---
LakeData/{Original_MLD.csv => RawData_MLD.csv} | 0
1 file changed, 0 insertions(+), 0 deletions(-)
rename LakeData/{Original_MLD.csv => RawData_MLD.csv} (100%)
diff --git a/LakeData/Original_MLD.csv b/LakeData/RawData_MLD.csv
similarity index 100%
rename from LakeData/Original_MLD.csv
rename to LakeData/RawData_MLD.csv
From 0ddea5c8b5fe3eff0ffb7629efbba0139cf12fc0 Mon Sep 17 00:00:00 2001
From: Debbie <51200142+Debbcwing@users.noreply.github.com>
Date: Fri, 2 Feb 2024 19:26:49 +0100
Subject: [PATCH 23/97] Rename Original_Temp+PAR.csv to RawData_Temp+PAR.csv
---
LakeData/{Original_Temp+PAR.csv => RawData_Temp+PAR.csv} | 0
1 file changed, 0 insertions(+), 0 deletions(-)
rename LakeData/{Original_Temp+PAR.csv => RawData_Temp+PAR.csv} (100%)
diff --git a/LakeData/Original_Temp+PAR.csv b/LakeData/RawData_Temp+PAR.csv
similarity index 100%
rename from LakeData/Original_Temp+PAR.csv
rename to LakeData/RawData_Temp+PAR.csv
From 217242d4d9dc9d6d689139b1f4acb9866e82b784 Mon Sep 17 00:00:00 2001
From: Debbie <51200142+Debbcwing@users.noreply.github.com>
Date: Wed, 14 Feb 2024 13:15:25 +0100
Subject: [PATCH 24/97] Update README.md
---
README.md | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)
diff --git a/README.md b/README.md
index aab91a6..5df602f 100644
--- a/README.md
+++ b/README.md
@@ -12,7 +12,8 @@ Trait-based models have been applied to investigate the effects of environmental
## Model description
The model is adapted from the well-established Nutrient-Phytoplankton-Zooplankton-Detritus (NPZD) model (_sensu_ Fasham et al., 1990) incorporated to a size-based framework (e.g. Moloney and Field 1991; Armstrong 1994; Stock et al. 2008). The model is differential equation-based and includes one nutrient source, phosphorus $PO_4^{3-}$, available for uptake by different phytoplankton size classes ($P_i$). The phytoplankton are subject to grazing by two zooplankton of different size groups ($Z_1$, $Z_2$). The phytoplankton growth is limited by light and nutrient, and is scaled by a temperature dependence. The detritus pool, $D$, collects the dead and ungrazed matters, follows by recharging the nutrient pool through remineralization processes.
-
+
+ )-F<|yy)zS
The model focuses on capturing size-dependent bottom-up and top-down interactions through data-driven allometric relationships of phytoplankton growth and zooaplankton grazing (Hansen et al. 1994, 1997; Edwards et al. 2012). The model aims at studying changes in the size compositions of lake phytoplankton communities.
@@ -25,8 +26,11 @@ $$E(T) = e^{0.063T} \left[1- \left(\frac{T-T_{opt}}{\sigma_T}\right)^2 \right]
, where $T$ is the ambient lake water surface temperature (LWST), $T_{opt}$ is the thermal optima that determines the median of the curve, and $\sigma_T$ is the thermal tolerance that determines the width of the curve. In this study, we assume a community mean thermal tolerance curve to all phytoplankton size classes.
-Zooplankton grazing follows a Q10 dependence such that, zooplankton graze stronger in higher temperature.
+The maximum ingestion rates of zooplankton follows a Q10 model such that, the maximum grazing increases with temperature. The equation for the dependence is,
+$$I_{max}(S_j^Z) \cdot Q_{10}^{\frac{T-T_{ref}}{10}} $$
+
+The Q10 temperature coefficient here specifies the amount of maximum ingestion rate increases with a 10$^{\circ}$C temperature increase. It describes the sensitivity of zooplankton response to a higher temperature. $T$ refers to the lake temperature, while $T_{ref}$ refers to the reference temperature when the rate is equal to the baseline rate (i.e. no effects from temperature).
## Allometric relationships in the model
The model comprises of three allometric equations. These allometries allow an ecological trade-off to arise in the model based on water temperature throughout the year. The small phytoplantkon can grow faster than the large phytoplankton, but are subject to stronger grazing from the smaller zooplankton, who will selectively graze on the small cells.
From d48f90a74a704415670904318629554ae81b7caa Mon Sep 17 00:00:00 2001
From: Debbie <51200142+Debbcwing@users.noreply.github.com>
Date: Wed, 14 Feb 2024 13:16:51 +0100
Subject: [PATCH 25/97] Update README.md
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 5df602f..583d932 100644
--- a/README.md
+++ b/README.md
@@ -30,7 +30,7 @@ The maximum ingestion rates of zooplankton follows a Q10 model such that, the ma
$$I_{max}(S_j^Z) \cdot Q_{10}^{\frac{T-T_{ref}}{10}} $$
-The Q10 temperature coefficient here specifies the amount of maximum ingestion rate increases with a 10$^{\circ}$C temperature increase. It describes the sensitivity of zooplankton response to a higher temperature. $T$ refers to the lake temperature, while $T_{ref}$ refers to the reference temperature when the rate is equal to the baseline rate (i.e. no effects from temperature).
+The Q10 temperature coefficient here specifies the amount of maximum ingestion rate increases with a 10 $^{\circ}$ C temperature increase. It describes the sensitivity of zooplankton response to a higher temperature. $T$ refers to the lake temperature, while $T_{ref}$ refers to the reference temperature when the rate is equal to the baseline rate (i.e. no effects from temperature).
## Allometric relationships in the model
The model comprises of three allometric equations. These allometries allow an ecological trade-off to arise in the model based on water temperature throughout the year. The small phytoplantkon can grow faster than the large phytoplankton, but are subject to stronger grazing from the smaller zooplankton, who will selectively graze on the small cells.
From 963b08195bc50a6c1962a69842844a560fd5c918 Mon Sep 17 00:00:00 2001
From: Debbie <51200142+Debbcwing@users.noreply.github.com>
Date: Thu, 23 May 2024 11:49:57 +0200
Subject: [PATCH 26/97] Create README.md
---
Models/FinalMod/README.md | 1 +
1 file changed, 1 insertion(+)
create mode 100644 Models/FinalMod/README.md
diff --git a/Models/FinalMod/README.md b/Models/FinalMod/README.md
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/Models/FinalMod/README.md
@@ -0,0 +1 @@
+
From 868aefdee681e1597a6aa3d1b31641b2cc15b40b Mon Sep 17 00:00:00 2001
From: Debbie <51200142+Debbcwing@users.noreply.github.com>
Date: Thu, 23 May 2024 12:44:07 +0200
Subject: [PATCH 27/97] Add files via upload
# TSM1_v0_PO4_Q10_flux_final.py
---
FinalMod.py | 294 ++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 294 insertions(+)
create mode 100644 FinalMod.py
diff --git a/FinalMod.py b/FinalMod.py
new file mode 100644
index 0000000..a3c1bc2
--- /dev/null
+++ b/FinalMod.py
@@ -0,0 +1,294 @@
+import pdb
+
+import numpy as np
+from scipy.integrate import odeint
+
+
+class SizeModLogspace:
+ """
+ Size-based model
+ Model has multiple groups of phytoplankton, two groups of zooplankton in different sizes, one nutrient source,
+ and a detritus community.
+
+ Model assumption:
+ - thermal response of the phytoplankton follows a unimodal curve adapted from Norberg (2004)
+ - the maximum growth of phytoplankton follows an allometric relationship taken from data compilations of Edwards et al. (2012)
+ - phytoplankton nutrient uptake follows Michelis-Menton kinetics
+ - the half-saturation constant of the uptake kinetics derived from a community mean value and is not size-dependent
+ - phytoplankton are grazed by size-selective zooplankton, small phytoplankton are grazed more intensively
+ - zooplankton graze on a wide size-feeding range; small zooplankton has a narrower range than large zooplankton in absolute values
+ - zooplankton grazing is scaled by a Q10 factor
+ -------
+ Flexible parameters:
+ - n0
+ - prey tolerance
+ - P size range
+ - Z size range
+ - no. of P size classes
+ - no. of years for model running
+
+ Fixed parameters:
+ - Community mean Kn
+ - Allometric parameters for Mu
+ - Allometric parameters for Topt
+ - Allometric parameters for Imax
+ - Allometric parameters for grazing size preference
+ - Model params
+ """
+
+ def __init__(self, mld, par, sst, dmdt, N0, minP=0, maxP=np.log10(200), numP=15, minZ=20, maxZ=600, numZ=2, numYears=5,
+ Zsmall0=6.25e-4, Zlarge0=6.25e-4, D0=6.25e-4, Mz2S0=0, Mz2L0=0,
+ Pmax=1.1, Kpar=0.1, alpha=0.02, Mz=0.1, Mp=0.1, Mz2=0.34,
+ Ieff=0.75, beta=0.69, Kp=0.19, Rem=0.15, k=0.1,
+ mu_alpha=-0.36, mu_beta=10 ** 0.69, Kn=0.06,
+ sig_T=12.5, topt=13, graz_Q10=2.8, #sig_T=12.5, topt=16.5
+ graz_alpha=-0.28, graz_beta=23, ops_alpha=0.7, ops_beta=0.45,
+ SizeTol=[0.435, 0.6]):
+ self.mld = mld
+ self.par = par # photosynethically activated radiation (E*m^-2*d^-1)
+ self.sst = sst # sea surface temperature/lake surface water temperature (LSWT)
+ self.dmdt = dmdt # dmdt
+ self.N0 = N0 # Initial nutrient concentrations (µmol P*L^-1)
+ self.minP = minP # min. size of P size range
+ self.maxP = maxP # max. size of P size range
+ self.numP = numP # number of phytoplankton size class
+ self.minZ = minZ # min. size of Z size range
+ self.maxZ = maxZ # max. size of Z size range
+ self.numZ = numZ # number of zooplankton size class
+ self.numYears = numYears # Number of years for model run
+ self.Zsmall0 = Zsmall0 # Initial Zsmall concentration (µmol P*L^-1)
+ self.Zlarge0 = Zlarge0 # Initial Zlarge concentration (µmol P*L^-1)
+ self.D0 = D0 # Initial detritus concentration (µmol P*L^-1)
+ self.Ps0 = np.repeat(6.25e-4, self.numP, axis=0) # Initial P concentration (µmol P*L^-1)
+ self.muP0 = np.repeat(0, self.numP, axis=0) # Initial concentration for growth fluxes (µmol P*L^-1)
+ self._2ZS0 = np.repeat(0, self.numP, axis=0) # Initial concentration for Z1 grazing fluxes (µmol P*L^-1)
+ self._2ZL0 = np.repeat(0, self.numP, axis=0) # Initial concentration for Z2 grazing fluxes (µmol P*L^-1)
+ self.Mz2S0 = Mz2S0
+ self.Mz2L0 = Mz2L0
+ self.Pmax = Pmax # Max photosynthesis rate
+ self.Kpar = Kpar # Water attenuation coefficient
+ self.alpha = alpha # Initial slope of P-I curve
+ self.Mz = Mz # Natural mortality - Zooplankton
+ self.Mp = Mp # Natural mortality - Phytoplankton
+ self.Mz2 = Mz2 # Mortality from upper predators
+ self.Ieff = Ieff # Ingestion efficiency
+ self.beta = beta # Assimlation efficiency
+ self.Kp = Kp # Phytoplankton half-saturation constant (µmol P*L^-1)
+ self.Rem = Rem # Remineralization rate (day^-1)
+ self.k = k # Cross thermocline mixing factor (m/day)
+ self.mu_alpha = mu_alpha # Slope of allometric max. uptk rate
+ self.mu_beta = mu_beta # Intercept of allometric max. uptk rate
+ self.Kn = Kn # nutrient half-saturation constant for phytoplankton
+ self.sig_T = sig_T # community mean thermal tolerance breadth width as per Thomas et al. (2015)
+ self.topt = topt # optimal growth temperature
+ self.graz_alpha = graz_alpha # Slope of allometric max. grazing rate (day^-1)
+ self.graz_beta = graz_beta # Intercept of allometric max.grazing rate (day^-1)
+ self.ops_alpha = ops_alpha # Slope of allometric optimum prey size
+ self.ops_beta = ops_beta # Intercept of allometric optimum prey size
+ self.SizeTol = SizeTol # Prey size tolerance (should be an array)
+ self.graz_Q10 = graz_Q10 # Q10 temperature for grazing
+ self.init_con = np.concatenate(([self.N0[0]], # N0
+ [self.Zsmall0], # Zsmall0
+ [self.Zlarge0], # Zlarge0
+ [self.D0], # D0
+ [self.Ps0], # Ps0
+ [self.muP0],
+ [self._2ZS0],
+ [self._2ZL0],
+ [self.Mz2S0],
+ [self.Mz2L0]), axis=None)
+ self.t_array = np.arange(0, 365 * self.numYears) # Time array
+ self.Psize_array = np.logspace(self.minP, self.maxP, num=self.numP, base=10) # Size array for phytoplankton
+ self.Zsize_array = np.linspace(self.minZ, self.maxZ, self.numZ) # Size array for zooplankton
+ self.solution = odeint(self.AlloNPsZD, self.init_con, self.t_array, rtol=1.e-10, atol=1.e-10) #, hmax=1, hmin=1)
+
+ def Vol2ESD(self, v): # Vol2ESD(1) = 1.2407
+ esd = ((v * 6) / np.pi) ** (1 / 3)
+ return esd
+
+ def Allo_mumax(self, PhySize):
+ return self.mu_beta * ((PhySize / self.Vol2ESD(1)) ** self.mu_alpha)
+
+ def NU(self, nut):
+ """
+ Michelis-Menton uptake
+ :param nut:
+ :return:
+ """
+ return nut / (nut + self.Kn)
+
+ def temp_dependence(self, time):
+ """
+ Eppley-Norberg formulation
+ :param time: timestep to derive temperature
+ :return:
+ """
+ b_eppley = 0.0633
+ thermtol = (1 - ((time - self.topt) / self.sig_T) ** 2) * np.exp(b_eppley * time)
+ return thermtol
+
+ def LightLim(self, I, Z):
+ """
+ Light limitation function on photosynthesis based on Smith's function,
+ illustrated by a P-I curve
+ """
+ I0 = I
+ Iz = I0 * np.exp(-self.Kpar * Z)
+ LL = (((self.Pmax / (self.Kpar * Z)) * np.log((self.alpha * I0 + np.sqrt((self.Pmax ** 2) +
+ (self.alpha * I0) ** 2)) / ((self.alpha * Iz) +
+ np.sqrt(self.Pmax ** 2 + (self.alpha * Iz) ** 2)))))
+ return LL
+
+ def Imax_Q10(self, time):
+ """
+ Q10 method based on Sherman et al. (2016) Global Biogeochemical Cycles, 30(4)
+ -----------------------------------------------------------------------------------
+ T0: reference temperature, adopted as 303.15K (30 degree Celcius)
+ Q10: the factor change in growth rate for a 10 degree change in temperature
+ :param time: timestep
+ :return: size- and temperature- dependent grazing rates
+ """
+ ref_temp = 15 # reference temperature
+ # G0 = 0.57 # (marine zooplankton: Sherman et al., 2016):: we use size-dependent grazing rates
+ # Q10 = 1.47 # (marine zooplankton: Sherman et al., 2016)
+ # Q10 = 2.4 # Durbin and Durbin (1992)
+ # Q10 = 3.9 # Kiørboe et al. (1982)
+ # Q10 = 2.8 # Hansen et al. (1997) & Gosselain et al. (1996)
+ return self.graz_Q10 ** ((time - ref_temp) / 10)
+
+ def AlloImax(self, ZooSize, time):
+ """
+ Max. ingestion rate also depends on the size of the zooplankton
+ ----------
+ graz_alpha = -0.4 # Hansen et al. 1994, Banas, 2011
+ graz_beta = 26 # Hansen et al. 1994, Banas, 2011 [day^-1]
+ """
+ imax = self.graz_beta * ((ZooSize / 1) ** self.graz_alpha)
+ return self.Imax_Q10(time) * imax
+
+ def AllogpP(self, PhySize, ZooSize, SizeTol):
+ """
+ Selected zooplankton size class of 10 & 200[µm]
+ """
+ OPS = self.ops_beta * ((ZooSize / 1) ** self.ops_alpha) # µm ESD
+ gpP = np.exp(-((np.log10(PhySize) - np.log10(OPS)) / SizeTol) ** 2)
+ return gpP
+
+ def AlloGraz(self, PhySize, ZooSize, Pi, SizeTol, denom, time):
+ """
+ PhySize = Size class/array of phytoplankton population;
+ ZooSize = Size class/array of zooplankton population;
+ Pi = Phytoplankton biomass
+ """
+ graz = self.AlloImax(ZooSize, time) * ((self.AllogpP(PhySize, ZooSize, SizeTol) * Pi) / (self.Kp + denom))
+ return graz
+
+ def mixing(self, time):
+ """k refers to the cross thermocline mixing factor"""
+ return (self.k + max(self.dmdt[time], 0.)) / self.mld[time]
+
+ def AlloNPsZD(self, y, t):
+ """
+ A size-based trophic model with multiple phytoplankton and zooplankton size class
+ ----------
+ y: array of initial conditions of state variables (var)
+ t: time array
+ """
+ # Initialization
+ N = y[0]
+ Zsmall = y[1]
+ Zlarge = y[2]
+ D = y[3]
+ Ps = y[4:4+self.numP*1]
+ flux_muP = y[4+self.numP*1:4+self.numP*2]
+ flux_2ZS = y[4+self.numP*2:4+self.numP*3]
+ flux_2ZL = y[4 + self.numP * 3:4 + self.numP * 4]
+ Mz2_ZS = y[4 + self.numP * 4 + 0]
+ Mz2_ZL = y[4 + self.numP * 4 + 1]
+ var = np.zeros(len(y))
+ t = int(t)
+
+ # non-P dependent equations
+ """
+ Zsmall = specialist, narrower size tolerance factor;
+ Zlarge = generalist, wider size tolerance factor.
+ """
+ Graz_denomZsmall = np.sum(self.AllogpP(self.Psize_array, self.Zsize_array[0], self.SizeTol[0]) * Ps)
+ Graz_denomZlarge = np.sum(self.AllogpP(self.Psize_array, self.Zsize_array[1], self.SizeTol[1]) * Ps)
+ Mz2_ZS = self.Mz2 * (Zsmall ** 2)
+ Mz2_ZL = self.Mz2 * (Zlarge ** 2)
+
+ # [dNdt]
+ var[0] = (self.Rem * D # Remineration
+ + self.mixing(t) * (self.N0[t] - N)) # MixingN
+
+ # [dZ1dt]
+ var[1] = (- self.Mz * Zsmall # Natural mortality Z1
+ - Mz2_ZS # density-dependent top predator grazing Z1
+ - (self.dmdt[t] / self.mld[t]) * Zsmall) # Mixing loss Z1
+
+ # [dZ2dt]
+ var[2] = (- self.Mz * Zlarge # Natural mortality Z2
+ - Mz2_ZL # Top predator grazing Z2
+ - (self.dmdt[t] / self.mld[t]) * Zlarge) # Mixing loss Z2
+
+ # [dDdt]
+ var[3] = (self.Mz * (Zsmall + Zlarge) # MortalityZsmall+Zlarge
+ - self.Rem * D # Remineration
+ - self.mixing(t) * D) # Mixing loss D
+
+ # P-dependent (loop)
+ for i in range(len(Ps)):
+ """
+ Psize = Size class/array of phytoplankton population;
+ """
+ P = Ps[i] # define P in the loop
+ Psize = self.Psize_array[i] # define Psize in the loop
+ flux_muP = (self.Allo_mumax(Psize) * self.temp_dependence(self.sst[t])) * self.NU(N) * self.LightLim(self.par[t], self.mld[t]) * P
+ # flux_mu_temp = self.temp_dependence(self.sst[t])
+ # flux_mu_nut = self.NU(N)
+ flux_2ZS = self.beta * self.Ieff * self.AlloGraz(Psize, self.Zsize_array[0], P, self.SizeTol[0], Graz_denomZsmall, self.sst[t]) * Zsmall
+ flux_2ZL = self.beta * self.Ieff * self.AlloGraz(Psize, self.Zsize_array[1], P, self.SizeTol[1], Graz_denomZlarge, self.sst[t]) * Zlarge
+
+ # [dNdt]
+ var[0] = (var[0]
+ - flux_muP
+ + (self.beta * (1. - self.Ieff) * self.AlloGraz(Psize, self.Zsize_array[0], P, self.SizeTol[0], Graz_denomZsmall, self.sst[t])) * Zsmall
+ # Excretion from grazing(Zsmall))
+ + (self.beta * (1. - self.Ieff) * self.AlloGraz(Psize, self.Zsize_array[1], P, self.SizeTol[1], Graz_denomZlarge, self.sst[t])) * Zlarge)
+ # Excretion from grazing(Zlarge))
+
+ # [dZ1dt]
+ var[1] = (var[1]
+ + flux_2ZS) # GrazingP from Zsmall
+
+ # [dZ2dt]
+ var[2] = (var[2]
+ + flux_2ZL) # GrazingP from Zlarge
+
+ # [dDdt]
+ var[3] = (var[3]
+ + ((1. - self.beta) * self.AlloGraz(Psize, self.Zsize_array[0], P, self.SizeTol[0], Graz_denomZsmall, self.sst[t])) * Zsmall # SloppyfeedP - Zsmall
+ + ((1. - self.beta) * self.AlloGraz(Psize, self.Zsize_array[1], P, self.SizeTol[1], Graz_denomZlarge, self.sst[t])) * Zlarge # SloppyfeedP - Zlarge
+ + self.Mp * P)
+
+ # [dPsdt]
+ var[4 + i] = (var[4 + i]
+ + flux_muP # Uptk
+ - self.Mp * P # MortalityP
+ - self.AlloGraz(Psize, self.Zsize_array[0], P, self.SizeTol[0], Graz_denomZsmall, self.sst[t]) * Zsmall # GrazingP from Zsmall
+ - self.AlloGraz(Psize, self.Zsize_array[1], P, self.SizeTol[1], Graz_denomZlarge, self.sst[t]) * Zlarge # GrazingP from Zlarge
+ - self.mixing(t) * P) # Mixing
+
+ # growth fluxes
+ var[4 + self.numP*1 + i] = var[4 + self.numP*1 + i] + flux_muP
+
+ # grazing fluxes
+ var[4 + self.numP*2 + i] = var[4 + self.numP*2 + i] + flux_2ZS
+ var[4 + self.numP*3 + i] = var[4 + self.numP*3 + i] + flux_2ZL
+
+ # predatory fluxes
+ var[4 + self.numP*4 + 0] = Mz2_ZS
+ var[4 + self.numP * 4 + 1] = Mz2_ZL
+ #pdb.set_trace()
+ return var
From 270d91fc80c7e5e5f459d80783ee4373388955c1 Mon Sep 17 00:00:00 2001
From: Debbie <51200142+Debbcwing@users.noreply.github.com>
Date: Thu, 23 May 2024 13:07:53 +0200
Subject: [PATCH 28/97] Rename FinalMod.py to Models/FinalMod/FinalMod_Sbm.py
---
FinalMod.py => Models/FinalMod/FinalMod_Sbm.py | 0
1 file changed, 0 insertions(+), 0 deletions(-)
rename FinalMod.py => Models/FinalMod/FinalMod_Sbm.py (100%)
diff --git a/FinalMod.py b/Models/FinalMod/FinalMod_Sbm.py
similarity index 100%
rename from FinalMod.py
rename to Models/FinalMod/FinalMod_Sbm.py
From 20ea28695e9b0da7725746951b78e602db70157c Mon Sep 17 00:00:00 2001
From: Debbie <51200142+Debbcwing@users.noreply.github.com>
Date: Thu, 23 May 2024 13:56:34 +0200
Subject: [PATCH 29/97] Add files via upload
---
Models/FinalMod/FinalMod_proj.py | 110 +++++++++++++++++++++++++++++++
Models/FinalMod/FinalMod_run.py | 87 ++++++++++++++++++++++++
2 files changed, 197 insertions(+)
create mode 100644 Models/FinalMod/FinalMod_proj.py
create mode 100644 Models/FinalMod/FinalMod_run.py
diff --git a/Models/FinalMod/FinalMod_proj.py b/Models/FinalMod/FinalMod_proj.py
new file mode 100644
index 0000000..7e64724
--- /dev/null
+++ b/Models/FinalMod/FinalMod_proj.py
@@ -0,0 +1,110 @@
+import numpy as np
+import time
+
+import pandas as pd
+import xarray as xr
+from scipy.interpolate import make_interp_spline
+
+Pnum = 10 # specify the nos of phytoplankton size groups
+Ynum = 10 # no. of modeling year
+mod_name = 'Mod_proj'
+
+# Import forcing data
+wd = 'wd'
+
+LWST = np.genfromtxt(wd+'Final/Temp_final.csv', delimiter=',')
+PAR = np.genfromtxt(wd+'Final/PAR_final.csv', delimiter=',')
+MLD = np.genfromtxt(wd+'Final/MLD_final.csv', delimiter=',')
+PO4 = np.genfromtxt(wd+'Final/PO4_final.csv', delimiter=',')
+PO4[:, 1] = PO4[:, 1]*0.010529 # convert from µg L-1 to µmol L-1
+
+"""
+Interpolation
+"""
+LWST_spl = make_interp_spline(LWST[:, 0], LWST[:, 1], k=3)
+LWST_spl = LWST_spl(np.arange(365))
+
+PAR_spl = make_interp_spline(PAR[:, 0], PAR[:, 1], k=3)
+PAR_spl = PAR_spl(np.arange(365))
+
+from scipy.interpolate import PchipInterpolator
+MLD_pchip_spl = PchipInterpolator(MLD[:, 0], MLD[:, 1], axis=0)
+MLD_pchip_spl = MLD_pchip_spl(np.arange(365))
+MLD_pchip_spl[364] = MLD_pchip_spl[0]
+
+PO4_spl = make_interp_spline(PO4[:, 0], PO4[:, 1], k=3)
+PO4_spl = PO4_spl(np.arange(365))
+
+
+"""
+dmdt
+"""
+dmdt = np.zeros((365))
+dmdt[0:364] = np.diff(MLD_pchip_spl) # dmdt (364,)
+dmdt[364] = dmdt[0]
+
+#######
+## Setting up temperature increase for different RCP scenarios
+temp_incr = [0, 1.4, 2.5, 4.2]
+LWST_rcp = np.zeros((365, len(temp_incr)))
+
+for i in range(len(temp_incr)):
+ LWST_rcp[:, i] = LWST_spl + temp_incr[i]
+
+
+#######
+
+LWST_run = np.tile(LWST_rcp, (Ynum, 1)) # change this line for RCP scenarios
+PAR_run = np.tile(PAR_spl, Ynum)
+mld_run = np.tile(MLD_pchip_spl, Ynum) # multiplicating physical forcing arrays
+dmdt_run = np.tile(dmdt, Ynum)
+PO4_run = np.tile(PO4_spl, Ynum)
+NO3_run = np.tile(NO3_spl, Ynum)
+
+N0 = np.repeat(0.65, Ynum*365)
+
+sol = np.zeros((Ynum*365, Pnum + 4, len(temp_incr))) # time; no. var; RCP scenarios
+
+
+from TSM1_v0_PO4_Q10_final import SizeModLogspace
+
+# Run solution
+starttime = time.ctime() # save it for documentation purposes
+print(mod_name, str(Pnum), "start:", starttime)
+start = time.time() # start the timer
+
+for i in range(len(temp_incr)):
+ sol[:, :, i] = SizeModLogspace(mld=mld_run, par=PAR_run, sst=LWST_run[:, i], dmdt=dmdt_run, N0=N0, numP=Pnum,
+ numYears=Ynum, minZ=15, maxZ=200).solution
+
+# Complete
+end = time.time() # stop the timer
+endtime = time.ctime() # save it for documentation purposes
+print(mod_name, str(Pnum), "complete:", endtime)
+runtime = (end - start) / 3600 # calculate run time (hour)
+print(mod_name, str(Pnum), "run time(hour):", runtime)
+print(mod_name, str(Pnum), "run time(day):", runtime/24)
+
+
+# Storing output
+out = xr.Dataset(
+ {'Nut': (['time', 'RCP'], sol[:, 0, :]),
+ 'Zoo': (['time', 'ZooSize', 'RCP'], sol[:, 1:3, :]),
+ 'Phy': (['time', 'PhySize', 'RCP'], sol[:, 4:4+Pnum*1, :])},
+ coords={'time': np.arange(Ynum*365),
+ 'ZooSize': [20, 400],
+ 'PhySize': np.logspace(0, np.log10(150), Pnum),
+ 'RCP': [0, 1.4, 2.5, 4.2]},
+ attrs={'Title': 'This file contains sol output with different nutrient and mixing regimes',
+ 'No. phytoplankton size group': Pnum,
+ 'LWST units': 'Degree celcius',
+ 'PAR units': 'Ein m$^{-2}$ d$^{-1}$',
+ 'MLD units': 'Meters',
+ 'Variable units': 'µmol P L$^{-1}$',
+ 'Size units': 'µm ESD',
+ 'Phyto size range': '1 - 150',
+ 'Zoo size range': '20 - 400'})
+out.to_netcdf(wd + 'output_proj.nc') # export
+
+
+
diff --git a/Models/FinalMod/FinalMod_run.py b/Models/FinalMod/FinalMod_run.py
new file mode 100644
index 0000000..498c021
--- /dev/null
+++ b/Models/FinalMod/FinalMod_run.py
@@ -0,0 +1,87 @@
+import numpy as np
+import time
+
+import pandas as pd
+import xarray as xr
+from scipy.interpolate import make_interp_spline
+
+Pnum = 10 # specify the nos of phytoplankton size groups
+Ynum = 10 # no. of modelling year
+mod_name = 'Mod'
+
+# Import forcing data
+wd = 'wd'
+
+LWST = np.genfromtxt(wd+'/ForcData_Temp.csv', delimiter=',')
+PAR = np.genfromtxt(wd+'/ForcData_PAR.csv', delimiter=',')
+MLD = np.genfromtxt(wd+'/ForcData_MLD.csv', delimiter=',')
+
+"""
+Interpolation
+"""
+LWST_spl = make_interp_spline(LWST[:, 0], LWST[:, 1], k=3)
+LWST_spl = LWST_spl(np.arange(365))
+
+PAR_spl = make_interp_spline(PAR[:, 0], PAR[:, 1], k=3)
+PAR_spl = PAR_spl(np.arange(365))
+
+from scipy.interpolate import PchipInterpolator
+MLD_pchip_spl = PchipInterpolator(MLD[:, 0], MLD[:, 1], axis=0)
+MLD_pchip_spl = MLD_pchip_spl(np.arange(365))
+MLD_pchip_spl[364] = MLD_pchip_spl[0]
+
+
+"""
+dmdt
+"""
+dmdt = np.zeros((365))
+dmdt[0:364] = np.diff(MLD_pchip_spl) # dmdt (364,)
+dmdt[364] = dmdt[0]
+
+
+LWST_run = np.tile(LWST_spl, Ynum) # change this line for RCP scenarios
+PAR_run = np.tile(PAR_spl, Ynum)
+mld_run = np.tile(MLD_pchip_spl, Ynum) # multiplicating physical forcing arrays
+dmdt_run = np.tile(dmdt, Ynum)
+
+N0 = np.repeat(0.75, Ynum*365)
+
+from FinalMod_Sbm import SizeModLogspace
+
+# Run solution
+starttime = time.ctime() # save it for documentation purposes
+print(mod_name, str(Pnum), "start:", starttime)
+start = time.time() # start the timer
+
+sol = SizeModLogspace(mld=mld_run, par=PAR_run, sst=LWST_run, dmdt=dmdt_run, N0=N0, numP=Pnum, numYears=Ynum).solution #, graz_beta=23,
+
+# Complete
+end = time.time() # stop the timer
+endtime = time.ctime() # save it for documentation purposes
+print(mod_name, str(Pnum), "complete:", endtime)
+runtime = (end - start) / 3600 # calculate run time (hour)
+print(mod_name, str(Pnum), "run time(hour):", runtime)
+print(mod_name, str(Pnum), "run time(day):", runtime/24)
+
+
+# Storing output
+out = xr.Dataset(
+ {'Nut': (['time'], sol[:, 0]),
+ 'Zoo': (['time', 'ZooSize'], sol[:, 1:3]),
+ 'Phy': (['time', 'PhySize'], sol[:, 4+Pnum*0:4+Pnum*1]),
+ 'mu': (['time', 'PhySize'], sol[:, 4+Pnum*1:4+Pnum*2]),
+ 'grazS': (['time', 'PhySize'], sol[:, 4+Pnum*2:4+Pnum*3]),
+ 'grazL': (['time', 'PhySize'], sol[:, 4 + Pnum * 3:4 + Pnum * 4])},
+ coords={'time': np.arange(Ynum*365),
+ 'ZooSize': [20, 600],
+ 'PhySize': np.logspace(0, np.log10(200), Pnum)},
+ attrs={'Title': 'This file contains sol output with different nutrient and mixing regimes',
+ 'No. phytoplankton size group': Pnum,
+ 'LWST units': 'Degree celcius',
+ 'PAR units': 'Ein m$^{-2}$ d$^{-1}$',
+ 'MLD units': 'Meters',
+ 'Variable units': 'µmol P L$^{-1}$',
+ 'Size units': 'µm ESD',
+ 'Phyto size range': '1 - 200',
+ 'Zoo size range': '20 - 600'})
+out.to_netcdf(wd + 'output.nc') # export
From ad29ea703479f39b6b3818baf79d7733e305468e Mon Sep 17 00:00:00 2001
From: Debbie <51200142+Debbcwing@users.noreply.github.com>
Date: Thu, 23 May 2024 19:59:48 +0200
Subject: [PATCH 30/97] Create Readme.md
---
Results/Readme.md | 1 +
1 file changed, 1 insertion(+)
create mode 100644 Results/Readme.md
diff --git a/Results/Readme.md b/Results/Readme.md
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/Results/Readme.md
@@ -0,0 +1 @@
+
From d18dfa1c8a4a07ba4b6dbd10c14e5d717a2cdc62 Mon Sep 17 00:00:00 2001
From: Debbie <51200142+Debbcwing@users.noreply.github.com>
Date: Thu, 23 May 2024 20:00:56 +0200
Subject: [PATCH 31/97] Create Readme.md
---
Sensit_Test/Readme.md | 1 +
1 file changed, 1 insertion(+)
create mode 100644 Sensit_Test/Readme.md
diff --git a/Sensit_Test/Readme.md b/Sensit_Test/Readme.md
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/Sensit_Test/Readme.md
@@ -0,0 +1 @@
+
From e9716ee025bf2458739ee3bb2933a1692076857a Mon Sep 17 00:00:00 2001
From: Debbie <51200142+Debbcwing@users.noreply.github.com>
Date: Thu, 23 May 2024 20:03:23 +0200
Subject: [PATCH 32/97] Delete Sensit_Test directory
---
Sensit_Test/Readme.md | 1 -
1 file changed, 1 deletion(-)
delete mode 100644 Sensit_Test/Readme.md
diff --git a/Sensit_Test/Readme.md b/Sensit_Test/Readme.md
deleted file mode 100644
index 8b13789..0000000
--- a/Sensit_Test/Readme.md
+++ /dev/null
@@ -1 +0,0 @@
-
From 0ec7f524ab50ca0c0fde7232dd723decd1c46f02 Mon Sep 17 00:00:00 2001
From: Debbie <51200142+Debbcwing@users.noreply.github.com>
Date: Thu, 23 May 2024 20:03:59 +0200
Subject: [PATCH 33/97] Create Readme.md
---
Results/Sensit_Test/Readme.md | 1 +
1 file changed, 1 insertion(+)
create mode 100644 Results/Sensit_Test/Readme.md
diff --git a/Results/Sensit_Test/Readme.md b/Results/Sensit_Test/Readme.md
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/Results/Sensit_Test/Readme.md
@@ -0,0 +1 @@
+
From 2e5091868fd752309eb7d391a55be1f64755737b Mon Sep 17 00:00:00 2001
From: Debbie <51200142+Debbcwing@users.noreply.github.com>
Date: Thu, 23 May 2024 20:04:12 +0200
Subject: [PATCH 34/97] Create Readme.md
---
Results/Projection/Readme.md | 1 +
1 file changed, 1 insertion(+)
create mode 100644 Results/Projection/Readme.md
diff --git a/Results/Projection/Readme.md b/Results/Projection/Readme.md
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/Results/Projection/Readme.md
@@ -0,0 +1 @@
+
From 88676f56dcee55ab4fd6f57ac33014b724171baf Mon Sep 17 00:00:00 2001
From: Debbie <51200142+Debbcwing@users.noreply.github.com>
Date: Wed, 29 May 2024 19:08:15 +0200
Subject: [PATCH 35/97] Delete Models/FinalMod/FinalMod_proj.py
---
Models/FinalMod/FinalMod_proj.py | 110 -------------------------------
1 file changed, 110 deletions(-)
delete mode 100644 Models/FinalMod/FinalMod_proj.py
diff --git a/Models/FinalMod/FinalMod_proj.py b/Models/FinalMod/FinalMod_proj.py
deleted file mode 100644
index 7e64724..0000000
--- a/Models/FinalMod/FinalMod_proj.py
+++ /dev/null
@@ -1,110 +0,0 @@
-import numpy as np
-import time
-
-import pandas as pd
-import xarray as xr
-from scipy.interpolate import make_interp_spline
-
-Pnum = 10 # specify the nos of phytoplankton size groups
-Ynum = 10 # no. of modeling year
-mod_name = 'Mod_proj'
-
-# Import forcing data
-wd = 'wd'
-
-LWST = np.genfromtxt(wd+'Final/Temp_final.csv', delimiter=',')
-PAR = np.genfromtxt(wd+'Final/PAR_final.csv', delimiter=',')
-MLD = np.genfromtxt(wd+'Final/MLD_final.csv', delimiter=',')
-PO4 = np.genfromtxt(wd+'Final/PO4_final.csv', delimiter=',')
-PO4[:, 1] = PO4[:, 1]*0.010529 # convert from µg L-1 to µmol L-1
-
-"""
-Interpolation
-"""
-LWST_spl = make_interp_spline(LWST[:, 0], LWST[:, 1], k=3)
-LWST_spl = LWST_spl(np.arange(365))
-
-PAR_spl = make_interp_spline(PAR[:, 0], PAR[:, 1], k=3)
-PAR_spl = PAR_spl(np.arange(365))
-
-from scipy.interpolate import PchipInterpolator
-MLD_pchip_spl = PchipInterpolator(MLD[:, 0], MLD[:, 1], axis=0)
-MLD_pchip_spl = MLD_pchip_spl(np.arange(365))
-MLD_pchip_spl[364] = MLD_pchip_spl[0]
-
-PO4_spl = make_interp_spline(PO4[:, 0], PO4[:, 1], k=3)
-PO4_spl = PO4_spl(np.arange(365))
-
-
-"""
-dmdt
-"""
-dmdt = np.zeros((365))
-dmdt[0:364] = np.diff(MLD_pchip_spl) # dmdt (364,)
-dmdt[364] = dmdt[0]
-
-#######
-## Setting up temperature increase for different RCP scenarios
-temp_incr = [0, 1.4, 2.5, 4.2]
-LWST_rcp = np.zeros((365, len(temp_incr)))
-
-for i in range(len(temp_incr)):
- LWST_rcp[:, i] = LWST_spl + temp_incr[i]
-
-
-#######
-
-LWST_run = np.tile(LWST_rcp, (Ynum, 1)) # change this line for RCP scenarios
-PAR_run = np.tile(PAR_spl, Ynum)
-mld_run = np.tile(MLD_pchip_spl, Ynum) # multiplicating physical forcing arrays
-dmdt_run = np.tile(dmdt, Ynum)
-PO4_run = np.tile(PO4_spl, Ynum)
-NO3_run = np.tile(NO3_spl, Ynum)
-
-N0 = np.repeat(0.65, Ynum*365)
-
-sol = np.zeros((Ynum*365, Pnum + 4, len(temp_incr))) # time; no. var; RCP scenarios
-
-
-from TSM1_v0_PO4_Q10_final import SizeModLogspace
-
-# Run solution
-starttime = time.ctime() # save it for documentation purposes
-print(mod_name, str(Pnum), "start:", starttime)
-start = time.time() # start the timer
-
-for i in range(len(temp_incr)):
- sol[:, :, i] = SizeModLogspace(mld=mld_run, par=PAR_run, sst=LWST_run[:, i], dmdt=dmdt_run, N0=N0, numP=Pnum,
- numYears=Ynum, minZ=15, maxZ=200).solution
-
-# Complete
-end = time.time() # stop the timer
-endtime = time.ctime() # save it for documentation purposes
-print(mod_name, str(Pnum), "complete:", endtime)
-runtime = (end - start) / 3600 # calculate run time (hour)
-print(mod_name, str(Pnum), "run time(hour):", runtime)
-print(mod_name, str(Pnum), "run time(day):", runtime/24)
-
-
-# Storing output
-out = xr.Dataset(
- {'Nut': (['time', 'RCP'], sol[:, 0, :]),
- 'Zoo': (['time', 'ZooSize', 'RCP'], sol[:, 1:3, :]),
- 'Phy': (['time', 'PhySize', 'RCP'], sol[:, 4:4+Pnum*1, :])},
- coords={'time': np.arange(Ynum*365),
- 'ZooSize': [20, 400],
- 'PhySize': np.logspace(0, np.log10(150), Pnum),
- 'RCP': [0, 1.4, 2.5, 4.2]},
- attrs={'Title': 'This file contains sol output with different nutrient and mixing regimes',
- 'No. phytoplankton size group': Pnum,
- 'LWST units': 'Degree celcius',
- 'PAR units': 'Ein m$^{-2}$ d$^{-1}$',
- 'MLD units': 'Meters',
- 'Variable units': 'µmol P L$^{-1}$',
- 'Size units': 'µm ESD',
- 'Phyto size range': '1 - 150',
- 'Zoo size range': '20 - 400'})
-out.to_netcdf(wd + 'output_proj.nc') # export
-
-
-
From bc73573843ba3c3d796eeb57f3ac47892ba83cb2 Mon Sep 17 00:00:00 2001
From: Debbie <51200142+Debbcwing@users.noreply.github.com>
Date: Wed, 29 May 2024 19:08:30 +0200
Subject: [PATCH 36/97] Add files via upload
---
Models/FinalMod/FinalMod_proj.py | 103 +++++++++++++++++++++++++++++++
1 file changed, 103 insertions(+)
create mode 100644 Models/FinalMod/FinalMod_proj.py
diff --git a/Models/FinalMod/FinalMod_proj.py b/Models/FinalMod/FinalMod_proj.py
new file mode 100644
index 0000000..bda8489
--- /dev/null
+++ b/Models/FinalMod/FinalMod_proj.py
@@ -0,0 +1,103 @@
+import numpy as np
+import time
+
+import pandas as pd
+import xarray as xr
+from scipy.interpolate import make_interp_spline
+
+Pnum = 10 # specify the nos of phytoplankton size groups
+Ynum = 10 # no. of modeling year
+mod_name = 'Mod_proj'
+
+# Import forcing data
+wd = 'wd'
+
+LWST = np.genfromtxt(wd+'ForcData_Temp.csv', delimiter=',')
+PAR = np.genfromtxt(wd+'ForcData_PAR.csv', delimiter=',')
+MLD = np.genfromtxt(wd+'ForcData_MLD.csv', delimiter=',')
+
+"""
+Interpolation
+"""
+LWST_spl = make_interp_spline(LWST[:, 0], LWST[:, 1], k=3)
+LWST_spl = LWST_spl(np.arange(365))
+
+PAR_spl = make_interp_spline(PAR[:, 0], PAR[:, 1], k=3)
+PAR_spl = PAR_spl(np.arange(365))
+
+from scipy.interpolate import PchipInterpolator
+MLD_pchip_spl = PchipInterpolator(MLD[:, 0], MLD[:, 1], axis=0)
+MLD_pchip_spl = MLD_pchip_spl(np.arange(365))
+MLD_pchip_spl[364] = MLD_pchip_spl[0]
+
+
+"""
+dmdt
+"""
+dmdt = np.zeros((365))
+dmdt[0:364] = np.diff(MLD_pchip_spl) # dmdt (364,)
+dmdt[364] = dmdt[0]
+
+#######
+## Setting up temperature increase for different RCP scenarios
+temp_incr = [0, 1.4, 2.5, 4.2]
+LWST_rcp = np.zeros((365, len(temp_incr)))
+
+for i in range(len(temp_incr)):
+ LWST_rcp[:, i] = LWST_spl + temp_incr[i]
+
+
+#######
+
+LWST_run = np.tile(LWST_rcp, (Ynum, 1)) # change this line for RCP scenarios
+PAR_run = np.tile(PAR_spl, Ynum)
+mld_run = np.tile(MLD_pchip_spl, Ynum) # multiplicating physical forcing arrays
+dmdt_run = np.tile(dmdt, Ynum)
+
+N0 = np.repeat(0.75, Ynum*365)
+
+sol = np.zeros((Ynum*365, Pnum + 4, len(temp_incr))) # time; no. var; RCP scenarios
+
+
+from FinalMod_Sbm import SizeModLogspace
+
+# Run solution
+starttime = time.ctime() # save it for documentation purposes
+print(mod_name, str(Pnum), "start:", starttime)
+start = time.time() # start the timer
+
+for i in range(len(temp_incr)):
+ sol[:, :, i] = SizeModLogspace(mld=mld_run, par=PAR_run, sst=LWST_run[:, i], dmdt=dmdt_run, N0=N0, numP=Pnum,
+ numYears=Ynum).solution
+
+# Complete
+end = time.time() # stop the timer
+endtime = time.ctime() # save it for documentation purposes
+print(mod_name, str(Pnum), "complete:", endtime)
+runtime = (end - start) / 3600 # calculate run time (hour)
+print(mod_name, str(Pnum), "run time(hour):", runtime)
+print(mod_name, str(Pnum), "run time(day):", runtime/24)
+
+
+# Storing output
+out = xr.Dataset(
+ {'Nut': (['time', 'RCP'], sol[:, 0, :]),
+ 'Zoo': (['time', 'ZooSize', 'RCP'], sol[:, 1:3, :]),
+ 'Phy': (['time', 'PhySize', 'RCP'], sol[:, 4:4+Pnum*1, :])},
+ coords={'time': np.arange(Ynum*365),
+ 'ZooSize': [20, 600],
+ 'PhySize': np.logspace(0, np.log10(150), Pnum),
+ 'RCP': [0, 1.4, 2.5, 4.2]},
+ attrs={'Title': 'This file contains sol output with different nutrient and mixing regimes',
+ 'No. phytoplankton size group': Pnum,
+ 'LWST units': 'Degree celcius',
+ 'PAR units': 'Ein m$^{-2}$ d$^{-1}$',
+ 'MLD units': 'Meters',
+ 'Variable units': 'µmol P L$^{-1}$',
+ 'Size units': 'µm ESD',
+ 'Phyto size range': '1 - 200',
+ 'Zoo size range': '20 - 600'})
+out.to_netcdf(wd + 'output_proj.nc') # export
+
+
+
From 863d4a57adfa2cad147f35442ad529f7dd770685 Mon Sep 17 00:00:00 2001
From: Debbie <51200142+Debbcwing@users.noreply.github.com>
Date: Thu, 6 Jun 2024 13:35:17 +0200
Subject: [PATCH 37/97] Update Readme.md
---
Results/Readme.md | 60 +++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 60 insertions(+)
diff --git a/Results/Readme.md b/Results/Readme.md
index 8b13789..c95854d 100644
--- a/Results/Readme.md
+++ b/Results/Readme.md
@@ -1 +1,61 @@
+Here contains two sets of model results, one for the projection of future RCP scenarios ('Proj.nc') and one for sensitivity test ('Sensit.nc') over thermal traits (i.e. thermal optima and thermal tolerance) in all scenarios.
+
+----------------------- Proj.nc -----------------------\
+This file stores the outpur data from the projection, and is saved as a multi-dimensional dataset in a netCDF file.
+The dataset contains phytoplankton biomass ('Phy'; $P_i$, $i$=1,2,..,10) and zooplankton biomass ('Zoo'; $Z_j$, $j$=1,2) data of each size class from day 0 to day 3650. For analyses, we used data from the last year, after the model is spinned-up, hence, day 3285 to 3650.
+
+To extract the data, one could use the netCDF4 library in python (https://unidata.github.io/netcdf4-python/)
+
+````
+wd = 'YourWorkingDirectory'
+
+import netCDF4
+out = netCDF4.Dataset(wd+'/Proj.nc') # output file
+sol_phy = out.variables['Phy'][3285:]
+sol_zoo = out.variables['Zoo'][3285:]
+sol_nut = out.variables['Nut'][3285:]
+````
+
+The coordinates (dimensions) of the 'Phy' dataset are as below:\
+'time': '365 days',\
+'PhySize': '10 phytoplankton size classes ranged from 1 to 200µm ESD',\
+'RCP': '4 different climate change scenarios considered by IPCC: RCP 2.6; RCP 6.0; and RCP 8.5'\
+\
+The coordinates (dimensions) of the 'Zoo' dataset are as below:\
+'time': '365 days',\
+'ZooSize': '2 zooplankton size classes at 20 and 600µm ESD',\
+'RCP': '4 different climate change scenarios considered by IPCC: RCP 2.6; RCP 6.0; and RCP 8.5'\
+\
+The coordinates (dimensions) of the 'Nut' dataset are as below:\
+'time': '365 days',\
+'RCP': '4 different climate change scenarios considered by IPCC: RCP 2.6; RCP 6.0; and RCP 8.5'\
+
+\
+\
+----------------------- Sensit.nc -----------------------\
+````
+wd = 'YourWorkingDirectory'
+
+import netCDF4
+out = netCDF4.Dataset(wd+'/Sensit.nc') # output file
+sol_phy = out.variables['Phy'][3285:]
+sol_zoo = out.variables['Zoo'][3285:]
+sol_nut = out.variables['Nut'][3285:]
+````
+The coordinates (dimensions) of the 'Phy' dataset are as below:\
+'time': '365 days',\
+'PhySize': '10 phytoplankton size classes ranged from 1 to 200µm ESD',\
+'RCP': '4 different climate change scenarios considered by IPCC: RCP 2.6; RCP 6.0; and RCP 8.5',\
+'Sensit': '4 different configurations on thermal traits to test their sensitivities in climate change scenarios considered by IPCC: RCP 2.6; RCP 6.0; and RCP 8.5'\
+\
+The coordinates (dimensions) of the 'Zoo' dataset are as below:\
+'time': '365 days',\
+'ZooSize': '2 zooplankton size classes at 20 and 600µm ESD',\
+'RCP': '4 different climate change scenarios considered by IPCC: RCP 2.6; RCP 6.0; and RCP 8.5',\
+'Sensit': '4 different configurations on thermal traits to test their sensitivities in climate change scenarios considered by IPCC: RCP 2.6; RCP 6.0; and RCP 8.5'\
+\
+The coordinates (dimensions) of the 'Nut' dataset are as below:\
+'time': '365 days',\
+'RCP': '4 different climate change scenarios considered by IPCC: RCP 2.6; RCP 6.0; and RCP 8.5',\
+'Sensit': '4 different configurations on thermal traits to test their sensitivities in climate change scenarios considered by IPCC: RCP 2.6; RCP 6.0; and RCP 8.5'\
From 547a3298da2288db774917cdc7681b779907ed8f Mon Sep 17 00:00:00 2001
From: Debbie <51200142+Debbcwing@users.noreply.github.com>
Date: Thu, 6 Jun 2024 19:16:09 +0200
Subject: [PATCH 38/97] Update Readme.md
---
Results/Readme.md | 18 ++++++++++--------
1 file changed, 10 insertions(+), 8 deletions(-)
diff --git a/Results/Readme.md b/Results/Readme.md
index c95854d..5d47c94 100644
--- a/Results/Readme.md
+++ b/Results/Readme.md
@@ -1,20 +1,20 @@
-Here contains two sets of model results, one for the projection of future RCP scenarios ('Proj.nc') and one for sensitivity test ('Sensit.nc') over thermal traits (i.e. thermal optima and thermal tolerance) in all scenarios.
+Here contains two sets of model results, one for the projection of future RCP scenarios ('Proj.nc') and one for sensitivity test ('Sensit.nc') over thermal traits (i.e. thermal optima and thermal tolerance) in the standard and RCP scenarios.
----------------------- Proj.nc -----------------------\
-This file stores the outpur data from the projection, and is saved as a multi-dimensional dataset in a netCDF file.
-The dataset contains phytoplankton biomass ('Phy'; $P_i$, $i$=1,2,..,10) and zooplankton biomass ('Zoo'; $Z_j$, $j$=1,2) data of each size class from day 0 to day 3650. For analyses, we used data from the last year, after the model is spinned-up, hence, day 3285 to 3650.
+This file stores the output data from the projection, and is saved as a multi-dimensional dataset in a netCDF file.
+The dataset contains nutrient fluxes ('Nut'), phytoplankton biomass ('Phy'; $P_i$, $i$=1,2,..,10) and zooplankton biomass ('Zoo'; $Z_j$, $j$=1,2) data of each size class from day 0 to day 3650. For analyses, we used data from the last year, after the model is spinned-up, hence, day 3285 to 3650.
To extract the data, one could use the netCDF4 library in python (https://unidata.github.io/netcdf4-python/)
````
-wd = 'YourWorkingDirectory'
+wd = '/YourWorkingDirectory'
import netCDF4
out = netCDF4.Dataset(wd+'/Proj.nc') # output file
-sol_phy = out.variables['Phy'][3285:]
-sol_zoo = out.variables['Zoo'][3285:]
-sol_nut = out.variables['Nut'][3285:]
+phy = out.variables['Phy'][3285:]
+zoo = out.variables['Zoo'][3285:]
+nut = out.variables['Nut'][3285:]
````
The coordinates (dimensions) of the 'Phy' dataset are as below:\
@@ -34,8 +34,10 @@ The coordinates (dimensions) of the 'Nut' dataset are as below:\
\
\
----------------------- Sensit.nc -----------------------\
+This file stores the output data from the sensitivity test, and is saved as a multi-dimensional dataset in a netCDF file.
+The dataset contains nutrient fluxes ('Nut'), phytoplankton biomass ('Phy'; $P_i$, $i$=1,2,..,10) and zooplankton biomass ('Zoo'; $Z_j$, $j$=1,2) data of each size class from day 0 to day 3650. For analyses, we used data from the last year, after the model is spinned-up, hence, day 3285 to 3650.
````
-wd = 'YourWorkingDirectory'
+wd = '/YourWorkingDirectory'
import netCDF4
out = netCDF4.Dataset(wd+'/Sensit.nc') # output file
From 24d01aee5bb679f9ab0ac4459db5ff8750ac916a Mon Sep 17 00:00:00 2001
From: Debbie <51200142+Debbcwing@users.noreply.github.com>
Date: Thu, 6 Jun 2024 19:45:14 +0200
Subject: [PATCH 39/97] Update Readme.md
---
Results/Readme.md | 14 +++++++-------
1 file changed, 7 insertions(+), 7 deletions(-)
diff --git a/Results/Readme.md b/Results/Readme.md
index 5d47c94..4d72ddc 100644
--- a/Results/Readme.md
+++ b/Results/Readme.md
@@ -3,7 +3,7 @@ Here contains two sets of model results, one for the projection of future RCP sc
----------------------- Proj.nc -----------------------\
This file stores the output data from the projection, and is saved as a multi-dimensional dataset in a netCDF file.
-The dataset contains nutrient fluxes ('Nut'), phytoplankton biomass ('Phy'; $P_i$, $i$=1,2,..,10) and zooplankton biomass ('Zoo'; $Z_j$, $j$=1,2) data of each size class from day 0 to day 3650. For analyses, we used data from the last year, after the model is spinned-up, hence, day 3285 to 3650.
+The dataset contains nutrient fluxes ('Nut'), phytoplankton biomass ('Phy'; $P_i$, $i$=1,2,..,10) and zooplankton biomass ('Zoo'; $Z_j$, $j$=1,2) data of each size class from day 3285 to day 3650, on the 10th year of the simulation. This is a time range after the spin-up stage of the model.
To extract the data, one could use the netCDF4 library in python (https://unidata.github.io/netcdf4-python/)
@@ -12,9 +12,9 @@ wd = '/YourWorkingDirectory'
import netCDF4
out = netCDF4.Dataset(wd+'/Proj.nc') # output file
-phy = out.variables['Phy'][3285:]
-zoo = out.variables['Zoo'][3285:]
-nut = out.variables['Nut'][3285:]
+Phy = out.variables['Phy'][:]
+Zoo = out.variables['Zoo'][:]
+Nut = out.variables['Nut'][:]
````
The coordinates (dimensions) of the 'Phy' dataset are as below:\
@@ -41,9 +41,9 @@ wd = '/YourWorkingDirectory'
import netCDF4
out = netCDF4.Dataset(wd+'/Sensit.nc') # output file
-sol_phy = out.variables['Phy'][3285:]
-sol_zoo = out.variables['Zoo'][3285:]
-sol_nut = out.variables['Nut'][3285:]
+Phy = out.variables['Phy'][:]
+Zoo = out.variables['Zoo'][:]
+Nut = out.variables['Nut'][:]
````
The coordinates (dimensions) of the 'Phy' dataset are as below:\
'time': '365 days',\
From 0eb5f2febe551bd33cf51f0f375e14a377ee0dd6 Mon Sep 17 00:00:00 2001
From: Debbie <51200142+Debbcwing@users.noreply.github.com>
Date: Thu, 6 Jun 2024 19:45:41 +0200
Subject: [PATCH 40/97] Add files via upload
---
Results/Proj.nc | Bin 0 -> 168684 bytes
Results/Sensit.nc | Bin 0 -> 624786 bytes
2 files changed, 0 insertions(+), 0 deletions(-)
create mode 100644 Results/Proj.nc
create mode 100644 Results/Sensit.nc
diff --git a/Results/Proj.nc b/Results/Proj.nc
new file mode 100644
index 0000000000000000000000000000000000000000..6c91157288dfb4775324b3fbab37e520cc847028
GIT binary patch
literal 168684
zcmeFX2{_hW*Ef8c8YGIOs0^uO2qh&te=0N~%^^u687qp6QOGP~ndf<)hs;9eIdez@
zg;bPE-~TM<{oGgga~;q3yx;R4@A19Iy*skc|JrM>z4zK{@3r@D?FR?s6qYh_GLk51
z(IOH(Y1yxz)IUGx)4PYXzev-I94es+>P_Mp_aL
zg@t_$(G?Pjj*+BB_q)ow`J9zPC(?qIB+^0>4gLHliB8$X*mUh*%NTxtlIYY74Ws%0
zTDE{%rlM_TpEh5{LCI<87tWW_8|&y_mfSR7$oad$Me~IV38BYz?pzk&`fK@OYB?d8
zQZBJ(zI?vJzjaNF?btpQ5+U
s{0_A$r63
ztCq^1WB**~S1n4wfLcpl$ACwl5)j&I$7MxFOwg^yVp^b+~Bd`$A%^4{Z9jziB0K
zm~lzL9RIXfeDTiN)R0S@2mSn6MPojZX{_xxZjWAwA!&uQXz?{LjQTQeex3`iIXxFV
z1AV}{zEpEgHv*cc#05pH60mC1f%1DFGca;<5C7GyDe}9d*I((bGvKKCs->U(S7S4$
zna%1KtAH2NdQ}>}XnY|nJtZFnLG2{F{WHmUA$n+1;b=B^nC`7PH8n{VE7fo~Vnhd<
zy)qK*G91vE{N`%hgP$HlSQNr14Y$>r`pOtuO1MAywdhVkBECNZNf4dV%i~Ix
zE2Y(X!wun}tEJn=uU3$VIk3Ma*9ER?;Ew3LbOG~j9%Ijo#qii)Y4k`-Ias=XYgP=b
z1YzpYCWgGqU9UfHwr4LS27Cy9Efxy8zbJ4gCpB72GlvlE=<267E-J{$rdc`5Yhn2F
ztb}bQMhccT#_83d2X5F%>98Zl=Diq|K1JcvZ(~S42fjbyn^GkXty1aF9N0i9H8Qlt
zuU4Yyv6i=@#s(l*p5m2fU