Oyster lifestage carryover project growth preliminary analysis

Post detailing preliminary analysis of oyster growth data in the USDA/WSG lifestage carry over project.

Overview

In this analysis, we looked at growth of oysters in the lifestage carry over project, which is detailed in Eric’s notebook here.

In this post I detail preliminary growth analyses. For this experiment, we have pools of lifestages in different containers, represented as replicates (n=1-4 per treatment). For adults, we had individual families tracked by tag number. We did not identify or track individual oysters and do not have replicates within individual tags. Therefore, we treat tag/container as replicates within treatment and will only have limited capacity to make inferences about family effects.

Setup

Set up workspace, set options, and load required packages.

knitr::opts_chunk$set(echo = TRUE, warning = FALSE, message = FALSE)

Load libraries

library(tidyverse)
library(ggplot2)

Read in data

growth<-read_csv("lifestage_carryover/data/size/gigas-lengths.csv")

growth<-growth%>%
  rename(tag=`tag...1`)%>%
  select(tag, `life-stage`, `init-treat`, label, month, length)%>%
  rename(lifestage=`life-stage`, treatment=`init-treat`)

growth$month<-factor(growth$month, levels=c("Oct", "Nov", "Jan"))

Look at data for whole population together

Plot growth over months for each life stage and treatment

Plot as box plot

plot<-growth%>%
  
  ggplot(aes(color=treatment, x=month, y=length))+
  geom_boxplot()+
  facet_grid(~lifestage)+
  ylab("Mean Length (cm)")+
  xlab("Month")+
  scale_color_manual(values=c("darkgray", "darkred"), name="Treatment", labels=c("Control", "Treatment"))+
  theme_classic()+
  theme(
    text=element_text(size=12, color="black")
  );plot

ggsave(plot=plot, "lifestage_carryover/output/size/mean_lengths_box.png", width=7, height=4)

Plot as mean +- standard error for all.

plot2<-growth%>%
  group_by(treatment, month, lifestage)%>%
  summarise(mean=mean(length, na.rm=TRUE), se=sd(length, na.rm=TRUE)/sqrt(length(length)))%>%
  
  ggplot(aes(color=treatment, x=month, y=mean))+
  geom_point(aes(group=interaction(treatment, lifestage)), position=position_dodge(0.3), size=1)+
  geom_errorbar(aes(ymin=mean-se, ymax=mean+se), width=0, position=position_dodge(0.3), linewidth=0.75)+
  geom_line(aes(group=treatment), position=position_dodge(0.3), linewidth=1)+
  facet_grid(~lifestage)+
  ylab("Mean Length (cm)")+
  xlab("Month")+
  scale_color_manual(values=c("darkgray", "darkred"), name="Treatment", labels=c("Control", "Treatment"))+
  theme_classic()+
  theme(
    text=element_text(size=12, color="black")
  );plot2

ggsave(plot=plot2, "lifestage_carryover/output/size/mean_lengths.png", width=7, height=4)

Run model

model<-aov(length~lifestage*month*treatment, data=growth)
summary(model)

Significant lifestage and month effects. No significant treatment effects.

                            Df Sum Sq Mean Sq  F value Pr(>F)    
lifestage                    3 383973  127991 1377.056 <2e-16 ***
month                        2   9529    4765   51.264 <2e-16 ***
treatment                    1    157     157    1.686  0.194    
lifestage:month              3  15429    5143   55.335 <2e-16 ***
lifestage:treatment          3    510     170    1.830  0.140    
month:treatment              2     15       8    0.081  0.922    
lifestage:month:treatment    3     26       9    0.094  0.963    
Residuals                 1006  93503      93   

Run plot and model by tag

Calculate mean size at each month for each replicate and calculate % growth (change/original).

replicates<-growth%>%
  group_by(treatment, month, lifestage, tag)%>%
  summarise(mean=mean(length, na.rm=TRUE))%>%
  pivot_wider(names_from=month, values_from=mean)%>%
  mutate(perc_growth_Nov=((Nov-Oct)/Oct)*100)%>%
  mutate(perc_growth_Jan=((Jan-Oct)/Oct)*100)

Plot growth for adult animals sampled in November

plot3<-replicates%>%
  select(treatment, lifestage, tag, perc_growth_Nov)%>%
  drop_na()%>%
  droplevels()%>%
  
  ggplot(aes(color=treatment, x=treatment, y=perc_growth_Nov, shape=tag))+
  geom_line(aes(group=tag), color="black")+
  geom_point(aes(group=interaction(treatment, lifestage)), position=position_dodge(0.3), size=5)+
  ylab("% growth")+
  xlab("Treatment")+
  scale_color_manual(values=c("darkgray", "darkred"), name="Treatment", labels=c("Control", "Treatment"))+
  scale_shape_manual(name="Family", values=c(15, 16, 17, 18))+
  ggtitle("Adults: Oct-Nov Growth")+
  theme_classic()+
  theme(
    text=element_text(size=12, color="black")
  );plot3

ggsave(plot=plot3, "lifestage_carryover/output/size/adults_Nov_percent_growth.png", width=4, height=4)

Test for effect of treatment.

model<-replicates%>%
  select(treatment, lifestage, tag, perc_growth_Nov)%>%
  drop_na()%>%
  droplevels()%>%
  
  aov(perc_growth_Nov~treatment, data=.)

summary(model)

Effect of treatment just barely not significant (P=0.088).

            Df Sum Sq Mean Sq F value Pr(>F)  
