Seahorse XF 細胞能量代謝分析繪圖(折線圖)

我實在是想不到作爲一個科研服務公司,安捷倫的 Wave 軟件導出的 Summary 分辨率如此感人。dpi 是每個科研人的臉面,然而 Summary 功能真的是花架子般形同虛設,軟件界面做得那麼好但是 Summary 就是沒有好好傳承,也難怪我所見到的 paper 裏的折線圖都不是 Wave 所導出的那種風格,逼得生信人操着ggplot親自下場用R語言寫一個繪圖代碼。

library(readxl)

# 讀取實驗數據,使用經過標準化的測量數據 ####
dat <- readxl::read_xlsx('XF Cell Mito Stress Test.xlsx', sheet = 'Normalized Rate')

# 去除不用的孔和背景孔
dat <- dat[! dat$Group %in% c("Unassigned", "Background"),]

# 求同一測量時間點的重複孔的讀數平均值 ####
drawDat <- do.call(rbind, lapply(unique(dat$Time), function(timing) {
  b <- do.call(rbind, lapply(unique(dat$Group), function(group) {
    records <- dat[dat$Time == timing & dat$Group == group,]
    return(data.frame(
      Group = group,
      Time = timing,
      OCR = mean(records$OCR),
      ECAR = mean(records$ECAR),
      SD.OCR = sd(records$OCR),
      SD.ECAR = sd(records$ECAR)
    ))
  }))
  return(b)
}))

# 分組及配色 ####
# 再次分組的意義在於規定圖例中分組擺放的先後次序,組名需要和 Excel 文件中的一致
maps <- data.frame(
  Color = c("#FF4500","#6495ED","gray"),
  Group = c("組1", "組2", "對照組")
)

# 強制按照 maps$Group 順序繪圖 ####
drawDat$Group <- factor(drawDat$Group, 
                      levels = maps$Group)

library(ggplot2)
# 折線圖線條粗細 ####
lineThick = 1
# 加藥線顏色 ####
bdColor <- '#FFA500'

# OCR ####
ggplot(data = drawDat, aes(x = Time, y = OCR, color = Group, shape=Group)) +
  geom_point(aes(color = Group), size=lineThick+2) + geom_line(size=lineThick) +
  labs(x="時間(分)",y="OCR (pmol/分/千細胞)",color="分組", shape="分組") +
  scale_x_continuous(breaks = seq(0, 100, by = 10)) +
  geom_errorbar(aes(ymin = OCR - SD.OCR, ymax = OCR + SD.OCR), size=lineThick, width = lineThick) +
  scale_color_manual(values = pal) +
  coord_cartesian(expand=0) +
  geom_vline(xintercept=20, colour = bdColor, size=lineThick,linetype="twodash") +
  geom_text(aes(x=23.5, label="寡黴素", y=21), colour=bdColor) +
  geom_vline(xintercept=46, colour = bdColor, size=lineThick,linetype="twodash") +
  geom_text(aes(x=49.5, label="解偶劑", y=21), colour=bdColor) +
  geom_vline(xintercept=71, colour = bdColor, size=lineThick,linetype="twodash") +
  geom_text(aes(x=78, label="魚藤酮/抗黴素A", y=21), colour=bdColor)
ggsave('seahorse_OCR.tiff', dpi=300)

# ECAR ####
ggplot(data = drawDat, aes(x = Time, y = ECAR, color = Group, shape=Group)) + 
  geom_point(aes(color = Group), size=lineThick+2) + geom_line(size=lineThick) +
  labs(x="時間(分)",y="ECAR (pmol/分/千細胞)",color="分組", shape="分組") +
  scale_x_continuous(breaks = seq(0, 100, by = 10)) +
  geom_errorbar(aes(ymin = ECAR - SD.ECAR, ymax = ECAR + SD.ECAR), size=lineThick, width = lineThick) +
  scale_color_manual(values = pal) +
  coord_cartesian(expand=0) +
  geom_vline(xintercept=20, colour = bdColor, size=lineThick,linetype="twodash") +
  geom_text(aes(x=23.5, label="寡黴素", y=1.25), colour=bdColor) +
  geom_vline(xintercept=46, colour = bdColor, size=lineThick,linetype="twodash") +
  geom_text(aes(x=49.5, label="解偶劑", y=1.25), colour=bdColor) +
  geom_vline(xintercept=71, colour = bdColor, size=lineThick,linetype="twodash") +
  geom_text(aes(x=78, label="魚藤酮/抗黴素A", y=1.25), colour=bdColor)
ggsave('seahorse_ECAR.tiff', dpi=300)

目前缺陷在於加藥線的位置需要手動指定,因爲位置相關數據不在Normalized Rate這個 sheet 裏,而是在運行記錄中,需要用時間來推算。感興趣的可自行完善。自己改改數據調整位置也能湊合。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章