01 背景
1.1 数据格式介绍
GFF3(General Feature Format version 3)和GTF(Gene Transfer Format)版本2,通常被称为GTF2,是基因组学中用于描述基因和其它特征的文件格式。这两种格式都用于存储有关基因组注释的信息,但它们在结构和用途上有所不同。
1.1.1 GFF3格式(gff)
GFF3格式
- 全称:General Feature Format version 3
- 用途:用于描述基因组中的基因和其它生物学特征。它能够表示基因组序列中特征的位置、类型以及附加信息。
- 结构:每行代表一个特征,字段由制表符分隔。包含九个字段:序列ID、来源、类型、起始位置、终止位置、得分、链方向、阶段和属性。
- 特点:支持分层的特征关系,如基因、转录本和外显子之间的关系;属性字段以键值对形式表示,提供了更丰富的注释信息。
GFF文件是以tab键分割的9列组成,以下为每一列的对应信息:
seq_id:序列的编号,一般为chr或者scanfold编号;
source: 注释的来源,一般为数据库或者注释的机构,如果未知,则用点“.”代替
type: 注释信息的类型,比如Gene、cDNA、mRNA、CDS等,或者是使用的注释软件名称,如maker,AUGUSTUS等等。
start: 该基因或转录本在参考序列上的起始位置;
end: 该基因或转录本在参考序列上的终止位置;
score: 得分,数字,是注释信息可能性的说明,可以是序列相似性比对时的E-values值或者基因预测是的P-values值,.表示为空
strand: 该基因或转录本位于参考序列的正链(+)或负链(-)上
phase: 仅对注释类型为“CDS”有效,表示起始编码的位置,有效值为0、12. (对于编码蛋白质的CDS来说,本列指定下一个密码子开始的位置。每3个核苷酸翻译一个氨基酸,从0开始,CDS的起始位置,除以3,余数就是这个值,表示到达下一个密码子需要跳过的碱基个数。该编码区第一个密码子的位置,取值0,1,2。0表示该编码框的第一个密码子第一个碱基位于其5’末端;1表示该编码框的第一个密码子的第一个碱基位于该编码区外;2表示该编码框的第一个密码子的第一、二个碱基位于该编码区外;如果Feature为CDS时,必须指明具体值。
attributes: 一个包含众多属性的列表,格式为“标签=值”(tag=value),以多个键值对组成的注释信息描述,键与值之间用“=”,不同的键值用“;”隔开,一个键可以有多个值,不同值用“,”分割。注意如果描述中包括tab键以及“,= ;”,要用URL转义规则进行转义,如tab键用 代替。键是区分大小写的,以大写字母开头的键是预先定义好的,在后面可能被其他注释信息所调用。
1.1.2 GTF2格式(gtf)
GTF2格式
- 全称:Gene Transfer Format version 2
- 用途:主要用于描述基因表达数据,如转录本和外显子的位置。
- 结构:与GFF3类似,也是每行代表一个特征,由九个字段组成,但GTF2对最后一个字段(属性字段)的内容和格式有更严格的要求。标签与值之间以
空格
分开,且每个特征之后都要有分号;
(包括最后一个特征); - 特点:更专注于转录本和编码序列的注释,属性字段通常包括基因名、转录本ID等信息,便于与表达数据相关联。
当前所广泛使用的GTF格式为第二版(GTF2),它主要是用来描述基因的注释。GTF格式大部分与GFF相同,但有两个硬性标准:
feature types是必须注明的;
第9列必须以gene_id以及transcript_id开头。而且GTF文件的第9列同GFF文件不同,虽然同样是标签与值配对的情况,但标签与值之间以空格分开,且每个特征之后都要有分号;。
差异比较
-
特性 GFF3格式 GTF2格式 格式名称 General Feature Format version 3 Gene Transfer Format version 2 主要用途 描述基因组的各种生物学特征 描述基因表达数据,如转录本和外显子 结构细节 支持复杂的层级关系,属性字段以键值对出现 属性字段有固定格式,便于特定信息提取 字段严格性 较为灵活,支持更广泛的注释信息 较为严格,特别是属性字段的格式 特点 适合广泛的基因组注释和复杂关系表示 更便于转录组学研究和基因表达分析 这两种格式各有其特定的应用场景和优势,选择使用哪一种取决于研究的需求和目的。
1.1.3 BED格式(bed)
BED格式(Browser Extensible Data)是一种用于表示基因组数据的简洁文本格式,广泛应用于生物信息学领域,尤其是在基因组浏览器中展示基因、区域或注释信息。它由UCSC基因组浏览器开发,用于快速有效地处理基因组范围内的各种特征和区间数据。
BED格式的基本结构
BED文件通常以纯文本形式保存,其中的每一行代表基因组中的一个特征(如基因、外显子、调控元件等),并包含以下基本字段(由制表符分隔):
1. 染色体:特征所在的染色体(例如,chr1、chrX)。
2. 起始位置:特征起始位置的0-based起点(即在染色体上的起始坐标,文件中的数值比实际起始位置小1)。
3. 结束位置:特征结束位置的1-based终点(即在染色体上的结束坐标,文件中的数值与实际结束位置相同)。
这三个字段是BED格式的最基本要求,也称为BED3格式。除了这些基本字段,BED格式还可以包含额外的可选字段,以提供更多关于每个特征的信息,如:
- 名称:特征的名称或ID。
- 得分:用于表示特征的重要性或置信度的分数。
- 链:特征所在的链(正链`+`或负链`-`)。
- 着色:用于基因组浏览器中显示的RGB颜色值。
- 区块数:特征中区块(例如,外显子)的数量。
- 区块大小:每个区块的大小。
- 区块起始:每个区块相对于特征起始位置的偏移量。
根据包含的字段数量,BED格式可以是BED3、BED4、BED6、BED12等,其中数字表示包含字段的数量。例如,BED6格式包括染色体、起始位置、结束位置、名称、得分和链这六个字段。
使用场景
BED格式用于多种生物信息学分析和基因组浏览器中,包括:
- 注释和探索基因组区域,如基因、启动子、外显子等。
- 表示测序实验的结果,如ChIP-seq、RNA-seq的覆盖区域或峰值。
- 作为其他工具和分析流程的输入或输出格式,用于处理基因组数据。
BED格式因其简洁性和灵活性,成为处理和展示基因组特征信息的重要工具。
1.1.4 FASTA格式
参考seqtk安装与使用-seqtk-1.4(bioinfomatics tools-012)-CSDN博客或SeqKit v2.5.1 (bioinfomatics tools-003)_seqkit提取序列区分正负链-CSDN博客
许多生物医学研究应用程序采用管道系统地分析基因组中的基因内容。由于可用的转录组数据激增,这些管道通常涉及处理大量数据,因此需要能够处理多个注释和序列文件的高效生物信息学工具,以加速基因组分析。这些工具通常在通用的以制表符分隔的文本文件格式中交换和使用有关基因、转录本或其他基因组特征的信息,这种格式通常称为GFF(通用特征格式)。该格式描述了基因、转录本和其他特征的确切坐标和属性,如起始和终止密码子、编码序列等。GFF有许多版本,包括其最新版本GFF3和较旧的GTF(基因传输格式),有时也称为GTF2。尽管较旧的GTF格式仅限于表示基因和转录本的位置及其结构,但较新的GFF3格式可以以层次化方式表示更多的基因组特征和注释。一些转录本数据或基因组注释仅以这些格式之一从源中提供,但应用程序可能需要另一种格式作为输入。GffRead和GffCompare实用程序可以自动识别和处理这两种文件格式,无缝地提取和选择来自丰富的GFF3注释文件的转录本特征,执行从一种格式到另一种格式的转换,甚至将文件从其他格式(如BED或FASTA)转换为另一种格式。
1.2 GffRead
GffRead是一个GFF/GTF实用程序,提供格式转换、过滤、FASTA序列提取等功能。
来自不同来源的注释数据可能对染色体和contig使用不同的命名约定,GffRead可以帮助映射这些基因组序列名称,从而将注释从一个参考命名约定转换为另一个。基因预测程序和转录本(RNA-Seq)组装程序通常以GTF或GFF3格式输出其结果,在这种情况下,通常需要评估预测/组装的转录本的准确性。GffCompare旨在系统地将一个或多个转录本预测集与参考注释进行不同粒度级别(基准级、外显子级、转录本级等)的比较,并在此过程中根据它们与参考注释转录本的重叠或接近程度提供一种对这些转录本预测进行“注释”的方式。当提供多个转录本文件(样本)时,GffCompare生成一个非冗余的组合转录本集,跟踪多个样本中结构等价的转录本,并根据它们与参考转录本的关系对它们进行分类。
由于它们的效率和用户友好性,GffRead和GffCompare已经作为许多生物信息学项目中的管道的组成部分在许多领域得到了广泛应用,包括基因组注释、新基因发现和特征化、基因结构重建准确性、以及基因注释比较等。在本文中,我们提供了我们的GFF实用程序提供的具体功能的详细描述。
02 参考
https://github.com/gpertea/gffread #参考官网
#此实用程序的官方网页和下载包可以在线找到:http://ccb.jhu.edu/software/stringtie/gff.shtml#gffread
https://ccb.jhu.edu/software/stringtie/dl/gffread-0.12.7.Linux_x86_64.tar.gz #官方下载包
03 安装
安装1
从源代码构建此程序需要GCLib源代码库。如果在 ../gclib 目录中找不到最新的 gclib 版本,则 make 命令应自动从存储库中获取。
cd /some/build/dir
git clone https://github.com/gpertea/gffread
cd gffread
make release
这应该在当前目录中创建 gffread 二进制文件。
安装2
wget -c https://ccb.jhu.edu/software/stringtie/dl/gffread-0.12.7.Linux_x86_64.tar.gz
#或者conda安装conda install bioconda::gffread,conda对这个安装影响比较小。
04 使用
./gffread -h
gffread v0.12.7. 用法:
gffread [-g <genomic_seqs_fasta> | <dir>] [-s <seq_info.fsize>]
[-o <outfile>] [-t <trackname>] [-r [<strand>]<chr>:<start>-<end> [-R]]
[--jmatch <chr>:<start>-<end>] [--no-pseudo]
[-CTVNJMKQAFPGUBHZWTOLE] [-w <exons.fa>] [-x <cds.fa>] [-y <tr_cds.fa>]
[-j ][--ids <IDs.lst> | --nids <IDs.lst>] [--attrs <attr-list>] [-i <maxintron>]
[--stream] [--bed | --gtf | --tlf] [--table <attrlist>] [--sort-by <ref.lst>]
[<input_gff>]
过滤、转换或聚类GFF/GTF/BED记录,提取转录本(外显子或CDS)的序列等。
默认情况下(即没有 -O),仅处理转录本,丢弃任何其他非转录本特征。默认输出是一个简化的仅包含基本属性的GFF3。
选项:
--ids 如果它们的ID未在 <IDs.lst> 中列出,则丢弃记录/转录本
--nids 如果它们的ID在 <IDs.lst> 中列出,则丢弃记录/转录本
-i 丢弃具有大于 <maxintron> 的内含子的转录本
-l 丢弃长度小于 <minlen> 的转录本碱基
-r 仅显示与坐标范围 <start>..<end> 重叠的转录本
(在染色体/contig <chr> 上,如果提供了则是strand <strand>)
-R 对于 -r 选项,丢弃所有未完全包含在给定范围内的转录本
--jmatch 仅输出与给定连接配对的转录本
-U 丢弃单外显子转录本
-C 仅编码:丢弃没有CDS特征的mRNA
--nc 仅非编码:丢弃具有CDS特征的mRNA
--ignore-locus :丢弃在输入中找到的位点特征和属性
-A 使用 <seq_info.fsize> 中的描述字段并将其添加为GFF记录的 'descr' 属性值
-s <seq_info.fsize> 是一个制表符分隔的文件,提供这些信息
对于每个映射的序列:
<seq-name> <seq-length> <seq-description>
(与mRNA/EST/protein映射的 -A 选项一起使用时很有用)
排序:(默认情况下,染色体按照它们被发现的顺序保留)
--sort-alpha :染色体(参考序列)按字母顺序排序
--sort-by :按照其名称在 <refseq.lst> 文件中给出的顺序排序参考序列
其他选项:
-F 保留所有GFF属性(用于非外显子特征)
--keep-exon-attrs :对于 -F 选项,不尝试减少冗余的外显子/CDS属性
-G 不保留外显子属性,将它们移动到转录本特征
(用于GFF3输出)
--attrs <attr-list> 仅输出 <attr-list> 中列出的GTF/GFF属性
它是一个逗号分隔的属性名称列表
--keep-genes :在仅转录本模式(默认情况下)中,还保留基因记录
--keep-comments: 对于GFF3输入/输出,尝试保留注释
-O 处理其他非转录本GFF记录(默认情况下忽略非转录本记录)
-V 丢弃具有在帧内终止密码子的CDS的任何mRNA(需要 -g)
-H 对于 -V 选项,检查并调整起始CDS相位
如果原始相位导致具有在帧内终止密码子的翻译
-B 对于 -V 选项,也对反向链上的单外显子转录本进行检查(需要 -g)
-P 添加有关每个转录本编码状态的转录本级GFF属性,
包括部分性或帧内终止密码子(需要 -g)
--add-hasCDS :为具有CDS特征的转录本添加一个 "hasCDS" 属性,值为 "true"
--adj-stop 终止密码子调整:启用 -P 并在预期或下游时执行自动
调整CDS终止坐标
-N 丢弃具有非典型剪接位点共识的任何内含子的多外显子mRNA
(即不是GT-AG、GC-AG或AT-AC)
-J 丢弃缺少初始START密码子或终止STOP密码子的任何mRNA
或具有帧内终止密码子的任何mRNA
(即仅打印具有完整CDS的mRNA)
--no-pseudo: 过滤匹配 'pseudo' 关键字的记录
--in-bed: 输入应被解析为BED格式(如果输入
文件名以 .bed* 结尾,则自动执行)
--in-tlf: 输入类似GFF的一行一转录本格式,不包含外显子/CDS
特征(参见下面的 --tlf 选项);如果输入
文件名以 .tlf 结尾,则自动执行)
--stream: 快速处理输入的GFF/BED转录本,因为它们被接收到
(不排序,外显子必须在输入数据中按转录本分组)
聚类:
-M/--merge :将输入的转录本聚类成位点,丢弃
"冗余" 转录本(具有相同精确内含子
并且完全包含或等于边界的那些)
-d <dupinfo> :对于 -M 选项,将重复信息写入文件 <dupinfo>
--cluster-only: 与 -M/--merge 相同,但不丢弃任何
"重复" 转录本,只创建 "位点" 特征
-K 对于 -M 选项:也将短、完全包含的转录本丢弃为冗余
转录本(内含子链匹配容器的一部分)
-Q 对于 -M 选项,不再在评估冗余性时需要边界包含
(可以与 -K 结合使用);只有内含子匹配
对于多外显子转录本,单外显子转录本至少有80%的重叠
-Y 对于 -M 选项,强制执行 -Q 但也丢弃重叠的单外显子
转录本,即使在反向链上也是如此(可以与 -K 结合使用)
输出选项:
--force-exons: 确保最低级GFF特征被视为
"外显子" 特征
--gene2exon: 对于不产生任何转录本的单行基因,添加一个
跨越整个基因的外显子特征(将其视为转录本)
--t-adopt: 尝试找到与不具有任何显式基因 Parent 的转录本重叠/包含的父基因
-D 解码属性中的URL编码字符
-Z 将非常接近的外显子合并为一个外显子(当内含子大小<4时)
-g 全路径到具有基因组序列的多FASTA文件
用于所有输入映射,或具有单FASTA文件的目录
(每个基因组序列一个文件,文件名与序列名称匹配)
-j 输出连接和相应的转录本
-w 为每个转录本写一个包含剪接的外显子的fasta文件
--w-add <N> 对于 -w 选项,提取额外的 <N> 个碱基
转录本边界的上游和下游
--w-nocds 对于 -w,禁用在FASTA文件中输出CDS信息
-x 为每个GFF转录本写一个包含剪接的CDS的fasta文件
-y 为每个记录的CDS翻译写一个蛋白fasta文件
-W 对于 -w,-x 和 -y 选项,在FASTA defline中写入所有外显子
坐标投影到剪接序列上;
-S 对于 -y 选项,使用 '*' 而不是 '.' 作为终止密码子翻译
-L Ensembl GTF 转为 GFF3,将版本添加到ID
-m <chr_replace> 是一个名称映射表,用于转换参考
序列名称,具有这个2列格式:
<original_ref_ID> <new_ref_ID>
-t 在每个GFF/GTF输出行的第二列中使用 <trackname>
-o 将输出记录写入 <outfile> 而不是标准输出
-T 主输出将是GTF,而不是默认的GFF3
--bed 将记录以BED格式输出,而不是默认的GFF3
--tlf 输出“转录本行格式”,类似于GFF
但是外显子和CDS相关特征以GFF属性的形式存储在转录本特征行中,如下所示:
exoncount=N;exons=<exons>;CDSphase=<N>;CDS=<CDScoords>
<exons> 是外显子起始-终止坐标的逗号分隔列表;
<CDScoords> 是CDS起始:CDS终止坐标或类似于 <exons> 的列表
--table 输出一个简单的制表符分隔格式,而不是GFF,具有列
具有给定 <attrlist> 中的GFF属性的值;特殊
伪属性(以@为前缀)是被识别的:
@id,@geneid,@chr,@start,@end,@strand,@numexons,@exons,
@cds,@covlen,@cdslen
如果启用了任何 -w/-y/-x FASTA 输出文件,相同的字段
(除了 @id)将附加到相应的FASTA记录的定义行
-v,-E 显露(警告)重复的转录本ID和给定的GFF/GTF记录中的其他潜在问题
05 常用命令行
5.1 格式互换
做有参转录组回帖时,常与需要对基因组文件gff或gtf进行转换,常用!
##格式转换
##将gff3格式的注释文件转换成gtf格式的文件
gffread gencode.v19.annotation.gff3 -T -o gencode.v19.gtf
##将gtf格式的文件转换成gff3格式的文件
gffread gencode.vM13.annotation.gtf -o gencode.vM13.annotation.gff3
5.2 基于基因组gff提取转录本
gffread GRCh38.gtf/GRCh38.gff -g GRCh38.fa -w GRCh38.transcripts.fa
5.3 基于基因组gff提取CDS
gffread GRCh38.gtf/GRCh38.gff -g GRCh38.fa -x GRCh38.cds.fa
5.4 基于基因组gff提取蛋白序列
gffread GRCh38.gtf/GRCh38.gff -g GRCh38.fa -y GRCh38.pep
06 参考文献
Pertea G and Pertea M. GFF Utilities: GffRead and GffCompare [version 1; peer review: 3 approved]. F1000Research 2020, 9:304 (GFF Utilities: GffRead and GffCompare | F1000Research)
杨沫. 基于MongoDB的多源生物数据集成关键技术研究[D]. 哈尔滨工业大学, 2019. DOI:10.27061/d.cnki.ghgdu.2019.001719.
唐敏. 草鱼基因组信息管理系统及其关键技术研究[D]. 上海海洋大学, 2019. DOI:10.27314/d.cnki.gsscu.2019.000543.
高文辉. 海岛棉基因预测和注释及棉花基因组资源数据库构建[D]. 华中农业大学, 2015. DOI:10.27158/d.cnki.ghznu.2015.000082.