Язык R

и его применение в биоинформатике

Лекция 13

Анна Валяева

24 ноября 2023

Аннотации генов и белков

Что такое аннотация?

Некоторые дополнительные (обычно полученнные откуда-то извне) данные, которые дополняют и поясняют ваши экспериментальные данные.

  • альтернативные идентификаторы генов, белков и т.д. из других баз данных
  • координаты генов на хромосомах
  • GC-состав генов
  • внутриклеточная локализация белков
  • участие продуктов генов в различных метаболических, сигнальных и других путях

Функциональная аннотация

  • gene ID (ENSEMBL: ENSG00000075624, ENTREZ: 60)
  • символьное обозначение гена: ACTB
  • название гена: actin beta
  • тип гена: protein-coding
  • идентификаторы транскиптов гена: ENST00000674681, …
  • идентификаторы белков: P60709
  • Gene Ontology категории, KEGG пути
  • гомологи

Аннотация координат

  • хромосома: chr7
  • последовательность гена
  • последовательности транскриптов
  • последовательности CDS
  • TSS, TES
  • последовательность промотора

Базы данных аннотаций

Доступ к этим сервисам и базам данных можно получить в том числе с помощью R пакетов из Bioconductor.

Bioconductor

  • www.bioconductor.org
  • репозиторий R пакетов для решения задач биологической направленности:
    • software пакеты со структурами (классами) и функциями для анализа биологических данных
    • annotation пакеты, содержащие базы данных различных аннотаций
    • experiment пакеты с наборами данных, полученных в различных экспериметах
    • workflow пакеты с туториалами анализа биологических данных

Установка Bioconductor пакетов

С каждой новой версией R выходит и новая версия Bioconductor с новыми версиями пакетов. Поэтому определенной версии R соотвествует определенная версия пакета из Bioconductor. Посмотреть соответствие версий можно на сайте.

Пакеты из Bioconductor предпочтительнее устанавливать с помощью специальной системы управления пакетами - BiocManager.

# Установить BiocManager
install.packages("BiocManager")

# Установить нужный пакет из Bioconductor
BiocManager::install("AnnotationHub")

# Удалить уже ненужный пакет
remove.packages("AnnotationHub")

Версия Bioconductor

# Узнать версию Bioconductor
BiocManager::version()
[1] '3.15'
# Все ли Bioconductor пакеты актуальных версий
BiocManager::valid()

* sessionInfo()

R version 4.2.1 (2022-06-23 ucrt)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 10 x64 (build 19045)

Matrix products: default

locale:
[1] LC_COLLATE=Russian_Russia.utf8  LC_CTYPE=Russian_Russia.utf8   
[3] LC_MONETARY=Russian_Russia.utf8 LC_NUMERIC=C                   
[5] LC_TIME=Russian_Russia.utf8    

attached base packages:
[1] stats4    stats     graphics  grDevices utils     datasets  methods  
[8] base     

other attached packages:
 [1] biomaRt_2.52.0       org.Hs.eg.db_3.15.0  AnnotationDbi_1.58.0
 [4] IRanges_2.30.1       S4Vectors_0.34.0     Biobase_2.56.0      
 [7] BiocGenerics_0.42.0  lubridate_1.9.2      forcats_1.0.0       
[10] stringr_1.5.0        dplyr_1.1.1          purrr_1.0.1         
[13] readr_2.1.4          tidyr_1.3.0          tibble_3.2.1        
[16] ggplot2_3.4.1        tidyverse_2.0.0      dbplyr_2.3.4        

loaded via a namespace (and not attached):
 [1] httr_1.4.4             bit64_4.0.5            jsonlite_1.8.4        
 [4] carData_3.0-5          BiocManager_1.30.18    BiocFileCache_2.4.0   
 [7] blob_1.2.3             GenomeInfoDbData_1.2.8 yaml_2.3.5            
[10] progress_1.2.2         backports_1.4.1        pillar_1.9.0          
[13] RSQLite_2.2.18         glue_1.6.2             digest_0.6.29         
[16] XVector_0.36.0         ggsignif_0.6.4         colorspace_2.0-3      
[19] htmltools_0.5.4        XML_3.99-0.11          pkgconfig_2.0.3       
[22] broom_1.0.4            zlibbioc_1.42.0        scales_1.2.1          
[25] tzdb_0.3.0             timechange_0.2.0       KEGGREST_1.36.3       
[28] car_3.1-1              generics_0.1.3         ellipsis_0.3.2        
[31] ggpubr_0.6.0           cachem_1.0.6           withr_2.5.0           
[34] cli_3.4.1              magrittr_2.0.3         crayon_1.5.2          
[37] memoise_2.0.1          evaluate_0.17          fansi_1.0.3           
[40] rstatix_0.7.2          xml2_1.3.3             tools_4.2.1           
[43] prettyunits_1.1.1      hms_1.1.2              lifecycle_1.0.3       
[46] munsell_0.5.0          Biostrings_2.64.1      compiler_4.2.1        
[49] GenomeInfoDb_1.32.4    rlang_1.1.0            grid_4.2.1            
[52] RCurl_1.98-1.9         rstudioapi_0.14        rappdirs_0.3.3        
[55] htmlwidgets_1.5.4      bitops_1.0-7           rmarkdown_2.17        
[58] gtable_0.3.1           abind_1.4-5            DBI_1.1.3             
[61] curl_4.3.3             R6_2.5.1               knitr_1.40            
[64] fastmap_1.1.1          bit_4.0.4              utf8_1.2.2            
[67] filelock_1.0.2         stringi_1.7.8          Rcpp_1.0.10           
[70] vctrs_0.6.2            png_0.1-7              tidyselect_1.2.0      
[73] xfun_0.40             

