从比对到MA-plot

MA-plot算是比较常用的图了,我这也是第一次画。

这次的流程是从ncbi的数据库上下载了别人发表的二代测序数据,先用subreads进行了比对,之后用subreads里面自带的featurecount进行了表达量统计。

subjunc比对(这里只选取其中一个样本进行比对):


home/fengruoqing/data6/mkfeng/tool/subread-1.6.4-Linux-x86_64/bin/subjunc-T24-d30-D400-i/home/fengruoqing/data6/mkfeng/hg38-subread/hg38-r/home/fengruoqing/data6/mkfeng/rnaseq/replicate1/raw/SRR1583541_1.fastq-R/home/fengruoqing/data6/mkfeng/rnaseq/replicate1/raw/SRR1583541_2.fastq-oSRR1583541_subjunc.bam

之后用featurecounts统计表达量:


/home/fengruoqing/data6/mkfeng/tool/subread-1.6.4-Linux-x86_64/bin/featureCounts-T24-p-texon-ggene_name-s2-a/share/apps/genomics/genome/hg38/Homo_sapiens.GRCh38.81.gtf-oSRR1583541_featureCounts.txt /home/fengruoqing/data6/mkfeng/apo2/subread/SRR1583541_subjunc.bam

featureconunts 得到的txt文件的最后一列就是对应基因的表达量,用awk 和 paste这两个命令把control组和treat组对应的基因和表达量整合成成一个新的文件,control组的表达量要放到前面,因为后续需要用到的DEseq默认排在前面的是对照。

文件是这样的:

之后呢,在Rstudio里把这个文件和DEseq2打开:


library(DESeq2)

mydata<-read.table("/Users/ruoqingfeng/Desktop/apo3a_control.txt",

header=TRUE,quote='\t')

然后,是非常套路的几步,基本上所有做表达矩阵的都需要这样几步,需要注意的是,制作condition的时候,里面的内容可以和表格的表头不一样,但是它是按照子母顺序排列的,所以control组一定要排在treat组前面,比方说treat组用'a'开头的单词命名就不行。

后面的一直到表达矩阵的代码:


condition<-factor(c("control","control","control","t","t","t"))

colData<-data.frame(row.names=colnames(mydata),condition)

​

dds<-DESeqDataSetFromMatrix(mydata,DataFrame(condition),design=~condition)

dds2<-DESeq(dds)

​

res<-results(dds2)

res就是最后得到的表达军阵,在画ma-plot图之前,还需要把每个基因的基因id换成gene_symbol 这样方便看图。gene_id注释的代码如下:


library("biomaRt")

library("curl")

ensembl=useMart("ensembl")

ensembl=useDataset("hsapiens_gene_ensembl",mart=ensembl)

my_ensembl_gene_id<-row.names(res)

mms_symbols<-getBM(attributes=c('ensembl_gene_id','external_gene_name',"description"),filters='ensembl_gene_id',values=my_ensembl_gene_id,mart=ensembl)

​

ensembl_gene_id<-rownames(res)

res<-cbind(ensembl_gene_id,res)

colnames(res)[1]<-c("ensembl_gene_id")

diff_name<-merge(res,mms_symbols,by="ensembl_gene_id")

rownames(diff_name)<-diff_name[,1]

diff_name<-diff_name[,-1]

这里,不仅给给gene_id 对映了gene_symbol,还加入了一段注释,以备不时之需,做好之后,再把第一列gene_id的列明去掉,就可以把列变成行名了,就是上面最后的对象dif_name了。

这里整个表达矩阵的制作和注释就已经完全完成了。之后就是画图了,画图用ggpubr包的ggmaplot函数就可以一波搞定。

代码如下:


library(ggpubr)

p2<-ggmaplot(diff_name,main=expression("apo2_control"),

fdr=0.05,fc=2,size=0.4,

palette=c("#B31B21","#1465AC","darkgray"),

genenames=as.vector(diff_name$external_gene_name),

xlab="M",ylab="A",

legend="top",top=20,

font.label=c("bold",11),

font.legend="bold",

font.main="bold",

ggtheme=ggplot2::theme_minimal())

这样就可以完成一个ma-plot图了,一般默认矫正后的p值(fdr)是<0.05的,fc 是大于两倍的,当然这个值的范围是可以更改的。

最后放一个样图:


apo2_control_final.jpg

你可能感兴趣的:(从比对到MA-plot)