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

Что такое ген?

Что такое транскрипт?

Что такое геном?

Что такое экзом?

Что такое транскриптом и протеом?

Какие типы РНК вы знаете?

Что из нижеперечисленного является названием гена.

  1. ATP12A
  2. 192113
  3. ENSDARG00000010472
  4. P54707
  5. ATPase H+/K+ Transporting Non-Gastric Alpha2 Subunit
  1. ENSG00000224414
  2. piR-56612-002
  3. B0S5Q5
  4. ENSMUST00000007340.4
  5. CM001007.3

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

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

  • альтернативные идентификаторы генов, белков и т.д. из других баз данных
  • координаты генов на хромосомах
  • 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.18'
# Все ли Bioconductor пакеты актуальных версий
BiocManager::valid()
[1] TRUE

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

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.knownGene"  "TxDb.Mmusculus.UCSC.mm39.refGene"   
[15] "TxDb.Mmusculus.UCSC.mm9.knownGene"  
BiocManager::available(pattern = "PWMEnrich")
[1] "PWMEnrich"                          "PWMEnrich.Dmelanogaster.background"
[3] "PWMEnrich.Hsapiens.background"      "PWMEnrich.Mmusculus.background"    

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

  • 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: 2023-Sep11
| 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: 2023-07-27
| GOEGSOURCEDATE: 2023-Sep11
| 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: 2023-Aug20
| ENSOURCEDATE: 2023-May10
| ENSOURCENAME: Ensembl
| ENSOURCEURL: ftp://ftp.ensembl.org/pub/current_fasta
| UPSOURCENAME: Uniprot
| UPSOURCEURL: http://www.UniProt.org/
| UPSOURCEDATE: Mon Sep 18 16:12:39 2023

Работа с 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")

Решение

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

gene_info <- select(org.Hs.eg.db, 
                    keys = ens_genes,
                    columns = c("SYMBOL", "GENENAME", "OMIM"),
                    keytype = "ENSEMBL")
gene_info %>% head()
          ENSEMBL    SYMBOL                                    GENENAME   OMIM
1 ENSG00000167107     ACSF2         acyl-CoA synthetase family member 2 610465
2 ENSG00000181798 LINC00471  long intergenic non-protein coding RNA 471   <NA>
3 ENSG00000280639 LINC02204 long intergenic non-protein coding RNA 2204   <NA>
4 ENSG00000198218    QRICH1                            glutamine rich 1 617387
5 ENSG00000198218    QRICH1                            glutamine rich 1 617982
6 ENSG00000284269   MIR7855                               microRNA 7855   <NA>

