読者です 読者をやめる 読者になる 読者になる

NCBI GEOからまとめてSRAファイルを取得する

概要

NCBI GEOからまとめてSRAファイルを取得したい。

準備

Entrez Directコンパイル済みのバイナリファイルをダウンロードして、パスを通すだけ。
* Entrez Direct
ftp://ftp.ncbi.nlm.nih.gov/entrez/entrezdirect/
https://www.ncbi.nlm.nih.gov/news/02-06-2014-entrez-direct-released/

インストール例

$ wget ftp://ftp.ncbi.nlm.nih.gov/entrez/entrezdirect/edirect.tar.gz
$ tar zxvf edirect.tar.gz
$ echo 'export PATH=~/softwareedirect:${PATH}' >> ~/.bashrc

もしくは、biocondaでインストールする。

imamachi-n.hatenablog.com

$ conda install entrez-direct

実行例

GEO Accession viewer - Google Chrome 2016-12-14 17.58.06.png (173.7 kB)

下記のコマンドを実行。 esearch-queryオプションに適当なBioProjectのIDを指定する。

$ esearch -db sra -query PRJNA328218 | efetch --format runinfo | cut -d ',' -f 10 > srafile.txt
$ wget -i srafile.txt

SRAファイルのダウンロード先を取得して、wgetでまとめてダウンロードする。

esearch-dbオプションからさまざまなデータベース(SRA、PubMedなど)を指定でき、-queryオプションでIDなどをもとに検索を行うことができる。

efetchで検索した項目の情報を取得することができる。--formatの指定は、runinfonativeの2種類ありruninfoではカンマ区切りで各サンプルの情報が出力される(すべての情報が得られるわけではなく概要のみ?)。

一方、nativeを指定すると、XMLファイル形式ですべての情報が出力される(すべての情報が揃っているが、中身を調べるにはXMLをパースして整理する必要がある)。

SRAのファイル名にサンプル名を加えたい

SRAファイルをダウンロードした後、SRA IDサンプル名を併記したファイル名にリネームする。

シェルスクリプト

以下のようにスクリプトを実行する。

./sra_download.sh <任意のBioProjectのID>

実行に必要なPythonスクリプト

parse_sra_xml.py (1.4 kB)
rename_sra_files.py (352 B)

使用する場合、

filepath="/path/to/python_scripts"

の部分に実行に必要なPythonスクリプトを置いた場所を指定する。

やっていることは単純で、
1. 特定のProject IDに含まれる複数のサンプル(SRAファイル)をダウンロード&XMLファイルを取得する。
2. XMLファイルをパースして、SRAファイル名とサンプル名の対応表を作る。
3. SRA IDとサンプル名が併記されたファイル名にリネームする。

という作業をPythonスクリプトも使いながら(スマートじゃないですが)行っています。

実行すると、以下のようにSRAファイルが一括ダウンロードできます。

Martin_Cell_Rep_2012 - akimitsu@gw2.ddbj.nig.ac.jp - WinSCP 2017-01-13 23.25.35.png (16.8 kB)

参考