Bem-vindos a aula de RNA-seq!

Esta aula é baseada no tutorial construido por Law et. al.; 2018. Disponível neste link

Os dados usados foram produzidos no estudo de Sheridan et al., 2015. Disponível aqui

O conjunto de dados inclui informação transcriptômica de 11 amostras de diferentes tipos celulares de camundongo, representando células basais, células progenitoras e células maduras. A análise foi feita usando a plataforma Illumina HiSeq 2000.

1- Instale os pacotes necessarios:

# Instalando pacote limma (Análise de dados de expressão)

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

BiocManager::install("limma")

# Instalando pacote Glimma (Visualização interativa de resultados gerados no limma)

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

BiocManager::install("Glimma")

#Instalando pacote edgeR (Ferramentas para análise de expressão diferencial de RNA)

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

BiocManager::install("edgeR")

#Instalando pacote Mus.musculus (Informação para anotação de regiões em camundongo)

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

BiocManager::install("Mus.musculus")

#Instalando pacote R.utils

install.packages("R.utils")

2- Rode os pacotes:

library(limma)
library(Glimma)
library(edgeR)
library(Mus.musculus)
## Loading required package: AnnotationDbi
## Loading required package: stats4
## Loading required package: BiocGenerics
## Loading required package: parallel
## 
## Attaching package: 'BiocGenerics'
## The following objects are masked from 'package:parallel':
## 
##     clusterApply, clusterApplyLB, clusterCall, clusterEvalQ,
##     clusterExport, clusterMap, parApply, parCapply, parLapply,
##     parLapplyLB, parRapply, parSapply, parSapplyLB
## The following object is masked from 'package:limma':
## 
##     plotMA
## The following objects are masked from 'package:stats':
## 
##     IQR, mad, sd, var, xtabs
## The following objects are masked from 'package:base':
## 
##     anyDuplicated, append, as.data.frame, basename, cbind, colnames,
##     dirname, do.call, duplicated, eval, evalq, Filter, Find, get, grep,
##     grepl, intersect, is.unsorted, lapply, Map, mapply, match, mget,
##     order, paste, pmax, pmax.int, pmin, pmin.int, Position, rank,
##     rbind, Reduce, rownames, sapply, setdiff, sort, table, tapply,
##     union, unique, unsplit, which, which.max, which.min
## Loading required package: Biobase
## Welcome to Bioconductor
## 
##     Vignettes contain introductory material; view with
##     'browseVignettes()'. To cite Bioconductor, see
##     'citation("Biobase")', and for packages 'citation("pkgname")'.
## Loading required package: IRanges
## Loading required package: S4Vectors
## 
## Attaching package: 'S4Vectors'
## The following object is masked from 'package:base':
## 
##     expand.grid
## Loading required package: OrganismDbi
## Loading required package: GenomicFeatures
## Loading required package: GenomeInfoDb
## Loading required package: GenomicRanges
## Loading required package: GO.db
## 
## Loading required package: org.Mm.eg.db
## 
## Loading required package: TxDb.Mmusculus.UCSC.mm10.knownGene

3- Baixe e extraia os arquivos da aula:

#Definir um objeto com o link do arquivo a ser baixado
url <- "https://www.ncbi.nlm.nih.gov/geo/download/?acc=GSE63310&format=file"

#Baixar o arquivo
utils::download.file(url, destfile="GSE63310_RAW.tar", mode="wb") 

#Extrair os arquivos com dados de expressão 
utils::untar("GSE63310_RAW.tar", exdir = ".")

#Identificar os arquivos extraídos
files <- c("GSM1545535_10_6_5_11.txt", "GSM1545536_9_6_5_11.txt",
           "GSM1545538_purep53.txt", "GSM1545539_JMS8-2.txt", 
           "GSM1545540_JMS8-3.txt", "GSM1545541_JMS8-4.txt", 
           "GSM1545542_JMS8-5.txt", "GSM1545544_JMS9-P7c.txt",
           "GSM1545545_JMS9-P8c.txt")
for(i in paste(files, ".gz", sep=""))
  R.utils::gunzip(i, overwrite=TRUE)

#Construir uma lista com os arquivos extraídos
files <- c("GSM1545535_10_6_5_11.txt", "GSM1545536_9_6_5_11.txt", 
           "GSM1545538_purep53.txt", "GSM1545539_JMS8-2.txt", 
           "GSM1545540_JMS8-3.txt", "GSM1545541_JMS8-4.txt", 
           "GSM1545542_JMS8-5.txt", "GSM1545544_JMS9-P7c.txt", 
           "GSM1545545_JMS9-P8c.txt")
