美文网首页
01_1_差异表达分析

01_1_差异表达分析

作者: 生信小白 | 来源:发表于2021-04-17 21:31 被阅读0次

    本文代码在mac环境下运行

    常用的表达谱分析软件:

    1.ArrayTools ;

    2.DNA-Chip Analyzer ;

    3.SAM ;

    4.R(“affy”,“Limma”,“marray”);

    5.Matlab(Bioinformatics Toolbox)


    安装Bioconductor Packages:

    source("http://bioconductor.org/biocLite.R")  

    bioLite()    ##安装Bioconductor


    安装Limma包

    bioLite("limma")  ##安装limma包

    bioLite(c("GenomicFeatures","AnnotationDbi")) ##同时安装两个包

    数据预处理:

    不同波长的荧光特异性涉及到前景值和背景值,因此要进行背景矫正;之后剔除不可信的点且对确实值进行估计;之后将数据归一化(样本之间归一化使得样本之间可以对比,基因之间标准化使得基因之间可以对比)以后有利于后续下游分析

    数据标准化是为了消除系统偏差引起的高相关性,保留真正的生物学引起的基因表达的高相关性

    数据预处理(Affy包,limma包):

    1.Affymetrix芯片都属于单通道芯片(Oligonucleotide Arrays),使用affy包

    library("Affy")

    ReadAffy();  ##输入数据

    expresson(); ##背景矫正;标准化;归一化

    justRMA();  ##more efficient

    exprs();

    library(simpleaffy)

    ampli.eset <- call.exprs(cel,"mas5",sc=target)

    qcs <- qc(cel.ampli.eset)

    2.双通道芯片(Two-Color Spotted Arrays),可以使用limma包

    library(limma)

    read.maimages(); ##输入数据

    backgroundCorrect(); ##背景矫正

    normalizeWithinArrays(); ##芯片标准化

    normalizeBetweenArrays(): ##芯片之间标准化

    exprs.MA(); ##抽取表达值

    avereps(); ##归一化

    plotMA(); ##绘图

    差异表达基因筛选(主流)

    library(limma)

    lmFit(); ##芯片数据的线性模型

    eBayes(); ##贝叶斯统计方法

                     ##差异表达基因

    实操代码(修改版)

    ##设置工作路径

    setwd("/Users/apple/Desktop/生信学习材料/生信入门之路/代码数据挖掘_淘宝/实用数据挖掘/学习记录 /01_差异基因分析/实操/") 

    ##安装affy和limma包

    if (!requireNamespace("BiocManager", quietly = TRUE))install.packages("BiocManager") 

    BiocManager::install(version = "3.12")

    BiocManager::install("affy") 

    BiocManager::install("limma")

    BiocManager::install("impute") 

    install.packages("openxlsx")

     ##加载R包 

    library("Biobase")

    library("affy")

    library("limma") 

     ##import phenotype data 样本信息读取 

    phenoData = read.AnnotatedDataFrame('target.txt') 

    pheno = pData(phenoData) 

    View(pheno) 

    #import Annotaion 注释信息读取 

    anno = read.csv("Annotation.csv",head=T) 

    View(head(anno))


    ##RMA normalization用RMA读取原始数据 

    #eset.rma = RMA(Data) 

    eset.rma <- justRMA(filenames=paste(rownames(pheno),'.CEL',sep=''), celfile.path='./GSE12251')  ##文件路径

    datExpr = exprs(eset.rma) 


    #安装impute包计算缺失值 

    library(impute) 

    #KNN法计算缺失值

    imputed_gene_exp = impute.knn(datExpr,k=10,rowmax = 0.5, colmax=0.8, maxp=3000, rng.seed=362436069) 

    datExpr2 = imputed_gene_exp$data 

    ##得到表达矩阵输出 

    write.table(datExpr2,file="Expdata.txt",sep="\t") 


     #######

    #样本分组

    Group = factor(pheno$group,levels=c('Responder','Nonresponder'))

    design = model.matrix(~0+Group) 

    colnames(design) <- c('Responder','Nonresponder') 

    design


    #线性模型拟合 

    fit <- lmFit(datExpr2, design) 

    #构建比对模型,比较两个条件下的表达数据 

    contrast.matrix <- makeContrasts(Responder-Nonresponder, levels=design)  ##正值代表R对比NR高表达,负代表低表达 

    ######################################### 

    library(openxlsx)

    library(futile.logger) 

    #比对模型进行差值计算 

    fit2 <- contrasts.fit(fit, contrast.matrix)

    #贝叶斯检验 

    fit2 <- eBayes(fit2) 

    #找出差异基因检验结果,并且输出符合条件的结果 

    diff = topTable(fit2,adjust.method="fdr",coef=1,p.value=0.05, lfc=log(2,2),number=5000,sort.by = 'logFC')                                                                                                                   ##P值和LogFC调整阈值 


    #diff ID转换,基因注释 

    diff$Gene = anno$Gene.Symbol[match(rownames(diff),anno$ID_REF)] 

    diff$ID_REF = rownames(diff) 

    diff = diff[,c(8,7,1:6)] 

    diff = diff[diff$Gene != '---',] 


    #output 输出差异表达基因 

    write.xlsx(diff,'DEG.xlsx',sheetName=colnames(contrast.matrix)[1],col.names=T,row.names=F,append=T) 

    记录2021.4.17

    相关文章

      网友评论

          本文标题:01_1_差异表达分析

          本文链接:https://www.haomeiwen.com/subject/vsuabktx.html