Analiza porównawcza DE

library(DESeq2)
## Loading required package: S4Vectors
## 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 objects are masked from 'package:stats':
## 
##     IQR, mad, sd, var, xtabs
## The following objects are masked from 'package:base':
## 
##     anyDuplicated, append, as.data.frame, cbind, colMeans,
##     colnames, colSums, do.call, duplicated, eval, evalq, Filter,
##     Find, get, grep, grepl, intersect, is.unsorted, lapply,
##     lengths, Map, mapply, match, mget, order, paste, pmax,
##     pmax.int, pmin, pmin.int, Position, rank, rbind, Reduce,
##     rowMeans, rownames, rowSums, sapply, setdiff, sort, table,
##     tapply, union, unique, unsplit, which, which.max, which.min
## 
## Attaching package: 'S4Vectors'
## The following object is masked from 'package:base':
## 
##     expand.grid
## Loading required package: IRanges
## Loading required package: GenomicRanges
## Loading required package: GenomeInfoDb
## Loading required package: SummarizedExperiment
## 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: DelayedArray
## Loading required package: matrixStats
## 
## Attaching package: 'matrixStats'
## The following objects are masked from 'package:Biobase':
## 
##     anyMissing, rowMedians
## 
## Attaching package: 'DelayedArray'
## The following objects are masked from 'package:matrixStats':
## 
##     colMaxs, colMins, colRanges, rowMaxs, rowMins, rowRanges
## The following object is masked from 'package:base':
## 
##     apply
countData <- read.csv("~/Genomika/griffith/simple_counts.txt", sep = "\t", skip = 1, row.names = 1)
samples = names(countData)
cond_1 = rep("cond1", 3)
cond_2 = rep("cond2", 3)
condition = factor(c(cond_1, cond_2))
colData = data.frame(samples=samples, condition=condition)
dds = DESeqDataSetFromMatrix(countData=countData, colData=colData, design = ~condition)
# DE
dds = DESeq(dds)
## estimating size factors
## estimating dispersions
## gene-wise dispersion estimates
## mean-dispersion relationship
## final dispersion estimates
## fitting model and testing
# wyniki
res = results(dds)

Gene ontology - GO terms

to ważna inicjatywa bioinformatyczna mająca na celu ujednolicenie reprezentacji cech genów i produktów genowych we wszystkich gatunkach. Dokładniej, projekt ma na celu:

  1. utrzymanie i rozwój kontrolowanego słownika cech genowych i produktów genowych;
  2. opisywać geny i produkty genów oraz asymilować i rozpowszechniać dane opisowe; oraz
  3. zapewniają narzędzia ułatwiające dostęp do wszystkich aspektów danych dostarczanych przez projekt oraz umożliwiają funkcjonalną interpretację danych eksperymentalnych za pomocą GO, na przykład "analizy wzbogacania" (ang. enrichment analysis).

Blast2GO

blast2go

Blast2GO to platforma bioinformatyczna do analizy funkcjonalnej zbiorów danych genomicznych. Umożliwia analizowanie i wizualizację nowo zsekwencjonowanych genomów poprzez połączenie najnowocześniejszych metodologii, standardowych zasobów i algorytmów. Blast2GO pozwala uzyskać biologiczne spostrzeżenia szybko i łatwo - nawet dla zupełnie nowych genomów. Umożliwia adnotację funtionalną w jednym programie bioinformatycznym, w tym analizę GO. Jego główną funkcją jest przypisywanie informacji o biologicznej funkcji sekwencji genów lub białek poprzez wykorzystanie różnorodnych zasobów publicznych, takich jak algorytmy porównania i bazy danych. Oprogramowanie identyfikuje już scharakteryzowane podobne sekwencje i przenosi swoje etykiety funkcjonalne do sekwencji niescharakteryzowanych. W ten sposób można uzyskać informacje funkcjonalne dla całego zestawu danych znacznie szybciej niż poprzez eksperymenty. Oprócz zwykłej charakterystyki sekwencji funkcjonalnej "in-silico", pakiet oprogramowania ma wiele innych funkcji, w tym połączone wizualizacje danych i procedury analizy statystycznej. Te cechy pomagają biologowi molekularnemu w procesie funkcjonalnej interpretacji eksperymentalnych zbiorów danych. Oprogramowanie zostało opracowane w języku JAVA, jest niezależne od platformy. Wersja podstawowa jest całkowicie bezpłatna dla społeczności naukowej (wyłącznie non-profit).

