Chapter 4 Datos de SRP115956

Voy a usar datos de 10.1038/nm.4386 procesados con recount3. Por lo tanto, descargo los datos con los siguientes comandos:

# Cargar el paquete de recount3
library("recount3")
## Loading required package: SummarizedExperiment
## Loading required package: MatrixGenerics
## Loading required package: matrixStats
## 
## Attaching package: 'MatrixGenerics'
## The following objects are masked from 'package:matrixStats':
## 
##     colAlls, colAnyNAs, colAnys, colAvgsPerRowSet, colCollapse,
##     colCounts, colCummaxs, colCummins, colCumprods, colCumsums,
##     colDiffs, colIQRDiffs, colIQRs, colLogSumExps, colMadDiffs,
##     colMads, colMaxs, colMeans2, colMedians, colMins, colOrderStats,
##     colProds, colQuantiles, colRanges, colRanks, colSdDiffs, colSds,
##     colSums2, colTabulates, colVarDiffs, colVars, colWeightedMads,
##     colWeightedMeans, colWeightedMedians, colWeightedSds,
##     colWeightedVars, rowAlls, rowAnyNAs, rowAnys, rowAvgsPerColSet,
##     rowCollapse, rowCounts, rowCummaxs, rowCummins, rowCumprods,
##     rowCumsums, rowDiffs, rowIQRDiffs, rowIQRs, rowLogSumExps,
##     rowMadDiffs, rowMads, rowMaxs, rowMeans2, rowMedians, rowMins,
##     rowOrderStats, rowProds, rowQuantiles, rowRanges, rowRanks,
##     rowSdDiffs, rowSds, rowSums2, rowTabulates, rowVarDiffs, rowVars,
##     rowWeightedMads, rowWeightedMeans, rowWeightedMedians,
##     rowWeightedSds, rowWeightedVars
## Loading required package: GenomicRanges
## 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, 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.max, which.min
## Loading required package: S4Vectors
## 
## Attaching package: 'S4Vectors'
## The following object is masked from 'package:base':
## 
##     expand.grid
## Loading required package: IRanges
## Loading required package: GenomeInfoDb
## 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")'.
## 
## Attaching package: 'Biobase'
## The following object is masked from 'package:MatrixGenerics':
## 
##     rowMedians
## The following objects are masked from 'package:matrixStats':
## 
##     anyMissing, rowMedians
# Encontrar el proyecto de interes
proj_info <- subset(available_projects(),
    project == "SRP115956" & project_type == "data_sources")
## 2021-03-01 00:25:53 caching file sra.recount_project.MD.gz.
## 2021-03-01 00:25:54 caching file gtex.recount_project.MD.gz.
## 2021-03-01 00:25:56 caching file tcga.recount_project.MD.gz.
# Crear un objetio de tipo RangedSummarizedExperiment (RSE) con la informacion a nivel de genes
rse_gene <- create_rse(proj_info)
## 2021-03-01 00:26:05 downloading and reading the metadata.
## 2021-03-01 00:26:07 caching file sra.sra.SRP115956.MD.gz.
## 2021-03-01 00:26:08 caching file sra.recount_project.SRP115956.MD.gz.
## 2021-03-01 00:26:10 caching file sra.recount_qc.SRP115956.MD.gz.
## 2021-03-01 00:26:11 caching file sra.recount_seq_qc.SRP115956.MD.gz.
## 2021-03-01 00:26:13 caching file sra.recount_pred.SRP115956.MD.gz.
## 2021-03-01 00:26:15 downloading and reading the feature information.
## 2021-03-01 00:26:16 caching file human.gene_sums.G026.gtf.gz.
## 2021-03-01 00:26:17 downloading and reading the counts: 263 samples across 63856 features.
## 2021-03-01 00:26:19 caching file sra.gene_sums.SRP115956.G026.gz.
## 2021-03-01 00:26:25 construcing the RangedSummarizedExperiment (rse) object.
# Explorar el objeto RSE
rse_gene
## class: RangedSummarizedExperiment 
## dim: 63856 263 
## metadata(8): time_created recount3_version ... annotation recount3_url
## assays(1): raw_counts
## rownames(63856): ENSG00000278704.1 ENSG00000277400.1 ...
##   ENSG00000182484.15_PAR_Y ENSG00000227159.8_PAR_Y
## rowData names(10): source type ... havana_gene tag
## colnames(263): SRR5961814 SRR5961815 ... SRR5961998 SRR5961999
## colData names(175): rail_id external_id ...
##   recount_pred.curated.cell_line BigWigURL
# Guardar el objeto RSE original
rse_gene_original <- rse_gene

