0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

DDBJからsraをダウンロードするためのURLを列挙する

Last updated at Posted at 2023-01-12

はじめに

SRAをダウンロードする際には、fasterq-dumpなどのツールがありますが、日本国内から利用する場合は、国内のDDBJのサーバーを利用することで、通信速度が速く、便利なことが多いです。しかし、ブラウザからダウンロードするためのURLを一つ一つ取得するのは手間がかかり面倒です。そこで、DDBJからSRAをダウンロードするためのURLをリストアップするスクリプトを書きました。

意外と需要のあるかもしれないのと、(あとでやり方を忘れてしまう可能性があるため)Qiita記事にしました。

Requirements

スピナーを表示するために、tty-spinnerをインストールしておく必要があります。

gem install tty-spinner

スクリプト

下記のスクリプトをパスの通っている場所に保存し実行権限をつけておきます。 sudo chmod +x ./ddbj_sra_urls.rb

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などに簡単にデータをダウンロードすることができます。

この記事は以上です。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?