Работа с 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 71082 records
# snapshotDate(): 2023-10-23
# $dataprovider: Ensembl, BroadInstitute, UCSC, ftp://ftp.ncbi.nlm.nih.gov/g...
# $species: Homo sapiens, Mus musculus, Drosophila melanogaster, Rattus norv...
# $rdataclass: GRanges, TwoBitFile, BigWigFile, EnsDb, Rle, OrgDb, SQLiteFil...
# 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                                      
  ...        ...                                               
  AH116479 | Ensembl 111 EnsDb for Xiphophorus maculatus       
  AH116480 | Ensembl 111 EnsDb for Xenopus tropicalis          
  AH116481 | Ensembl 111 EnsDb for Zonotrichia albicollis      
  AH116482 | Ensembl 111 EnsDb for Zalophus californianus      
  AH116483 | Ensembl 111 EnsDb for Zosterops lateralis melanops

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

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] "Stanford"                                                                                                  
[17] "dbSNP"                                                                                                     
[18] "BioMart"                                                                                                   
[19] "GeneOntology"                                                                                              
[20] "KEGG"                                                                                                      
[21] "URGI"                                                                                                      
[22] "EMBL-EBI"                                                                                                  
[23] "MicrosporidiaDB"                                                                                           
[24] "FungiDB"                                                                                                   
[25] "TriTrypDB"                                                                                                 
[26] "ToxoDB"                                                                                                    
[27] "AmoebaDB"                                                                                                  
[28] "PlasmoDB"                                                                                                  
[29] "PiroplasmaDB"                                                                                              
[30] "CryptoDB"                                                                                                  
[31] "TrichDB"                                                                                                   
[32] "GiardiaDB"                                                                                                 
[33] "The Gene Ontology Consortium"                                                                              
[34] "ENCODE Project"                                                                                            
[35] "SchistoDB"                                                                                                 
[36] "NCBI/UniProt"                                                                                              
[37] "GENCODE"                                                                                                   
[38] "http://www.pantherdb.org"                                                                                  
[39] "RMBase v2.0"                                                                                               
[40] "snoRNAdb"                                                                                                  
[41] "tRNAdb"                                                                                                    
[42] "NCBI"                                                                                                      
[43] "DrugAge, DrugBank, Broad Institute"                                                                        
[44] "DrugAge"                                                                                                   
[45] "DrugBank"                                                                                                  
[46] "Broad Institute"                                                                                           
[47] "HMDB, EMBL-EBI, EPA"                                                                                       
[48] "STRING"                                                                                                    
[49] "OMA"                                                                                                       
[50] "OrthoDB"                                                                                                   
[51] "PathBank"                                                                                                  
[52] "EBI/EMBL"                                                                                                  
[53] "NCBI,DBCLS"                                                                                                
[54] "FANTOM5,DLRP,IUPHAR,HPRD,STRING,SWISSPROT,TREMBL,ENSEMBL,CELLPHONEDB,BADERLAB,SINGLECELLSIGNALR,HOMOLOGENE"
[55] "WikiPathways"                                                                                              
[56] "VAST-TOOLS"                                                                                                
[57] "pyGenomeTracks "                                                                                           
[58] "NA"                                                                                                        
[59] "UoE"                                                                                                       
[60] "TargetScan,miRTarBase,USCS,ENSEMBL"                                                                        
[61] "TargetScan"                                                                                                
[62] "QuickGO"                                                                                                   
[63] "CIS-BP"                                                                                                    
[64] "CTCFBSDB 2.0"                                                                                              
[65] "HOCOMOCO v11"                                                                                              
[66] "JASPAR 2022"                                                                                               
[67] "Jolma 2013"                                                                                                
[68] "SwissRegulon"                                                                                              
[69] "ENCODE SCREEN v3"                                                                                          
[70] "MassBank"                                                                                                  
[71] "excluderanges"                                                                                             
[72] "ENCODE"                                                                                                    
[73] "GitHub"                                                                                                    
[74] "Stanford.edu"                                                                                              
[75] "Publication"                                                                                               
[76] "CHM13"                                                                                                     
[77] "UCSChub"                                                                                                   
[78] "MGI"                                                                                                       
[79] "The Human Phenotype Ontology"                                                                              
[80] "ftp://ftp.ncbi.nlm.nih.gov/gene/DATA/"                                                                     
[81] "Google DeepMind"                                                                                           
[82] "UWashington"                                                                                               

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

length(unique(ah$species))
[1] 3008
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(): 2023-10-23
# 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 1989 records
# snapshotDate(): 2023-10-23
# $dataprovider: ftp://ftp.ncbi.nlm.nih.gov/gene/DATA/, NCBI
# $species: Coffea arabica, Escherichia coli, greater Indian_fruit_bat, Zoot...
# $rdataclass: OrgDb, TxDb
# additional mcols(): taxonomyid, genome, description,
#   coordinate_1_based, maintainer, rdatadateadded, preparerclass, tags,
#   rdatapath, sourceurl, sourcetype 
# retrieve records with, e.g., 'object[["AH111588"]]' 

             title                               
  AH111588 | OrgDb Sqlite file for Coffea arabica
  AH111589 | TxDb Sqlite file for Coffea arabica 
  AH114075 | org.Ag.eg.db.sqlite                 
  AH114076 | org.At.tair.db.sqlite               
  AH114077 | org.Bt.eg.db.sqlite                 
  ...        ...                                 
  AH116159 | org.Aegialitis_vocifera.eg.sqlite   
  AH116160 | org.Charadrius_vociferous.eg.sqlite 
  AH116161 | org.Charadrius_vociferus.eg.sqlite  
  AH116162 | org.Oxyechus_vociferus.eg.sqlite    
  AH116163 | org.Drosophila_erecta.eg.sqlite     

orgDb для кроличьего сыча