# Usar para restablecer el objeto RSE a su forma original
#rse_gene <- rse_gene_original

En resumen, los datos transcriptómicos estan representados por 63,856 genes de 263 muestras. Ahora, es necesario obtener el número de lecturas para cada una de las muestras, en lugar de los datos a nivel de nucleótidos. Además, con el siguiente código podemos explorar la información contenida en las categorias, que representan variables del experimento.

# Obtener los numeros de lecturas
assay(rse_gene, "counts") <- compute_read_counts(rse_gene)

# Facilitar el uso de la informacion del experimento
rse_gene <- expand_sra_attributes(rse_gene)

# Explorar los parametros del experimento y algunas de sus variables
colData(rse_gene)[,
    grepl("^sra_attribute", colnames(colData(rse_gene)))]
## DataFrame with 263 rows and 15 columns
##            sra_attribute.age sra_attribute.alcool sra_attribute.Cause_of_death
##                  <character>          <character>                  <character>
## SRR5961814                44                   NA                      Suicide
## SRR5961815                29                   no                      Suicide
## SRR5961816                68                  yes                      Suicide
## SRR5961817                39                   no                      Suicide
## SRR5961818                40                   NA                      Suicide
## ...                      ...                  ...                          ...
## SRR5961995                53                   no                      Suicide
## SRR5961996                39                   no                      Suicide
## SRR5961997                55                  yes                     Accident
## SRR5961998                38                   NA                      Suicide
## SRR5961999                25                   NA                      Suicide
##            sra_attribute.drug_type sra_attribute.drugs sra_attribute.gender
##                        <character>         <character>          <character>
## SRR5961814                      NA                  NA               female
## SRR5961815                      no                  no                 male
## SRR5961816                      no                  no                 male
## SRR5961817                      no                  no                 male
## SRR5961818                      NA                  NA               female
## ...                            ...                 ...                  ...
## SRR5961995                      no                  no                 male
## SRR5961996                      no                  no                 male
## SRR5961997                      no                  no                 male
## SRR5961998                      NA                  NA                 male
## SRR5961999                      NA                  NA               female
##            sra_attribute.medication_type sra_attribute.medication
##                              <character>              <character>
## SRR5961814                            AD                      yes
## SRR5961815                            no                       no
## SRR5961816                            NA                       NA
## SRR5961817                            AD                      yes
## SRR5961818                            AD                      yes
## ...                                  ...                      ...
## SRR5961995                            NA                       NA
## SRR5961996                            AD                      yes
## SRR5961997                            no                       no
## SRR5961998                            NA                       NA
## SRR5961999                            NA                       NA
##            sra_attribute.ph sra_attribute.phenotype sra_attribute.pmi
##                 <character>             <character>       <character>
## SRR5961814             6.73                    CTRL              29.5
## SRR5961815             6.96                     MDD                27
## SRR5961816             6.93                     MDD                32
## SRR5961817             6.37                     MDD              18.5
## SRR5961818             6.81                     MDD              49.5
## ...                     ...                     ...               ...
## SRR5961995             6.91                     MDD              33.5
## SRR5961996                6                     MDD                19
## SRR5961997             6.75                    CTRL                24
## SRR5961998             6.86                     MDD                30
## SRR5961999             6.73                     MDD                20
##            sra_attribute.rin sra_attribute.smoking sra_attribute.source_name
##                  <character>           <character>               <character>
## SRR5961814               7.3                    NA          postmortem brain
## SRR5961815               5.7           yes (heavy)          postmortem brain
## SRR5961816               8.8           yes (heavy)          postmortem brain
## SRR5961817               6.8                    no          postmortem brain
## SRR5961818               7.8                    NA          postmortem brain
## ...                      ...                   ...                       ...
## SRR5961995               7.7                    NA          postmortem brain
## SRR5961996               4.9           yes (heavy)          postmortem brain
## SRR5961997               4.4                    NA          postmortem brain
## SRR5961998               7.7                    NA          postmortem brain
## SRR5961999               8.1                    NA          postmortem brain
##              sra_attribute.tissue
##                       <character>
## SRR5961814 Orbitofrontal (OFC; ..
## SRR5961815 Orbitofrontal (OFC; ..
## SRR5961816 Orbitofrontal (OFC; ..
## SRR5961817 Orbitofrontal (OFC; ..
## SRR5961818 Orbitofrontal (OFC; ..
## ...                           ...
## SRR5961995 Nucleus Accumbens (N..
## SRR5961996 Nucleus Accumbens (N..
## SRR5961997 Nucleus Accumbens (N..
## SRR5961998 Nucleus Accumbens (N..
## SRR5961999 Nucleus Accumbens (N..

