論文に記載のAccession Numberを元にFastaやGenbank形式のファイルをNCBIからCLIでダウンロードする
はじめに
論文に記載されているアクセッション番号を使ってNCBIからファイル(Fasta/Genbank形式など)をCLIでダウンロードする方法の一例です。
ncbi-acc-download
を使用します。
動作確認 (Hardware)
-MacBook Pro
-チップ Apple M1 (Rosetta2 インストール済み)
-macOS Ventura 13.6.6
-メモリ 16GB
動作確認 (Software)
-ncbi-acc-download 0.2.8
-Python 3.12.10
-biopython 1.85
手順
Nature Scientific Reportsに掲載の、こちらの文献を例にとります。
Comparative genomic analysis of Colistin resistant Escherichia coli isolated from pigs, a human and wastewater on colistin withdrawn pig farm | Scientific Reports
1. ncbi-acc-downloadのインストール
Github上ではpip
を使ったインストール方法が紹介されていますが、conda
を使って、仮想環境の作成時にPythonのバージョン3.12を指定した上で仮想環境を作成しました。
その仮想環境内に入った後 ncbi-acc-download をインストールします。
(※自分の環境ではRosettaを使用しています、ARM64での動作は未検証)
mamba create -n ncbi-acc-download python=3.12
conda activate ncbi-acc-download
mamba install bioconda::ncbi-acc-download
コマンドとオプションを確認します。
ncbi-acc-download -h
2. ダウンロード前の準備
2-1. ダウンロードするファイルの一覧を作成
論文中の、ある薬剤(コリスチン)の耐性遺伝子(mcr-1)を保有するプラスミドのうちplasmid incompatibility groupが
- IncI2 の4株
- IncX4 の2株
計6株のデータをダウンロードしてみます。
論文中に記載の株名・アクセッション番号をピックアップして、ダウンロードするファイルのリストを表計算ソフト等でcsvファイルに作成し、「download_list.csv」の名前で保存します。
1列目に株名(実行時にprefix
オプションに渡すことで、ダウンロードした際のファイル名になります)、2列目にアクセッション番号を記載します。
2-2. ダウンロード先のフォルダを用意
ダウンロード先のフォルダを作成
→ そのフォルダに移動(ダウンロード先のフォルダをカレントディレクトリとする)
→ ダウンロードするファイルのリストをそのディレクトリの中に置く
mkdir path_to/download_folder
cd path_to/download_folder
mv path_to/download_list.csv .
今回はダウンロード先のフォルダ名を「mcr1-plasmid」としました。
3. ダウンロードの実行
以下のループ処理のコマンドでダウンロードを実行します。
一つのファイルと次のファイルのリクエストの間隔を15秒開ける設定にしています。
#download_list.csvファイルの内容を1行ずつ読み込んで処理:
while read line; do
#1列目の値を取得して変数column1に代入
column1=`echo ${line} | cut -d , -f 1`
#2列目の値を取得して変数column2に代入
column2=`echo ${line} | cut -d , -f 2`
#ダウンロード実行
ncbi-acc-download --format fasta --prefix ${column1} ${column2}
#次の処理まで15秒待つ
sleep 15
done < download_list.csv
終了後、仮想環境から出ます。
conda deactivate
ダウンロードしたファイルを確認すると、ファイル名に "_0" が付加されています。
もし、これをファイル名から一括で除きたい場合は、(一例として)ファイルのダウンロード先のディレクトリがカレントディレクトリの状態で以下のコマンドを実行することでファイル名を置換します。
for file in ./* ; do
mv "$file" "${file//_0/}"
done
おわりに
- CLIを使わずに1ファイルずつ、直接NCBIのサイトにアクセスしてWebからファイルをダウンロードすることも可能です(画面右にある「Send to:」のメニューより)。
- 繰り返しになりますが、CLIで複数のデータをダウンロードする際はサーバーに過度の負荷をかけないようにご注意ください。
Discussion