Раньше Вы занимались пингвинами, но аннотации для пингвина Адели в Bioconductor нынешней версии нет :(

Поэтому рассмотрим кроличьего сыча

query(ah, c("OrgDb", "Athene"))
AnnotationHub with 1 record
# snapshotDate(): 2023-10-23
# names(): AH115977
# $dataprovider: ftp://ftp.ncbi.nlm.nih.gov/gene/DATA/
# $species: Athene cunicularia
# $rdataclass: OrgDb
# $rdatadateadded: 2023-10-20
# $title: org.Athene_cunicularia.eg.sqlite
# $description: NCBI gene ID based annotations about Athene cunicularia
# $taxonomyid: 194338
# $genome: NCBI genomes
# $sourcetype: NCBI/UniProt
# $sourceurl: ftp://ftp.ncbi.nlm.nih.gov/gene/DATA/, ftp://ftp.uniprot.org/p...
# $sourcesize: NA
# $tags: c("NCBI", "Gene", "Annotation") 
# retrieve record with 'object[["AH115977"]]' 
org.athene <- ah[["AH115977"]]

orgDb для кроличьего сыча

select(org.athene, sample(keys(org.athene), 5), c("SYMBOL", "GENENAME"), "ENTREZID")
   ENTREZID       SYMBOL                                           GENENAME
1 113481478         XPO4                                         exportin 4
2 113482758 LOC113482758                       uncharacterized LOC113482758
3 113485059        TNIP1                      TNFAIP3 interacting protein 1
4 113481985          SSB small RNA binding exonuclease protection factor La
5 113486688         CASR                           calcium sensing receptor

biomaRt

biomaRt

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

listMarts()
               biomart                version
1 ENSEMBL_MART_ENSEMBL      Ensembl Genes 115
2   ENSEMBL_MART_MOUSE      Mouse strains 115
3     ENSEMBL_MART_SNP  Ensembl Variation 115
4 ENSEMBL_MART_FUNCGEN Ensembl Regulation 115
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.3)
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.3
3 AnoCar2.0v2
4  bAquChr1.2
5    Midas_v5
6 ASM200744v2
mart <- useMart("ENSEMBL_MART_ENSEMBL","hsapiens_gene_ensembl")

Проблемы с соединением

Для создания mart объекта лучше использовать функцию useEnsembl().

