---
title: "Grupos de genes"  
author: "Guillermo Ayala Gallego"  
date: "`r Sys.Date()`"  
address: Departamento de Estadística e I.O. Universidad de Valencia  
format: 
   revealjs:  
      scrollable: true
      echo: true
      embed-resources: true  
   pdf:
       toc: true
       number-sections: false
       colorlinks: true
---


## GSEABase::GeneSet

- La opción más simple sería definirnos nuestro propio conjunto de genes.

```{r}
#| label: gs1
data(gse20986,package="tamidata")
```

- Supongamos que queremos construir un conjunto de genes formado por aquellos
que ocupan las filas de la 345 a la 405.

```{r}
#| label: gs2
#| results: false
pacman::p_load(GSEABase)
(egs = GeneSet(gse20986[345:405, ], setName = "Burjasot"))
```

## ...  

- Los identificadores son

```{r}
#| label: gs3
head(geneIds(egs))
```

- Podemos tener más información con

```{r}
#| label: gs4
details(egs)
```
##

- ¿Y la correspondencia con otros identificadores?

```{r}
#| label: gs5
#| eval: false
egs0 = mapIdentifiers(egs, EntrezIdentifier(), verbose = TRUE)
geneIds(egs0)
```

## GSEABase::GeneSetCollection()

- Definimos una colección de grupos definida utilizando GO.

```{r}
#| label: gs6
#| eval: false
gsc = GeneSetCollection(gse20986, setType = GOCollection())
```



```{r}
#| label: gs7
#| echo: false
dirTamiData = "/home/gag/ownCloud/alltami/tami-data/"
load(paste(dirTamiData,"gse20986.gsc_AffyID.rda",sep=""))
class(gsc)
names(gsc)
length(gsc)
L0 = sapply(geneIds(gsc),length)
summary(L0)
sum(L0 == 1)
sum(L0 >= 5 & L0<= 100)
```

- El conjunto con identificador GO "GO:0000122" es 

```{r}
#| label: gs8
gsc[["GO:0000122"]]
```

## ...  


- Podemos convertir estos mismos conjuntos a identificadores 
ENTREZ.

```{r}
#| label: gs9
#| eval: false
gsc = mapIdentifiers(gsc, EntrezIdentifier())
```

```{r}
#| label: gs10
#| echo: false
load(paste(dirTamiData,"gse20986.gsc_ENTREZID.rda",sep=""))
```
- Por ejemplo

```{r}
#| label: gs11
gsc[["GO:0000122"]]
```
- Los identificadores son

```{r}
#| label: gs12
head(geneIds(gsc[["GO:0000122"]]))
```

## ...

- ¿Cuántos elementos tiene cada uno de los conjuntos que hemos
construido?

```{r}
#| label: gs13
head(sapply(geneIds(gsc), length))
summary(sapply(geneIds(gsc), length))
length(gsc)
```

- Podemos quedarnos con los dos grupos que tengan un cardinal mínimo,
por ejemplo, por encima de 10.

```{r}
#| label: gs14
gsc.filt = gsc[sapply(geneIds(gsc), length) > 10]
```

## Grupos con levadura  

```{r}
#| label: gs15
#| eval: false
library(org.Sc.sgd.db)
frame = toTable(org.Sc.sgdGO)
goframeData = data.frame(frame$go_id, frame$Evidence, frame$systematic_name)
goFrame = GOFrame(goframeData, organism = "Saccharomyces cerevisiae")
goAllFrame = GOAllFrame(goFrame)
gscSc = GeneSetCollection(goAllFrame, setType = GOCollection())
save(gscSc,file=paste0(dirTamiData,"gscSc.rda"))
```

```{r}
#| label: gs16
load(paste0(dirTamiData,"gscSc.rda"))
```


```{r}
#| label: gs17
gscSc.l = sapply(geneIds(gscSc),length)
summary(gscSc.l)
```


```{r}
#| label: gs17
geneIds(gscSc[[1]])
```