Bioconductor version '3.15'

  * 195 packages out-of-date
  * 5 packages too new

create a valid installation with

  BiocManager::install(c(
    "ape", "aplot", "arrow", "askpass", "BH", "BiocManager", "BiocParallel",
    "bit", "blob", "bookdown", "broom", "bslib", "cachem", "callr", "car",
    "checkmate", "chromote", "classInt", "cli", "clue", "clusterProfiler",
    "colorspace", "cpp11", "credentials", "crosstalk", "crul", "curl",
    "data.table", "datawizard", "dbplyr", "dendextend", "DescTools", "devEMF",
    "digest", "distributional", "DOSE", "downlit", "dplyr", "DT", "dtplyr",
    "ellipse", "emdbook", "emmeans", "evaluate", "extrafont", "FactoMineR",
    "fansi", "fastmatch", "flexdashboard", "flextable", "flipbookr",
    "fontawesome", "formatR", "fs", "future", "gargle", "gdtools", "GenSA",
    "gert", "ggdist", "ggfun", "ggh4x", "ggnewscale", "ggplot2", "ggplotify",
    "ggrepel", "ggsci", "ggVennDiagram", "gh", "googledrive", "googlesheets4",
    "GOSemSim", "graphlayouts", "gt", "gtable", "gtExtras", "haven", "highr",
    "hms", "htmltools", "htmlwidgets", "httpuv", "httr", "igraph", "insight",
    "isoband", "jpeg", "jsonlite", "knitr", "labeling", "later", "leaflet",
    "leaflet.providers", "learnr", "lifecycle", "lme4", "lmom", "locfit",
    "lubridate", "magick", "maps", "markdown", "MatrixModels", "matrixStats",
    "minqa", "multcompView", "mvtnorm", "officer", "openssl", "packrat",
    "parallelly", "patchwork", "pbkrtest", "pdftools", "pkgbuild", "pkgdown",
    "pkgload", "plotly", "plyr", "png", "polyclip", "prettyunits", "processx",
    "profvis", "proj4", "promises", "ps", "psych", "purrr", "qpdf", "quantreg",
    "quarto", "R.utils", "ragg", "raster", "Rcpp", "RcppArmadillo",
    "RcppEigen", "RcppNumerical", "RCurl", "readxl", "rematch", "remotes",
    "renv", "rio", "rlang", "rmarkdown", "rootSolve", "roxygen2", "rprojroot",
    "rsconnect", "RSQLite", "rstudioapi", "Rttf2pt1", "rvg", "s2", "sass",
    "scatterpie", "scatterplot3d", "servr", "sf", "shiny", "shinyWidgets",
    "showtext", "sourcetools", "sp", "stringi", "stringr", "sys",
    "systemfonts", "testthat", "textshaping", "tidygraph", "tidytree",
    "tinytex", "tvthemes", "tzdb", "units", "usethis", "utf8", "uuid", "V8",
    "vctrs", "viridis", "viridisLite", "vroom", "waldo", "webr", "webshot2",
    "whisker", "withr", "wk", "xaringan", "xfun", "XML", "xml2", "yaml",
    "yulab.utils", "zip", "zoo"
  ), update = TRUE, ask = FALSE)

more details: BiocManager::valid()$too_new, BiocManager::valid()$out_of_date

Доступные пакеты

BiocManager::available(pattern = "Mmusculus")
 [1] "BSgenome.Mmusculus.UCSC.mm10"        "BSgenome.Mmusculus.UCSC.mm10.masked"
 [3] "BSgenome.Mmusculus.UCSC.mm39"        "BSgenome.Mmusculus.UCSC.mm8"        
 [5] "BSgenome.Mmusculus.UCSC.mm8.masked"  "BSgenome.Mmusculus.UCSC.mm9"        
 [7] "BSgenome.Mmusculus.UCSC.mm9.masked"  "EnsDb.Mmusculus.v75"                
 [9] "EnsDb.Mmusculus.v79"                 "PWMEnrich.Mmusculus.background"     
[11] "TxDb.Mmusculus.UCSC.mm10.ensGene"    "TxDb.Mmusculus.UCSC.mm10.knownGene" 
[13] "TxDb.Mmusculus.UCSC.mm39.refGene"    "TxDb.Mmusculus.UCSC.mm9.knownGene"  

Пакеты аннотаций

  • org.Hs.eg.db - база данных идентификаторов генов и биологических путей, которые с ними ассоциированы
  • TxDb.Hsapiens.UCSC.hg38.knownGene - UCSC аннотация генов knownGene версии генома человека hg38
  • EnsDb.Hsapiens.v86 - Ensembl аннотация генов человека, версия 86
  • GO.db - аннотация Gene Ontology
  • BSgenome.Hsapiens.UCSC.hg38 - последовательности хромосом человека сборки hg38
  • аннотации для микрочипов (например, ag.db)

S4 класс

Использование пакетов Bioconductor строится на работе с объектами класса S4 (объектно-ориентированное программирование).

