NCBIからゲノムデータをダウンロードする(ncbi-genome-download)

目次

はじめに

 NCBIからゲノム情報をダウンロード(genbank, fastaファイルの取得)するにはWEBからポチポチやるのが一般的だとは思うのですが、ダウンロード数が100個とか1000個となると、流石にしんどいと思います。自分でスクリプト組んでも良いのかも知れませんが、いい感じのスクリプトを作ってくれている人達がいますので、拝借しましょう。今回はncbi-genome-downloadを使用します。

ncbi-genome-downloadのインストール

pipコマンドを使用してncbi-genome-downloadをインストールします。 “pip install ncbi-genome-download”

bio@bio:$pip install ncbi-genome-download
Defaulting to user installation because normal site-packages is not writeable
Collecting ncbi-genome-download
  Downloading ncbi_genome_download-0.3.1-py2.py3-none-any.whl (25 kB)
Requirement already satisfied: tqdm in ./.local/lib/python3.10/site-packages (from ncbi-genome-download) (4.63.1)
Collecting appdirs
  Downloading appdirs-1.4.4-py2.py3-none-any.whl (9.6 kB)
Requirement already satisfied: requests>=2.4.3 in ./.local/lib/python3.10/site-packages (from ncbi-genome-download) (2.27.1)
Requirement already satisfied: urllib3<1.27,>=1.21.1 in ./.local/lib/python3.10/site-packages (from requests>=2.4.3->ncbi-genome-download) (1.26.8)
Requirement already satisfied: charset-normalizer~=2.0.0 in ./.local/lib/python3.10/site-packages (from requests>=2.4.3->ncbi-genome-download) (2.0.12)
Requirement already satisfied: certifi>=2017.4.17 in ./.local/lib/python3.10/site-packages (from requests>=2.4.3->ncbi-genome-download) (2021.10.8)
Requirement already satisfied: idna<4,>=2.5 in ./.local/lib/python3.10/site-packages (from requests>=2.4.3->ncbi-genome-download) (3.3)
Installing collected packages: appdirs, ncbi-genome-download
Successfully installed appdirs-1.4.4 ncbi-genome-download-0.3.1

インストールが終わったらひとまず “ncbi-genome-download -h” と打ち込み、どんなオプションがあるか確認しましょう。

bio@bio:$ncbi-genome-download -h
usage: ncbi-genome-download [-h] [-s {refseq,genbank}] [-F FILE_FORMATS] [-l ASSEMBLY_LEVELS] [-g GENERA] [--genus GENERA] [--fuzzy-genus] [-S STRAINS] [-T SPECIES_TAXIDS] [-t TAXIDS]
                            [-A ASSEMBLY_ACCESSIONS] [-R REFSEQ_CATEGORIES] [--refseq-category REFSEQ_CATEGORIES] [-o OUTPUT] [--flat-output] [-H] [-P] [-u URI] [-p N] [-r N] [-m METADATA_TABLE] [-n]
                            [-N] [-v] [-d] [-V] [-M TYPE_MATERIALS]
                            groups

positional arguments:
  groups                The NCBI taxonomic groups to download (default: all). A comma-separated list of taxonomic groups is also possible. For example: "bacteria,viral"Choose from: ['all', 'archaea',
                        'bacteria', 'fungi', 'invertebrate', 'metagenomes', 'plant', 'protozoa', 'vertebrate_mammalian', 'vertebrate_other', 'viral']

