среда, 23 сентября 2015 г.

Новости из мира РНК.

Группа австрийских исследователей, работающих под руководством доктора Maria Kalyna в Венском медицинском университете (Medical University of Vienna, Austria), а также Университете природных ресурсов и наук о жизни (University of Natural Resources and Life Sciences, Vienna, Austria) анонсировали открытие нового типа функциональных элементов генома – экзитронов. О своем открытии авторы сообщили в 25 томе журнала Genome Research за 2015 год (PubMed ID 25934563). Под экзитронами (англ. exitrons, exonic introns) понимаются внутренние участки белок-кодирующих экзонов, которые могут удаляться системой сплайсинга во время созревания мРНК. Поскольку они располагаются непосредственно в белок-кодирующих участках гена, то удаление таких последовательностей неминуемо влияет на структуру и функцию белка: нарушается организация целых доменов или их участков, либо удаляются сайты для пострансляционной модификации белков, что не может не сказаться на их функциональности. По данным, полученным авторами открытия, сплайсинг экзитронов является тканеспецифическим, активируется во время стресса и канцерогенеза, может происходить у непрерывающихся (без интронов) генов, и наблюдается как у растений, так и у животных (включая человека).
Экзитроны и последствия их сплайсинга
(источникYamile M., Markus H., Zahra A., Andrea B., Maria K. Unmasking alternative splicing inside protein-coding exons defines exitrons and their role in proteome plasticity. // Genome Research. – 2015. – Vol. 25. – P. 995-1007. doi:10.1101/gr.186585.114)


Организация и создание объектов класса TxDb.

Объекты класса TxDb (или TranscriptDb) являются специализированными базами данных (контейнерами), где хранится информация о транскриптах. Идея создания и использования такого рода объектов в биоинформатике была предложена Marc Carlson с соавторами из Fred Hutchinson Cancer Research Center. Идея не является полностью оригинальной, так как в ней многое позаимствовано от объектов класса AnnotationDb. На практике она была реализована этими же авторами в виде специализированной библиотеки функций GenomicFeatures, доступной на официальном сайте проекта Bioconductor по адресу http://bioconductor.org/packages/release/bioc/html/GenomicFeatures.html. Там же можно найти руководство (http://bioconductor.org/ packages/release/bioc/manuals/GenomicFeatures/man/GenomicFeatures.pdf) и виньетку (http://bioconductor.org/packages/ release/bioc/vignettes/GenomicFeatures/inst/doc/GenomicFeatures.pdf) по этой библиотеке. Кроме того, читатели могут познакомиться с хорошей презентаций Marc Carlson (https://www.bioconductor.org/help/course-materials/2010/BioC2010/ GenomicFeatures.pdf), которую он сделал в декабре 2010 года, что бы анонсировать создание нового пакета R функций.

Организация объектов класса TxDb.
Что бы разобраться с особенностями организации объектов TxDb мы установим библиотеку GenomicFeatures и воспользуемся примером, поставляемым вместе с библиотекой. Библиотека GenomicFeatures может быть установлена на локальный компьютер с официального сайта проекта Bioconductor с помощью стандартной процедуры:

source("https://bioconductor.org/biocLite.R")
biocLite("GenomicFeatures")

Обращаем внимание, что вместе с библиотекой GenomicFeatures в папку library каталога R вашего компьютера будет установлено ряд зависимостей, в частности, такая библиотека, как GenomicRanges. Кроме того, при установке библиотеки GenomicFeatures будут импортированы вспомогательные библиотеки, среди которых наиболее интересной является библиотека RSQLiteR версия ядра системы управления базами данных SQLite, к чему мы вернемся несколько позже.
Загрузим библиотеку и нужный нам пример в рабочее пространство R среды:

rm(list = ls())
setwd("D:/Transcriptome")
library(GenomicFeatures)
SampleFile = system.file("extdata", "hg19_knownGene_sample.sqlite", package = "GenomicFeatures")
DataTxDb = loadDb(SampleFile)

С помощью стандартных запросов print(DataTxDb) и str(DataTxDb) мы можем получить краткое описание созданного нами объекта. В этом описании о данных, хранящихся в объекте DataTxDb, говорится лишь то, что там имеются сведения о 178 транскриптах и 620 экзонах, из которых 523 являются кодирующими. Однако оценка размера созданного нами объекта явно противоречит ожидаемому (исходя из разнообразия представленной в нем информации): стандартный запрос object.size(DataTxDb) дает нам размер всего в 648 байт. Это связано с тем, что в рабочее пространство R среды были загружены не сами транскрипты, а лишь ссылка с описанием на одну из локально установленных баз данных SQLite, которая и содержит сведения о транскриптах. Положение и название этой базы можно увидеть в слоте dbname поля conn вывода запроса str(DataTxDb) по нашему объекту.

print(DataTxDb)
TxDb object:
# Db type: TxDb
# Supporting package: GenomicFeatures
# Data source: UCSC
# Genome: hg19
# Organism: Homo sapiens
# UCSC Table: knownGene
# Resource URL: http://genome.ucsc.edu/
# Type of Gene ID: Entrez Gene ID
# Full dataset: no
# miRBase build ID: NA
# transcript_nrow: 178
# exon_nrow: 620
# cds_nrow: 523
# Db created by: GenomicFeatures package from Bioconductor
# Creation time: 2014-10-08 10:31:15 -0700 (Wed, 08 Oct 2014)
# GenomicFeatures version at creation time: 1.17.21
# RSQLite version at creation time: 0.11.4
# DBSCHEMAVERSION: 1.0
str(DataTxDb)
Reference class 'TxDb' [package "GenomicFeatures"] with 6 fields
 $ conn                  :Formal class 'SQLiteConnection' [package "RSQLite"] with 5 slots
  .. ..@ Id                                 :<externalptr>
  .. ..@ dbname                       : chr "D:/R-3.2.2/library/GenomicFeatures/extdata/hg19_knownGene_sample.sqlite"
  .. ..@ loadable.extensions    : logi TRUE
  .. ..@ flags                            : int 1
  .. ..@ vfs                               : chr ""
 $ packageName   : chr(0)
 $ .chrom              : chr [1:93] "chr1" "chr2" "chr3" "chr4" ...
 $ isActiveSeq       : logi [1:93] TRUE TRUE TRUE TRUE TRUE TRUE ...
 $ seqlevelsStyle   : chr(0)
 $ new2old             : int [1:93] 1 2 3 4 5 6 7 8 9 10 ...
 and 13 methods, of which 1 is possibly relevant:
   initialize

База данных SQLite является встроенной реляционной базой данных, в которой разные сведения об одном и том же объекте хранятся не в одной, а во множестве отдельных, но собранных в единый файл и взаимосвязанных друг с другом таблицах, что позволяет избежать дублирования информации. Объекты TxDb содержат таблицы с данными о пяти типах функциональных элементов генома: хромосомы (chrominfo), гены (gene), транскрипты (transcript), экзоны (exon) и CDS (cds), - а также таблицу сплайсинговых событий (splicing). Конечному пользователю эти таблицы (или сведения из разных таблиц) предлагаются в виде отдельных объектов класса GRanges, для чего используются возможности библиотеки GenomicRanges, а взаимосвязь между таблицами и доступ к информации, хранящейся в них, обеспечивается благодаря функциям предустановленной библиотеки RSQLite. Схема организации, а также направления связей между компонентами объекта TxDb, даны ниже.


Организация объектов класса TxDb (источник: https://www.bioconductor.org/help/course-materials/2010/BioC2010/GenomicFeatures.pdf)

  
Благодаря описанным особенностям организации объекты TxDb предоставляют широкие возможности для конечного пользователя по извлечению и дальнейшему использованию разнообразной информации, касающейся транскриптов. В частности, высокоупорядоченная внутренняя архитектура и возможность формирования множества одновременных запросов позволяют извлекать релевантную информацию из больших массивов данных (до 2 Тб) со скоростью, которая пока не может быть достигнута другими способами.

Создание объектов класса TxDb.
В настоящее время на сайте проекта Bioconductor можно найти 23 полностью готовых к использованию SQLite-подобных баз данных, преобразованных в объекты TxDb. Эти базы основаны на данных о транскриптах семи видов живых организмов (от Saccharomyces cerevisiae до Homo sapiens), представленных в геномном обозревателе UCSC, а также на портале BioMart. Каждый объект может быть скачан и установлен на локальный компьютер как стандартная библиотека R функций. Перечень всех готовых объектов и их краткая характеристика представлены в нижеследующей таблице.

Прекомпилированные объекты TxDb, доступные для скачивания с сайта проекта Bioconductor.

Библиотека
Организм
Сборка генома
Модели генов
Бинарный код
для Windows
TxDb.Athaliana.BioMart.plantsmart10
Arabidopsis
thaliana
TAIR10
Ensembl Plants 10
Да
TxDb.Athaliana.BioMart.plantsmart12
Arabidopsis
thaliana
TAIR10
Ensembl Plants 12
Да
TxDb.Athaliana.BioMart.plantsmart14
Arabidopsis
thaliana
TAIR10
Ensembl Plants 14
Да
TxDb.Athaliana.BioMart.plantsmart16
Arabidopsis
thaliana
TAIR10
Ensembl Plants 16
Да
TxDb.Athaliana.BioMart.plantsmart19
Arabidopsis
thaliana
TAIR10
Ensembl Plants 19
Да
TxDb.Athaliana.BioMart.plantsmart21
Arabidopsis
thaliana
TAIR10
Ensembl Plants 21
Да
TxDb.Athaliana.BioMart.plantsmart22
Arabidopsis
thaliana
TAIR10
Ensembl Plants 22
Нет
TxDb.Athaliana.BioMart.plantsmart25
Arabidopsis
thaliana
TAIR10
Ensembl Plants 25
Нет
TxDb.Celegans.UCSC.ce6.ensGene
Caenorhabditis
elegans
WS190
Ensembl Genes 54
Нет
TxDb.Dmelanogaster.UCSC.dm3.ensGene
Drosophila
melanogaster
BDGP5
Ensembl Genes 79
Нет
TxDb.Hsapiens.BioMart.igis
Homo
sapiens
GRCh37.p2
Ensembl Genes 67
Нет
TxDb.Hsapiens.UCSC.hg18.knownGene
Homo
sapiens
NCBI36/hg18
UCSC Genes
Нет
TxDb.Hsapiens.UCSC.hg19.knownGene
Homo
sapiens
GRCh37/hg19
UCSC Genes
Нет
TxDb.Hsapiens.UCSC.hg19.lincRNAsTranscripts
Homo
sapiens
GRCh37/hg19
UCSC/Human
Body Map lincRNAs
Нет
TxDb.Hsapiens.UCSC.hg38.knownGene
Homo
sapiens
GRCh38/hg38
UCSC Genes
Нет
TxDb.Mmusculus.UCSC.mm10.ensGene
Mus
musculus
GRCm38
Ensembl Genes 79
Нет
TxDb.Mmusculus.UCSC.mm10.knownGene
Mus
musculus
GRCm38/mm10
UCSC Genes
Нет
TxDb.Mmusculus.UCSC.mm9.knownGene
Mus
musculus
NCBI37/mm9
UCSC Genes
Нет
TxDb.Rnorvegicus.BioMart.igis
Rattus
norvegicus
RGSC 3.4
Ensembl Genes 67
Нет
TxDb.Rnorvegicus.UCSC.rn4.ensGene
Rattus
norvegicus
Baylor 3.4/rn4
Ensembl Genes 54
Нет
TxDb.Rnorvegicus.UCSC.rn5.refGene
Rattus
norvegicus
RGSC 5.0
NCBI RefSeq
Нет
TxDb.Scerevisiae.UCSC.sacCer2.sgdGene
Saccharomyces
cerevisiae
SGDR61-1-1
SGD Genes
Нет
TxDb.Scerevisiae.UCSC.sacCer3.sgdGene
Saccharomyces
cerevisiae
SGDR64-1-1
SGD Genes
Нет

Такие объекты привлекательны тем, что они полностью готовы к использованию. Однако такой подход не обладает гибкостью, так как готовые библиотеки охватывают лишь ограниченное количество живых организмов, оперируют ограниченными наборами данных и не обновляются на регулярной основе. Поэтому далее мы рассмотрим разнообразные методы самостоятельной сборки объектов TxDb.
Создание объектов класса TxDb из аннотаций, доступных через портал BioMart.
BioMart (http://www.biomart.org) является открытым и бесплатным сервисом, который предоставляет свободный доступ к разнообразным биологическим данным и программному обеспечению для их анализа. Данные, доступные через BioMart, касаются разных организмов, разных типов клеток и тканей, а также их состояний, получены в разных лабораториях по всему миру и первоначально собраны в разных базах данных. Благодаря оптимизированной структуре и широким возможностям BioMart является популярным сервисом среди биологов. Более подробно о BioMart и тех возможностях, которыми обладает данный сервис, можно узнать из недавних публикаций: 1) Smedley D. et al. The BioMart community portal: an innovative alternative to large, centralized data repositories. // Nucleic Acid Research. - 2015. - Vol. 43. - P. W589-W598. doi: 10.1093/nar/gkv350 (http://nar.oxfordjournals.org/content/43/W1/W589); 2) BioMart Virtual Issue. // Database. - Vol. 2011 (http://www.oxfordjournals.org/ our_journals/databa/biomart_virtual_issue.html).
Для создания нового объекта TxDb из аннотаций, доступных через портал BioMart, мы воспользуемся функцией высокого уровня makeTxDbFromBiomart из библиотеки GenomicFeatures. Эта функция имеет 9 аргументов, позволяющих пользователю выбрать те данные, которые будут помещены в объект TxDb.
q biomart – название базы данных, которая будет использована при создании объекта TxDb.
q dataset – название набора данных из заданной аргументом biomart базы данных.
q transcript_ids – перечень идентификаторов транскриптов, которые будут помещены в объект TxDb. Если этот аргумент не задан (по умолчанию аргумент имеет значение NULL), то в объект TxDb будут переданы аннотации по всем транскриптам, содержащимся в выбранном наборе данных, а в кратком описании полученного объекта будет значиться “Full dataset: yes”. Если же список транскриптов задан, то в объект TxDb будут помещены аннотации только выбранных транскриптов, а в кратком описании полученного объекта будет записано “Full dataset: no”.
q circ_seqs – список кольцевых хромосом. По молчанию этот аргумент имеет значение DEFAULT_CIRC_SEQS, которое является символьным вектором с перечнем общепринятых обозначений кольцевых хромосом.
q filters – список дополнительных фильтров, которые будут использованы при формировании запроса к порталу BioMart (например, filters = list(source = "entrez")).
q id_prefix – задание префикса, использованного в атрибутах данных, получаемых с портала BioMart (например, в некоторых случаях в идентификаторах транскриптов типа "ensembl_transcript_id" используется префикс "ensembl_”).
q host – адрес портала BioMart. По умолчанию используется “www.biomart.org”, однако это значение может быть изменено на адрес более подходящего зеркала портала BioMart (например, при запросе через BioMart данных из Ensembl можно воспользоваться облачным зеркалом http://asia.ensembl.org, что находится в Сингапуре).
q port – порт, который будет задействован при HTTP коммуникации с порталом BioMart.
q miRBaseBuild – информация о сборке библиотеки mirbase.db. Эта информация позволяет извлекать из полученного объекта TxDb данные по микроРНК. По умолчанию этот аргумент имеет NA.
Список доступных значений аргумента biomart можно получить, воспользовавшись функцией listMarts из библиотеки biomaRt (эта библиотека импортируется и устанавливается на локальный компьютер вместе с библиотекой GenomicFeatures):

rm(list = ls())
setwd("D:/Transcriptome")
library(GenomicFeatures)
library(biomaRt)
biomartValues = listMarts()
print(biomartValues[1:5, ])
biomart
version
1
ensembl
ENSEMBL GENES 81 (SANGER UK)
2
snp
ENSEMBL VARIATION 81 (SANGER UK)
3
regulation
ENSEMBL REGULATION 81 (SANGER UK)
4
vega
VEGA 61 (SANGER UK)
5
fungi_mart_28
ENSEMBL FUNGI 28 (EBI UK)

Что бы выяснить, какие наборы данных содержатся в базах, доступных через BioMart, мы воспользуемся функцией listDatasets из библиотеки biomaRt, при этом мы ограничим наш запрос только базой данных Ensembl и выведем только первые 5 значений (из представленных 69 значений):

datasetValues = listDatasets(useMart("ensembl"))
print(datasetValues[1:5, ])
dataset
description
version
1
oanatinus_gene_ensembl
Ornithorhynchus anatinus genes (OANA5)
OANA5
2
cporcellus_gene_ensembl
Cavia porcellus genes (cavPor3)
cavPor3
3
gaculeatus_gene_ensembl
Gasterosteus aculeatus genes (BROADS1)
BROADS1
4
lafricana_gene_ensembl
Loxodonta africana genes (loxAfr3)
loxAfr3
5
itridecemlineatus_gene_ensembl
Ictidomys tridecemlineatus genes (spetri2)
spetri2

К сожалению, не все из имеющихся наборов данных могут быть преобразованы в объекты TxDb, при этом списка рабочих значений аргумента dataset не существует. Так, аннотации транскриптов из тканей молочной железы, собранные в базе данных Breast_mart_69, содержат некорректные значения в поле “cds_start” и не могут быть преобразованы в объект TxDb. Поэтому первым шагом необходимо изучить структуру набора данных, и лишь после этого принимать решение о целесообразности проведения дальнейшей работы.
Что бы выяснить, какие конкретно значения может принимать аргумент miRBaseBuild, необходимо сформировать запрос в предустановленную библиотеку mirbase.db. Таблица, которая будет получена по такому запросу, содержит перечень организмов и наименования сборок соответствующих геномов, включенных в текущую версию библиотеки.

library(mirbase.db)
miRBaseBuildValues = supportedMiRBaseBuildValues()
print(miRBaseBuildValues[1:5, ])
name
genome_assembly
1
Nematostella vectensis
JGI1.0
2
Strongylocentrotus purpuratus
Spur2.1
3
Ciona intestinalis
JGI2
4
Ciona savignyi
CSAV2.0
5
Branchiostoma
floridae JGI2.0

Теперь мы можем сформировать запрос в BioMart и создать новый объект TxDb. В качестве примера мы запросим через BioMart аннотацию транскриптов двух генов человека RUNX1 и RUNX1T1, представленную в геномном браузере Ensembl:

DataTxDb = makeTxDbFromBiomart(biomart = "ensembl",
         dataset = "hsapiens_gene_ensembl",
         transcript_ids = NULL,
         circ_seqs = DEFAULT_CIRC_SEQS,
         filters = list(ensembl_gene_id = c("ENSG00000079102", "ENSG00000159216")),
         id_prefix = "ensembl_",
         host = "www.biomart.org",
         port = 80,
         miRBaseBuild = "GRCh37.p5")

Ход создания нового объекта TxDb будет отображаться в R консоли:

Download and preprocess the 'transcripts' data frame ... OK
Download and preprocess the 'chrominfo' data frame ... OK
Download and preprocess the 'splicings' data frame ... OK
Download and preprocess the 'genes' data frame ... OK
Prepare the 'metadata' data frame ... OK
Make the TxDb object ... OK

В итоге мы получим полностью готовый для дальнейшего использования объект TxDb:

print(DataTxDb)
TxDb object:
# Db type: TxDb
# Supporting package: GenomicFeatures
# Data source: BioMart
# Organism: Homo sapiens
# Resource URL: www.biomart.org:80
# BioMart database: ensembl
# BioMart database version: ENSEMBL GENES 81 (SANGER UK)
# BioMart dataset: hsapiens_gene_ensembl
# BioMart dataset description: Homo sapiens genes (GRCh38.p3)
# BioMart dataset version: GRCh38.p3
# Full dataset: no
# miRBase build ID: GRCh37.p5
# transcript_nrow: 69
# exon_nrow: 165
# cds_nrow: 57
# Db created by: GenomicFeatures package from Bioconductor
# Creation time: 2015-09-22 12:47:16 +0200 (Tue, 22 Sep 2015)
# GenomicFeatures version at creation time: 1.20.4
# RSQLite version at creation time: 1.0.0
# DBSCHEMAVERSION: 1.1

Что бы у нас была возможность использовать созданный объект и в будущем, мы можем сохранить его либо как локальную SQLite базу данных, либо как новую библиотеку. Первый вариант может быть реализован с помощью функции saveDb из библиотеки AnnotationDbi. Библиотека AnnotationDbi загружается в рабочее пространство R среды как вспомогательная при загрузке библиотеки GenomicFeatures, поэтому нам не нужно ее дополнительно вызывать. Функция saveDb имеет только два аргумента – название объекта, который необходимо сохранить, и название файла, в который будет произведена запись данных. Файл может быть записан по любому адресу и получит расширение .sqlite.

saveDb(x = DataTxDb, file = "D:/Transcriptome/DataTxDb.sqlite")

Что бы реализовать второй вариант, воспользуемся функцией makeTxDbPackage, на которую нужно подать название объекта, задать версию библиотеки, указать лицо, которое ответственно за поддержание библиотеки (желательно вместе с адресом электронной почты), равно как и автора библиотеки (опять же, желательно вместе с адресом электронной почты), а также определить директорию, куда будет произведена запись библиотеки.

makeTxDbPackage(txdb = DataTxDb,
       version = "0.01",
       maintainer = "Vasily V. Grinev <grinev_vv@bsu.by>",
       author = "Vasily V. Grinev <grinev_vv@bsu.by>",
       destDir = "D:/Scientific Software/R/R-3.2.2/library",
       license = "Artistic-2.0")
Creating package in D:/Scientific Software/R/R-3.2.2/library/TxDb.Hsapiens.BioMart.ensembl.GRCh38.p3

В результате в указанную директорию будет произведена запись новой папки TxDb.Hsapiens.BioMart.ensembl.GRCh38.p3, которая содержит ряд файлов, готовых к компиляции в бинарный пакет.
В завершение отметим, что процессы создания объекта TxDb и его сохранения в виде библиотеки могут быть совмещены с помощью функции makeTxDbPackageFromBiomart, которая в качестве аргументов использует совокупность аргументов функций makeTxDbFromBiomart и makeTxDbPackage. Напомним также, что все перечисленные функции работают корректно только при условии, что используется библиотека GenomicFeatures версии 1.20.2 и выше, скомпилированная под R версию 3.2.* (об этом уже шла речь в разделе “Загрузка файла формата GFF в рабочее пространство R среды”).
Создание объектов класса TxDb из аннотаций, предоставляемых геномным браузером UCSC.
Аннотации транскриптов в геномном браузере UCSC собраны в виде таблиц. Что бы преобразовать соответствующую таблицу в объект TxDb мы воспользуемся функцией высокого уровня makeTxDbFromUCSC из библиотеки GenomicFeatures. Эта функция имеет 7 аргументов, позволяющих пользователю выбрать те данные, которые будут помещены в объект TxDb.
q genome – название генома, для которого составлены таблицы с аннотациями.
q tablename – название таблицы с аннотациями транскриптов.
q transcript_ids – перечень идентификаторов транскриптов, которые будут помещены в объект TxDb. Если этот аргумент не задан (по умолчанию аргумент имеет значение NULL), то в объект TxDb будут переданы аннотации по всем транскриптам, содержащимся в выбранной таблице, а в кратком описании полученного объекта будет значиться “Full dataset: yes”. Если же список транскриптов задан, то в объект TxDb будут помещены аннотации только выбранных транскриптов, а в кратком описании полученного объекта будет записано “Full dataset: no”.
q circ_seqs – список кольцевых хромосом. По молчанию этот аргумент имеет значение DEFAULT_CIRC_SEQS.
q url – адрес геномного браузера UCSC. По умолчанию используется “http://genome.ucsc.edu/cgi-bin/”, однако может быть задан адрес одного из зеркал, например, европейского зеркала http://genome-euro.ucsc.edu/cgi-bin/.
q goldenPath_url – адрес ftp-сервера, где хранятся таблицы с аннотациями. По умолчанию используется "ftp://hgdownload.cse.ucsc.edu/goldenPath"
q miRBaseBuild – информация о сборке библиотеки mirbase.db.
Перечень доступных геномов может быть получен с помощью функции ucscGenomes из библиотеки rtracklayer через стандартный запрос (мы ограничим вывод только первыми 10 значениями):

library(rtracklayer)
ucscGenomes()[, "db"][1:10]
[1] "hg38" "hg19" "hg18" "hg17" "hg16" "vicPac2" "vicPac1" "dasNov3" "otoGar3" "papHam1"

Для того, что бы узнать, какие таблицы с аннотациями могут быть преобразованы в объекты TxDb, воспользуемся функцией supportedUCSCtables из библиотеки GenomicFeatures:

supportedUCSCtables()[1:5, ]

track
subtrack
1
knownGene
UCSC Genes
<NA>
2
knownGeneOld3
Old UCSC Genes
<NA>
3
ccdsGene
CCDS
<NA>
4
refGene
RefSeq Genes
<NA>
5
xenoRefGene
Other RefSeq
<NA>

Теперь мы можем сформировать запрос к геномному браузеру UCSC и создадим новый объект TxDb. В качестве примера мы запросим аннотацию транскриптов гена человека RUNX1, содержащуюся в таблице knownGene:

DataTxDb = makeTxDbFromUCSC(genome = "hg19",
       tablename = "knownGene",
       transcript_ids = c("uc002yuh.3",
           "uc010gmu.3",
           "uc010gmv.3",
           "uc002yuj.4",
           "uc002yuk.4",
           "uc002yul.1",
           "uc002yum.1",
           "uc002yun.1",
           "uc002yuo.1",
           "uc002yup.1",
           "uc010gmw.1",
           "uc002yur.1",
           "uc002yut.1",
           "uc011adz.2"),
       circ_seqs = DEFAULT_CIRC_SEQS,
       url = "http://genome-euro.ucsc.edu/cgi-bin/",
       goldenPath_url = "ftp://hgdownload.cse.ucsc.edu/goldenPath",
       miRBaseBuild = "GRCh37.p5")

Как и ранее, мы сможем следить за ходом создания нового объекта TxDb через R консоль и сохраним полученный объект с помощью функций saveDb, makeTxDbPackage или makeTxDbPackageFromUCSC.
Создание объектов класса TxDb из файлов формата GFF.
Этот метод создания объектов TxDb был подробно описан в разделе “Загрузка файла формата GFF в рабочее пространство R среды”. Для сохранения таких объектов может быть использована функция makeTxDbPackage как описано выше.
Создание объектов класса TxDb из аннотаций, предоставленных пользователем.
Объекты класса TxDb могут быть созданы и из данных самого пользователя, что предоставляет максимум свободы действий. Для этого мы можем воспользоваться функцией низкого уровня makeTxDb из библиотеки GenomicFeatures. Эта функция имеет 6 аргументов, позволяющих пользователю задать те данные, которые будут помещены в объект TxDb.
q transcripts – таблица, содержащая геномные координаты набора транскриптов.
q splicings – таблица, содержащая геномные координаты экзонов и CDS набора транскриптов, заданного аргументом transcripts.
q genes – таблица генов, ассоциированных с заданным набором транскриптов.
q chrominfo – таблица с информацией о хромосомах (например, их названия и длина), из которых происходят заданные транскрипты.
q metadata – таблица с двумя столбцами "name" и "value", содержащими символьные метаданные о транскриптах (например, организм, геном и т. д.).
q reassign.ids – аргумент, контролирующий, каким образом разным типам признаков (например, транскриптам, экзонам и т. д.) назначаются внутренние идентификаторы.
Таблица transcripts должна содержать по одной строке на каждый транскрипт и 7 столбцов:
tx_id – идентификатор транскрипта. Повторы и NA не допускаются. Заполнение столбца является обязательным.
tx_name – название транскрипта. Может быть символьным вектором или фактором, допускаются повторы и NA. Столбец не является обязательным к заполнению.
tx_typeтип транскрипта (например, mRNA, ncRNA, snoRNA и т. д.). Может быть символьным вектором или фактором, допускаются повторы и NA. Столбец не является обязательным к заполнению.
tx_chrom – хромосома, из которой происходит транскрипт. Может быть символьным вектором или фактором, но не NA. Заполнение столбца является обязательным.
tx_strand – цепь, из которой происходит транскрипт. Может быть символьным вектором или фактором двух уровней ("+" или "-"), но не NA. Заполнение столбца является обязательным.
tx_start – целочисленное значение координаты начала транскрипта. NA не допускаются. Заполнение столбца является обязательным.
tx_end – целочисленное значение координаты конца транскрипта. NA не допускаются. Заполнение столбца является обязательным.
Ниже приведен пример заполнения таблицы transcripts:

transcripts = data.frame(tx_id = 1:4,
  tx_name = c("tr1", "tr2", "tr3", "tr4"),
  tx_type = c("ncRNA", rep("mRNA", 3)),
  tx_chrom = "chr1",
  tx_strand = c("-", "+", "+", "+"),
  tx_start = c(10, 2000, 2000, 5000),
  tx_end = c(3000, 6000, 6000, 10000))

Таблица splicings должна содержать N строк на транскрипт, где N равен количеству экзонов у транскрипта. В каждой строке описывается экзон, а также кодирующая последовательность, если таковая имеется. Для этого используются следующие столбцы:
tx_id – идентификатор, связывающий каждую строку таблицы splicings с соответствующей уникальной строкой таблицы transcripts. Поскольку один транскрипт может состоять более чем из одного экзона, то, как следствие, с одной строкой из таблицы transcripts может быть связано множество строк из таблицы splicings. NA для этого столбца не допускаются, при этом все значения из столбца должны быть представлены в столбце transcripts$tx_id. Заполнение столбца является обязательным.
exon_rank – ранг (положение) экзона в транскрипте. Значения могут быть только целочисленными, без NA, при этом пары tx_id:exon_rank должны быть уникальными. Заполнение столбца является обязательным.
exon_id – идентификатор экзона в виде целочисленного значения. NA не допускаются. Столбец не является обязательным к заполнению.
exon_name – название экзона. Может быть символьным вектором или фактором, допускаются повторы и NA. Столбец не является обязательным к заполнению.
exon_chrom – хромосомная принадлежность экзона. Может быть символьным вектором или фактором, но не NA. Столбец не является обязательным к заполнению. Если этот столбец не заполнен, то по умолчанию он будет заполнен значениями transcripts$tx_chrom. Если же заполнен, то обязательно должен быть заполнен и столбец exon_strand.
exon_strand – цепь, которой принадлежит экзон. Может быть символьным вектором или фактором, но не NA. Столбец не является обязательным к заполнению. Если этот столбец не заполнен, то по умолчанию он будет заполнен значениями transcripts$tx_strand, при этом столбец exon_chrom также не должен быть заполнен.
exon_start – целочисленное значение координаты начала экзона. NA не допускаются. Заполнение столбца является обязательным.
exon_end – целочисленное значение координаты конца экзона. NA не допускаются. Заполнение столбца является обязательным.
cds_id – идентификатор кодирующей последовательности. Может быть целочисленным вектором, однако не является обязательным к заполнению. Если же этот столбец заполнен, то заполненными должны быть и столбцы cds_start и cds_end.
cds_name – название кодирующей последовательности. Может быть символьным вектором или фактором, допускаются повторы и NA. Столбец не является обязательным к заполнению. Если же этот столбец заполнен, то заполненными должны быть и столбцы cds_start и cds_end. Если соответствующие значения в столбцах cds_start и cds_end указаны как NA, то и в столбце также должны стоять NA.
cds_start – целочисленное значение координаты начала кодирующей последовательности. Столбец не является обязательным к заполнению.
cds_end – целочисленное значение координаты конца кодирующей последовательности. Столбец не является обязательным к заполнению. Если один из столбцов cds_start и cds_end отсутствует, то и второго тоже не должно быть. Если в одном из этих столбцов стоит NA, то и второй должен быть заполнен также.
Пример заполнения таблицы splicings представлен ниже:

splicings = data.frame(tx_id = c(1L, 1L, 2L, 2L, 3L, 3L, 3L, 4L, 4L),
           exon_rank = c(1, 2, 1, 2, 1, 2, 3, 1, 2),
           exon_chrom = "chr1",
           exon_strand = c(rep("-", 2), rep("+", 7)),
           exon_start = c(10, 500, 2000, 5000, 2000, 3567, 5000, 5000, 9587),
           exon_end = c(151, 3000, 2144, 6000, 2144, 4000, 6000, 6456, 10000),
           cds_start = c(NA, NA, 2022, 5000, 2131, 3567, 5000, 5123, 9587),
           cds_end = c(NA, NA, 2144, 5193, 2144, 4000, 5193, 6456, 9890))

Таблица genes должна содержать N строк на транскрипт, где N равен количеству генов, порождающих транскрипт (в большинстве случаев N будет равен 1). Эта таблица может иметь следующие столбцы:
tx_id – идентификатор, связывающий каждую строку таблицы genes с соответствующей уникальной строкой таблицы transcripts.
tx_name – название транскрипта, кодируемого данным геном. Может использоваться как альтернатива столбцу tx_id, но не в дополнение к нему.
gene_id – идентификатор гена. Может быть заполнен как символьный вектор или фактор, но не должен содержать NA.
Ниже приведен пример заполнения таблицы genes:

genes = data.frame(tx_id = 1:4, gene_id = c("gene1", rep("gene2", 3)))

Таблица chrominfo должна содержать одну строку на хромосому. Эта таблица может иметь 3 столбца:
chrom – название хромосомы. Столбец может быть заполнен как символьный вектор или фактор, но не должен содержать NA и повторов.
length – длина хромосомы. Столбец может быть целиком заполнен либо как целочисленный вектор, либо с NA или без NA, но не сочетанием.
is_circular – метка кольцевой хромосомы. Логический вектор или NA. Столбец не является обязательным к заполнению.
Пример заполнения таблицы chrominfo представлен ниже:

chrominfo = data.frame(chrom = "chr1", length = 248956422, is_circular = FALSE)

Теперь мы можем создать объект TxDb:

DataTxDb = makeTxDb(transcripts = transcripts,
  splicings = splicings,
  genes = genes,
  chrominfo = chrominfo,
  metadata = NULL,
  reassign.ids = FALSE)

В итоге мы получили стандартный объект класса TxDb:

print(DataTxDb)
TxDb object:
# Db type: TxDb
# Supporting package: GenomicFeatures
# transcript_nrow: 4
# exon_nrow: 7
# cds_nrow: 6
# Db created by: GenomicFeatures package from Bioconductor
# Creation time: 2015-09-23 12:58:52 +0300 (Wed, 23 Sep 2015)
# GenomicFeatures version at creation time: 1.20.4
# RSQLite version at creation time: 1.0.0
# DBSCHEMAVERSION: 1.1

Как и ранее, этот объект полностью готов к дальнейшему использованию, а при необходимости может быть сохранен с помощью функций saveDb или makeTxDbPackage.