💻

論文に記載の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での動作は未検証)

shell
mamba create -n ncbi-acc-download python=3.12
conda activate ncbi-acc-download
mamba install bioconda::ncbi-acc-download

コマンドとオプションを確認します。

shell
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. ダウンロード先のフォルダを用意

ダウンロード先のフォルダを作成
 → そのフォルダに移動(ダウンロード先のフォルダをカレントディレクトリとする)
 → ダウンロードするファイルのリストをそのディレクトリの中に置く

shell
mkdir path_to/download_folder
cd path_to/download_folder
mv path_to/download_list.csv .

今回はダウンロード先のフォルダ名を「mcr1-plasmid」としました。

3. ダウンロードの実行

以下のループ処理のコマンドでダウンロードを実行します。

一つのファイルと次のファイルのリクエストの間隔を15秒開ける設定にしています。

shell
#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

終了後、仮想環境から出ます。

shell
conda deactivate

ダウンロードしたファイルを確認すると、ファイル名に "_0" が付加されています。

もし、これをファイル名から一括で除きたい場合は、(一例として)ファイルのダウンロード先のディレクトリがカレントディレクトリの状態で以下のコマンドを実行することでファイル名を置換します。

shell
for file in ./* ; do
    mv "$file" "${file//_0/}"
done

おわりに

  • CLIを使わずに1ファイルずつ、直接NCBIのサイトにアクセスしてWebからファイルをダウンロードすることも可能です(画面右にある「Send to:」のメニューより)。


  • 繰り返しになりますが、CLIで複数のデータをダウンロードする際はサーバーに過度の負荷をかけないようにご注意ください。

Discussion