#差异分析样本 5.9
library(limma)
# 清空暂存数据
rm(list=ls())
# 设置工作目录
setwd("C:/Users/lihui/Desktop/ncRNA3x/F2/198710")
#载入原始数据
raw = read.csv("198710.csv",header=TRUE,row.names=1,check.names = FALSE)  
head(raw)
dim(raw)
# 画箱式图，比较数据分布情况
par(mfrow=c(1,1))
boxplot(data.frame(raw),col="#ff4757",outline = T) 
dat = raw

#注释
library(AnnoProbe)
gpl='GPL21827'
probe2gene=idmap(gpl,type = 'pipe')
head(probe2gene)

#去除重复探针
ids = probe2gene
colnames(ids)=c('probe_id','symbol')  
ids=ids[ids$symbol != '',]
ids=ids[ids$probe_id %in%  rownames(dat),]

dat[1:4,1:4]   
dat=dat[ids$probe_id,] 
ids$median=apply(dat,1,median) #ids新建median这一列，列名为median，同时对dat这个矩阵按行操作，取每一行的中位数，将结果给到median这一列的每一行
ids=ids[order(ids$median,ids$symbol,decreasing = T),]
#对ids$symbol按照ids$median中位数从大到小排列的顺序排序，将对应的行赋值为一个新的ids
ids=ids[!duplicated(ids$symbol),]#将symbol这一列取取出重复项，'!'为否，即取出不重复的项，去除重复的gene ，保留每个基因最大表达量结果s
dat=dat[ids$probe_id,] #新的ids取出probe_id这一列，将dat按照取出的这一列中的每一行组成一个新的dat
rownames(dat)=ids$symbol#把ids的symbol这一列中的每一行给dat作为dat的行名
dat[1:4,1:4]  #保留每个基因ID第一次出现的信息(median最大的那个)

dat = normalizeBetweenArrays(dat)

par(mfrow=c(1,1))
boxplot(data.frame(dat),col="#546de5",outline = T) 
write.csv(dat,'dat.csv')

#######################################################################
#山峰图(不做)
library(ggplot2)
library(ggridges)
library(reshape)
library(ggprism) 

df <- as.data.frame(dat[,1:10])
df1 <- melt(df) 
show(df1)

ggplot(df1,aes(x=value,y=variable,fill=variable))+
  geom_density_ridges(stat = "density_ridges")+
  theme(legend.position = "none")+scale_fill_prism(palette = "candy_bright") 
####详细参数
ggplot(df1, aes(x = value, y = variable, fill = variable)) +#数据
  geom_density_ridges(stat = "density_ridges") +#绘制山脊图
  theme_prism(palette = "candy_bright",#主题样式
              base_fontface = "plain", # 字体样式
              base_family = "serif", # 字体格式
              base_size = 12,  #字体大小
              base_line_size = 0.5)+ #坐标轴粗细
  scale_fill_prism(palette = "summer")+#颜色diazo/candy_soft/candy_brigh