Что для нас важно, объекты класса S4 имеют свое название, слоты, в которых хранятся данные, и методы - функции, позволяющие работать с объектами этого класса. Также может быть прописано наследование классов.

# Записываем объект класса TxDb в переменную txdb
txdb <- TxDb.Hsapiens.UCSC.hg38.knownGene::TxDb.Hsapiens.UCSC.hg38.knownGene

isS4(txdb)
[1] TRUE

S4 класс

class(txdb)
[1] "TxDb"
attr(,"package")
[1] "GenomicFeatures"
getClass("TxDb")
Reference Class "TxDb":

Class fields:
                                                                          
Name:              conn      packageName  user2seqlevels0   user_seqlevels
Class: SQLiteConnection        character          integer        character
                                        
Name:       user_genome      isActiveSeq
Class:        character          logical

Class Methods: 
     "import", ".objectParent", "usingMethods", "show", "getClass", "untrace", 
     "export", "initialize", ".objectPackage", "callSuper", "copy", 
     "initFields", "getRefClass", "trace", "field", "finalize"

Reference Superclasses: 
     "AnnotationDb", "envRefClass"

Пакеты для работы с аннотациями

  • AnnotationDbi - помогает взаимодействовать с пакетами orgDb, TxDb, EnsDb, Go.db
  • AnnotationHub - доступ ко многим ресурсам для разных организмов, хранение скачанных аннотаций локально в кэше
  • biomaRt - онлайн-доступ к базам данных Ensembl
  • KEGGREST - доступ к базе данных KEGG
  • UniprotR и UniProt.ws - доступ к базе данных UniProt

orgDb

  • пакет для конвертации идентификаторов генов (Entrez-центричный - eg) и получения приписанных гену Gene Ontology категорий
  • для каждого модельного организма свой пакет - список на сайте
    • org.Hs.eg.db - человек (Entrez IDs)
    • org.Mm.eg.db - мышь (Entrez IDs)
    • org.At.tair.db - резуховидка Таля (TAIR идентификаторы)

Метаданные orgDb

BiocManager::install("org.Hs.eg.db")
library(org.Hs.eg.db)

org.Hs.eg.db 
OrgDb object:
| DBSCHEMAVERSION: 2.1
| Db type: OrgDb
| Supporting package: AnnotationDbi
| DBSCHEMA: HUMAN_DB
| ORGANISM: Homo sapiens
| SPECIES: Human
| EGSOURCEDATE: 2022-Mar17
| EGSOURCENAME: Entrez Gene
| EGSOURCEURL: ftp://ftp.ncbi.nlm.nih.gov/gene/DATA
| CENTRALID: EG
| TAXID: 9606
| GOSOURCENAME: Gene Ontology
| GOSOURCEURL: http://current.geneontology.org/ontology/go-basic.obo
| GOSOURCEDATE: 2022-03-10
| GOEGSOURCEDATE: 2022-Mar17
| GOEGSOURCENAME: Entrez Gene
| GOEGSOURCEURL: ftp://ftp.ncbi.nlm.nih.gov/gene/DATA
| KEGGSOURCENAME: KEGG GENOME
| KEGGSOURCEURL: ftp://ftp.genome.jp/pub/kegg/genomes
| KEGGSOURCEDATE: 2011-Mar15
| GPSOURCENAME: UCSC Genome Bioinformatics (Homo sapiens)
| GPSOURCEURL: 
| GPSOURCEDATE: 2022-Nov23
| ENSOURCEDATE: 2021-Dec21
| ENSOURCENAME: Ensembl
| ENSOURCEURL: ftp://ftp.ensembl.org/pub/current_fasta
| UPSOURCENAME: Uniprot
| UPSOURCEURL: http://www.UniProt.org/
| UPSOURCEDATE: Fri Apr  1 14:42:16 2022

Работа с orgDb

Пакет AnnotationDbi предоставляет методы для работы данными из orgDb, TxDb, EnsDb и Go.db.

  • keys() возвращает Entrez идентификаторы, доступные в аннотации
keys(org.Hs.eg.db) %>% head()
[1] "1"  "2"  "3"  "9"  "10" "11"
  • keytypes() и columns() возвращают доступные для конвертации идентификаторы
keytypes(org.Hs.eg.db)
 [1] "ACCNUM"       "ALIAS"        "ENSEMBL"      "ENSEMBLPROT"  "ENSEMBLTRANS"
 [6] "ENTREZID"     "ENZYME"       "EVIDENCE"     "EVIDENCEALL"  "GENENAME"    
[11] "GENETYPE"     "GO"           "GOALL"        "IPI"          "MAP"         
[16] "OMIM"         "ONTOLOGY"     "ONTOLOGYALL"  "PATH"         "PFAM"        
[21] "PMID"         "PROSITE"      "REFSEQ"       "SYMBOL"       "UCSCKG"      
[26] "UNIPROT"     

Работа с orgDb - select()

По вектору из идентификаторов можно запросить информацию из аннотации org.Hs.eg.db с помощью функции

select(annotationDb, keys, columns, keytype), где

  • annotationDb - пакет или объект, содержащий аннотацию
  • keys - идентификаторы, которые у нас есть
  • columns - то, что мы хотим получить
  • keytype - тип идентификаторов, которые мы использовали

Задание

Установите и подгрузите пакет org.Hs.eg.db.

