zl程序教程

您现在的位置是:首页 >  其他

当前栏目

RT-qPCR从384板结果到mRNA相对表达量箱线图

2023-03-07 09:04:18 时间

新手小白!!!请多批评指正!!!

某天分析384板数据觉得有点耗时,恰逢R语言刚入门1周,觉得可行,于是行动

在此感谢生信技能树和小洁老师!

保存384板结果为csv

个人习惯每次做两个复孔,上下为同一孔,每个引物占两行

每次可运行8个引物,每个引物总样本量最大为24

数据示例:

image.png
rm(list = ls())
#!!!修改参数!!!
dat <- read.csv(file = "ct_value_2.csv",header = F) #文件名
gene_list <- c("ACTIN","A","B","C","D","E","F","G")   #基因名
neican <- "ACTIN"   #内参是哪个基因
n_group <- 3    #分组个数
name_sample <- c("CTRL","TREAT","THERAPY") #组名
n_sample <- c(5,7,12) #每组样本数量
#!!!修改结束!!!

以上内容为不同数据修改参数

如果样本量不满24,引物不满8个,可如下放置数据

image.png
# 计算均值
b <- (1:16)[c(T,F)]
for(i in b){
  dat[(((i+1)/2)+16),] <- apply(dat[i:(i+1),],2,mean)
}
dat_aver <- dat[17:24,]

#计算dCT值
library(stringr)
neican_n <- which(str_detect(gene_list,neican) == T)
for (i in 1:8) {
  dat_aver[i+8,] <- dat_aver[i,]-dat_aver[neican_n,]
}
dat_dCT <- dat_aver[9:16,]
dat_dCT <- dat_dCT[-neican_n,]

#计算ddCT
con_aver <- apply(dat_dCT[,1:n_sample[1]], 1, mean)
for (i in 1:7) {
  dat_dCT[i+7,] <- dat_dCT[i,] - con_aver[[i]]
}
dat_ddCT <- dat_dCT[8:14,]

##计算foldchange
dat_foldchange <- 2^(-dat_ddCT)
dat_foldchange
image.png
##命名
name <- rep(name_sample[1],n_sample[1])
for (i in 2:n_group) {
 name=c(name,rep(name_sample[i],n_sample[i]))
}

library(tidyr)
library(tibble)
library(dplyr)
gene_name <- gene_list[-neican_n]
gene_name2 <- paste0("gene_",gene_name)
dat_1 = t(dat_foldchange) %>% 
  as.data.frame()
round(dat_1,2)

colnames(dat_1) = gene_name2
dat_2 = rownames_to_column(dat_1) %>%
  mutate(group = name)

pdat = dat_2%>% 
  pivot_longer(cols = starts_with("gene"),
               names_to = "gene",
               values_to = "count") #宽变长

library(ggplot2)
pdat$group2 <- factor(pdat$group,levels = name_sample)
p = ggplot(pdat,aes(gene,count))+
  geom_boxplot(aes(fill= group2))+
  theme_bw()
p
image.png
p + facet_wrap(~gene,scales = "free")
image.png