Bioconductor es simplemente una serie de paquetes para hacer varios tipos de análisis de relevancia biológica dentro de R. Pueden leer más sobre este proyecto en: www.bioconductor.org
En esta sesión veremos un paquete de Biocondudctor dedicado a la manipulación de secuencias biológicas. Biostrings está diseñado para poder trabajar con cadenas de caracteres muy largos (secuencias de DNA o RNA) de una manera sencilla y rápida.
Es posible que en sus computadoras aún no esté instalado Bioconductor. Para verificarlo pueden hacer lo siguiente:
library(Biobase)Si les marca un error, deben terminar el resto de esta sección para instalarlo.
Para instalar Bioconductor, deben hacerlo dentro de R. Pueden consultar la descripción completa del proceso de instalación en la página de Bioconductor: install
A partir de la versión 3.5.0 de R, la instalación de Bioconductor cambió. Si tienen una versión anterior, lo siguiente debe bastar:
source("http://bioconductor.org/biocLite.R")
biocLite()
biocLite("Biostrings") # Para instalar un paquete en particularPara las versiones más nuevas de R (de la 3.5.0 en adelante), pueden instalar Bioconductor de la siguiente manera:
if (!requireNamespace("BiocManager"))
install.packages("BiocManager")
BiocManager::install()
BiocManager::install("Biostrings") # Para instalar un paquete en particularEsto puede tomar algo de tiempo, dependiendo de la velocidad de conexión al internet.
La lista completa de paquetes que pueden instalar de la versión más reciente de Bioconductor está disponible en: packages
Cabe mencionar que las versiones de Bioconductor están forzosamente ligadas a ciertas versiones de R. Por lo tanto, para tener la versión más nueva de un paquete de Bioconductor hay que primero instalar la versión más nueva de R.
Empecemos a ver que nos ofrece Biostrings. Carguemos el paquete, incluyendo el paquete base de Bioconductor:
library(Biobase)
library(Biostrings)Biostrings define una nueva clase de objeto XString, el cual puede ser de tipo BString (cadenas genéricas), DNAString, RNAString o AAString. Veamos como trabajar con un DNAString.
dnaSeq = DNAString("TTCAGATCTAGTTCGTGTGTGACTGATGATCTGTCACACGTTTTTCTGATCTTCTGACTAGTCGAT")
dnaSeq## 66-letter "DNAString" instance
## seq: TTCAGATCTAGTTCGTGTGTGACTGATGATCTGTCACACGTTTTTCTGATCTTCTGACTAGTCGAT
class(dnaSeq)## [1] "DNAString"
## attr(,"package")
## [1] "Biostrings"
Podemos accesar a parte de la secuencia utilizando [ ]:
dnaSeq[4]## 1-letter "DNAString" instance
## seq: A
dnaSeq[4:10]## 7-letter "DNAString" instance
## seq: AGATCTA
Existen muchas funciones definidas (o re-definidas) para trabajar con objetos tipo XString:
length(dnaSeq)## [1] 66
reverseComplement(dnaSeq)## 66-letter "DNAString" instance
## seq: ATCGACTAGTCAGAAGATCAGAAAAACGTGTGACAGATCATCAGTCACACACGAACTAGATCTGAA
alphabetFrequency(dnaSeq)## A C G T M R W S Y K V H D B N - + .
## 12 13 14 27 0 0 0 0 0 0 0 0 0 0 0 0 0 0
También podemos leer archivos FASTA directamente. Para este ejercicio pueden descargar un archivo que contiene las secuencias de algunos genes de la bacteria E. coli: ecoliORFs.fa
Procuren guardar el archivo en la carpeta donde están trabajando con R.
dnaSeqs = readDNAStringSet("ecoliORFs.fa")
dnaSeqs## A DNAStringSet instance of length 11
## width seq names
## [1] 66 ATGAAACGCATTAGCACCAC...CAGGTAACGGTGCGGGCTGA thrL
## [2] 2463 ATGCGAGTGTTGAAGTTCGG...CATGGAAGTTAGGAGTCTGA thrA
## [3] 933 ATGGTTAAAGTTTATGCCCC...CACGAGTACTGGAAAACTAA thrB
## [4] 1287 ATGAAACTCTACAATCTGAA...TGATGATGAATCATCAGTAA thrC
## [5] 504 ATGCCGGGCAACAGCCCGCA...ACATAAAACACTATCAATAA insB
## ... ... ...
## [7] 606 ATGGCAGAGAAATTTATCAA...AACCTGCGTTTATGAATTAA leuD
## [8] 1401 ATGGCTAAGACGTTATACGA...ACATTCGCAACATTAAATAA leuC
## [9] 1092 ATGTCGAAGAATTACCATAT...ATGTAGCAGAAGGGGTGTAA leuB
## [10] 1572 ATGAGCCAGCAAGTCATTAT...ACAACAAGGAAACCGTGTGA leuA
## [11] 87 ATGACTCACATCGTTCGCTT...TGAGCGGCATCCAGCATTAA leuL
Un DNAStringSet es simplement una lista de objetos DNAString. Algunas funciones útiles para manipularlas son las siguientes (consulten la ayuda si quieren saber más):
length(dnaSeqs)## [1] 11
names(dnaSeqs)## [1] "thrL" "thrA" "thrB" "thrC" "insB" "insA" "leuD" "leuC" "leuB" "leuA"
## [11] "leuL"
width(dnaSeqs)## [1] 66 2463 933 1287 504 276 606 1401 1092 1572 87
subseq(dnaSeqs,11,30)## A DNAStringSet instance of length 11
## width seq names
## [1] 20 TTAGCACCACCATTACCACC thrL
## [2] 20 TGAAGTTCGGCGGTACATCA thrA
## [3] 20 TTTATGCCCCGGCTTCCAGT thrB
## [4] 20 ACAATCTGAAAGATCACAAC thrC
## [5] 20 ACAGCCCGCATTATGGGCGT insB
## ... ... ...
## [7] 20 AATTTATCAAACACACAGGC leuD
## [8] 20 CGTTATACGAAAAATTGTTC leuC
## [9] 20 ATTACCATATTGCCGTATTG leuB
## [10] 20 AAGTCATTATTTTCGATACC leuA
## [11] 20 TCGTTCGCTTTATCGGTCTA leuL
dinucleotideFrequency(dnaSeqs)## AA AC AG AT CA CC CG CT GA GC GG GT TA TC TG TT
## [1,] 3 10 2 5 11 7 3 1 2 4 4 2 4 1 3 3
## [2,] 176 113 102 161 130 143 199 143 160 220 170 142 86 139 221 157
## [3,] 52 40 52 50 52 50 80 49 59 94 85 56 31 47 77 58
## [4,] 103 66 65 70 74 64 105 73 93 119 79 73 34 67 115 86
## [5,] 36 31 21 33 34 18 45 29 29 50 43 27 22 27 40 18
## [6,] 21 20 9 14 25 16 18 21 7 25 19 15 12 19 19 15
## [7,] 50 37 29 33 36 34 45 35 44 55 37 26 19 24 51 50
## [8,] 131 86 54 74 90 101 133 62 80 133 110 72 44 66 98 66
## [9,] 69 60 50 73 75 73 100 50 70 119 67 52 38 46 91 58
## [10,] 138 91 78 103 111 97 138 65 100 136 97 89 61 87 109 71
## [11,] 3 7 4 6 6 1 8 8 4 7 3 4 7 8 3 7
reverseComplement(dnaSeqs)## A DNAStringSet instance of length 11
## width seq names
## [1] 66 TCAGCCCGCACCGTTACCTG...GTGGTGCTAATGCGTTTCAT thrL
## [2] 2463 TCAGACTCCTAACTTCCATG...CCGAACTTCAACACTCGCAT thrA
## [3] 933 TTAGTTTTCCAGTACTCGTG...GGGGCATAAACTTTAACCAT thrB
## [4] 1287 TTACTGATGATTCATCATCA...TTCAGATTGTAGAGTTTCAT thrC
## [5] 504 TTATTGATAGTGTTTTATGT...TGCGGGCTGTTGCCCGGCAT insB
## ... ... ...
## [7] 606 TTAATTCATAAACGCAGGTT...TTGATAAATTTCTCTGCCAT leuD
## [8] 1401 TTATTTAATGTTGCGAATGT...TCGTATAACGTCTTAGCCAT leuC
## [9] 1092 TTACACCCCTTCTGCTACAT...ATATGGTAATTCTTCGACAT leuB
## [10] 1572 TCACACGGTTTCCTTGTTGT...ATAATGACTTGCTGGCTCAT leuA
## [11] 87 TTAATGCTGGATGCCGCTCA...AAGCGAACGATGTGAGTCAT leuL
translate(dnaSeqs)## A AAStringSet instance of length 11
## width seq names
## [1] 22 MKRISTTITTTITITTGNGAG* thrL
## [2] 821 MRVLKFGGTSVANAERFLRV...TAAGVFADLLRTLSWKLGV* thrA
## [3] 311 MVKVYAPASSANMSVGFDVL...EGFVHICRLDTAGARVLEN* thrB
## [4] 429 MKLYNLKDHNEQVSFAQAVT...SHNLPADFAALRKLMMNHQ* thrC
## [5] 168 MPGNSPHYGRWPQHDFTSLK...SVELHDKVIGHYLNIKHYQ* insB
## ... ... ...
## [7] 202 MAEKFIKHTGLVVPLDAANV...LQHDDAIAAYEAKQPAFMN* leuD
## [8] 467 MAKTLYEKLFDAHVVYEAEN...AMAAAAAVTGHFADIRNIK* leuC
## [9] 364 MSKNYHIAVLPGDGIGPEVM...AVSTDEMGDIIARYVAEGV* leuB
## [10] 524 MSQQVIIFDTTLRDGEQALQ...VEKELQRKAQHNENNKETV* leuA
## [11] 29 MTHIVRFIGLLLLNASSLRGRRVSGIQH* leuL
Y al final siempre podemos accesar a la secuencia como una cadena de texto normal:
as.character(dnaSeqs[[1]][1:20])## [1] "ATGAAACGCATTAGCACCAC"
Por último, vale la pena saber que casi todos los paquetes de Bioconductor tienen manuales o vignettes que los acompañan. Para accesar la lista de manuales disponibles, usen la función:
openVignette()Eligiendo el número del manual que quieren ver, en principio lo debe abrir como PDF. Por ejemplo, pueden buscar el que se llama “Biostrings - Biostrings Quick Overview” para ver una descripción de la mayoría de las funciones nuevas que están incluidas en Biostrings.
Nota: todos estos ejercicios se pueden solucionar exclusivamente con las funciones vistas dentro de las prácticas.
?alphabetFrequency)table para agrupar o tabular tus resultados)barplot)