С помощью него и функции select() из пакета AnnotationDbi переведите ENSEMBL идентификаторы генов в символьные названия (SYMBOL), а также достаньте из аннотации полные названия этих генов (GENENAME) и ассоциацию с заболеваниями по базе данных OMIM.

ens_genes <- c("ENSG00000167107", "ENSG00000181798", "ENSG00000280639", "ENSG00000198218", "ENSG00000284269")

Работа с orgDb - mapIds()

Работает аналогично функции select(), но только с одной аннотацией (column вместо columns) и позволяет с помощью параметра multiVals указать, как вести себя, если одному гену соответствует несколько аннотаций.

mapIds(org.Hs.eg.db, ens_genes, "OMIM", "ENSEMBL", multiVals = "list")
$ENSG00000167107
[1] "610465"

$ENSG00000181798
[1] NA

$ENSG00000280639
[1] NA

$ENSG00000198218
[1] "617387" "617982"

$ENSG00000284269
[1] NA

Аннотации координат

Пакеты TxDb и EnsDb содержат генные разметки - координаты генов, транскриптов и экзонов в геноме.

entrez_genes <- mapIds(org.Hs.eg.db, ens_genes, "ENTREZID", "ENSEMBL")

select(
  txdb, 
  entrez_genes, 
  c("TXNAME", "TXCHROM", "TXSTART", "TXEND", "TXSTRAND"), 
  "GENEID") %>% 
  head()
  GENEID            TXNAME TXCHROM TXSTRAND  TXSTART    TXEND
1  80221 ENST00000510410.5   chr17        + 50426158 50474670
2  80221 ENST00000504945.1   chr17        + 50426218 50461048
3  80221 ENST00000503408.5   chr17        + 50426218 50461265
4  80221 ENST00000506582.5   chr17        + 50426218 50462426
5  80221 ENST00000504392.5   chr17        + 50426218 50474670
6  80221 ENST00000300441.9   chr17        + 50426218 50474837

AnnotationHub

AnnotationHub

Дает доступ к большему количеству ресурсов и версий баз данных. Облегчает работу с немодельными организмами. Обеспесчивает большую воспроизводимость.

library(AnnotationHub)

ah <- AnnotationHub()
ah
AnnotationHub with 67229 records
# snapshotDate(): 2022-04-25
# $dataprovider: Ensembl, BroadInstitute, UCSC, ftp://ftp.ncbi.nlm.nih.gov/g...
# $species: Homo sapiens, Mus musculus, Drosophila melanogaster, Bos taurus,...
# $rdataclass: GRanges, TwoBitFile, BigWigFile, EnsDb, Rle, OrgDb, ChainFile...
# additional mcols(): taxonomyid, genome, description,
#   coordinate_1_based, maintainer, rdatadateadded, preparerclass, tags,
#   rdatapath, sourceurl, sourcetype 
# retrieve records with, e.g., 'object[["AH5012"]]' 

             title                                                         
  AH5012   | Chromosome Band                                               
  AH5013   | STS Markers                                                   
  AH5014   | FISH Clones                                                   
  AH5015   | Recomb Rate                                                   
  AH5016   | ENCODE Pilot                                                  
  ...        ...                                                           
  AH107043 | Zonotrichia_albicollis.Zonotrichia_albicollis-1.0.1.ncrna.2bit
  AH107044 | Zosterops_lateralis_melanops.ASM128173v1.cdna.all.2bit        
  AH107045 | Zosterops_lateralis_melanops.ASM128173v1.dna_rm.toplevel.2bit 
  AH107046 | Zosterops_lateralis_melanops.ASM128173v1.dna_sm.toplevel.2bit 
  AH107047 | Zosterops_lateralis_melanops.ASM128173v1.ncrna.2bit           

Доступные ресурсы

unique(ah$dataprovider)
 [1] "UCSC"                                                                                                      
 [2] "Ensembl"                                                                                                   
 [3] "RefNet"                                                                                                    
 [4] "Inparanoid8"                                                                                               
 [5] "NHLBI"                                                                                                     
 [6] "ChEA"                                                                                                      
 [7] "Pazar"                                                                                                     
 [8] "NIH Pathway Interaction Database"                                                                          
 [9] "Haemcode"                                                                                                  
