mapeo.Rmd
6.59 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
---
title: "GH"
author: "EQUIPO 5"
date: "22/4/2020"
output: html_document
---
Este script tiene la finalidad de obtener la anotacion en el genoma de Homo sapiens de aquellas coordenadas que corresponden a los genes de interes.
```{r}
#se mandan a llamar a todas las librerias a utilizar
library(Biobase)
library(IRanges)
library(rtracklayer)
library(GenomicRanges)
library(Rsamtools)
library(ggplot2)
```
#Obtenemos la anotación de un genoma
Para tener con que comparar el genoma que vamos a analizar, es necesario tener las coordenadas y la cadena en la que se encuentra las regiones del genoma anotadas, para esto ensembl tiene estos archivos.
```{r}
#se descarga el genoma de referencia con sus anotaciones, en este caso fueron obtenidos por ensembl100
setwd("/home/aschafer/Documentos/Genomicas/Semestre_4/Genomica_humana/Enfermedades_monogenicas")
homoS = import("Homo_sapiens.GRCh38.100.gff3.gz")
head(homoS)
```
```{r}
#visualización de los datos que tiene el genoma de referencia.
table(mcols(homoS)$type)
```
```{r}
#nos quedamos solo con las columnas que deseamos.
mcols(homoS) = mcols(homoS)[,c("source","type","ID","Name")]
```
#Importamos nuestros datos a analizar
Despues de haber trabajado nuestros datos con bowtie, utilizamos el archivo resultante .bam
```{r}
#cargamos nuestros datos de las enfermedades monogenicas.
bamFile <- "/home/aschafer/Documentos/Genomicas/Semestre_4/Genomica_humana/Enfermedades_monogenicas/sequences_aligned_A_sort.bam"
informacion <- c("rname", "strand", "pos", "qwidth")
informacion <- ScanBamParam(what = informacion)
bam <- scanBam(bamFile, param = informacion)
lapply(bam, names)
```
```{r}
#Construimos un GRanges
mapGR <- GRanges(seqnames = bam[[1]]$rname, ranges = IRanges(start = bam[[1]]$pos, width = bam[[1]]$qwidth), strand = bam[[1]]$strand)
head(mapGR)
```
#Contamos mapeos dentro de las anotaciones
```{r}
#buscamos en que regiones se traslapan
traslapados <- countOverlaps(homoS, mapGR)
typeCounts <- aggregate(traslapados, by = list("type"=mcols(homoS)$type), sum)
head(typeCounts)
```
```{r}
#vamos a graficar todos los resultados obtenidos, pero para eso vamos a juntas todos aquellos que tengan menos de 1000 juntos.
valMin <- 1000
Cuentas <- typeCounts[typeCounts$x > valMin,]
Cuentas <- Cuentas[order(Cuentas$x),]
Cuentas_totales <- rbind(data.frame("type" = "other", "x" = sum(typeCounts$x[typeCounts$x <= valMin])), Cuentas)
porcentaje <- round(100*Cuentas_totales$x/sum(Cuentas_totales$x), 1)
#png(filename="/home/aschafer/Documentos/Genomicas/Semestre_4/Genomica_humana/Enfermedades_monogenicas/Grafica1.png", width = 550, height = 400)
pie(Cuentas_totales$x, labels = paste(porcentaje, "%", sep = ""), col = rev(rainbow(nrow(Cuentas_totales))), main="Porcentaje de lecturas totales alineadas por tipo", cex=0.9)
legend("topleft", legend = Cuentas_totales$type, cex = 0.8, fill = rev(rainbow(nrow(Cuentas_totales))))
#dev.off()
```
Debido que vimos que los tipos: cromosoma, región biológica, exon, mRNA, gen, cinco prima UTR. No eran tan significativos, decidimos eliminarlos para los próximos análisis.
```{r}
#graficamos ahora los nuevos datos, pero ahora en lugar de utilizar 1000 como el valor minimo, utilizamos 100.
nuevosDatos <- typeCounts[typeCounts$type != "chromosome" & typeCounts$type != "biological_region" & typeCounts$type != "exon" & typeCounts$type != "mRNA" & typeCounts$type != "gene" & typeCounts$type != "five_prime_UTR",]
colores <- c("violetred1", "dodgerblue4", "green2", "yellow", "red", "steelblue1")
valMin2 <- 100
nuevas_cuentas <- nuevosDatos[nuevosDatos$x > valMin2,]
nuevas_cuentas <- nuevas_cuentas[order(nuevas_cuentas$x),]
nuevas_cuentas_totales <- rbind(data.frame("type"="other", "x" = sum(nuevosDatos$x[nuevosDatos$x <= valMin2])), nuevas_cuentas)
porcentaje2 <- round(100*nuevas_cuentas_totales$x/sum(nuevas_cuentas_totales$x), 1)
#png(filename="/home/aschafer/Documentos/Genomicas/Semestre_4/Genomica_humana/Enfermedades_monogenicas/Grafica2.png", width = 550, height = 400)
pie(nuevas_cuentas_totales$x, labels = paste(porcentaje2, "%", sep = ""), cex = 1, main = "Porcentaje de lecturas alineadas por tipo seleccionados", col = colores)
legend("topleft", legend = nuevas_cuentas_totales$type, cex = 0.9, fill = colores)
#dev.off()
```
```{r}
# Quitamos las categorías de las antocaciones que son redundantes a la clasificación codificante-no codificante y graficamos ahora los nuevos datos, pero ahora en lugar de utilizar 1000 como el valor minimo, utilizamos 100.
nuevosDatos <- typeCounts[-c(1,2,6,9,11,13,16,24),]
colores <- c("violetred1", "orangered1", "dodgerblue4", "green2", "yellow", "purple", "red", "steelblue1")
valMin2 <- 100
nuevas_cuentas <- nuevosDatos[nuevosDatos$x > valMin2,]
nuevas_cuentas <- nuevas_cuentas[order(nuevas_cuentas$x),]
nuevas_cuentas_totales <- rbind(data.frame("type"="other", "x" = sum(nuevosDatos$x[nuevosDatos$x <= valMin2])), nuevas_cuentas)
porcentaje2 <- round(100*nuevas_cuentas_totales$x/sum(nuevas_cuentas_totales$x), 1)
total <- sum(nuevosDatos$x) #sacamos el total de lecturas
#establecer el número de lecturas que pertenecen a categorías codificantes
codificante <- nuevosDatos[c(3,6,7),]
codificante <- sum(codificante$x)
#ahora para las no codificantes
no_codificante <- total - codificante
datos_finales<-data.frame("type" = c("codificante", "no codificante"), "x" = c(codificante, no_codificante))
colores2<-c("slateblue3", "green2")
porcentaje3 <- round(100*datos_finales$x/sum(datos_finales$x), 1)
#png(filename="/home/aschafer/Documentos/Genomicas/Semestre_4/Genomica_humana/Enfermedades_monogenicas/Grafica2.png", width = 550, height = 400)
#par(mfrow = c(1,2))
pie(nuevas_cuentas_totales$x, labels = paste(porcentaje2, "%", sep = ""), cex = 0.9, main = "Porcentaje de cada clasificación", col = colores, cex.main = 1)
legend("bottomleft", legend = nuevas_cuentas_totales$type, cex = 1, fill = colores )
#dev.off()
```
Datos recuperados por OMIM
```{r}
no_coding <- sum(20, 15, 9, 7, 4, 3, 2, 2, 2, 2, 1, 1, 1, 1, 1, 228, 144)
protein_coding <- 14886
OMIM<- data.frame("type" = c("Regiones codificantes", "Regiones no codificantes"), "x" = c(protein_coding, no_coding))
```
```{r}
#png(filename="/home/aschafer/Documentos/Genomicas/Semestre_4/Genomica_humana/Enfermedades_monogenicas/Grafica4.png", width = 550, height = 400)
OMIM$x
porcentaje4 <- round(100*as.numeric(OMIM$x)/sum(as.numeric(OMIM$x)), 1)
pie(as.numeric(OMIM$x), labels = paste(porcentaje4, "%", sep = ""), cex = 0.9, main = "Porcentaje de regiones codificantes y no codificantes de acuerdo a OMIM y a DISEASE", col = colores2, cex.main = 0.95)
legend("bottomleft", legend = OMIM$type, cex = 0.8, fill = colores2)
#dev.off()
```