packages <- c(
    "tidyverse",
    "printr",
    "ggthemes",
    "miR34AasRNAproject",
    "broom"
)
purrr::walk(packages, library, character.only = TRUE)
rm(packages)



Introduction

As p53 is a well-known regulator of senescence, growth, and apoptosis and has been shown to specifically important under conditions of cellular stress, such as starvation. Therefore, we investigated whether overexpression of miR34a AS affects proliferation rate under normal and starvation conditions.



Methods



Cell culture and proliferation assay

PC3 stable cell lines, either miR34a asRNA overexpressing or mock, were harvested and stained in 1 ml PBS with 5uM CellTrace Violet for 5 minutes and subsequently seeded in 12 well plates at 2 x 104 cells per well. Time 0 measurements were taken once cells had attached and treatments with RPMI (Gibco, life technology) 10% FBS, RPMI 0.1% FBS, or HBSS were simultaneously initiated in the remaining cells. RPMI mediums were all additionally supplemented with 2mM L-glutamine and 50ug/ml Penicillin-Streptomycin. Cells were incubated for the indicated times before harvesting and CellTrace Violet was quantified via flow cytometry (Sony SH800S Cell Sorter). Time 0 was performed in biological triplicate and technical duplicate whereas all other time points were performed in biological triplicates with one technical replicate.



Analysis

Analysis was performed by first, subsampling each replicate and condition so that each had a total of 10000 cells. The mean of each technical replicate for time point 0 was calculated and, subsequently, the time 0 fluorescence intensity was subtracted from each sample. The mean difference in fluorescence intensity was then calculated for each biological replicate and condition and used to build a polynomial regression model per condition (i.e. RPMI, 0.1% FBS, and HBSS) where difference in fluorescence intensity was modeled as a function of time and cell line. Reported P values are derived from the t-test, testing the null hypothesis that the coefficient estimate of the cell line covariate is equal to 0.



Results

data <- getData("Supplementary Figure 5b")

#remove cells with negative fluorescence. Consider these 1224 cells artifacts 
data <- filter(data, Violet > 0)

##fix day0 data
#Since there are no treatments at time 0 and we want a corresponding Time 0 for 
#each of the treated samples, here we expand the Time 0 sample 3 times, one for 
#each treatment condition at later time points.
dataExpandT0 <- data %>% 
  filter(Time == 0) %>%
  bind_rows(., ., .) %>%
  mutate(Condition = c(
      rep("RPMI", nrow(.) / 3),
      rep("0.1% FBS", nrow(.) / 3),
      rep("HBSS", nrow(.) / 3)
  )) %>%
  bind_rows(filter(data, Time != 0))

#calculate means of technical replicates in day0
#need to subsample first so that each condition has the same number of cells
sampleN <- 10000

set.seed(2387723)
data0 <- dataExpandT0 %>%
  filter(Time == "0" & Type == "stained") %>%
  select(-`FSC-A`, -`BSC-A`) %>%
  group_by(`Biological replicate`, `Technical replicate`, Condition, `Cell line`, Type) %>%
  sample_n(size = sampleN) %>%
  ungroup() %>%
  arrange(`Cell line`, Condition, `Biological replicate`, `Technical replicate`, Violet) %>%
  mutate(
    `Technical replicate` = rep(c("Tr1", "Tr2"), nrow(.)/2),
    row = rep(1:(nrow(.) / 2), each = 2)
  ) %>%
  spread(`Technical replicate`, Violet) %>%
  rowwise() %>%
  mutate(Violet = mean(c(Tr1, Tr2))) %>%
  ungroup() %>%
  select(-(row:Tr2)) %>%
  bind_rows(., ., ., .) %>%
  mutate(Time = rep(c("0", "24", "48", "72"), each = nrow(.) / 4)) %>%
  arrange(Time, `Cell line`, Condition, `Biological replicate`, Violet)

#Randomly sample 10000 cells from each condition so that all samples have the 
#same number of cells
set.seed(2387723)
subData <- dataExpandT0 %>%
  select(-`FSC-A`, -`BSC-A`, -`Technical replicate`) %>%
  filter(Type == "stained" & Time != "0") %>%
  group_by(`Biological replicate`, Condition, `Cell line`, Type, Time) %>%
  sample_n(size = sampleN) %>%
  ungroup() 