treatment    1  8.358   8.358   4.132 0.0883 .
Residuals    6 12.137   2.023    

Plot growth for animals measured in January

Adults

plot4<-replicates%>%
  select(treatment, lifestage, tag, perc_growth_Jan)%>%
  filter(lifestage=="adult")%>%
  drop_na()%>%
  droplevels()%>%
  
  ggplot(aes(color=treatment, x=treatment, y=perc_growth_Jan, shape=tag))+
  geom_line(aes(group=tag), color="black")+
  geom_point(aes(group=interaction(treatment, lifestage)), position=position_dodge(0.3), size=5)+
  ylab("% growth")+
  xlab("Treatment")+
  scale_color_manual(values=c("darkgray", "darkred"), name="Treatment", labels=c("Control", "Treatment"))+
  ylim(-7, 3)+
  scale_shape_manual(name="Family", values=c(15, 16, 17, 18))+
  ggtitle("Adults: Oct-Jan Growth")+
  theme_classic()+
  theme(
    text=element_text(size=12, color="black")
  );plot4

ggsave(plot=plot4, "lifestage_carryover/output/size/adults_Jan_percent_growth.png", width=4, height=4)

Juveniles

plot5<-replicates%>%
  select(treatment, lifestage, tag, perc_growth_Jan)%>%
  filter(lifestage=="juvenile")%>%
  drop_na()%>%
  droplevels()%>%
  
  ggplot(aes(color=treatment, x=treatment, y=perc_growth_Jan, shape=tag))+
  geom_point(aes(group=interaction(treatment, lifestage)), position=position_dodge(0.3), size=5)+
  ylab("% growth")+
  xlab("Treatment")+
  scale_color_manual(values=c("darkgray", "darkred"), name="Treatment", labels=c("Control", "Treatment"))+
  scale_shape_manual(name="Replicate", values=c(15, 16, 17, 18))+
  ggtitle("Juvenile: Oct-Jan Growth")+
  theme_classic()+
  ylim(0,20)+
  theme(
    text=element_text(size=12, color="black")
  );plot5

ggsave(plot=plot5, "lifestage_carryover/output/size/juvenile_Jan_percent_growth.png", width=4, height=4)

Seed

plot6<-replicates%>%
  select(treatment, lifestage, tag, perc_growth_Jan)%>%
  filter(lifestage=="seed")%>%
  drop_na()%>%
  droplevels()%>%
  
  ggplot(aes(color=treatment, x=treatment, y=perc_growth_Jan, shape=tag))+
  #geom_line(aes(group=tag), color="black")+
  geom_point(aes(group=interaction(treatment, lifestage)), position=position_dodge(0.3), size=5)+
  ylab("% growth")+
  xlab("Treatment")+
  scale_color_manual(values=c("darkgray", "darkred"), name="Treatment", labels=c("Control", "Treatment"))+
  scale_shape_manual(name="Replicate", values=c(15, 16, 17, 18))+
  ggtitle("Seed: Oct-Jan Growth")+
  theme_classic()+
  ylim(0,250)+
  theme(
    text=element_text(size=12, color="black")
  );plot6

ggsave(plot=plot6, "lifestage_carryover/output/size/seed_Jan_percent_growth.png", width=4, height=4)

Spat

plot7<-replicates%>%
  select(treatment, lifestage, tag, perc_growth_Jan)%>%
  filter(lifestage=="spat")%>%
  drop_na()%>%
  droplevels()%>%
  
  ggplot(aes(color=treatment, x=treatment, y=perc_growth_Jan, shape=tag))+
  #geom_line(aes(group=tag), color="black")+
  geom_point(aes(group=interaction(treatment, lifestage)), position=position_dodge(0.3), size=5)+
  ylab("% growth")+
  xlab("Treatment")+
  scale_color_manual(values=c("darkgray", "darkred"), name="Treatment", labels=c("Control", "Treatment"))+
  scale_shape_manual(name="Replicate", values=c(15, 16, 17, 18))+
  ggtitle("Spat: Oct-Jan Growth")+
  theme_classic()+
  ylim(0,150)+
  theme(
    text=element_text(size=12, color="black")
  );plot7

ggsave(plot=plot7, "lifestage_carryover/output/size/spat_Jan_percent_growth.png", width=4, height=4)

Test for effect of treatment by lifestage

January all stages

model<-replicates%>%
  select(treatment, lifestage, tag, perc_growth_Jan)%>%
  drop_na()%>%
  droplevels()%>%
  
  aov(perc_growth_Jan~treatment*lifestage, data=.)

summary(model)

Effect of lifestage, no treatment effects.

                    Df Sum Sq Mean Sq F value   Pr(>F)    
treatment            1      1       1   0.015    0.904    
lifestage            3  96056   32019 325.275 3.54e-13 ***
treatment:lifestage  3    363     121   1.231    0.335    
Residuals           14   1378      98   

Interpretations

There are a few key take aways here:

  • Adults (1/2 of families) that were sampled in November were measured for growth in November. These families tended to be larger, so that is why lengths of adults are higher in November. All other adults and other lifestages were measured in January.
  • The amount of growth is much higher on a percent basis in seed and spat than adults and juveniles. This demonstrates lifestage specific investment in growth and could be interesting to explore further.
  • There are no strong treatment effects. There are some trends for family specific treatment effects in adults, but because we do not have replicates we cannot make any conclusions on adult family effects.
Written on February 14, 2024