read.delim(files[1], nrow=5)
##    EntrezID GeneLength Count
## 1    497097       3634     1
## 2 100503874       3259     0
## 3 100038431       1634     0
## 4     19888       9747     0
## 5     20671       3130     1

4- Concatene os arquivos das diferentes amostras em um objeto do pacote edgeR:

x <- readDGE(files, columns=c(1,3))

#Use as seguintes funções para ver especificações interessantes do arquivo concatenado
class(x)
## [1] "DGEList"
## attr(,"package")
## [1] "edgeR"
dim(x)
## [1] 27179     9
head(x)
## An object of class "DGEList"
## $samples
##                                         files group lib.size norm.factors
## GSM1545535_10_6_5_11 GSM1545535_10_6_5_11.txt     1 32863052            1
## GSM1545536_9_6_5_11   GSM1545536_9_6_5_11.txt     1 35335491            1
## GSM1545538_purep53     GSM1545538_purep53.txt     1 57160817            1
## GSM1545539_JMS8-2       GSM1545539_JMS8-2.txt     1 51368625            1
## GSM1545540_JMS8-3       GSM1545540_JMS8-3.txt     1 75795034            1
## GSM1545541_JMS8-4       GSM1545541_JMS8-4.txt     1 60517657            1
## GSM1545542_JMS8-5       GSM1545542_JMS8-5.txt     1 55086324            1
## GSM1545544_JMS9-P7c   GSM1545544_JMS9-P7c.txt     1 21311068            1
## GSM1545545_JMS9-P8c   GSM1545545_JMS9-P8c.txt     1 19958838            1
## 
## $counts
##            Samples
## Tags        GSM1545535_10_6_5_11 GSM1545536_9_6_5_11 GSM1545538_purep53
##   497097                       1                   2                342
##   100503874                    0                   0                  5
##   100038431                    0                   0                  0
##   19888                        0                   1                  0
##   20671                        1                   1                 76
##   27395                      431                 771               1368
##            Samples
## Tags        GSM1545539_JMS8-2 GSM1545540_JMS8-3 GSM1545541_JMS8-4
##   497097                  526                 3                 3
##   100503874                 6                 0                 0
##   100038431                 0                 0                 0
##   19888                     0                17                 2
##   20671                    40                33                14
##   27395                  1268              1564               769
##            Samples
## Tags        GSM1545542_JMS8-5 GSM1545544_JMS9-P7c GSM1545545_JMS9-P8c
##   497097                  535                   2                   0
##   100503874                 5                   0                   0
##   100038431                 1                   0                   0
##   19888                     0                   1                   0
##   20671                    98                  18                   8
##   27395                   818                 468                 342

5- Estruture os nomes das amostras:

#Selecionar o componente "samples" do objeto "x"
x$samples
##                                         files group lib.size norm.factors
## GSM1545535_10_6_5_11 GSM1545535_10_6_5_11.txt     1 32863052            1
## GSM1545536_9_6_5_11   GSM1545536_9_6_5_11.txt     1 35335491            1
## GSM1545538_purep53     GSM1545538_purep53.txt     1 57160817            1
## GSM1545539_JMS8-2       GSM1545539_JMS8-2.txt     1 51368625            1
## GSM1545540_JMS8-3       GSM1545540_JMS8-3.txt     1 75795034            1
## GSM1545541_JMS8-4       GSM1545541_JMS8-4.txt     1 60517657            1
## GSM1545542_JMS8-5       GSM1545542_JMS8-5.txt     1 55086324            1
## GSM1545544_JMS9-P7c   GSM1545544_JMS9-P7c.txt     1 21311068            1
## GSM1545545_JMS9-P8c   GSM1545545_JMS9-P8c.txt     1 19958838            1
#Recuperar uma lista com os nomes das amostras envolvidas no estudo. Devemos remover o código do estudo que usa os primeiros 12 dígitos de cada linha
samplenames <- substring(colnames(x), 12, nchar(colnames(x)))
samplenames
## [1] "10_6_5_11" "9_6_5_11"  "purep53"   "JMS8-2"    "JMS8-3"    "JMS8-4"   
## [7] "JMS8-5"    "JMS9-P7c"  "JMS9-P8c"

6- Separe as amostras em grupos, para futuras comparacoes: obs: amostras de glandulas mamarias de ratos femea: basal, luminal progenitor (LP), mature luminal (LM).

