########################################################################### ########### Rat AEC expression analysis code in R ######################### ########################################################################### #To create eSet, need # 1) Assay Data- file="GSE38570.txt" # 2) phenoData- file="Table5-Meta data for rat AEC.csv" # 3) featureData-file is downloable from reMoat website: # "Annotation_Illumina_Rat-RS-V1_rn4_V1.0.0_Aug09.csv" # For limma, need "design table" # 4) design data- file="Table6-LIMMA design matrix rat.txt" ########################################################################### ########### Load in packages ############################################## ########################################################################### library(Biobase) library(lumi) library(limma) library(genefilter) library(org.Hs.eg.db) library(heatmap.plus) library(matlab) library(biomaRt) library(vsn) ########################################################################### ######## Load in sample data & check quality ############################## ########################################################################### sampleFileRat="GSE38570.txt" x.lumi.rat<-lumiR(sampleFileRat, lib="lumiRatAll") x.lumi.rat<-addNuID2lumi(x.lumi.rat, lib.mapping="lumiRatIDMapping") plot(x.lumi.rat, what="density") plot(x.lumi.rat, what="boxplot", col=rainbow(15)) meanSdPlot(x.lumi.rat, main="meanSdPlot of raw rAEC") plot(x.lumi.rat, what='sampleRelation') ########################################################################### ############ Attach phenoData ############################################# ########################################################################### pDatRat<-read.csv("Table5-Meta data for rat AEC.csv", header=T) head(pDatRat) rownames(pDatRat)=pDatRat$Sample head(pDatRat) mt=match(sampleNames(x.lumi.rat), rownames(pDatRat)) mt phenoData(x.lumi.rat)=new("AnnotatedDataFrame", data=pDatRat[mt,]) pData(x.lumi.rat) table(pData(x.lumi.rat)$Sample) ########################################################################### ##########Attach featureData ############################################## ########################################################################### remRat<-read.csv("Annotation_Illumina_Rat-RS-V1_rn4_V1.0.0_Aug09.csv", header=T) remRat[1:5,1:5] remRat2<-remRat[!duplicated(remRat$Lumi_id),] featureData(x.lumi.rat)<-new("AnnotatedDataFrame", data=remRat2) ########################################################################### ################ Attach Annotation package ################################ ########################################################################### annotation(x.lumi.rat) <- "lumiRatIDmapping" ########################################################################### ########### Raw P.Values ################################################## ########################################################################### Rat<-read.table("Table6-LIMMA design matrix rat.txt", row.names=1, header=T, sep="\t") matrixRat<-as.matrix(Rat) class(matrixRat) fit.raw.rAEC <- lmFit(x.lumi.rat, matrixRat) contrasts_rAEC<- makeContrasts("D8-D0",levels=matrixRat) fit_rAEC.raw<- contrasts.fit(fit.raw.rAEC, contrasts_rAEC) fit.rAEC.eBayes<- eBayes(fit_rAEC.raw) rAEC.raw.p.values<-fit.rAEC.eBayes$p.value hist(rAEC.raw.p.values, col="lightblue") ########################################################################### ########## Normalization using VSN+0.5quantile############################# ########################################################################### x.lumi.vsn.rat <- lumiN(x.lumi.rat, method='vsn', lts.quantile=0.5) meanSdPlot(x.lumi.vsn.rat) class(x.lumi.vsn.rat) plot(x.lumi.vsn.rat, what="density") plot(x.lumi.vsn.rat, what="boxplot", col=rainbow(15)) meanSdPlot(x.lumi.vsn.rat, main="meanSdPlot of VSN rAEC") plot(x.lumi.vsn.rat, what='sampleRelation', main="Sample relation of normalized rAEC") ########################################################################### ################ Principal Component analysis ############################# ########################################################################### pc<-prcomp(t(exprs(x.lumi.rat))) plot(pc, col="lightblue", main="Principal Component Analysis of rAEC") pdat<-pData(x.lumi.rat) dim(pdat) cc<-ifelse(pdat$PREPDATE=="Round1", "purple", "hotpink") cc<-ifelse(pdat$PREPDATE=="Round2", "magenta", cc) do<-ifelse(pData(x.lumi.vsn.rat)$DAY=="D0", "D0", "D8") do<-ifelse(pData(x.lumi.vsn.rat)$DAY=="D2", "D2", do) do<-ifelse(pData(x.lumi.vsn.rat)$DAY=="D4", "D4", do) do<-ifelse(pData(x.lumi.vsn.rat)$DAY=="D6", "D6", do) table(do) plot(pc$x, type="n", main="First two Principal components") text(pc$x, do, cex=1.5, col=cc) ########################################################################### ##########Heatmap of preprocessed data##################################### ########################################################################### lumi.nqz=nsFilter(x.lumi.vsn.rat,var.cutof=0.95,require.entrez=FALSE, remove.dupEntrez=FALSE)$eset standardize=function(z){ rowmed=apply(z,1,median)# rowmad=apply(z,1,mad) #mad: median absolute deviation rv=sweep(z,1,rowmed) rv=sweep(rv,1,rowmad,"/") return(rv) } mye<-standardize(exprs(lumi.nqz.rat)) row.dist<-as.dist(1-cor(t(mye))) col.dist<-as.dist(1-cor(mye)) ColhClust<-hclust(col.dist, method="average") RowhClust<-hclust(row.dist, method="average") dim(exprs(lumi.nqz.rat)) cc1<-ifelse(pData(lumi.nqz.rat)$PREPDATE=="Round1", "pink", "darkviolet") cc1<-ifelse(pData(lumi.nqz.rat)$PREPDATE=="Round3", "deeppink4", cc1) cc2<-ifelse(pData(lumi.nqz.rat)$DAY=="D0", "gray86", "black") cc2<-ifelse(pData(lumi.nqz.rat)$DAY=="D2", "gray68", cc2) cc2<-ifelse(pData(lumi.nqz.rat)$DAY=="D4", "gray54", cc2) cc2<-ifelse(pData(lumi.nqz.rat)$DAY=="D6", "gray44", cc2) cc.col<-matrix(as.character(c( cc1, cc2)), nrow=15, ncol=2) hmp.dist<-heatmap.plus(mye, Colv=as.dendrogram(ColhClust), Rowv=as.dendrogram(RowhClust), col=jet.colors(64), ColSideColors=cc.col) #The heatmap for D0 and D2 samples was spun around the dendrogram axis for publication in PLoS Genetics## ########################################################################### ##########################P values ######################################## ########################################################################### Rat_Design<-read.table("Table6-Limma_design_matrix_rat.txt", row.names=1, header=T, sep="\t") Rat_Design_matrix<-as.matrix(Rat_Design) class(Rat_Design_matrix) fit_Rat <- lmFit(x.lumi.vsn.rat, Rat_Design_matrix) contrasts_rAEC<- makeContrasts("D8-D0",levels=Rat_Design_matrix) fit_rAEC<- contrasts.fit(fit_Rat, contrasts_rAEC) fit.rAEC.eBayes<- eBayes(fit_rAEC) rAEC.p.values<-fit.rAEC.eBayes$p.value hist(rAEC.p.values, col="lightblue") #generates histogram of normalized pvalues ########################################################################### ############### Benjamini-Hotchburg adjustment of p-values ################ ########################################################################### adjpvalALLRat<-p.adjust(rAEC.p.values, method="BH") ########################################################################### ################ VOLCANO PLOT ############################################# ########################################################################### log10BH_rat<--log10(adjpvalALLRat) coefficients_rat<-fit.rAEC.eBayes$coefficients plot((coefficients_rat), (log10BH_rat), type="n", xlab="Change in Gene Expression", ylab="-10logBH-pvalue", main="Mean Significant Gene Expression Changes rAEC TII-> TI", cex=0.3) points(coefficients_rat, log10BH_rat, col="black", cex=0.3, pch=19) abline(h=1.3, lwd=3, col="black") points(coefficients_rat[(coefficients_rat>0.3&log10BH_rat>1.3)], log10BH_rat[(coefficients_rat>0.3&log10BH_rat>1.3)], col='red', cex=0.5, pch=19) points(coefficients_rat[(coefficients_rat< -0.3&log10BH_rat>1.3)], log10BH_rat[(coefficients_rat< -0.3&log10BH_rat>1.3)], col="forestgreen", cex=0.5, pch=19) ########################################################################### ###### creating a data table with all normalized rAEC data ################ ########################################################################### rat_data_matrix<-as.matrix(x.lumi.vsn.rat) rat_data_pvalues<-cbind(rat_data_matrix, adjpvalALLRat) write.csv(rat_data_pvalues, file="rAEC.expression.and.significance.csv")# This data table, when filtered for p<0.05 is what is included in Table 7. ########################################################################### ############ Correlating Entrez with human IDs ############################ ########################################################################### correlated_file<-read.csv("Table8-Rat and human ENTREZ correlated probe information.csv", header=T) attach(correlated_file) pval.change <- function(fold, pval) (ifelse( ((fold) >= 0), -1*log10(pval), log10(pval))) rAEC_correlatePlot<-pval.change(coefficients.rat, BH-corrected.p-values.rat) hAEC_correlatePlot<-pval.change(coefficients_human, BH-corrected.p.value.D8.D0.human) plot(rAEC_correlatePlot, hAEC_correlatePlot, pch=19, cex=0.5, main="hAEC-rAEC correlation", xlab="rAEC Gene expression: log10-BHadj", ylab="hAEC Gene expression: log10-BHadj") points(rAEC_correlatePlot[(rAEC_correlatePlot>1.3&hAEC_correlatePlot> 1.3)], hAEC_correlatePlot[(rAEC_correlatePlot>1.3&hAEC_correlatePlot> 1.3)],col="red", pch=19, cex=0.5) points(rAEC_correlatePlot[(rAEC_correlatePlot< -1.3&hAEC_correlatePlot < -1.3)], hAEC_correlatePlot[(rAEC_correlatePlot< -1.3&hAEC_correlatePlot< -1.3)],col="forestgreen", pch=19, cex=0.5) abline(v=-1.3, lty=2, col="gray29") abline(v=1.3, lty=2, col="gray29") abline(h=-1.3, lty=2, col="gray29") abline(h=1.3, lty=2, col="gray29") ########################################################################### ############ Chi Squared Tests on rAEC-hAEC overlap ####################### ########################################################################### #Total Overlap x=c(1514, 2148, 2459, 7052) x=matrix(x, ncol=2) chisq.test(x) #Uprgulated overlap x=c(778, 765, 1005, 1952) x=matrix(x, ncol=2) chisq.test(x) #Downregulated Overlap x=c(465, 707, 486, 2199) x=matrix(x, ncol=2) chisq.test(x)