mart <- useEnsembl("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   LINC03104
3   LINC03105
4   LINC01666
5     TEKT4P2
6   LINC01674

Версии Ensembl

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

Явно выбрать используемую версию можно, используя параметр host в функции useEnsembl()

listEnsemblArchives() %>% head()
            name     date                                 url version
1 Ensembl GRCh37 Feb 2014          https://grch37.ensembl.org  GRCh37
2    Ensembl 115 Sep 2025 https://sep2025.archive.ensembl.org     115
3    Ensembl 114 May 2025 https://may2025.archive.ensembl.org     114
4    Ensembl 113 Oct 2024 https://oct2024.archive.ensembl.org     113
5    Ensembl 112 May 2024 https://may2024.archive.ensembl.org     112
6    Ensembl 111 Jan 2024 https://jan2024.archive.ensembl.org     111
  current_release
1                
2               *
3                
4                
5                
6                
GRCh37_mart <- useEnsembl("ensembl","hsapiens_gene_ensembl", host = "https://grch37.ensembl.org")

Задание

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

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

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

Решение

# BiocManager::install("biomaRt")
library(biomaRt)

#mart creation
mart <- useEnsembl("ensembl","hsapiens_gene_ensembl", host = "https://may2025.archive.ensembl.org")

#GC-content attribute name
listAttributes(mart = mart) %>% 
  dplyr::filter(str_detect(name, "gc"), page == "feature_page")
                        name       description         page
1 percentage_gene_gc_content Gene % GC content feature_page
gene_info <- getBM(attributes = "percentage_gene_gc_content", 
                   filters = "ensembl_gene_id",
                   values = ens_genes, 
                   mart = mart)
gene_info
  percentage_gene_gc_content
1                      49.96
2                      46.77
3                      46.08
4                      49.19
5                      55.74

Получение ортологов между человеком и шимпанзе при помощи biomaRt

getLDS() – удобная функция для сопоставления mart разных организмов, но работает не всегда :(

ensembl <- useEnsembl("ensembl", host = "https://sep2025.archive.ensembl.org")

human <- useDataset("hsapiens_gene_ensembl", mart = ensembl)
chimpz <- useDataset("ptroglodytes_gene_ensembl", mart = ensembl)

hs2pt <- getLDS(
  # человек
  mart = human,
  attributes = c("ensembl_gene_id", "external_gene_name", "chromosome_name"),
  # шимпанзе
  martL = chimpz,
  attributesL = c("ensembl_gene_id", "external_gene_name", "chromosome_name"))

hs2pt %>% head()

Получение ортологов человеком и шимпанзе при помощи biomaRt

В mart для H.sapiens есть аттрибуты, связанные с P.troglodytes

ensembl <- useEnsembl("ensembl","hsapiens_gene_ensembl") #mart for H.sapiens

listAttributes(ensembl) %>% dplyr::filter(str_detect(name, "ptroglodytes"))
                                                name
1                  ptroglodytes_homolog_ensembl_gene
2          ptroglodytes_homolog_associated_gene_name
3               ptroglodytes_homolog_ensembl_peptide
4                    ptroglodytes_homolog_chromosome
5                   ptroglodytes_homolog_chrom_start
6                     ptroglodytes_homolog_chrom_end
7  ptroglodytes_homolog_canonical_transcript_protein
8                       ptroglodytes_homolog_subtype
9                ptroglodytes_homolog_orthology_type
10                      ptroglodytes_homolog_perc_id
11                   ptroglodytes_homolog_perc_id_r1
12                    ptroglodytes_homolog_goc_score
13                 ptroglodytes_homolog_wga_coverage
14         ptroglodytes_homolog_orthology_confidence
                                           description     page
1                            Chimpanzee gene stable ID homologs
2                                 Chimpanzee gene name homologs
3           Chimpanzee protein or transcript stable ID homologs
4                  Chimpanzee chromosome/scaffold name homologs
5            Chimpanzee chromosome/scaffold start (bp) homologs
6              Chimpanzee chromosome/scaffold end (bp) homologs
7                       Query protein or transcript ID homologs
8                 Last common ancestor with Chimpanzee homologs
9                             Chimpanzee homology type homologs
10 %id. target Chimpanzee gene identical to query gene homologs
11 %id. query gene identical to target Chimpanzee gene homologs
12            Chimpanzee Gene-order conservation score homologs
13          Chimpanzee Whole-genome alignment coverage homologs
14     Chimpanzee orthology confidence [0 low, 1 high] homologs

Получение ортологов человеком и шимпанзе при помощи biomaRt

Выведем Ensembl ID, имя гена и хромосому, на которой находится ген, для ортологов человека и шимпанзе

#no filters -- all human genes used in search
hs2pt <- getBM(attributes = c("ensembl_gene_id", "external_gene_name", "chromosome_name",
                              "ptroglodytes_homolog_ensembl_gene", 
                              "ptroglodytes_homolog_chromosome"),
  mart = mart)
hs2pt %>% head(n=10)
   ensembl_gene_id external_gene_name chromosome_name
1  ENSG00000210049              MT-TF              MT
2  ENSG00000211459            MT-RNR1              MT
3  ENSG00000210077              MT-TV              MT
4  ENSG00000210082            MT-RNR2              MT
5  ENSG00000209082             MT-TL1              MT
6  ENSG00000198888             MT-ND1              MT
7  ENSG00000210100              MT-TI              MT
8  ENSG00000210107              MT-TQ              MT
9  ENSG00000210112              MT-TM              MT
10 ENSG00000198763             MT-ND2              MT
   ptroglodytes_homolog_ensembl_gene ptroglodytes_homolog_chromosome
1                                                                   
2                                                                   
3                                                                   
4                                                                   
5                                                                   
6                 ENSPTRG00000042641                              MT
7                                                                   
8                                                                   
9                                                                   
10                ENSPTRG00000042626                              MT

Получение ортологов человеком и шимпанзе при помощи OrgDb

Найдем одни и те же ID между OrgDb человека и шимпанзе, основываясь на именах генов

# BiocManager::install("org.Pt.eg.db")
# BiocManager::install("org.Hs.eg.db")

library(org.Hs.eg.db)
library(org.Pt.eg.db)

human_genes <- select(org.Hs.eg.db, keys(org.Hs.eg.db), "SYMBOL", "ENTREZID") %>% 
  dplyr::rename(hs_entrez = ENTREZID)

gene_names <- human_genes$SYMBOL #get gene names

chimpz_genes <- select(org.Pt.eg.db, gene_names, "ENTREZID", "SYMBOL") %>%  
  dplyr::rename(pt_entrez = ENTREZID)

hs2pt <- merge(human_genes, chimpz_genes, by = "SYMBOL")
hs2pt %>% head()
      SYMBOL hs_entrez pt_entrez
1 A-GAMMA3'E 109951028      <NA>
2       A1BG         1    742390
3   A1BG-AS1    503538      <NA>
4       A1CF     29974    466076
5        A2M         2    465372
6    A2M-AS1    144571      <NA>

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

Конец!