#Substitutir os nomes das amostras originais pelos novos (excluindo o código do projeto)
colnames(x) <- samplenames
#Indicar as características de cada amostras, classificando em Basal, LP ou LM.
group <- as.factor(c("LP", "ML", "Basal", "Basal", "ML", "LP", 
                     "Basal", "ML", "LP"))
x$samples$group <- group
#Verificar o último passo
x$samples
##                              files group lib.size norm.factors
## 10_6_5_11 GSM1545535_10_6_5_11.txt    LP 32863052            1
## 9_6_5_11   GSM1545536_9_6_5_11.txt    ML 35335491            1
## purep53     GSM1545538_purep53.txt Basal 57160817            1
## JMS8-2       GSM1545539_JMS8-2.txt Basal 51368625            1
## JMS8-3       GSM1545540_JMS8-3.txt    ML 75795034            1
## JMS8-4       GSM1545541_JMS8-4.txt    LP 60517657            1
## JMS8-5       GSM1545542_JMS8-5.txt Basal 55086324            1
## JMS9-P7c   GSM1545544_JMS9-P7c.txt    ML 21311068            1
## JMS9-P8c   GSM1545545_JMS9-P8c.txt    LP 19958838            1

7- Inclua fatores de batch: Considera as lanes em que as amostras foram colocadas

lane <- as.factor(rep(c("L004","L006","L008"), c(3,4,2)))
x$samples$lane <- lane
x$samples
##                              files group lib.size norm.factors lane
## 10_6_5_11 GSM1545535_10_6_5_11.txt    LP 32863052            1 L004
## 9_6_5_11   GSM1545536_9_6_5_11.txt    ML 35335491            1 L004
## purep53     GSM1545538_purep53.txt Basal 57160817            1 L004
## JMS8-2       GSM1545539_JMS8-2.txt Basal 51368625            1 L006
## JMS8-3       GSM1545540_JMS8-3.txt    ML 75795034            1 L006
## JMS8-4       GSM1545541_JMS8-4.txt    LP 60517657            1 L006
## JMS8-5       GSM1545542_JMS8-5.txt Basal 55086324            1 L006
## JMS9-P7c   GSM1545544_JMS9-P7c.txt    ML 21311068            1 L008
## JMS9-P8c   GSM1545545_JMS9-P8c.txt    LP 19958838            1 L008

8- Inclua o símbolo e o cromossomo dos genes analisados em Mus musculus:

#Criar objeto "geneid" (geneID) com os nomes das linhas da tabela x
geneid <- rownames(x)
#Criar objeto "genes" com informação dos genes de Mus musculus (camundongo)
genes <- select(Mus.musculus, keys=geneid, columns=c("SYMBOL", "TXCHROM"), 
                keytype="ENTREZID")
## 'select()' returned 1:many mapping between keys and columns
head(genes)
##    ENTREZID  SYMBOL TXCHROM
## 1    497097    Xkr4    chr1
## 2 100503874 Gm19938    <NA>
## 3 100038431 Gm10568    <NA>
## 4     19888     Rp1    chr1
## 5     20671   Sox17    chr1
## 6     27395  Mrpl15    chr1

9- Exclua genes duplicados (se houver):

#Em R, o símbolo "!" significa negação.
genes <- genes[!duplicated(genes$ENTREZID),]
#Criar coluna chamada "genes" com informação dos genes de camundongo
x$genes <- genes
#Verificar a adição da coluna "genes"
x
## An object of class "DGEList"
## $samples
##                              files group lib.size norm.factors lane
## 10_6_5_11 GSM1545535_10_6_5_11.txt    LP 32863052            1 L004
## 9_6_5_11   GSM1545536_9_6_5_11.txt    ML 35335491            1 L004
## purep53     GSM1545538_purep53.txt Basal 57160817            1 L004
## JMS8-2       GSM1545539_JMS8-2.txt Basal 51368625            1 L006
## JMS8-3       GSM1545540_JMS8-3.txt    ML 75795034            1 L006
## JMS8-4       GSM1545541_JMS8-4.txt    LP 60517657            1 L006
## JMS8-5       GSM1545542_JMS8-5.txt Basal 55086324            1 L006
## JMS9-P7c   GSM1545544_JMS9-P7c.txt    ML 21311068            1 L008
## JMS9-P8c   GSM1545545_JMS9-P8c.txt    LP 19958838            1 L008
## 
## $counts
##            Samples
## Tags        10_6_5_11 9_6_5_11 purep53 JMS8-2 JMS8-3 JMS8-4 JMS8-5 JMS9-P7c
##   497097            1        2     342    526      3      3    535        2
##   100503874         0        0       5      6      0      0      5        0
##   100038431         0        0       0      0      0      0      1        0
##   19888             0        1       0      0     17      2      0        1
##   20671             1        1      76     40     33     14     98       18
##            Samples
## Tags        JMS9-P8c
##   497097           0
##   100503874        0
##   100038431        0
##   19888            0
##   20671            8
## 27174 more rows ...
## 
## $genes
##    ENTREZID  SYMBOL TXCHROM
## 1    497097    Xkr4    chr1
## 2 100503874 Gm19938    <NA>
## 3 100038431 Gm10568    <NA>
## 4     19888     Rp1    chr1
## 5     20671   Sox17    chr1
## 27174 more rows ...