[10] "BroadInstitute"                                                                                            
[11] "PRIDE"                                                                                                     
[12] "Gencode"                                                                                                   
[13] "CRIBI"                                                                                                     
[14] "Genoscope"                                                                                                 
[15] "MISO, VAST-TOOLS, UCSC"                                                                                    
[16] "UWashington"                                                                                               
[17] "Stanford"                                                                                                  
[18] "dbSNP"                                                                                                     
[19] "BioMart"                                                                                                   
[20] "GeneOntology"                                                                                              
[21] "KEGG"                                                                                                      
[22] "URGI"                                                                                                      
[23] "EMBL-EBI"                                                                                                  
[24] "MicrosporidiaDB"                                                                                           
[25] "FungiDB"                                                                                                   
[26] "TriTrypDB"                                                                                                 
[27] "ToxoDB"                                                                                                    
[28] "AmoebaDB"                                                                                                  
[29] "PlasmoDB"                                                                                                  
[30] "PiroplasmaDB"                                                                                              
[31] "CryptoDB"                                                                                                  
[32] "TrichDB"                                                                                                   
[33] "GiardiaDB"                                                                                                 
[34] "The Gene Ontology Consortium"                                                                              
[35] "ENCODE Project"                                                                                            
[36] "SchistoDB"                                                                                                 
[37] "NCBI/UniProt"                                                                                              
[38] "GENCODE"                                                                                                   
[39] "http://www.pantherdb.org"                                                                                  
[40] "RMBase v2.0"                                                                                               
[41] "snoRNAdb"                                                                                                  
[42] "tRNAdb"                                                                                                    
[43] "NCBI"                                                                                                      
[44] "DrugAge, DrugBank, Broad Institute"                                                                        
[45] "DrugAge"                                                                                                   
[46] "DrugBank"                                                                                                  
[47] "Broad Institute"                                                                                           
[48] "HMDB, EMBL-EBI, EPA"                                                                                       
[49] "STRING"                                                                                                    
[50] "OMA"                                                                                                       
[51] "OrthoDB"                                                                                                   
[52] "PathBank"                                                                                                  
[53] "EBI/EMBL"                                                                                                  
[54] "NCBI,DBCLS"                                                                                                
[55] "FANTOM5,DLRP,IUPHAR,HPRD,STRING,SWISSPROT,TREMBL,ENSEMBL,CELLPHONEDB,BADERLAB,SINGLECELLSIGNALR,HOMOLOGENE"
[56] "WikiPathways"                                                                                              
[57] "UCSC Jaspar"                                                                                               
[58] "VAST-TOOLS"                                                                                                
[59] "pyGenomeTracks "                                                                                           
[60] "NA"                                                                                                        
[61] "UoE"                                                                                                       
[62] "mitra.stanford.edu/kundaje/akundaje/release/blacklists/"                                                   
[63] "ENCODE"                                                                                                    
[64] "TargetScan,miRTarBase,USCS,ENSEMBL"                                                                        
[65] "TargetScan"                                                                                                
[66] "QuickGO"                                                                                                   
[67] "ftp://ftp.ncbi.nlm.nih.gov/gene/DATA/"                                                                     

Доступные организмы

length(unique(ah$species))
[1] 2825
head(unique(ah$species))
[1] "Homo sapiens"         "Vicugna pacos"        "Dasypus novemcinctus"
[4] "Otolemur garnettii"   "Papio hamadryas"      "Papio anubis"        

Запросы с AnnotationHub

Для поиска нужной базы данных в AnnotationHub есть функция query().

Например, мы хотим воспользоваться базой данных генов человека Ensembl версии 105. В Bioconductor есть пакеты аннотаций EnsDb, но нет нужной нам версии. Однако ее можно найти в AnnotationHub:

query(ah, c("EnsDb", "hsapiens", "105"))
AnnotationHub with 1 record
# snapshotDate(): 2022-04-25
# names(): AH98047
# $dataprovider: Ensembl
# $species: Homo sapiens
# $rdataclass: EnsDb
# $rdatadateadded: 2021-10-20
# $title: Ensembl 105 EnsDb for Homo sapiens
# $description: Gene and protein annotations for Homo sapiens based on Ensem...
# $taxonomyid: 9606
# $genome: GRCh38
# $sourcetype: ensembl
# $sourceurl: http://www.ensembl.org
# $sourcesize: NA
# $tags: c("105", "Annotation", "AnnotationHubSoftware", "Coverage",
#   "DataImport", "EnsDb", "Ensembl", "Gene", "Protein", "Sequencing",
#   "Transcript") 
# retrieve record with 'object[["AH98047"]]' 

Скачивание аннотации

Скачаем и сохраним локально нужную аннотацию:

# BiocManager::install("ensembldb")
hs_ens105 <- ah[["AH98047"]]
hs_ens105
EnsDb for Ensembl:
|Backend: SQLite
|Db type: EnsDb
|Type of Gene ID: Ensembl Gene ID
|Supporting package: ensembldb
|Db created by: ensembldb package from Bioconductor
|script_version: 0.3.7
|Creation time: Sat Dec 18 14:48:15 2021
|ensembl_version: 105
|ensembl_host: localhost
|Organism: Homo sapiens
|taxonomy_id: 9606
|genome_build: GRCh38
|DBSCHEMAVERSION: 2.2
| No. of genes: 69329.
| No. of transcripts: 268255.
|Protein data available.

Работа с EnsDb

Работать со скачанной аннотацией можно с помощью функций пакета AnnotationDbi:

keytypes(hs_ens105)
 [1] "ENTREZID"            "EXONID"              "GENEBIOTYPE"        
 [4] "GENEID"              "GENENAME"            "PROTDOMID"          
 [7] "PROTEINDOMAINID"     "PROTEINDOMAINSOURCE" "PROTEINID"          
[10] "SEQNAME"             "SEQSTRAND"           "SYMBOL"             
[13] "TXBIOTYPE"           "TXID"                "TXNAME"             
[16] "UNIPROTID"          

В Ensembl основным идентификатором является ENSEMBL ID (GENEID).

select(hs_ens105, "NEAT1", c("GENEID", "GENEBIOTYPE", "SEQNAME"), "SYMBOL")
  SYMBOL          GENEID GENEBIOTYPE SEQNAME
1  NEAT1 ENSG00000245532      lncRNA      11

Аннотации координат

Функции genes(), transcripts() и exons() пакета GenomicFeatures позволяют получать координаты этих участков в геноме в виде GRanges объекта.