#add back data from time point 0 with mean technical replicates calculated
#in addition, add a time point 0 corresponding to each cell and condition and
##calculate the difference for each cell from time 0
subData <- subData %>%
  bind_rows(filter(data0, Time == "0")) %>%
  arrange(Time, `Cell line`, Condition, `Biological replicate`, Violet) %>%
  add_column(day0Violet = data0$Violet) %>%
  mutate(violetNorm = Violet - day0Violet) %>%
  mutate(
    Time = as.numeric(Time), 
    cellLine = parse_factor(`Cell line`, levels = c("mock", "lncTAM34a"))
  ) %>% 
  select(-`Cell line`)

#calculate mean normalized flouresence for each condition and biological replicate
subDataMeans <- subData %>%
  group_by(cellLine, Time, Condition, `Biological replicate`) %>%
  summarize(mean = mean(violetNorm)) %>%
  ungroup()

Show stained vs. Unstained

data %>%
  ggplot() +
  geom_histogram(aes(Violet, fill = Type), alpha = 1/2, position = position_dodge(), binwidth = 0.01) +
  theme_bw() +
  scale_x_log10() +
  labs(x = "log10(Fluorescence intensity)", y = "Count") +
  facet_wrap(~Time)

Show time 0

data %>%
  filter(Time == 0) %>%
  unite(Sample, c("Cell line", "Biological replicate")) %>%
  mutate(Sample = case_when(
    str_detect(Sample, "unstained-F4") ~ "unstained-lncTAM34a",
    str_detect(Sample, "unstained-mock") ~ "unstained-mock",
    TRUE ~ Sample
  )) %>%
  select(Sample, Violet) %>%
  distinct() %>%
  ggplot() +
  geom_boxplot(aes(Sample, Violet)) +
  scale_y_log10() +
  theme(axis.text.x = element_text(angle = 90)) +
  labs(x = "Sample_replicate", y = "log10(Fluorescence intensity)") +
  theme_bw()

Show fluorescence loss over time

data %>%
  mutate(Condition = if_else(Time == "0", "RPMI", Condition)) %>%
  ggplot() +
  geom_boxplot(aes(Time, Violet)) +
  facet_wrap(~Type) +
  scale_y_log10() +
  labs(y = "log10(Fluorescence intensity)") +
  theme_bw()

Show fluorescence per condition

data %>%
  filter(Type == "stained") %>%
  filter(Time != "0") %>%
  mutate(Condition = parse_factor(Condition, levels = c("RPMI", "0.1% FBS", "HBSS"))) %>%
  ggplot() +
  geom_boxplot(aes(Time, Violet)) +
  facet_wrap(~Condition) +
  theme_bw() +
  scale_y_log10() +
  labs(y = "log10(Fluorescence intensity)")

Show polynomial model info

#model each condition using the mean of all biological replicates using a lm
model.info <- subDataMeans %>%
  group_by(Condition) %>%
  do(glance(lm(mean ~ poly(Time, 3) + cellLine, data = .))) %>%
  ungroup()

as.data.frame(model.info)

proliferation.lm <- subDataMeans %>%
  group_by(Condition) %>%
  do(tidy(lm(mean ~ poly(Time, 3) + cellLine, data = .))) %>%
  ungroup()

as.data.frame(proliferation.lm)

#extract model components to plot
model.data <- proliferation.lm %>%
  filter(term == "cellLinelncTAM34a") %>%
  mutate(Condition = parse_factor(
    Condition, levels = c("RPMI", "0.1% FBS", "HBSS")
  )) %>% 
  rename(pValue = p.value) %>%
  pFormat(.)
subData %>% 
  select(-Violet, -day0Violet) %>% 
  nest(violetNorm) %>% 
  spread(Time, data) %>% 
  mutate(`24-0` = map2_dbl(`0`, `24`, function(x, y) mean(unlist(y) - unlist(x)))) %>% 
  mutate(`48-24` = map2_dbl(`24`, `48`, function(x, y) mean(unlist(y) - unlist(x)))) %>% 
  mutate(`72-48` = map2_dbl(`48`, `72`, function(x, y) mean(unlist(y) - unlist(x)))) %>% 
  select(-(`0`:`72`)) %>% 
  gather(Time, diff, -(Type:cellLine)) %>% 
  group_by(Condition, Time) %>% 
  summarize(m = mean(diff))

subDataMeans %>% 
  spread(cellLine, mean) %>% 
  mutate(diff = lncTAM34a - mock) %>% 
  group_by(Time, Condition) %>% 
  summarize(meanDiff = mean(diff)) %>% 
  print(n = nrow(.))