10- Transformar o número de fragmentos contados (counts/reads):

Para que análises de expressão diferencial possam ser realizadas é importante que os valores crús de expressão gênica sejam transformados para que os resultados não sejam influenciados pela cobertura diferencial entre amostras.

Atualmente, os tipos de transformação mais utilizados são: counts per million (CPM), log2-counts per million (log-CPM) e fragments per kilobase of transcripts per million (FPKM). Obs: no caso do valor logado, uma correção é feita para que valores igual a zero não sejam logados

#Contagem por CPM
cpm <- cpm(x)
#Transformação a log-CPM
lcpm <- cpm(x, log=TRUE)
#Conferir a criação do objeto
head(cpm)
##            Samples
## Tags          10_6_5_11    9_6_5_11     purep53     JMS8-2      JMS8-3
##   497097     0.03042931  0.05660032  5.98311952 10.2397134  0.03958043
##   100503874  0.00000000  0.00000000  0.08747251  0.1168028  0.00000000
##   100038431  0.00000000  0.00000000  0.00000000  0.0000000  0.00000000
##   19888      0.00000000  0.02830016  0.00000000  0.0000000  0.22428910
##   20671      0.03042931  0.02830016  1.32958212  0.7786854  0.43538472
##   27395     13.11503265 21.81942229 23.93247808 24.6843282 20.63459725
##            Samples
## Tags             JMS8-4      JMS8-5    JMS9-P7c   JMS9-P8c
##   497097     0.04957231  9.71202943  0.09384795  0.0000000
##   100503874  0.00000000  0.09076663  0.00000000  0.0000000
##   100038431  0.00000000  0.01815333  0.00000000  0.0000000
##   19888      0.03304821  0.00000000  0.04692397  0.0000000
##   20671      0.23133744  1.77902595  0.84463153  0.4008249
##   27395     12.70703524 14.84942070 21.96041982 17.1352661
head(lcpm)
##            Samples
## Tags        10_6_5_11  9_6_5_11    purep53    JMS8-2    JMS8-3    JMS8-4
##   497097    -3.748623 -3.313765  2.5914607  3.362285 -3.581259 -3.418282
##   100503874 -4.507432 -4.507432 -2.9275280 -2.636931 -4.507432 -4.507432
##   100038431 -4.507432 -4.507432 -4.5074315 -4.507432 -4.507432 -4.507432
##   19888     -4.507432 -3.790514 -4.5074315 -4.507432 -1.898317 -3.698711
##   20671     -3.748623 -3.790514  0.4579085 -0.281645 -1.060843 -1.860900
##   27395      3.717978  4.450445  4.5835457  4.628091  4.370064  3.672539
##            Samples
## Tags            JMS8-5   JMS9-P7c  JMS9-P8c
##   497097     3.2862891 -2.8591947 -4.507432
##   100503874 -2.8918170 -4.5074315 -4.507432
##   100038431 -4.0087883 -4.5074315 -4.507432
##   19888     -4.5074315 -3.4597175 -4.507432
##   20671      0.8663089 -0.1703963 -1.168797
##   27395      3.8965999  4.4597191  4.102594

11- Remova genes com baixa expressão:

#Revisar quantos genes tem expressão igual a zero
table(rowSums(x$counts==0)==9)
## 
## FALSE  TRUE 
## 22026  5153
#Excluir linhas com baixa expressão
keep.exprs <- filterByExpr(x, group=group)
x <- x[keep.exprs,, keep.lib.sizes=FALSE]
dim(x)
## [1] 16624     9

12- Normalização dos valores:

A normalização dos dados é necessária para minimizar os potenciais efeitos de variação de batch. O método a seguir, leva em conta o tamanho de cada amostra para aplicar os fatores de normalização. Método: trimmed mean of M-values (TMM).

x <- calcNormFactors(x, method = "TMM")
#Conferir os valores já normalizados
x$samples$norm.factors
## [1] 0.8943956 1.0250186 1.0459005 1.0458455 1.0162707 0.9217132 0.9961959
## [8] 1.0861026 0.9839203

13- Prepare uma matriz de design e contrastes para as análises de expressão diferencial a partir de um modelo linear:

#Criar matriz de comparação
design <- model.matrix(~0+group+lane)
colnames(design) <- gsub("group", "", colnames(design))

#Verificar a matriz de comparação
design
##   Basal LP ML laneL006 laneL008
## 1     0  1  0        0        0
## 2     0  0  1        0        0
## 3     1  0  0        0        0
## 4     1  0  0        1        0
## 5     0  0  1        1        0
## 6     0  1  0        1        0
## 7     1  0  0        1        0
## 8     0  0  1        0        1
## 9     0  1  0        0        1
## attr(,"assign")
## [1] 1 1 1 2 2
## attr(,"contrasts")
## attr(,"contrasts")$group
## [1] "contr.treatment"
## 
## attr(,"contrasts")$lane
## [1] "contr.treatment"
#Aplicar função para fazer as comparações a partir dos grupos já definidos
contr.matrix <- makeContrasts(
  BasalvsLP = Basal-LP, 
  BasalvsML = Basal - ML, 
  LPvsML = LP - ML, 
  levels = colnames(design))

#Verificar a matriz de contrastes
contr.matrix
##           Contrasts
## Levels     BasalvsLP BasalvsML LPvsML
##   Basal            1         1      0
##   LP              -1         0      1
##   ML               0        -1     -1
##   laneL006         0         0      0
##   laneL008         0         0      0

14- Use a função voom do pacote limma para preparaãço de análise diferencial:

#Usar a função para executar a análise diferenciar entre os grupos, gerando gráfico
v <- voom(x, design, plot=TRUE)

#Avaliar o conteúdo do objeto "v"
v
## An object of class "EList"
## $genes
##   ENTREZID SYMBOL TXCHROM
## 1   497097   Xkr4    chr1
## 5    20671  Sox17    chr1
## 6    27395 Mrpl15    chr1
## 7    18777 Lypla1    chr1
## 9    21399  Tcea1    chr1
## 16619 more rows ...
## 
## $targets
##                              files group lib.size norm.factors lane
## 10_6_5_11 GSM1545535_10_6_5_11.txt    LP 29387429    0.8943956 L004
## 9_6_5_11   GSM1545536_9_6_5_11.txt    ML 36212498    1.0250186 L004
## purep53     GSM1545538_purep53.txt Basal 59771061    1.0459005 L004
## JMS8-2       GSM1545539_JMS8-2.txt Basal 53711278    1.0458455 L006
## JMS8-3       GSM1545540_JMS8-3.txt    ML 77015912    1.0162707 L006
## JMS8-4       GSM1545541_JMS8-4.txt    LP 55769890    0.9217132 L006
## JMS8-5       GSM1545542_JMS8-5.txt Basal 54863512    0.9961959 L006
## JMS9-P7c   GSM1545544_JMS9-P7c.txt    ML 23139691    1.0861026 L008
## JMS9-P8c   GSM1545545_JMS9-P8c.txt    LP 19634459    0.9839203 L008
## 
## $E
##         Samples
## Tags     10_6_5_11  9_6_5_11   purep53     JMS8-2    JMS8-3    JMS8-4    JMS8-5
##   497097 -4.292165 -3.856488 2.5185849  3.2931366 -4.459730 -3.994060 3.2869677
##   20671  -4.292165 -4.593453 0.3560126 -0.4073032 -1.200995 -1.943434 0.8442767
##   27395   3.876089  4.413107 4.5170045  4.5617546  4.344401  3.786363 3.8990635
##   18777   4.708774  5.571872 5.3964008  5.1623650  5.649355  5.081611 5.0602470
##   21399   4.785541  4.754537 5.3703795  5.1220551  4.869586  4.943840 5.1384776
##         Samples
## Tags       JMS9-P7c  JMS9-P8c
##   497097 -3.2103696 -5.295316
##   20671  -0.3228444 -1.207853
##   27395   4.3396075  4.124644
##   18777   5.7513694  5.142436
##   21399   5.0308985  4.979644
## 16619 more rows ...
## 
## $weights
##           [,1]      [,2]      [,3]      [,4]      [,5]      [,6]      [,7]
## [1,]  1.079413  1.332986 19.826915 20.273253  1.993686  1.395853 20.494977
## [2,]  1.170357  1.456380  4.804866  8.660025  3.612508  2.626870  8.760149
## [3,] 20.219073 25.573792 30.434759 28.528310 31.352260 25.743247 28.722497
## [4,] 26.947557 32.505933 33.583128 33.232125 34.231754 32.354158 33.334340
## [5,] 26.610864 28.501638 33.645479 33.206374 33.573492 31.996623 33.308490
##           [,8]      [,9]
## [1,]  1.107780  1.079413
## [2,]  3.211473  2.541942
## [3,] 21.200072 16.657930
## [4,] 30.348630 24.259801
## [5,] 25.171513 23.573305
## 16619 more rows ...
## 
## $design
##   Basal LP ML laneL006 laneL008
## 1     0  1  0        0        0
## 2     0  0  1        0        0
## 3     1  0  0        0        0
## 4     1  0  0        1        0
## 5     0  0  1        1        0
## 6     0  1  0        1        0
## 7     1  0  0        1        0
## 8     0  0  1        0        1
## 9     0  1  0        0        1
## attr(,"assign")
## [1] 1 1 1 2 2
## attr(,"contrasts")
## attr(,"contrasts")$group
## [1] "contr.treatment"
## 
## attr(,"contrasts")$lane
## [1] "contr.treatment"
#Aplicação de modelo linear para calcular estatísticos usando a moderação empírica de Bayes
vfit <- lmFit(v, design)
vfit <- contrasts.fit(vfit, contrasts=contr.matrix)
efit <- eBayes(vfit)