genes(hs_ens105)
GRanges object with 69329 ranges and 9 metadata columns:
                  seqnames            ranges strand |         gene_id
                     <Rle>         <IRanges>  <Rle> |     <character>
  ENSG00000223972        1       11869-14409      + | ENSG00000223972
  ENSG00000227232        1       14404-29570      - | ENSG00000227232
  ENSG00000278267        1       17369-17436      - | ENSG00000278267
  ENSG00000243485        1       29554-31109      + | ENSG00000243485
  ENSG00000284332        1       30366-30503      + | ENSG00000284332
              ...      ...               ...    ... .             ...
  ENSG00000224240        Y 26549425-26549743      + | ENSG00000224240
  ENSG00000227629        Y 26586642-26591601      - | ENSG00000227629
  ENSG00000237917        Y 26594851-26634652      - | ENSG00000237917
  ENSG00000231514        Y 26626520-26627159      - | ENSG00000231514
  ENSG00000235857        Y 56855244-56855488      + | ENSG00000235857
                    gene_name           gene_biotype seq_coord_system
                  <character>            <character>      <character>
  ENSG00000223972     DDX11L1 transcribed_unproces..       chromosome
  ENSG00000227232      WASH7P unprocessed_pseudogene       chromosome
  ENSG00000278267   MIR6859-1                  miRNA       chromosome
  ENSG00000243485 MIR1302-2HG                 lncRNA       chromosome
  ENSG00000284332   MIR1302-2                  miRNA       chromosome
              ...         ...                    ...              ...
  ENSG00000224240     CYCSP49   processed_pseudogene       chromosome
  ENSG00000227629  SLC25A15P1 unprocessed_pseudogene       chromosome
  ENSG00000237917     PARP4P1 unprocessed_pseudogene       chromosome
  ENSG00000231514      CCNQP2   processed_pseudogene       chromosome
  ENSG00000235857     CTBP2P1   processed_pseudogene       chromosome
                             description   gene_id_version canonical_transcript
                             <character>       <character>          <character>
  ENSG00000223972 DEAD/H-box helicase .. ENSG00000223972.5      ENST00000450305
  ENSG00000227232 WASP family homolog .. ENSG00000227232.5      ENST00000488147
  ENSG00000278267 microRNA 6859-1 [Sou.. ENSG00000278267.1      ENST00000619216
  ENSG00000243485 MIR1302-2 host gene .. ENSG00000243485.5      ENST00000473358
  ENSG00000284332 microRNA 1302-2 [Sou.. ENSG00000284332.1      ENST00000607096
              ...                    ...               ...                  ...
  ENSG00000224240 CYCS pseudogene 49 [.. ENSG00000224240.1      ENST00000420810
  ENSG00000227629 solute carrier famil.. ENSG00000227629.1      ENST00000456738
  ENSG00000237917 poly(ADP-ribose) pol.. ENSG00000237917.1      ENST00000435945
  ENSG00000231514 CCNQ pseudogene 2 [S.. ENSG00000231514.1      ENST00000435741
  ENSG00000235857 CTBP2 pseudogene 1 [.. ENSG00000235857.1      ENST00000431853
                       symbol                          entrezid
                  <character>                            <list>
  ENSG00000223972     DDX11L1 102725121,100287596,100287102,...
  ENSG00000227232      WASH7P                              <NA>
  ENSG00000278267   MIR6859-1                         102466751
  ENSG00000243485 MIR1302-2HG                              <NA>
  ENSG00000284332   MIR1302-2                         100302278
              ...         ...                               ...
  ENSG00000224240     CYCSP49                              <NA>
  ENSG00000227629  SLC25A15P1                              <NA>
  ENSG00000237917     PARP4P1                              <NA>
  ENSG00000231514      CCNQP2                              <NA>
  ENSG00000235857     CTBP2P1                              <NA>
  -------
  seqinfo: 456 sequences (1 circular) from GRCh38 genome

Координаты для гена

transcripts(hs_ens105, filter = ~ symbol == "NEAT1")
GRanges object with 15 ranges and 12 metadata columns:
                  seqnames            ranges strand |           tx_id
                     <Rle>         <IRanges>  <Rle> |     <character>
  ENST00000499732       11 65422774-65426457      + | ENST00000499732
  ENST00000687132       11 65422797-65426532      + | ENST00000687132
  ENST00000501122       11 65422798-65445540      + | ENST00000501122
  ENST00000685861       11 65422798-65426529      + | ENST00000685861
  ENST00000601801       11 65422800-65426405      + | ENST00000601801
              ...      ...               ...    ... .             ...
  ENST00000693290       11 65425414-65426529      + | ENST00000693290
  ENST00000616315       11 65425551-65426385      + | ENST00000616315
  ENST00000687943       11 65431820-65433023      + | ENST00000687943
  ENST00000691530       11 65440182-65440864      + | ENST00000691530
  ENST00000693747       11 65440182-65440864      + | ENST00000693747
                   tx_biotype tx_cds_seq_start tx_cds_seq_end         gene_id
                  <character>        <integer>      <integer>     <character>
  ENST00000499732      lncRNA             <NA>           <NA> ENSG00000245532
  ENST00000687132      lncRNA             <NA>           <NA> ENSG00000245532
  ENST00000501122      lncRNA             <NA>           <NA> ENSG00000245532
  ENST00000685861      lncRNA             <NA>           <NA> ENSG00000245532
  ENST00000601801      lncRNA             <NA>           <NA> ENSG00000245532
              ...         ...              ...            ...             ...
  ENST00000693290      lncRNA             <NA>           <NA> ENSG00000245532
  ENST00000616315      lncRNA             <NA>           <NA> ENSG00000245532
  ENST00000687943      lncRNA             <NA>           <NA> ENSG00000245532
  ENST00000691530      lncRNA             <NA>           <NA> ENSG00000245532
  ENST00000693747      lncRNA             <NA>           <NA> ENSG00000245532
                  tx_support_level     tx_id_version gc_content
                         <integer>       <character>  <numeric>
  ENST00000499732                2 ENST00000499732.3    47.6024
  ENST00000687132             <NA> ENST00000687132.1    48.2334
  ENST00000501122             <NA> ENST00000501122.2    44.0531
  ENST00000685861             <NA> ENST00000685861.1    48.2315
  ENST00000601801                4 ENST00000601801.3    48.4393
              ...              ...               ...        ...
  ENST00000693290             <NA> ENST00000693290.1    36.6487
  ENST00000616315                2 ENST00000616315.2    36.5234
  ENST00000687943             <NA> ENST00000687943.1    33.2226
  ENST00000691530             <NA> ENST00000691530.1    45.0952
  ENST00000693747             <NA> ENST00000693747.1    45.0952
                  tx_external_name tx_is_canonical         tx_name      symbol
                       <character>       <integer>     <character> <character>
  ENST00000499732        NEAT1-201               0 ENST00000499732       NEAT1
  ENST00000687132        NEAT1-211               0 ENST00000687132       NEAT1
  ENST00000501122        NEAT1-202               1 ENST00000501122       NEAT1
  ENST00000685861        NEAT1-210               0 ENST00000685861       NEAT1
  ENST00000601801        NEAT1-203               0 ENST00000601801       NEAT1
              ...              ...             ...             ...         ...
  ENST00000693290        NEAT1-214               0 ENST00000693290       NEAT1
  ENST00000616315        NEAT1-205               0 ENST00000616315       NEAT1
  ENST00000687943        NEAT1-212               0 ENST00000687943       NEAT1
  ENST00000691530        NEAT1-213               0 ENST00000691530       NEAT1
  ENST00000693747        NEAT1-215               0 ENST00000693747       NEAT1
  -------
  seqinfo: 1 sequence from GRCh38 genome

orgDb для немодельных организмов

query(ah, "OrgDb")
AnnotationHub with 1830 records
# snapshotDate(): 2022-04-25
# $dataprovider: ftp://ftp.ncbi.nlm.nih.gov/gene/DATA/
# $species: Escherichia coli, greater Indian_fruit_bat, Zootoca vivipara, Zo...
# $rdataclass: OrgDb
# additional mcols(): taxonomyid, genome, description,
#   coordinate_1_based, maintainer, rdatadateadded, preparerclass, tags,
#   rdatapath, sourceurl, sourcetype 
# retrieve records with, e.g., 'object[["AH100399"]]' 

             title                                    
  AH100399 | org.Ag.eg.db.sqlite                      
  AH100400 | org.At.tair.db.sqlite                    
  AH100401 | org.Bt.eg.db.sqlite                      
  AH100402 | org.Cf.eg.db.sqlite                      
  AH100403 | org.Gg.eg.db.sqlite                      
  ...        ...                                      
  AH102596 | org.Lobosporangium_transversale.eg.sqlite
  AH102597 | org.Sulfolobus_acidocaldarius.eg.sqlite  
  AH102598 | org.Penicillium_rugulosum.eg.sqlite      
  AH102599 | org.Talaromyces_rugulosus.eg.sqlite      
  AH102600 | org.Metallosphaera_sedula.eg.sqlite      

orgDb для пингвина Адели

Допустим, мы все еще интересуемся пингвинами…

query(ah, c("OrgDb", "Pygoscelis"))
AnnotationHub with 2 records
# snapshotDate(): 2022-04-25
# $dataprovider: ftp://ftp.ncbi.nlm.nih.gov/gene/DATA/
# $species: Pygoscelis adeliae, Pygoscelis adelia
# $rdataclass: OrgDb
# additional mcols(): taxonomyid, genome, description,
#   coordinate_1_based, maintainer, rdatadateadded, preparerclass, tags,
#   rdatapath, sourceurl, sourcetype 
# retrieve records with, e.g., 'object[["AH102335"]]' 

             title                           
  AH102335 | org.Pygoscelis_adeliae.eg.sqlite
  AH102336 | org.Pygoscelis_adelia.eg.sqlite 
org.adelie <- ah[["AH102335"]]

orgDb для пингвина Адели

select(org.adelie, sample(keys(org.adelie), 5), c("SYMBOL", "GENENAME"), "ENTREZID")
   ENTREZID       SYMBOL
1 103925306     ARHGEF26
2 103923643 LOC103923643
3 103913063      VIPAS39
4 103922363 LOC103922363
5 103917066       TLCD3A
                                                                           GENENAME
1                                         Rho guanine nucleotide exchange factor 26
2                                                      uncharacterized LOC103923643
3 VPS33B interacting protein, apical-basolateral polarity regulator, spe-39 homolog
4                              chromosome unknown open reading frame, human C7orf57
5                                                          TLC domain containing 3A

biomaRt

biomaRt

  • BioMart - веб-сервис для доступа к базам данных Ensembl
  • Пакет biomaRt позволяет отправлять запросы BioMart с помощью R
BiocManager::install("biomaRt")
library(biomaRt)

listMarts()
               biomart                version
1 ENSEMBL_MART_ENSEMBL      Ensembl Genes 110
2   ENSEMBL_MART_MOUSE      Mouse strains 110
3     ENSEMBL_MART_SNP  Ensembl Variation 110
4 ENSEMBL_MART_FUNCGEN Ensembl Regulation 110
mart <- useMart("ENSEMBL_MART_ENSEMBL")
mart
Object of class 'Mart':
  Using the ENSEMBL_MART_ENSEMBL BioMart database
  No dataset selected.

Датасеты BioMart

Данные по каким организмам доступны:

listDatasets(mart) %>% head()
                       dataset                           description
1 abrachyrhynchus_gene_ensembl Pink-footed goose genes (ASM259213v1)
2     acalliptera_gene_ensembl      Eastern happy genes (fAstCal1.2)
3   acarolinensis_gene_ensembl       Green anole genes (AnoCar2.0v2)
4    acchrysaetos_gene_ensembl       Golden eagle genes (bAquChr1.2)
5    acitrinellus_gene_ensembl        Midas cichlid genes (Midas_v5)
6    amelanoleuca_gene_ensembl       Giant panda genes (ASM200744v2)
      version
1 ASM259213v1
2  fAstCal1.2
3 AnoCar2.0v2
4  bAquChr1.2
5    Midas_v5
6 ASM200744v2
mart <- useMart("ENSEMBL_MART_ENSEMBL","hsapiens_gene_ensembl")

Запросы с biomaRt

Запрашивать информацию из датасета можно с помощью функции

getBM(attributes, filters, values, mart), где

  • attributes - то, что мы хотим получить (columns)
  • filters - тип идентификаторов, которые мы использовали (keytype)
  • values - идентификаторы, которые у нас есть (keys)
  • mart - mart объект который мы только что создали

Атрибуты и фильтры

listAttributes(mart) %>% head()
                           name                  description         page
1               ensembl_gene_id               Gene stable ID feature_page
2       ensembl_gene_id_version       Gene stable ID version feature_page
3         ensembl_transcript_id         Transcript stable ID feature_page
4 ensembl_transcript_id_version Transcript stable ID version feature_page
5            ensembl_peptide_id            Protein stable ID feature_page
6    ensembl_peptide_id_version    Protein stable ID version feature_page
listFilters(mart) %>% head()
             name              description
1 chromosome_name Chromosome/scaffold name
2           start                    Start
3             end                      End
4      band_start               Band Start
5        band_end                 Band End
6    marker_start             Marker Start

Запросы с biomaRt

  • Хотим получить дополнительную информацию о двух генах - NEAT1 и MALAT1.
two_genes <- c("NEAT1", "MALAT1")

getBM(
  attributes = c("ensembl_gene_id", "external_gene_name", "description"), 
  filters = "external_gene_name", 
  values = two_genes,
  mart = mart)
  ensembl_gene_id external_gene_name
1 ENSG00000245532              NEAT1
2 ENSG00000251562             MALAT1
                                                                                 description
1              nuclear paraspeckle assembly transcript 1 [Source:HGNC Symbol;Acc:HGNC:30815]
2 metastasis associated lung adenocarcinoma transcript 1 [Source:HGNC Symbol;Acc:HGNC:29665]

Запросы с biomaRt

  • Хотим получить список генов длинных некодирующих РНК с 21 хромосомы.
getBM(
  attributes = "hgnc_symbol", 
  filters = c("chromosome_name", "biotype"), 
  values = list(21, "lncRNA"),
  mart = mart) %>% 
  head()
  hgnc_symbol
1   LINC01670
2   LINC01666
3     TEKT4P2
4   LINC01674
5  SAMSN1-AS1
6   LINC02246

Задание

Установите и подгрузите пакет bioMart.

С помощью этого пакета добудьте информацию о GC-составе генов из списка.

ens_genes <- c("ENSG00000167107", "ENSG00000181798", "ENSG00000280639", "ENSG00000198218", "ENSG00000284269")

Версии Ensembl

По умолчанию biomaRt предлагает работать с самой свежей версией Ensembl. Однако если вы в своем анализе данных использовали другую версию, то лучше придерживаться именно ее. Доступные предыдущие версии можно вывести с помощью функции listEnsemblArchives().

listEnsemblArchives() %>% head()
            name     date                                 url version
1 Ensembl GRCh37 Feb 2014          https://grch37.ensembl.org  GRCh37
2    Ensembl 110 Jul 2023 https://jul2023.archive.ensembl.org     110
3    Ensembl 109 Feb 2023 https://feb2023.archive.ensembl.org     109
4    Ensembl 108 Oct 2022 https://oct2022.archive.ensembl.org     108
5    Ensembl 107 Jul 2022 https://jul2022.archive.ensembl.org     107
6    Ensembl 106 Apr 2022 https://apr2022.archive.ensembl.org     106
  current_release
1                
2               *
3                
4                
5                
6                

Что почитать про Bioconductor и аннотации генов и белков

Конец!