"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を一括でダウンロードできるようになった。
また、データの入手元をSRAではなくNCBIのGenome resourceにすることで、gbff以外の形式のアノテーションファイルが入手できることを確認。
サイト | ダウンロードできるファイル |
---|---|
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