суббота, 19 сентября 2015 г.

Формат файлов GFF.

Первое сообщение я хотел бы посвятить обзору формата файлов GFF, который очень широко используется в биоинформатике для структурирования, хранения и передачи данных о функциональных элементах генома. Это сообщение будет начинать серию рассказов не только о спецификации структуры данных вида GFF, но и о загрузке файлов формата GFF в рабочее пространство R среды, преобразовании их в объекты классов GRanges и TxDb, анализу структуры таких объектов и их использованию в исследованиях транскриптома.
Формат файлов GFF (акроним от англ. General Feature Format, либо реже используемых в настоящее время Gene-Finding Format или Generic Feature Format) – один из способов организации, хранения, обмена и представления данных о признаках (характеристиках или функциональных элементах) генома. При этом под признаками генома подразумеваются сигнальные последовательности (стартовые кодоны, стоп-кодоны, мотивы, сайты сплайсинга и т. д.), а также протяженные сегменты (промоторные регионы, экзоны, интроны и т. д.), которые могут быть скомбинированы в целые гены, РНК или белковые продукты.
Первоначальная версия формата GFF была предложена Dr. Richard Durbin из Института Сенгера (Кембриджшир, Великобритания) и Dr. David Haussler из Калифорнийского университета (Санта Круз, США). Однако из-за ряда недостатков первоначальная версия вскоре была модифицирована и расширена до версий GFF2 и GFF3, которые являются современными стандартами формата GFF. Вне зависимости от версии файл в формате GFF является текстовым файлом, где для каждого признака генома отводится одна строка, каждая строка содержит 9 полей, разделенных знаком табуляции, а всей области данных предшествует область комментариев. Такая структура файла позволяет быстро извлекать необходимые данные и проводить их обработку с помощью соответствующих программных средств.
Далее мы рассмотрим структуру файлов формата GFF2, GFF2.5 и GFF3; формат же GFF1 мы оставим без внимания, так как он во многом уже потерял актуальность.

