From 9b4b38154a9cf771b092a9a068d337042cce43ef Mon Sep 17 00:00:00 2001 From: Emma Rand Date: Wed, 18 Sep 2024 10:19:37 +0100 Subject: [PATCH] remove cookies message; update VLE content in update-notes --- -biolpc3032.Rhistory | 512 ------------------------------------------- _quarto.yml | 4 - update-notes.txt | 17 +- 3 files changed, 12 insertions(+), 521 deletions(-) delete mode 100644 -biolpc3032.Rhistory diff --git a/-biolpc3032.Rhistory b/-biolpc3032.Rhistory deleted file mode 100644 index ec71367..0000000 --- a/-biolpc3032.Rhistory +++ /dev/null @@ -1,512 +0,0 @@ -group_by(treatment, replicate) |> -arrange(treatment, replicate, time_day) |> -mutate(acetate = acetate - lag(acetate), -propanoate = propanoate - lag(propanoate), -isobutyrate = isobutyrate - lag(isobutyrate), -butyrate = butyrate - lag(butyrate), -isopentanoate = isopentanoate - lag(isopentanoate), -pentanoate = pentanoate - lag(pentanoate), -isohexanoate = isohexanoate - lag(isohexanoate), -hexanoate = hexanoate - lag(hexanoate), -delta_time = time_day - lag(time_day)) -mol_wt <- read_table("data-raw/mol_wt.txt") |> -mutate(vfa = tolower(vfa)) -vfa_cummul_protein <- vfa_cummul_protein |> -pivot_longer(cols = -c(set_number, -treatment, -replicate, -time_day), -values_to = "conc_mM", -names_to = "vfa") -vfa_cummul_protein <- vfa_cummul_protein |> -left_join(mol_wt, by = "vfa") |> -mutate(conc_g_l = conc_mM * 0.001 * mw) -vfa_delta_protein <- vfa_delta_protein |> -pivot_longer(cols = -c(set_number, -treatment, -replicate, -time_day), -values_to = "conc_mM", -names_to = "vfa") -vfa_delta_protein <- vfa_delta_protein |> -left_join(mol_wt, by = "vfa") |> -mutate(conc_g_l = conc_mM * 0.001 * mw) -vfa_cummul_protein <- vfa_cummul |> -filter(set_number == 1) |> -select(-set_number) -vfa_cummul_vfa <- vfa_cummul |> -filter(set_number == 2) |> -select(-set_number) -vfa_delta_protein <- vfa_cummul_protein |> -group_by(treatment, replicate) |> -arrange(treatment, replicate, time_day) |> -mutate(acetate = acetate - lag(acetate), -propanoate = propanoate - lag(propanoate), -isobutyrate = isobutyrate - lag(isobutyrate), -butyrate = butyrate - lag(butyrate), -isopentanoate = isopentanoate - lag(isopentanoate), -pentanoate = pentanoate - lag(pentanoate), -isohexanoate = isohexanoate - lag(isohexanoate), -hexanoate = hexanoate - lag(hexanoate), -delta_time = time_day - lag(time_day)) -mol_wt <- read_table("data-raw/mol_wt.txt") |> -mutate(vfa = tolower(vfa)) -vfa_cummul_protein <- vfa_cummul_protein |> -pivot_longer(cols = -c(treatment, -replicate, -time_day), -values_to = "conc_mM", -names_to = "vfa") -vfa_cummul_protein <- vfa_cummul_protein |> -left_join(mol_wt, by = "vfa") |> -mutate(conc_g_l = conc_mM * 0.001 * mw) -vfa_delta_protein <- vfa_delta_protein |> -pivot_longer(cols = -c(treatment, -replicate, -time_day), -values_to = "conc_mM", -names_to = "vfa") -vfa_delta_protein <- vfa_delta_protein |> -left_join(mol_wt, by = "vfa") |> -mutate(conc_g_l = conc_mM * 0.001 * mw) -vfa_cummul_protein <- vfa_cummul_protein |> -group_by(treatment, replicate, time_day) |> -mutate(percent_conc_g_l = conc_g_l / sum(conc_g_l) * 100, -percent_conc_mM = conc_mM / sum(conc_mM) * 100) -View(vfa_cummul_protein) -vfa_cummul_protein_summary <- vfa_cummul_protein |> -group_by(treatment, time_day, vfa) |> -summarise(mean_g_l = mean(conc_g_l), -se_g_l = sd(conc_g_l)/sqrt(length(conc_g_l)), -mean_mM = mean(conc_mM), -se_mM = sd(conc_mM)/sqrt(length(conc_mM))) |> -ungroup() -vfa_cummul_protein_summary <- vfa_cummul_protein |> -group_by(treatment, time_day, vfa) |> -summarise(mean_g_l = mean(conc_g_l), -se_g_l = sd(conc_g_l)/sqrt(length(conc_g_l)), -mean_mM = mean(conc_mM), -se_mM = sd(conc_mM)/sqrt(length(conc_mM))) |> -ungroup() -View(vfa_cummul_protein_summary) -vfa_delta_protein_summary <- vfa_delta_protein |> -group_by(treatment, time_day, vfa) |> -summarise(mean_g_l = mean(conc_g_l), -se_g_l = sd(conc_g_l)/sqrt(length(conc_g_l)), -mean_mM = mean(conc_mM), -se_mM = sd(conc_mM)/sqrt(length(conc_mM))) |> -ungroup() -vfa_cummul_protein_summary |> -ggplot(aes(x = time_day, colour = vfa)) + -geom_line(aes(y = mean_g_l), -linewidth = 1) + -geom_errorbar(aes(ymin = mean_g_l - se_g_l, -ymax = mean_g_l + se_g_l), -width = 0.5, -show.legend = F, -linewidth = 1) + -scale_color_viridis_d(name = NULL) + -scale_x_continuous(name = "Time (days)") + -scale_y_continuous(name = "Mean VFA concentration (g/l)") + -theme_bw() + -facet_wrap(~treatment) + -theme(strip.background = element_blank()) -vfa_delta_protein_summary |> -ggplot(aes(x = time_day, colour = vfa)) + -geom_line(aes(y = mean_g_l), -linewidth = 1) + -geom_errorbar(aes(ymin = mean_g_l - se_g_l, -ymax = mean_g_l + se_g_l), -width = 0.5, -show.legend = F, -linewidth = 1) + -scale_color_viridis_d(name = NULL) + -scale_x_continuous(name = "Time (days)") + -scale_y_continuous(name = "Mean change in VFA concentration (g/l)") + -theme_bw() + -facet_wrap(~treatment) + -theme(strip.background = element_blank()) -vfa_cummul_protein_summary |> -ggplot(aes(x = time_day, y = mean_g_l, fill = vfa)) + -geom_col(position = "fill") + -scale_fill_viridis_d(name = NULL) + -scale_x_continuous(name = "Time (days)") + -scale_y_continuous(name = "Mean Proportion VFA") + -theme_bw() + -facet_wrap(~treatment) + -theme(strip.background = element_blank()) -vfa_delta_vfa <- vfa_cummul_vfa |> -group_by(treatment, replicate) |> -arrange(treatment, replicate, time_day) |> -mutate(acetate = acetate - lag(acetate), -propanoate = propanoate - lag(propanoate), -isobutyrate = isobutyrate - lag(isobutyrate), -butyrate = butyrate - lag(butyrate), -isopentanoate = isopentanoate - lag(isopentanoate), -pentanoate = pentanoate - lag(pentanoate), -isohexanoate = isohexanoate - lag(isohexanoate), -hexanoate = hexanoate - lag(hexanoate), -delta_time = time_day - lag(time_day)) -vfa_cummul_vfa <- vfa_cummul_vfa |> -pivot_longer(cols = -c(treatment, -replicate, -time_day), -values_to = "conc_mM", -names_to = "vfa") -vfa_cummul_vfa <- vfa_cummul_vfa |> -left_join(mol_wt, by = "vfa") |> -mutate(conc_g_l = conc_mM * 0.001 * mw) -vfa_delta_vfa <- vfa_delta_vfa |> -pivot_longer(cols = -c(treatment, -replicate, -time_day), -values_to = "conc_mM", -names_to = "vfa") -vfa_delta_vfa <- vfa_delta_vfa |> -left_join(mol_wt, by = "vfa") |> -mutate(conc_g_l = conc_mM * 0.001 * mw) -vfa_cummul_vfa <- vfa_cummul_vfa |> -group_by(treatment, replicate, time_day) |> -mutate(percent_conc_g_l = conc_g_l / sum(conc_g_l) * 100, -percent_conc_mM = conc_mM / sum(conc_mM) * 100) -vfa_cummul_vfa_summary <- vfa_cummul_vfa |> -group_by(treatment, time_day, vfa) |> -summarise(mean_g_l = mean(conc_g_l), -se_g_l = sd(conc_g_l)/sqrt(length(conc_g_l)), -mean_mM = mean(conc_mM), -se_mM = sd(conc_mM)/sqrt(length(conc_mM))) |> -ungroup() -vfa_delta_vfa_summary <- vfa_delta_vfa |> -group_by(treatment, time_day, vfa) |> -summarise(mean_g_l = mean(conc_g_l), -se_g_l = sd(conc_g_l)/sqrt(length(conc_g_l)), -mean_mM = mean(conc_mM), -se_mM = sd(conc_mM)/sqrt(length(conc_mM))) |> -ungroup() -vfa_cummul_vfa_summary |> -ggplot(aes(x = time_day, colour = vfa)) + -geom_line(aes(y = mean_g_l), -linewidth = 1) + -geom_errorbar(aes(ymin = mean_g_l - se_g_l, -ymax = mean_g_l + se_g_l), -width = 0.5, -show.legend = F, -linewidth = 1) + -scale_color_viridis_d(name = NULL) + -scale_x_continuous(name = "Time (days)") + -scale_y_continuous(name = "Mean VFA concentration (g/l)") + -theme_bw() + -facet_wrap(~treatment) + -theme(strip.background = element_blank()) -vfa_delta_vfa_summary |> -ggplot(aes(x = time_day, colour = vfa)) + -geom_line(aes(y = mean_g_l), -linewidth = 1) + -geom_errorbar(aes(ymin = mean_g_l - se_g_l, -ymax = mean_g_l + se_g_l), -width = 0.5, -show.legend = F, -linewidth = 1) + -scale_color_viridis_d(name = NULL) + -scale_x_continuous(name = "Time (days)") + -scale_y_continuous(name = "Mean change in VFA concentration (g/l)") + -theme_bw() + -facet_wrap(~treatment) + -theme(strip.background = element_blank()) -vfa_cummul_vfa_summary |> -ggplot(aes(x = time_day, y = mean_g_l, fill = vfa)) + -geom_col(position = "fill") + -scale_fill_viridis_d(name = NULL) + -scale_x_continuous(name = "Time (days)") + -scale_y_continuous(name = "Mean Proportion VFA") + -theme_bw() + -facet_wrap(~treatment) + -theme(strip.background = element_blank()) -sludge_volume <- 30 # ml -vfa_delta_protein <- vfa_delta_protein |> -mutate(flux = conc_g_l / delta_time / sludge_volume) -vfa_delta_protein <- vfa_cummul_protein |> -group_by(treatment, replicate) |> -arrange(treatment, replicate, time_day) |> -mutate(acetate = acetate - lag(acetate), -propanoate = propanoate - lag(propanoate), -isobutyrate = isobutyrate - lag(isobutyrate), -butyrate = butyrate - lag(butyrate), -isopentanoate = isopentanoate - lag(isopentanoate), -pentanoate = pentanoate - lag(pentanoate), -isohexanoate = isohexanoate - lag(isohexanoate), -hexanoate = hexanoate - lag(hexanoate), -delta_time = time_day - lag(time_day)) -vfa_cummul <- read_csv("data-raw/vfa2.csv") |> janitor::clean_names() -vfa_cummul_protein <- vfa_cummul |> -filter(set_number == 1) |> -select(-set_number) -vfa_cummul_vfa <- vfa_cummul |> -filter(set_number == 2) |> -select(-set_number) -mol_wt <- read_table("data-raw/mol_wt.txt") |> -mutate(vfa = tolower(vfa)) -vfa_delta_protein <- vfa_cummul_protein |> -group_by(treatment, replicate) |> -arrange(treatment, replicate, time_day) |> -mutate(acetate = acetate - lag(acetate), -propanoate = propanoate - lag(propanoate), -isobutyrate = isobutyrate - lag(isobutyrate), -butyrate = butyrate - lag(butyrate), -isopentanoate = isopentanoate - lag(isopentanoate), -pentanoate = pentanoate - lag(pentanoate), -isohexanoate = isohexanoate - lag(isohexanoate), -hexanoate = hexanoate - lag(hexanoate), -delta_time = time_day - lag(time_day)) -vfa_cummul_protein <- vfa_cummul_protein |> -pivot_longer(cols = -c(treatment, -replicate, -time_day), -values_to = "conc_mM", -names_to = "vfa") -vfa_cummul_protein <- vfa_cummul_protein |> -left_join(mol_wt, by = "vfa") |> -mutate(conc_g_l = conc_mM * 0.001 * mw) -vfa_delta_protein <- vfa_delta_protein |> -pivot_longer(cols = -c(treatment, -replicate, -time_day, -delta_time), -values_to = "conc_mM", -names_to = "vfa") -vfa_delta_protein <- vfa_delta_protein |> -left_join(mol_wt, by = "vfa") |> -mutate(conc_g_l = conc_mM * 0.001 * mw) -vfa_cummul_protein <- vfa_cummul_protein |> -group_by(treatment, replicate, time_day) |> -mutate(percent_conc_g_l = conc_g_l / sum(conc_g_l) * 100, -percent_conc_mM = conc_mM / sum(conc_mM) * 100) -vfa_cummul_protein_summary <- vfa_cummul_protein |> -group_by(treatment, time_day, vfa) |> -summarise(mean_g_l = mean(conc_g_l), -se_g_l = sd(conc_g_l)/sqrt(length(conc_g_l)), -mean_mM = mean(conc_mM), -se_mM = sd(conc_mM)/sqrt(length(conc_mM))) |> -ungroup() -vfa_delta_protein_summary <- vfa_delta_protein |> -group_by(treatment, time_day, vfa) |> -summarise(mean_g_l = mean(conc_g_l), -se_g_l = sd(conc_g_l)/sqrt(length(conc_g_l)), -mean_mM = mean(conc_mM), -se_mM = sd(conc_mM)/sqrt(length(conc_mM))) |> -ungroup() -vfa_cummul_protein_summary |> -ggplot(aes(x = time_day, colour = vfa)) + -geom_line(aes(y = mean_g_l), -linewidth = 1) + -geom_errorbar(aes(ymin = mean_g_l - se_g_l, -ymax = mean_g_l + se_g_l), -width = 0.5, -show.legend = F, -linewidth = 1) + -scale_color_viridis_d(name = NULL) + -scale_x_continuous(name = "Time (days)") + -scale_y_continuous(name = "Mean VFA concentration (g/l)") + -theme_bw() + -facet_wrap(~treatment) + -theme(strip.background = element_blank()) -vfa_delta_protein_summary |> -ggplot(aes(x = time_day, colour = vfa)) + -geom_line(aes(y = mean_g_l), -linewidth = 1) + -geom_errorbar(aes(ymin = mean_g_l - se_g_l, -ymax = mean_g_l + se_g_l), -width = 0.5, -show.legend = F, -linewidth = 1) + -scale_color_viridis_d(name = NULL) + -scale_x_continuous(name = "Time (days)") + -scale_y_continuous(name = "Mean change in VFA concentration (g/l)") + -theme_bw() + -facet_wrap(~treatment) + -theme(strip.background = element_blank()) -vfa_cummul_protein_summary |> -ggplot(aes(x = time_day, y = mean_g_l, fill = vfa)) + -geom_col(position = "fill") + -scale_fill_viridis_d(name = NULL) + -scale_x_continuous(name = "Time (days)") + -scale_y_continuous(name = "Mean Proportion VFA") + -theme_bw() + -facet_wrap(~treatment) + -theme(strip.background = element_blank()) -sludge_volume <- 30 # ml -vfa_delta_protein <- vfa_delta_protein |> -mutate(flux = conc_g_l / delta_time / sludge_volume) -View(vfa_delta_protein) -vfa_delta_protein_summary <- vfa_delta_protein |> -group_by(treatment, time_day, vfa) |> -summarise(mean_flux = mean(flux), -se_flux = sd(flux)/sqrt(length(flux))) |> -ungroup() -ggplot(data = vfa_delta_protein, aes(x = time_day, colour = vfa)) + -geom_point(aes(y = flux), alpha = 0.6) + -geom_errorbar(data = vfa_delta_protein_summary, -aes(ymin = mean_flux - se_flux, -ymax = mean_flux + se_flux), -width = 1) + -geom_errorbar(data = vfa_delta_protein_summary, -aes(ymin = mean_flux, -ymax = mean_flux), -width = 0.8) + -scale_color_viridis_d(name = NULL) + -scale_x_continuous(name = "Time (days)") + -scale_y_continuous(name = "VFA Flux mg/ml/day") + -theme_bw() + -facet_wrap(~treatment) + -theme(strip.background = element_blank()) -ggplot(data = vfa_delta_protein, aes(x = time_day, colour = treatment)) + -geom_point(aes(y = flux), alpha = 0.6) + -geom_errorbar(data = vfa_delta_protein_summary, -aes(ymin = mean_flux - se_flux, -ymax = mean_flux + se_flux), -width = 1) + -geom_errorbar(data = vfa_delta_protein_summary, -aes(ymin = mean_flux, -ymax = mean_flux), -width = 0.8) + -scale_color_viridis_d(name = NULL, begin = 0.2, end = 0.7) + -scale_x_continuous(name = "Time (days)") + -scale_y_continuous(name = "VFA Flux mg/ml/day") + -theme_bw() + -facet_wrap(~ vfa, nrow = 2) + -theme(strip.background = element_blank(), -legend.position = "top") -vfa_delta_vfa <- vfa_cummul_vfa |> -group_by(treatment, replicate) |> -arrange(treatment, replicate, time_day) |> -mutate(acetate = acetate - lag(acetate), -propanoate = propanoate - lag(propanoate), -isobutyrate = isobutyrate - lag(isobutyrate), -butyrate = butyrate - lag(butyrate), -isopentanoate = isopentanoate - lag(isopentanoate), -pentanoate = pentanoate - lag(pentanoate), -isohexanoate = isohexanoate - lag(isohexanoate), -hexanoate = hexanoate - lag(hexanoate), -delta_time = time_day - lag(time_day)) -vfa_cummul_vfa <- vfa_cummul_vfa |> -pivot_longer(cols = -c(treatment, -replicate, -time_day), -values_to = "conc_mM", -names_to = "vfa") -vfa_cummul_vfa <- vfa_cummul_vfa |> -left_join(mol_wt, by = "vfa") |> -mutate(conc_g_l = conc_mM * 0.001 * mw) -vfa_delta_vfa <- vfa_delta_vfa |> -pivot_longer(cols = -c(treatment, -replicate, -time_day, -delta_time), -values_to = "conc_mM", -names_to = "vfa") -vfa_delta_vfa <- vfa_delta_vfa |> -left_join(mol_wt, by = "vfa") |> -mutate(conc_g_l = conc_mM * 0.001 * mw) -vfa_cummul_vfa <- vfa_cummul_vfa |> -group_by(treatment, replicate, time_day) |> -mutate(percent_conc_g_l = conc_g_l / sum(conc_g_l) * 100, -percent_conc_mM = conc_mM / sum(conc_mM) * 100) -vfa_cummul_vfa_summary <- vfa_cummul_vfa |> -group_by(treatment, time_day, vfa) |> -summarise(mean_g_l = mean(conc_g_l), -se_g_l = sd(conc_g_l)/sqrt(length(conc_g_l)), -mean_mM = mean(conc_mM), -se_mM = sd(conc_mM)/sqrt(length(conc_mM))) |> -ungroup() -vfa_delta_vfa_summary <- vfa_delta_vfa |> -group_by(treatment, time_day, vfa) |> -summarise(mean_g_l = mean(conc_g_l), -se_g_l = sd(conc_g_l)/sqrt(length(conc_g_l)), -mean_mM = mean(conc_mM), -se_mM = sd(conc_mM)/sqrt(length(conc_mM))) |> -ungroup() -vfa_cummul_vfa_summary |> -ggplot(aes(x = time_day, colour = vfa)) + -geom_line(aes(y = mean_g_l), -linewidth = 1) + -geom_errorbar(aes(ymin = mean_g_l - se_g_l, -ymax = mean_g_l + se_g_l), -width = 0.5, -show.legend = F, -linewidth = 1) + -scale_color_viridis_d(name = NULL) + -scale_x_continuous(name = "Time (days)") + -scale_y_continuous(name = "Mean VFA concentration (g/l)") + -theme_bw() + -facet_wrap(~treatment) + -theme(strip.background = element_blank()) -vfa_delta_vfa_summary |> -ggplot(aes(x = time_day, colour = vfa)) + -geom_line(aes(y = mean_g_l), -linewidth = 1) + -geom_errorbar(aes(ymin = mean_g_l - se_g_l, -ymax = mean_g_l + se_g_l), -width = 0.5, -show.legend = F, -linewidth = 1) + -scale_color_viridis_d(name = NULL) + -scale_x_continuous(name = "Time (days)") + -scale_y_continuous(name = "Mean change in VFA concentration (g/l)") + -theme_bw() + -facet_wrap(~treatment) + -theme(strip.background = element_blank()) -vfa_cummul_vfa_summary |> -ggplot(aes(x = time_day, y = mean_g_l, fill = vfa)) + -geom_col(position = "fill") + -scale_fill_viridis_d(name = NULL) + -scale_x_continuous(name = "Time (days)") + -scale_y_continuous(name = "Mean Proportion VFA") + -theme_bw() + -facet_wrap(~treatment) + -theme(strip.background = element_blank()) -sludge_volume <- 30 # ml -vfa_delta_vfa <- vfa_delta_vfa |> -mutate(flux = conc_g_l / delta_time / sludge_volume) -vfa_delta_vfa_summary <- vfa_delta_vfa |> -group_by(treatment, time_day, vfa) |> -summarise(mean_flux = mean(flux), -se_flux = sd(flux)/sqrt(length(flux))) |> -ungroup() -ggplot(data = vfa_delta_vfa, aes(x = time_day, colour = vfa)) + -geom_point(aes(y = flux), alpha = 0.6) + -geom_errorbar(data = vfa_delta_vfa_summary, -aes(ymin = mean_flux - se_flux, -ymax = mean_flux + se_flux), -width = 1) + -geom_errorbar(data = vfa_delta_vfa_summary, -aes(ymin = mean_flux, -ymax = mean_flux), -width = 0.8) + -scale_color_viridis_d(name = NULL) + -scale_x_continuous(name = "Time (days)") + -scale_y_continuous(name = "VFA Flux mg/ml/day") + -theme_bw() + -facet_wrap(~treatment) + -theme(strip.background = element_blank()) -ggplot(data = vfa_delta_vfa, aes(x = time_day, colour = treatment)) + -geom_point(aes(y = flux), alpha = 0.6) + -geom_errorbar(data = vfa_delta_vfa_summary, -aes(ymin = mean_flux - se_flux, -ymax = mean_flux + se_flux), -width = 1) + -geom_errorbar(data = vfa_delta_vfa_summary, -aes(ymin = mean_flux, -ymax = mean_flux), -width = 0.8) + -scale_color_viridis_d(name = NULL, begin = 0.2, end = 0.7) + -scale_x_continuous(name = "Time (days)") + -scale_y_continuous(name = "VFA Flux mg/ml/day") + -theme_bw() + -facet_wrap(~ vfa, nrow = 2) + -theme(strip.background = element_blank(), -legend.position = "top") -renv::status() -?heatmapply::heatmapply -?heatmaply::heatmaply -?biomaRt::useMart -?biomaRt::useMart diff --git a/_quarto.yml b/_quarto.yml index 5846d31..0dece1a 100644 --- a/_quarto.yml +++ b/_quarto.yml @@ -7,10 +7,6 @@ date-format: D MMMM, YYYY website: title: "Data Analysis for Group Project" - cookie-consent: - type: implied - style: simple - palette: light google-analytics: "G-TVF95J593T" page-footer: diff --git a/update-notes.txt b/update-notes.txt index af6d891..06bcfe5 100644 --- a/update-notes.txt +++ b/update-notes.txt @@ -2,15 +2,22 @@ ADD WEBSITE LINK TO ALL SLIDES /MATERAILS VLE iframe - +

Read an Overview of the Transcriptomics material (below or open page on external site)

+ - - +

Read an Overview of Transcriptomics 1: 👋 Hello data! (below or open page on external site)

+ - +

Do the independent study to prepare for the workshop (below or open page on external site)

+ -

Workshop material Open Workshop material on external site

+

Attend the workshop (material below or open page on external site)

+ + + +

Do the independent study following the workshop (below or open page on external site)

+ Independent Study to do before the workshop Workshop material