options:
  -h, --help            show this help message and exit
  -s {refseq,genbank}, --section {refseq,genbank}
                        NCBI section to download (default: refseq)
  -F FILE_FORMATS, --formats FILE_FORMATS
                        Which formats to download (default: genbank).A comma-separated list of formats is also possible. For example: "fasta,assembly-report". Choose from: ['genbank', 'fasta', 'rm',
                        'features', 'gff', 'protein-fasta', 'genpept', 'wgs', 'cds-fasta', 'rna-fna', 'rna-fasta', 'assembly-report', 'assembly-stats', 'all']
  -l ASSEMBLY_LEVELS, --assembly-levels ASSEMBLY_LEVELS
                        Assembly levels of genomes to download (default: all). A comma-separated list of assembly levels is also possible. For example: "complete,chromosome". Choose from: ['all',
                        'complete', 'chromosome', 'scaffold', 'contig']
  -g GENERA, --genera GENERA
                        Only download sequences of the provided genera. A comma-seperated list of genera is also possible. For example: "Streptomyces coelicolor,Escherichia coli". (default: [])
  --genus GENERA        Deprecated alias of --genera
  --fuzzy-genus         Use a fuzzy search on the organism name instead of an exact match.
  -S STRAINS, --strains STRAINS
                        Only download sequences of the given strain(s). A comma-separated list of strain names is possible, as well as a path to a filename containing one name per line.
  -T SPECIES_TAXIDS, --species-taxids SPECIES_TAXIDS
                        Only download sequences of the provided species NCBI taxonomy IDs. A comma-separated list of species taxids is also possible. For example: "52342,12325". (default: [])
  -t TAXIDS, --taxids TAXIDS
                        Only download sequences of the provided NCBI taxonomy IDs. A comma-separated list of taxids is also possible. For example: "9606,9685". (default: [])
  -A ASSEMBLY_ACCESSIONS, --assembly-accessions ASSEMBLY_ACCESSIONS
                        Only download sequences matching the provided NCBI assembly accession(s). A comma-separated list of accessions is possible, as well as a path to a filename containing one
                        accession per line.
  -R REFSEQ_CATEGORIES, --refseq-categories REFSEQ_CATEGORIES
                        Only download sequences of the provided refseq categories (default: all)
  --refseq-category REFSEQ_CATEGORIES
                        Deprecated alias for --refseq-categories
  -o OUTPUT, --output-folder OUTPUT
                        Create output hierarchy in specified folder (default: /home/bio)
  --flat-output         Dump all files right into the output folder without creating any subfolders.
  -H, --human-readable  Create links in human-readable hierarchy (might fail on Windows)
  -P, --progress-bar    Create a progress bar for indicating the download progress
  -u URI, --uri URI     NCBI base URI to use (default: https://ftp.ncbi.nih.gov/genomes)
  -p N, --parallel N    Run N downloads in parallel (default: 1)
  -r N, --retries N     Retry download N times when connection to NCBI fails (default: 0)
  -m METADATA_TABLE, --metadata-table METADATA_TABLE
                        Save tab-delimited file with genome metadata
  -n, --dry-run         Only check which files to download, don't download genome files.
  -N, --no-cache        Don't cache the assembly summary file in /home/bio/.cache/ncbi-genome-download.
  -v, --verbose         increase output verbosity
  -d, --debug           print debugging information
  -V, --version         print version information
  -M TYPE_MATERIALS, --type-materials TYPE_MATERIALS
                        Specifies the relation to type material for the assembly (default: any). "any" will include assemblies with no relation to type material value defined, "all" will download only
                        assemblies with a defined value. A comma-separated list of relatons. For example: "reference,synonym". Choose from: ['any', 'all', 'type', 'reference', 'synonym', 'proxytype',
                        'neotype'] .

 とにかく何か入れたらまずはhelpを見るクセをつけておくと、エラーが出たときにさっと対処出来ますし、便利機能を見逃さずに済みます。”-h”と打つか”–help”と打てば大抵はヘルプが出ます。

今回は練習としてみんな大好きE. coliのゲノムデータをダウンロードしてみましょう。

ゲノムデータのdownload (dry-run)

“ncbi-genome-download -g “Escherichia coli” bacteria -n”で実行してみます。

-g が菌種や属名で今回はE. coliを指定しています。
-n はドライランで実際にダウンロードする前にそのリストを見ることができます。

bio@bio:$ncbi-genome-download -g "Escherichia coli" bacteria -n
# すごくいっぱいリストが返されると思います
bio@bio:$ncbi-genome-download -g "Escherichia coli" bacteria -n >e_coli_list
# ひとまず、リストを出力
bio@bio:$less e_coli_list 
# リストの中身を見てみる
Considering the following 29875 assemblies for download:
GCF_000157115.2 Escherichia coli        3_2_53FAA
GCF_000308975.1 Escherichia coli        IMT2125
GCF_000597845.1 Escherichia coli        ST540
GCF_000599625.1 Escherichia coli        ST540
GCF_000599645.1 Escherichia coli        ST540
GCF_000599665.1 Escherichia coli        ST2747
GCF_000599685.1 Escherichia coli        ST2747
GCF_000599705.1 Escherichia coli        ST2747
GCF_000599725.2 Escherichia coli        UCD_JA03
・
・
・
# 29875株分のリストが得られている

 流石と言うべきか、E. coliはデータ数が多いので全データをダウンロードするのは時間がかかりますね。とりあえず今回はReference genomesとなっているE. coliのみをダウンロードしようと思います。”ncbi-genome-download -g “Escherichia coli” bacteria -n –refseq-categories reference”を実行してみましょう。

bio@bio:$ncbi-genome-download -g "Escherichia coli" bacteria -n --refseq-categories reference
Considering the following 2 assemblies for download:
GCF_000008865.2	Escherichia coli O157:H7 str. Sakai	Sakai substr. RIMD 0509952
GCF_000005845.2	Escherichia coli str. K-12 substr. MG1655	K-12 substr. MG1655

これで2つの菌株がダウンロードされることがわかりました。
 ちなみに普通?はReference genomeは1つですね。
あと菌種によってReference genomeがあるパターンとRepresentative genomeがあるパターンのどちらかになります。
この違いは前者がNCBIやコミュニティが他のデータと比較する際に基準として重要なハイクオリティのゲノムを手動で選択したもので、後者はReference genomeほどいい感じのものはないけど、とりあえず代表的なものを選択しました。的な感じです。参照(https://www.ncbi.nlm.nih.gov/assembly/help/#glossary
 上記のような理由で選択されていますので、少しマイナーな菌種ですと、いいデータがアップロードされたときなど、比較的頻繁に更新されます。

E. coliはReference genomeでしたが、Representative genomeであるパターンも考慮し、–refseq-categoriesに,referenceを加えて

bio@bio:$ncbi-genome-download -g "Escherichia coli" bacteria -n --refseq-categories representative,reference
Considering the following 2 assemblies for download:
GCF_000008865.2	Escherichia coli O157:H7 str. Sakai	Sakai substr. RIMD 0509952
GCF_000005845.2	Escherichia coli str. K-12 substr. MG1655	K-12 substr. MG1655

とするのが無難でしょう。
さらに今回は-Fでgenbank形式とFASTA形式の2つをダウンロードの対象にします。(defaultはgenbankのみ)

bio@bio:$ncbi-genome-download -g "Escherichia coli" bacteria -n --refseq-categories representative,reference -F genbank,fasta
Considering the following 2 assemblies for download:
GCF_000008865.2	Escherichia coli O157:H7 str. Sakai	Sakai substr. RIMD 0509952
GCF_000005845.2	Escherichia coli str. K-12 substr. MG1655	K-12 substr. MG1655

ゲノムデータのdownload

それでは、いよいよ-n をはずしてダウンロードしましょう

bio@bio:$ncbi-genome-download -g "Escherichia coli" bacteria --refseq-categories representative,reference -F genbank,fasta
# 回線速度によりますが、10秒程度でダウンロードできると思います

bio@bio:$ls refseq/bacteria/GCF_00000*
refseq/bacteria/GCF_000005845.2:
GCF_000005845.2_ASM584v2_genomic.fna.gz  GCF_000005845.2_ASM584v2_genomic.gbff.gz  MD5SUMS

refseq/bacteria/GCF_000008865.2:
GCF_000008865.2_ASM886v2_genomic.fna.gz  GCF_000008865.2_ASM886v2_genomic.gbff.gz  MD5SUMS
#こんな感じでダウンロードされていればOKです。

“実行先/refseq/bacteria/ここにダウンロードされる”にファイルがあれば成功です。gz形式で圧縮されていますので、gzip等で解凍して中身をlessコマンドを使用して見てみましょう。

bio@bio:$gzip -d GCF_000008865.2_ASM886v2_genomic.gbff.gz 
# -dで解凍です
bio@bio:$less GCF_000008865.2_ASM886v2_genomic.gbff
LOCUS       NC_002695            5498578 bp    DNA     circular CON 12-FEB-2021
DEFINITION  Escherichia coli O157:H7 str. Sakai DNA, complete genome.
ACCESSION   NC_002695
VERSION     NC_002695.2
DBLINK      BioProject: PRJNA226
            BioSample: SAMN01911278
KEYWORDS    RefSeq.
SOURCE      Escherichia coli O157:H7 str. Sakai
  ORGANISM  Escherichia coli O157:H7 str. Sakai
・
・
・
# こんな感じで.gzがとれてlessで中身を確認できればOKです

できましたか?
問題が起こった場合はgitのissuesなどを参考にするといいでしょう。
参照(https://github.com/kblin/ncbi-genome-download

おまけ

 まとめて解凍するには以下のようにやったりします。

#findコマンドで.gzのついたファイルのパスを取得します
bio@bio:$find -name "*.gz"
./refseq/bacteria/GCF_000005845.2/GCF_000005845.2_ASM584v2_genomic.fna.gz
./refseq/bacteria/GCF_000005845.2/GCF_000005845.2_ASM584v2_genomic.gbff.gz
./refseq/bacteria/GCF_000008865.2/GCF_000008865.2_ASM886v2_genomic.gbff.gz
./refseq/bacteria/GCF_000008865.2/GCF_000008865.2_ASM886v2_genomic.fna.gz

#パイプで上のリストをつないでxargsでgzipに持っていき解凍します。(内部の処理的には一行ずつ実行していくのかな?)
bio@bio:$find -name "*.gz"|xargs gzip -d

#.gzがとれて解凍できていることを確認
bio@bio:$ls refseq/bacteria/GCF_000005845.2/
GCF_000005845.2_ASM584v2_genomic.fna  GCF_000005845.2_ASM584v2_genomic.gbff  MD5SUMS

#今回はfnaの方を確認
bio@bio:$less refseq/bacteria/GCF_000005845.2/GCF_000005845.2_ASM584v2_genomic.fna 
>NC_000913.3 Escherichia coli str. K-12 substr. MG1655, complete genome
AGCTTTTCATTCTGACTGCAACGGGCAATATGTCTCTGTGTGGATTAAAAAAAGAGTGTCTGATAGCAGCTTCTGAACTG
GTTACCTGCCGTGAGTAAATTAAAATTTTATTGACTTAGGTCACTAAATACTTTAACCAATATAGGCATAGCGCACAGAC
AGATAAAAATTACAGAGTACACAACATCCATGAAACGCATTAGCACCACCATTACCACCACCATCACCATTACCACAGGT
AACGGTGCGGGCTGACGCGTACAGGAAACACAGAAAAAAGCCCGCACCTGACAGTGCGGGCTTTTTTTTTCGACCAAAGG
TAACGAGGTAACAACCATGCGAGTGTTGAAGTTCGGCGGTACATCAGTGGCAAATGCAGAACGTTTTCTGCGTGTTGCCG
ATATTCTGGAAAGCAATGCCAGGCAGGGGCAGGTGGCCACCGTCCTCTCTGCCCCCGCCAAAATCACCAACCACCTGGTG
GCGATGATTGAAAAAACCATTAGCGGCCAGGATGCTTTACCCAATATCAGCGATGCCGAACGTATTTTTGCCGAACTTTT
GACGGGACTCGCCGCCGCCCAGCCGGGGTTCCCGCTGGCGCAATTGAAAACTTTCGTCGATCAGGAATTTGCCCAAATAA
AACATGTCCTGCATGGCATTAGTTTGTTGGGGCAGTGCCCGGATAGCATCAACGCTGCGCTGATTTGCCGTGGCGAGAAA
ATGTCGATCGCCATTATGGCCGGCGTATTAGAAGCGCGCGGTCACAACGTTACTGTTATCGATCCGGTCGAAAAACTGCT
GGCAGTGGGGCATTACCTCGAATCTACCGTCGATATTGCTGAGTCCACCCGCCGTATTGCGGCAAGCCGCATTCCGGCTG
・
・
・

 これで一括でダウンロードと解凍ができるようになります。ncbi-genome-downloadでダウンロード中にたまにproxy error(だったかな)とかで止まるんですが、もう一度実行し直せばMD5SUMS(いまからダウンロードするものと同じファイルがあるか識別するためのもの)があるので、すでにダウンロードして同じファイルがあるものはスキップされて続きからダウンロードされます。
 さらに余談ですが、catでは文字列が多いファイルや先頭にタイトルやファイルの情報がある場合、表示や、先頭へ行くのに時間がかかるのでlessがオススメです。そもそもcatはファイルを繋げるのが本来の用途らしいです。

他にも色々オプションがあります。そのうち追記するかもです。
(-Fオプションを入れたバージョンにしました)

よかったらシェアしてね!
  • URLをコピーしました!

コメント

コメントする

目次