Описание формата GFF2.
Область комментариев.
Строки с комментариями начинаются с одного или двух символов #. Строки, начинающиеся с одного символа #, содержат информацию только для пользователя и игнорируются программой, проводящей парсинг (разбор или анализ) файла GFF2. Cтроки, начинающиеся с двух символов #, содержат информацию о всем файле и именуются директивами (псевдокомментариями или метаданными). Они не являются обязательными, но, как правило, присутствуют в любом файле GFF2, так как используются программой, осуществляющей парсинг данных. В этих строках содержится следующая информация.
##gff-version 2
Версия формата GFF. Эта строка располагается первой и в файле встречается только один раз.
##source-version <source> <version text>
Наименование и версия программы, которая была использована при создании файла GFF2.
##date <date>
Дата создания файла GFF2.
##Type <type> [<seqname>]
Тип последовательности (“DNA”, “RNA” или “Protein”), признаки которой содержатся в файле. В одном и том же файле могут быть представлены разные типы последовательностей. Если этот комментарий отсутствует, то по умолчанию принимается, что тип последовательности - ДНК.
##DNA <seqname>
Последовательность ДНК вида:
##acggctcggattggcgctggatgatagatcagacgac
##...
##end-DNA
Используется редко.
##RNA <seqname>
Последовательность РНК вида:
##acggcucggauuggcgcuggaugauagaucagacgac
##...
##end-RNA
Используется редко.
##Protein <seqname>
Последовательность белка вида:
##MVLSPADKTNVKAAWGKVGAHAGEYGAEALERMFLSF
##...
##end-Protein
Используется редко.
##sequence-region <seqname> <start> <end>
Комментарий, показывающий, что в файле содержатся признаки только указанного региона.
Область данных.
Как уже говорилось, эта область представлена множеством строк (по одной на каждый признак), а каждая строка содержит 9 полей, разделенных знаком табуляции. Список полей и их содержание приведены ниже.
Поле 1: <seqname>
Название последовательности. Обычно имя последовательности соответствует идентификатору этой последовательности в сопроводительном файле формата FASTA, либо идентификатору этой последовательности в базе данных (например, это может быть номер доступа EMBL/GenBank/DDBJ).
Поле 2: <source>
Источник текущего признака (программа, база данных, экспериментальные данные и т. д.).
Поле 3: <feature>
Тип признака (например, “gene”, “transcript”, “CDS”, “ncRNA”).
Поле 4: <start>
Целочисленное значение координаты начала признака. При этом нумерация всей последовательности начинается с 1, а начальная координата признака должна быть меньше или равна конечной координате.
Поле 5:  <end>
Целочисленное значение координаты конца признака.
Поле 6: <score>
Дробное число с плавающей точкой, показывающее, насколько надежно идентифицирован признак.
Поле 7: <strand>
Цепь, которой принадлежит признак. Может принимать три значения: “+”, “–“ или “.”. Последний вариант используется тогда, когда информация о цепи не является значимой (например, в случае динуклеотидных повторов).
Поле 8: <frame>
Поле содержит информацию об отношении признака к открытой рамке считывания. Это поле может принимать одно из четырех значений: “0”, “1”, “2” или “.”. Значение “0” указывает на то, что признак находится внутри открытой рамки считывания и первый нуклеотид этого признака соответствует первому нуклеотиду кодона. Значение “1” указывает на наличие одного, а значение “2” на наличие двух “лишних” нуклеотидов у признака, в результате чего только его второй или третий нуклеотиды, соответственно, начинают кодон. Значение “.” используется для заполнения поля <frame> признаков РНК и белков.
Поле 9: [attribute]
Поле содержит множество различных атрибутов признака, собранных в одну группу. Такими атрибутами могут быть идентификаторы, классы биологических молекул, бэнды хромосом, альтернативные названия признака, названия синдромов и т. д. Атрибуты собраны в одну строку и разделены точкой с запятой. Один и тот же атрибут может иметь несколько значений, разделенных запятой.
Ниже представлен пример записи данных в формате GFF2.
##gff-version 3
seq1
BLASTX
similarity
101
235
87.1
+
0
Target "HBA_HUMAN" 11 55; E_value 0.0003
dJ102G20
GD_mRNA
coding_exon
7105
7201
.
-
2
Sequence "dJ102G20.C1.1"
Более подробно о формате GFF2 можно узнать на официальном сайте Института Сенгера (http://www.sanger.ac.uk/resources/software/gff/), сотрудники которого являются разработчиками данного стандарта организации, хранения, обмена и представления данных о функциональных элементах генома.
Формат GFF2 имеет ряд недостатков, в частности, он может представлять только двухуровневые иерархии признаков, и, соответственно, не может справиться с трёхуровневой иерархией типа ген → транскрипт → экзон. Более того, даже в случае с двухуровневой иерархией в формате GFF2 не предусмотрена запись направления этой иерархии. Эти, а также некоторые другие недостатки формата GFF2 привели к появлению его уточненной версии GFF2.5, а также более совершенного формата GFF3.

Описание формата GFF2.5.
Формат GFF2.5 чаще всего называется форматом GTF (акроним от англ. Gene Transfer Format), так как он является расширением формата GFF2. В этом формате первые 8 полей идентичны таковым в формате GFF2, а вот поле “attribute” включает два обязательных атрибута, предназначенных для обработки нескольких транскриптов и одной и той же области генома.
gene_id value
Уникальный идентификатор геномного локуса, откуда происходит транскрипт.
transcript_id value
Уникальный идентификатор транскрипта.
Другие атрибуты могут быть произвольными. Пример записи данных в формате GFF2.5 представлен ниже.
##description: evidence-based annotation of the human genome (GRCh38), version 23 (Ensembl 81)
##provider: GENCODE
##contact: gencode-help@sanger.ac.uk
##format: gtf
##date: 2015-07-15
chr1
havana
gene
29554
31109
.
+
.
gene_id "ENSG00000243485.3"; gene_type "lincRNA"
chr1
havana
transcript
29554
31097
.
+
.
gene_id "ENSG00000243485.3"; transcript_id "ENST00000473358.1"
chr1
havana
exon
29554
30039
.
+
.
gene_id "ENSG00000243485.3"; transcript_id "ENST00000473358.1"
chr1
havana
exon
30564
30667
.
+
.
gene_id "ENSG00000243485.3"; transcript_id "ENST00000473358.1"
chr1
havana
exon
30976
31097
.
+
.
gene_id "ENSG00000243485.3"; transcript_id "ENST00000473358.1"

Описание формата GFF3.
Формат GFF3 учитывает те недостатки, которые есть в предыдущих версиях формата GFF. В частности, в этом формате предусмотрена многоуровневая иерархия признаков, допускается одновременная принадлежность одного и того же признака разным группам, решена проблема записи признаков, занимающих разные регионы и т. д.
Область комментариев.
Строки с комментариями начинаются с одного, двух или трех символов #. Строки, начинающиеся с одного символа #, содержат информацию только для пользователя и игнорируются программой, проводящей парсинг файла GFF3. Программа так же игнорирует пустые строки или строки, которые заканчиваются на символ #. Cроки, начинающиеся с двух символов #, являются директивами и, как правило, используются программой парсинга. В этих строках может быть записана информация следующего рода.
##gff-version *
Версия формата GFF. Эта строка располагается первой, всегда присутствует и в файле встречается только один раз. В случае с файлами формата GFF3 символ * всегда имеет значение 3, как показано но нижеследующем примере.
##gff-version 3
##sequence-region seqid start end
Информация об опорной последовательности, присутствующей в области данных. Записывается в формате "seqid start end", не является обязательной, но желательной, так как может использоваться программой парсинга при проверке границ признаков. Поскольку опорных последовательностей в области данных может быть много, то и строк ##sequence-region seqid start end так же может быть много (по одной на каждую опорную последовательность, без повторов и без перекрестных ссылок). При этом следует иметь ввиду, что наличие строк ##sequence-region seqid start end для всех последовательностей в области данных не обязательно, но если строка имеется, то в области данных обязательно должна присутствовать соответствующая последовательность (исключением могут быть только признаки, помеченные атрибутом “Is_circular”). Ниже дано несколько примеров записи такого рода информационных строк:
##sequence-region   10 1 133797422
##sequence-region   KI270757.1 1 71251
##sequence-region   MT 1 16569
##sequence-region   X 1 156040895
##sequence-region   Y 2781480 56887902
##feature-ontology URI
Информация о том, что в файле GFF3 тип признака определен по данным онтологического анализа, которые доступны по указанным URI или URL. Комментарий добавлен в спецификации файлов GFF3 недавно и пока широко не используется.
##attribute-ontology URI
Информация о том, что в файле GFF3 имена атрибутов взяты из данных онтологического анализа, которые доступны по указанным URI или URL. Комментарий добавлен в спецификации файлов GFF3 недавно и пока широко не используется.
##source-ontology URI
Информация о том, что в файле GFF3 имена источников взяты из данных онтологического анализа, которые доступны по указанным URI или URL. Комментарий добавлен в спецификации файлов GFF3 недавно и пока широко не используется.
##species NCBI_Taxonomy_URI
Информация о том, к какому виду живых организмов относятся данные в файле GFF3. Как правило, это URL-адрес страницы, посвященной данному виду, в таксономическом обозревателе NCBI, записанный в одном из двух вариантов:
##species http://www.ncbi.nlm.nih.gov/Taxonomy/Browser/wwwtax.cgi?id=6239
##species http://www.ncbi.nlm.nih.gov/Taxonomy/Browser/wwwtax.cgi?name=Caenorhabditis+elegans.
##genome-build source buildName
Источник и имя сборки генома, по которой в файле GFF3 даны координаты всех признаков. Ниже дано несколько примеров:
##genome-build NCBI B36
##genome-build WormBase ws110
##genome-build FlyBase  r4.1
Следует отметить, что начиная с версии 1.20 спецификаций GFF3 информация о геноме может быть разнесена по нескольким строкам с указанием имени сборки, версии, даты, источника и кода доступа:
##sequence-region   10 1 133797422
#!genome-build  GRCh38.p3
#!genome-version GRCh38
#!genome-date 2013-12
#!genome-build-accession NCBI:GCA_000001405.18
В таких случаях в начале строки с комментариями используется не двойной символ ##, а два символа #!, так как это пока экспериментальное нововведение.
##FASTA
Информация о том, что файл содержит нуклеотидные или белковые последовательности в формате FASTA. Если имеются последовательности, то все они собираются вместе и помещаются в конец файла, как на примере, представленном ниже:
##gff-version 3
##sequence-region   ctg123 1 1497228
ctg123
.
gene
1000
9000
.
+
.
ID=gene00001;Name=EDEN
ctg123
.
TF_binding_site
1000
1012
.
+
.
ID=tfbs00001;Parent=gene00001
ctg123
.
mRNA
1050
9000
.
+
.
ID=mRNA00001;Parent=gene00001
ctg123
.
five_prime_UTR
1050
1200
.
+
.
Parent=mRNA00001
ctg123
.
CDS
1201
1500
.
+
0
ID=cds00001;Parent=mRNA00001
ctg123
.
CDS
3000
3902
.
+
0
ID=cds00001;Parent=mRNA00001
ctg123
.
CDS
5000
5500
.
+
0
ID=cds00001;Parent=mRNA00001
ctg123
.
CDS
7000
7600
.
+
0
ID=cds00001;Parent=mRNA00001
ctg123
.
three_prime_UTR
7601
9000
.
+
.
Parent=mRNA00001
##FASTA
>ctg123
CTTCTGGGCGTACCCGATTCTCGGAGAACTTGCCGCACCATTCCGCCTTG
TGTTCATTGCTGCCTGCATGTTCATTGTCTACCTCGGCTACGTGTGGCTA
TCTTTCCTCGGTGCCCTCGTGCACGGAGTCGAGAAACCAAAGAACAAAAA
AAGAAATTAAAATATTTATTTTGCTGTGGTTTTTGATGTGTGTTTTTTAT
AATGATTTTTGATGTGACCAATTGTACTTTTCCTTTAAATGAAATGTAAT
...
Строки, начинающиеся с трех символов #, сигнализируют о том, что все данные, которые располагались выше этой строки, полностью обработаны. В этом случае программа, осуществляющая парсинг, может закрыть все вспомогательные объекты, которые до сих пор использовались в обработке файла и приступить к работе со следующим диапазоном данных.
Кроме описанных комментариев допускается включение и другой информации. Так, например, область комментариев нередко содержит информацию об использованных при создании файла GFF3 программных средствах, сроках и источниках аннотирования (процессе маркировки генов и других признаков генома), а также другие сведения:
#!processor NCBI annotwriter
#!annotation-date 12 March 2015
#!annotation-source NCBI Homo sapiens Annotation Release 107
Область данных.
Как и в случае с другими версиями формата GFF, эта область представлена множеством строк (по одной на каждый признак), а каждая строка содержит 9 полей, разделенных знаком табуляции.
Поле 1: "seqid"
Метка системы координат (например, хромосомы), по которой можно определить местоположение текущего признака.
Поле 2: "source"
Наименование алгоритма или процедуры, с помощью которой был идентифицирован признак. Обычно это название программы или ее части (например, “havana“, “Gnomon”), либо наименование базы данных (например, “GenBank”).
Поле 3: "type"
Тип признака (например, “gene”, “transcript”, “CDS”, “ncRNA”).
Поле 4: "start"
Начальная координата признака в геноме (в системе координат, помеченной в поле 1). Координата всегда имеет положительное целочисленное значение, меньшее либо равное значению координаты конца текущего элемента. Начальная координата признаков с так называемой нулевой длиной (например, инсерции) всегда равна конечной координате, а сам признак будет располагаться справа от этой координаты по направлению системы координат.
Поле 5: "end"
Конечная координата признака в геноме (в системе координат, помеченной в поле 1). Координата всегда имеет положительное целочисленное значение, большее либо равное значению координаты начала текущего признака.
Поле 6: "score"
Дробное число с плавающей точкой, показывающее, насколько надежно идентифицирован признак. К сожалению, однозначного подхода в расчете этого параметра нет и чаще всего в файлах GFF3 значения этого поля заменены на символ периода “.”.
Поле 7: "strand"
Цепь, в которой локализован признак: “+” – плюс цепь, “–” – минус цепь, “?” – информация о цепи значима, но неизвестна, “.” – информация о цепи незначима.
Поле 8: "phase"
Поле заполняется только для признаков "CDS" и может иметь только одно из трех целочисленных значений: 0, 1 или 2. Эти значения указываю на то, сколько нужно убрать нуклеотидов с самого начала признака, что бы достигнуть первого нуклеотида следующего кодона. Добавим, что для признаков, локализованных в плюс цепи, фаза считается от начала признака, а для признаков из минус цепи – с конца признака.
Поле 9: "attributes"
Список атрибутов признака в формате “бирка = значение” (“tag = value”). Если у одного признака много атрибутов, то они отделяются друг от друга точкой с запятой; если же имеется много значений одного и того же атрибута, то эти значения разделяют запятой. Ниже перечислены и описаны теги с предопределенными значениями, но в некоторых файлах могут встречаться и другие атрибуты.
ID
Уникальный идентификатор признака. Один и тот же идентификатор может многократно повторятся в одном файле, но только в том случае, когда он представляет прерывистый признак (один признак, существующий во множестве генетических локусов). В таких случаях признак представлен не одной строкой, а совокупностью строк.
Name
Имя признака. Не всегда уникально даже в случае с непрерывными признаками.
Alias
Альтернативное имя признака. Не всегда уникально даже в случае с непрерывными признаками.
Parent
Тег, обозначающий “родителя” признака. Такого рода тег используется для группировки признаков низкого уровня в признаки более высокого уровня, например, экзонов в транскрипты, транскриптов в гены и т. д. Отметим, что признак может иметь много “родителей”.
Target
Идентификатор и локализация нуклеотидной или аминокислотной последовательности, относительно которой проводилось выравнивание последовательности признака. Этот тег записывается в формате "target_id start end [strand]", причем цепь указывается не всегда.
Gap
Пометка о том, что последовательность признака и целевая последовательность, относительно которой проводилось выравнивание, не коллинеарны (содержат пробелы).
Derives_from
Тег используется для обозначения признаков, принадлежащих полицистронным генам.
Note
Пометка произвольного содержания. Пометок у одного признака может быть много.
Dbxref
Перекрестная ссылка на базу данных. Может иметь множество значений.
Ontology_term
Перекрестная ссылка на онтологический термин. Может иметь множество значений.
Is_circular
Тег, обозначающий, является ли признак кольцевым.
Ниже представлен пример организации данных о белок-кодирующем гене человека EDEN в формате GFF3. Как видно на нижеследующем рисунке, этот ген кодирует три альтернативных транскрипта EDEN.1, EDEN.2 и EDEN.3. При трансляции этих транскриптов получается четыре белковых продукта, так как транскрипт EDEN.3 имеет два альтернативных стартовых кодона. Кроме того, на расстоянии 50 нуклеотидов перед сайтами начала транскрипции, задействованными при образовании EDEN.1 и EDEN.2, находится сайт посадки транскрипционного фактора.

Организация гена EDEN (источник: http://www.sequenceontology.org/gff3.shtml).
















Далее показан тот же ген, но в формате GFF3.
##gff-version 3
##sequence-region ctg123 1 1497228
ctg123
.
gene
1000
9000
.
+
.
ID=gene00001;Name=EDEN
ctg123
.
TF_binding_site
1000
1012
.
+
.
ID=tfbs00001;Parent=gene00001
ctg123
.
mRNA
1050
9000
.
+
.
ID=mRNA00001;Parent=gene00001;Name=EDEN.1
ctg123
.
mRNA
1050
9000
.
+
.
ID=mRNA00002;Parent=gene00001;Name=EDEN.2
ctg123
.
mRNA
1300
9000
.
+
.
ID=mRNA00003;Parent=gene00001;Name=EDEN.3
ctg123
.
exon
1300
1500
.
+
.
ID=exon00001;Parent=mRNA00003
ctg123
.
exon
1050
1500
.
+
.
ID=exon00002;Parent=mRNA00001,mRNA00002
ctg123
.
exon
3000
3902
.
+
.
ID=exon00003;Parent=mRNA00001,mRNA00003
ctg123
.
exon
5000
5500
.
+
.
ID=exon00004;Parent=mRNA00001,mRNA00002,mRNA00003
ctg123
.
exon
7000
9000
.
+
.
ID=exon00005;Parent=mRNA00001,mRNA00002,mRNA00003
ctg123
.
CDS
1201
1500
.
+
0
ID=cds00001;Parent=mRNA00001;Name=edenprotein.1
ctg123
.
CDS
3000
3902
.
+
0
ID=cds00001;Parent=mRNA00001;Name=edenprotein.1
ctg123
.
CDS
5000
5500
.
+
0
ID=cds00001;Parent=mRNA00001;Name=edenprotein.1
ctg123
.
CDS
7000
7600
.
+
0
ID=cds00001;Parent=mRNA00001;Name=edenprotein.1
ctg123
.
CDS
1201
1500
.
+
0
ID=cds00002;Parent=mRNA00002;Name=edenprotein.2
ctg123
.
CDS
5000
5500
.
+
0
ID=cds00002;Parent=mRNA00002;Name=edenprotein.2
ctg123
.
CDS
7000
7600
.
+
0
ID=cds00002;Parent=mRNA00002;Name=edenprotein.2
ctg123
.
CDS
3301
3902
.
+
0
ID=cds00003;Parent=mRNA00003;Name=edenprotein.3
ctg123
.
CDS
5000
5500
.
+
1
ID=cds00003;Parent=mRNA00003;Name=edenprotein.3
ctg123
.
CDS
7000
7600
.
+
1
ID=cds00003;Parent=mRNA00003;Name=edenprotein.3
ctg123
.
CDS
3391
3902
.
+
0
ID=cds00004;Parent=mRNA00003;Name=edenprotein.4
ctg123
.
CDS
5000
5500
.
+
1
ID=cds00004;Parent=mRNA00003;Name=edenprotein.4
ctg123
.
CDS
7000
7600
.
+
1
ID=cds00004;Parent=mRNA00003;Name=edenprotein.4
Более подробно о формате GFF3 можно узнать на официальном сайте международного проекта The Sequence Ontology Project http://www.sequenceontology.org/resources/gff3.html, исполнители которого являются разработчиками данного стандарта организации, хранения, обмена и представления данных о функциональных элементах генома.

Практическое применение формата GFF.
Формат GFF может быть использован для решения очень разнообразных задач биоинформатики, молекулярной и системной биологии. Ниже перечислены лишь некоторые из таких задач:
q обмен стандартизированными данными внутри научного сообщества;
q представление экспериментальных данных в стандартизированном виде, готовом к дальнейшему анализу;
q тестирование методов идентификации функциональных элементов генома;
q поиск новых, более сложных функциональных элементов генома с использованием стандартизованных данных, полученных их разных источников или же содержащих разные характеристики признаков;
q подача стандартизированных данных в программы, осуществляющих пост-анализ;
q подача стандартизированных данных в программы визуализации предсказанных и экспериментально подтвержденных признаков генома.


Комментариев нет:

Отправить комментарий