Plot final figure

p <- subDataMeans %>% 
  mutate(Condition = parse_factor(Condition, levels = c("RPMI", "0.1% FBS", "HBSS"))) %>% 
  ggplot() + 
  geom_smooth(
    aes(Time, mean, colour = cellLine, group = cellLine), colour = "lightgrey",
    method = "lm", formula = y ~ poly(x, 3), size = 0.5, alpha = 0.1
  ) +
  geom_boxplot(
    aes(Time, mean, colour = cellLine, group = interaction(Time, cellLine)),
    fatten = 2, lwd = 0.2
  ) +
  facet_wrap(~Condition) + 
  scale_x_continuous(breaks = c(0, 24, 48, 72)) +
  labs(
    x = "Time (hours)", 
    y = "Mean \U0394 fluorescence intensity"
  ) + 
  guides(colour = guide_legend(title = "Cell line"))

markdown <- p +
  geom_label(
    data = model.data, 
    aes(x = 0, y = 2000, label = paste0("estimate=", round(estimate))),
    fill = "white", label.size = 0, label.padding = unit(0.01, "lines"),
    position = position_dodge(width = 0.9), show.legend = FALSE,
    fontface = "bold", family = "Arial Unicode MS", size = 3, hjust = 0
  ) +
  geom_label(
    data = model.data, 
    aes(x = 0, y = 1500, label = paste0("std.error=", round(std.error))),
    fill = "white", label.size = 0, label.padding = unit(0.01, "lines"),
    position = position_dodge(width = 0.9), show.legend = FALSE,
    fontface = "bold", family = "Arial Unicode MS", size = 3, hjust = 0
  ) +
  geom_label(
    data = model.data, 
    aes(x = 0, y = 1000, label = paste0("p=", pFormat)),
    fill = "white", label.size = 0, label.padding = unit(0.01, "lines"),
    position = position_dodge(width = 0.9), show.legend = FALSE,
    fontface = "bold", family = "Arial Unicode MS", size = 3, hjust = 0
  )

plotRmarkdown(markdown)

pdf <- p +
  geom_label(
    data = model.data, 
    aes(x = 0, y = 3000, label = paste0("estimate=", round(estimate))),
    fill = "white", label.size = 0, label.padding = unit(0.01, "lines"),
    position = position_dodge(width = 0.9), show.legend = FALSE,
    fontface = "plain", family = "Arial Unicode MS", size = 2, hjust = 0
  ) +
  geom_label(
    data = model.data, 
    aes(x = 0, y = 2000, label = paste0("std.error=", round(std.error))),
    fill = "white", label.size = 0, label.padding = unit(0.01, "lines"),
    position = position_dodge(width = 0.9), show.legend = FALSE,
    fontface = "plain", family = "Arial Unicode MS", size = 2, hjust = 0
  ) +
  geom_label(
    data = model.data, 
    aes(x = 0, y = 1000, label = paste0("p=", pFormat)),
    fill = "white", label.size = 0, label.padding = unit(0.01, "lines"),
    position = position_dodge(width = 0.9), show.legend = FALSE,
    fontface = "plain", family = "Arial Unicode MS", size = 2, hjust = 0
  )

figure <- plotPDF(pdf)

#path <- file.path("~/GitHub/miR34a_asRNA_project/inst", fileMap(type = "pdf")["Supplementary Figure 5b"][[1]])
#ggsave(
#  plot = figure,
#  filename = path,
#  device = cairo_pdf,
#  height = 60,
#  width = 100,
#  units = "mm"
#)
The effects of miR34a asRNA overexpression on proliferation in normal and starvation conditions in the PC3 prostate cancer cell line. The y-axis illustrates the mean difference (Δ; Time - Time 0) in flouresence intensity for each biological replicate and condition where decreased flouresence intensity indicates increased proliferation. Boxplots show the distribution of the mean differences from each of the biological replicates (n = 3). Grey lines indicate the polynomial regression model with the shadows indicating the 95% confidence intervals. Estimates, standard error (std.error), and P values for the cell line covariate for each model are indicated in the upper left hand corner.



Conclusions

miR34a asRNA overexpression causes a decrease in cell growth under all examined conditions.





sessionInfo()


GranderLab/miR34a_asRNA_project documentation built on May 26, 2019, 7:26 a.m.