はじめに
SRAをダウンロードする際には、fasterq-dumpなどのツールがありますが、日本国内から利用する場合は、国内のDDBJのサーバーを利用することで、通信速度が速く、便利なことが多いです。しかし、ブラウザからダウンロードするためのURLを一つ一つ取得するのは手間がかかり面倒です。そこで、DDBJからSRAをダウンロードするためのURLをリストアップするスクリプトを書きました。
意外と需要のあるかもしれないのと、(あとでやり方を忘れてしまう可能性があるため)Qiita記事にしました。
Requirements
スピナーを表示するために、tty-spinnerをインストールしておく必要があります。
gem install tty-spinner
スクリプト
下記のスクリプトをパスの通っている場所に保存し実行権限をつけておきます。 sudo chmod +x ./ddbj_sra_urls.rb
#! /usr/bin/env ruby
# DDBJ SRA URL Getter
# author: kojix2
require 'net/http'
require 'json'
require 'optparse'
require 'tty-spinner'
urls = []
ftp = false
# ftpオプション
OptionParser.new do |op|
op.banner = "Usage: #{__FILE__} [options] <BioProject>"
op.on("--ftp", "FTPのURLを表示する"){ ftp = true }
end.parse!(ARGV)
# プロジェクトIDを取得する
project_id = ARGV[0]
if project_id.nil?
warn 'エラー:BioprojectのAccessionが必要です。'
exit 1
end
# URLからJSONデータを取得する
def json_url(uri)
uri = URI.parse(uri)
dat = Net::HTTP.get(uri)
JSON.parse(dat)
end
# プロジェクト情報を取得
bioproject = json_url("https://ddbj.nig.ac.jp/resource/bioproject/#{project_id}.json")
# Loading中にスピナーを表示する
spinner = TTY::Spinner.new('[:spinner] Loading ...', format: :pulse_2)
spinner.auto_spin
if bioproject['dbXrefs'].nil?
warn "エラー:データを取得できませんでした。"
exit 1
end
# sra-run タイプのURLを取得し、URLの配列に格納
bioproject['dbXrefs'].each do |i|
next if i['type'] != 'sra-run'
sra_run = json_url(i['url'] + '.json')
sra_run['downloadUrl'].each do |u|
next if u['type'] != 'sra'
# https か ftp か
urls << (ftp ? u['ftpUrl'] : u['url'])
end
end
# Loadingスピナーを停止し、完了を知らせる
spinner.stop('Done!')
# 取得したURLを表示
puts urls
使い方
Usage: ./ddbj_sra_urls.rb [options] <BioProject>
--ftp FTPのURLを表示する
私は動物のタヌキがすきです。そこでタヌキのプロジェクトがないか探してみました。
PRJNA341783は中国のタヌキの皮膚のトランスクリプトームのデータです。(日本のタヌキのデータを探したかったけど見つかりませんでした)
ここでは例として、引数に PRJNA341783
を指定して、タヌキのトランスクリプトームのデータをDDBJから取得するためのURLを取得します。
ddbj_sra_urls.rb PRJNA341783 > tanuki.txt
ダウンロード用のURLが tanuki.txt に保存されます。
https://ddbj.nig.ac.jp/public/ddbj_database/dra/sralite/ByExp/litesra/SRX/SRX213/SRX2134150/SRR4158183/SRR4158183.sra
https://ddbj.nig.ac.jp/public/ddbj_database/dra/sralite/ByExp/litesra/SRX/SRX213/SRX2134151/SRR4158184/SRR4158184.sra
https://ddbj.nig.ac.jp/public/ddbj_database/dra/sralite/ByExp/litesra/SRX/SRX213/SRX2134152/SRR4158185/SRR4158185.sra
https://ddbj.nig.ac.jp/public/ddbj_database/dra/sralite/ByExp/litesra/SRX/SRX213/SRX2134153/SRR4158186/SRR4158186.sra
https://ddbj.nig.ac.jp/public/ddbj_database/dra/sralite/ByExp/litesra/SRX/SRX213/SRX2134154/SRR4158187/SRR4158187.sra
https://ddbj.nig.ac.jp/public/ddbj_database/dra/sralite/ByExp/litesra/SRX/SRX213/SRX2134155/SRR4158188/SRR4158188.sra
得られたURLのリスト利用すれば、手元のNASなどに簡単にデータをダウンロードすることができます。
この記事は以上です。