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 里,而是在运行记录中,需要用时间来推算。感兴趣的可自行完善。自己改改数据调整位置也能凑合。

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