8
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

genbankファイルをgffファイルに変換する

Last updated at Posted at 2020-06-13

"convert gbff to gff"とかで検索して
Question: Converting Gbff To Gff3
というようなディスカッションの内容を見て途方にくれている人、

様々な形式のライフサイエンスデータを変換できるツールが知りたい人向け

経緯(読み飛ばしても問題ない)

クリックして展開

NCBIのSequence Read Archive(SRA)からゲノムデータを取得すると

  • fastaファイル(.fasta)
  • genbankファイル(.gbff)
    が得られる。
    塩基の配列情報(.fasta)+配列に遺伝子情報を付加するアノテーションファイル(.gbff
    によってゲノムを読み解くことが可能となる。

ただこのデータをIGV等でリファレンスゲノムとして使用したい場合、
アノテーションファイルは .gff(gff3)か .gtf(gff2)等でないとIGVが情報を読み込んでくれない。
(ファイル形式の説明については省略)

gbff(GenBank Flat File)もgff(General Feature Format)も
要はアノテーションファイルなので変換が可能なのでは?
と考え"convert gbff to gff"とかで検索すると、過去にそういった討論がされていた記録は見つかったが、
具体的な解決策が載っていない。

色々調べた挙句、なんとか変換方法を見つけたのでここで紹介することにする。

解決の鍵になったのは、始めに紹介したbiostarsでのディスカッション内で登場した
"bp_genbank2gff3.pl"なる謎のスクリプト。
bioperlで使えるらしいが会話内容からしてバグがあるっぽい。
もしかしてpythonに似たツールないかな?と調べたら見つかった。

Q.Ensemblを使えばアノテーションファイルはgff(gtf)ファイルとして入手できるので、そもそもこんな苦労しなくていいのでは?
A.使いたいのがマイナーな生物のものだったせいかNCBIにしかデータが無かった...
6/15 追記
最近試験的にリリースされたNCBI Datasetsを利用すればfastaとgff3を一括でダウンロードできるようになった。

Screenshot from 2020-06-15 10-08-08.png

また、データの入手元をSRAではなくNCBIのGenome resourceにすることで、gbff以外の形式のアノテーションファイルが入手できることを確認。
Screenshot from 2020-06-15 10-30-49.png

サイト ダウンロードできるファイル
NCBI(SRA) GBFF
NCBI(Genome) GFF3, GBFF, tabular
Ensembl GTF, GFF3

INSDCとしてデータは共有していても提供するサービスは異なる様子。ややこしい

ツールのインストール

使用環境

  • Python3 (Python 3.6.8)
  • pip (pip 20.1.1)

インストールするpythonモジュール

  • bioconvert
    様々なライフサイエンスデータの変換を可能にしてくれるモジュール
    今回はこの中のgenbank2gff3を使用
  • biocode
    genbank2gff3を動作させるために必要なconvert_genbank_to_gff3.pyが入っている

1.bioconvertをインストール

pip install bioconvert

This method installs Bioconvert and its Python dependencies. Note, however, that bioconvert may use (depending on the conversion you want to use) external dependencies not available on Pypi. You will need to install those third-party dependencies yourself. An alternative is to install bioconvert using conda as explained here after.
https://bioconvert.readthedocs.io/en/master/installation.html

pipでインストールする場合、PyPIで管理しているpythonモジュールの依存関係は解決してくれるが、サードパーティ製のパッケージに関しては解決してくれないらしい。
要はpipでインストールすると機能が制限される。
condaを使えばその辺の依存関係も解決してくれるらしいが、
condaを使用していない & gbff→gff3 の変換さえできればいいので今回は無視。

2.途中でインストールが失敗する場合(恐らくmappyのインストール失敗)はpython3-develパッケージもインストール

yum install python3-devel

3.biocodeをインストール

pip install biocode
bioconvert --help

と入力すると前述したように機能が制限されており、いくつかのメソッドが使用不可である警告がズラっと表示される。

WARNING [bioconvert.core.base]:  converter 'FASTQ2FASTA': method seqtk is not available
WARNING [bioconvert.core.base]:  converter 'GENBANK2EMBL': method squizz is not available
WARNING [bioconvert.core.base]:  converter 'GENBANK2FASTA': method squizz is not available
WARNING [bioconvert.core.base]:  converter 'GZ2BZ2': method pigz_pbzip2 is not available
WARNING [bioconvert.core.base]:  converter 'GZ2DSRC': method pigzdsrc is not available
genbank2gff3        genbank to-> gff3 (1 methods)

今回使用したいgenbank2gff3については警告が表示されないので一安心。
スクリプトを実行するたびログが汚れるのは覚悟する

実行

bioconvert genbank2gff3 foo.gbff foo.gff3

とすることで foo.gbff → foo.gff3 と変換できる。

変換の際、

WARNING: The following feature was skipped:
type: assembly_gap
location: [96782:96838](+)
qualifiers:
    Key: estimated_length, Value: ['56']
    Key: gap_type, Value: ['within scaffold']
    Key: linkage_evidence, Value: ['paired-ends']

のようにgff3がサポートしていない情報についてはgff3ファイルには引き継がれない。

その他変換できるファイル形式

bioconvertのreadmeを参照
https://github.com/bioconvert/bioconvert

8
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?