Zadanie1
Pobrać plik blast2go_annot_20180418_2116a.annot i zmienić to tak aby odpowiadał schematowi "genID GOID, GOID,....,GOID"

library(topGO)
## Loading required package: graph
## Loading required package: GO.db
## Loading required package: AnnotationDbi
## 
## Loading required package: SparseM
## 
## Attaching package: 'SparseM'
## The following object is masked from 'package:base':
## 
##     backsolve
## 
## groupGOTerms: 	GOBPTerm, GOMFTerm, GOCCTerm environments built.
## 
## Attaching package: 'topGO'
## The following object is masked from 'package:IRanges':
## 
##     members
# wczytujemy dane (GO)
geneID2GO <- readMappings("~/b2gWorkspace/GO_data.txt")
# wyświetlamy dane
str(head(geneID2GO))
## List of 6
##  $ AT1G01010.1: chr [1:26] "GO:0009791" "GO:0044212" "GO:0043565" "GO:0009736" ...
##  $ AT1G01020.1: chr [1:7] "GO:0005794" "GO:0016021" "GO:0032541" "GO:0006665" ...
##  $ AT1G01020.2: chr [1:7] "GO:0005794" "GO:0016021" "GO:0032541" "GO:0006665" ...
##  $ AT1G01020.3: chr [1:7] "GO:0005794" "GO:0016021" "GO:0032541" "GO:0006665" ...
##  $ AT1G01020.4: chr [1:7] "GO:0005794" "GO:0016021" "GO:0032541" "GO:0006665" ...
##  $ AT1G01020.5: chr [1:7] "GO:0005794" "GO:0016021" "GO:0032541" "GO:0006665" ...
# tworzymy "losowy zestaw genów" - geny, które nas interesują
geneNames <- names(geneID2GO)
myInterestingGenes <- sample(geneNames, length(geneNames) / 10)
geneList <- factor(as.integer(geneNames %in% myInterestingGenes))
names(geneList) <- geneNames
str(geneList)
##  Factor w/ 2 levels "0","1": 2 1 1 1 1 1 1 1 1 1 ...
##  - attr(*, "names")= chr [1:104] "AT1G01010.1" "AT1G01020.1" "AT1G01020.2" "AT1G01020.3" ...
# tworzymy obiekt GOdata
GOdata <- new("topGOdata", ontology = "MF", allGenes = geneList,
              annot = annFUN.gene2GO, gene2GO = geneID2GO)
## 
## Building most specific GOs .....
## 	( 72 GO terms found. )
## 
## Build GO DAG topology ..........
## 	( 216 GO terms and 279 relations. )
## 
## Annotating nodes ...............
## 	( 81 genes annotated to the GO terms. )
GOdata
## 
## ------------------------- topGOdata object -------------------------
## 
##  Description:
##    -   
## 
##  Ontology:
##    -  MF 
## 
##  104 available genes (all genes from the array):
##    - symbol:  AT1G01010.1 AT1G01020.1 AT1G01020.2 AT1G01020.3 AT1G01020.4  ...
##    - 10  significant genes. 
## 
##  81 feasible genes (genes that can be used in the analysis):
##    - symbol:  AT1G01010.1 AT1G01030.1 AT1G01030.2 AT1G01040.1 AT1G01040.2  ...
##    - 9  significant genes. 
## 
##  GO graph (nodes with at least  1  genes):
##    - a graph with directed edges
##    - number of nodes = 216 
##    - number of edges = 279 
## 
## ------------------------- topGOdata object -------------------------