#Visualizar genes diferencialmente expressos
summary(decideTests(efit))
##        BasalvsLP BasalvsML LPvsML
## Down        4648      4927   3135
## NotSig      7113      7026  10972
## Up          4863      4671   2517
tfit <- treat(vfit, lfc=1)
dt <- decideTests(tfit)
summary(dt)
##        BasalvsLP BasalvsML LPvsML
## Down        1632      1777    224
## NotSig     12976     12790  16210
## Up          2016      2057    190
#Salvar arquivo com todos os resultados da análise
write.fit(tfit, dt, file="results.txt")

#Selecionar comparações específicas
basal.vs.lp <- topTreat(tfit, coef=1, n=Inf)
basal.vs.ml <- topTreat(tfit, coef=2, n=Inf)
head(basal.vs.lp)
##        ENTREZID SYMBOL TXCHROM     logFC  AveExpr         t      P.Value
## 12759     12759    Clu   chr14 -5.455444 8.856581 -33.55508 1.723731e-10
## 53624     53624  Cldn7   chr11 -5.527356 6.295437 -31.97515 2.576972e-10
## 242505   242505  Rasef    chr4 -5.935249 5.118259 -31.33407 3.081544e-10
## 67451     67451   Pkp2   chr16 -5.738665 4.419170 -29.85616 4.575686e-10
## 228543   228543   Rhov    chr2 -6.264208 5.485314 -29.07484 5.782844e-10
## 70350     70350  Basp1   chr15 -6.084738 5.247023 -28.26649 7.267694e-10
##           adj.P.Val
## 12759  1.707586e-06
## 53624  1.707586e-06
## 242505 1.707586e-06
## 67451  1.739242e-06
## 228543 1.739242e-06
## 70350  1.739242e-06
head(basal.vs.ml)
##        ENTREZID  SYMBOL TXCHROM     logFC  AveExpr         t      P.Value
## 242505   242505   Rasef    chr4 -6.534668 5.118259 -35.08270 1.226399e-10
## 53624     53624   Cldn7   chr11 -5.495888 6.295437 -31.68918 2.774140e-10
## 12521     12521    Cd82    chr2 -4.690834 7.069637 -31.43063 2.913572e-10
## 20661     20661   Sort1    chr3 -4.931660 6.704459 -30.70113 3.558720e-10
## 71740     71740 Nectin4    chr1 -5.581283 5.164967 -30.59775 3.718157e-10
## 12759     12759     Clu   chr14 -4.686826 8.856581 -27.95760 7.687544e-10
##           adj.P.Val
## 242505 1.236213e-06
## 53624  1.236213e-06
## 12521  1.236213e-06
## 20661  1.236213e-06
## 71740  1.236213e-06
## 12759  1.480434e-06