De estas categorias, elegí como variable categórica el fenotipo, el cual se refiere a si el individuo presentaba el MDD o no. Además, me pareció interesante analizar el género de los individuos, ya que precisamente el estudio encontró, en esta categoría, diferencias significativas. Por último, la variable que tambien me llamó la atención es la causa de muerte, ya que algunos de los individuos se suicidaron, y esto podría tener una fuerte relación con el transtorno.

Los datos de estas variables, junto con el de las variables numéricas de edad del individuo y el número de integridad del RNA (RIN por sus siglas en inglés), deben ser corregidas como se muestra en el siguiente código. A continuación, presento el resumen de algunas de las variables, incluyendo las de mi interés.

# Pasar de character a nuemric o factor
rse_gene$sra_attribute.phenotype <- factor(rse_gene$sra_attribute.phenotype)
rse_gene$sra_attribute.gender <- factor(rse_gene$sra_attribute.gender)
rse_gene$sra_attribute.age <- as.numeric(rse_gene$sra_attribute.age)
rse_gene$sra_attribute.rin <- as.numeric(rse_gene$sra_attribute.rin)

# Resumen de las variables de interes
summary(as.data.frame(colData(rse_gene)[,
    grepl("^sra_attribute.[phenotype|gender|age|rin]", colnames(colData(rse_gene)))]))
##  sra_attribute.age sra_attribute.alcool sra_attribute.drug_type
##  Min.   :19.00     Length:263           Length:263             
##  1st Qu.:38.00     Class :character     Class :character       
##  Median :46.00     Mode  :character     Mode  :character       
##  Mean   :46.63                                                 
##  3rd Qu.:55.00                                                 
##  Max.   :82.00                                                 
##  sra_attribute.drugs sra_attribute.gender sra_attribute.ph  
##  Length:263          female:122           Length:263        
##  Class :character    male  :141           Class :character  
##  Mode  :character                         Mode  :character  
##                                                             
##                                                             
##                                                             
##  sra_attribute.phenotype sra_attribute.pmi  sra_attribute.rin
##  CTRL:122                Length:263         Min.   :4.300    
##  MDD :141                Class :character   1st Qu.:6.400    
##                          Mode  :character   Median :7.300    
##                                             Mean   :7.108    
##                                             3rd Qu.:7.700    
##                                             Max.   :9.400    
##  sra_attribute.tissue
##  Length:263          
##  Class :character    
##  Mode  :character    
##                      
##                      
## 

La categoría de causa de muerte no es categórica, ya que hay múltiples opciones en ella. Por lo tanto, las voy a asignar como suicidio o no suicidio. Esta clasificación si es apropiada, ya que solo hay dos opciones.

# Encontraremos diferencias entre muestra prenatalas vs postnatales
rse_gene$death <- factor(ifelse(rse_gene$sra_attribute.Cause_of_death == "Suicide", "suicide", "no suicide"))
table(rse_gene$death)
## 
## no suicide    suicide 
##         60        203

Con base en las variables de control de calidad se divide el número de lecturas asignadas a los genes entre el número de lecturas totales, lo cual resulta en la proporción de lecturas asignadas a los genes y facilita la identificación de muestras malas.

# Ver el resumen de los niveles de expresion    
rse_gene$assigned_gene_prop <- rse_gene$recount_qc.gene_fc_count_all.assigned / rse_gene$recount_qc.gene_fc_count_all.total
summary(rse_gene$assigned_gene_prop)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##  0.2915  0.3704  0.3985  0.4060  0.4329  0.5841

Una forma útil para interpretarlo es mediante una gráfica RIN como la siguiente. En ella se puede observar que algunas muestras no son lo suficientemente buenas, por lo que se deberá considerar para la limpieza de datos.

# Graficar los niveles de expresion RIN
with(colData(rse_gene), plot(assigned_gene_prop, sra_attribute.rin))
abline(v=0.37,col = "red")

Por último, analicé como varían los resultados entre los dos fenotipos usando el siguiente código. Al parecer no hay mucha diferencia entre ambas condiciones.

# Checar si hay una diferencia entre los grupos
with(colData(rse_gene), tapply(assigned_gene_prop, sra_attribute.phenotype, summary))
## $CTRL
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##  0.3127  0.3666  0.3965  0.4032  0.4399  0.5820 
## 
## $MDD
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##  0.2915  0.3755  0.4005  0.4083  0.4236  0.5841