dratools-go は、DDBJ Search API を使って DRA/SRA 関連 accession から
ダウンロード URL や run accession を解決するコマンドラインツールです。
このリポジトリは Ruby 版 dratools を参考にした Go 移植版です。
dratools-go は非公式のツールです。DDBJ や国立遺伝学研究所が提供する公式ツールではありません。
Go 1.22 以上でビルドできます。
go build -o dratools ./cmd/dratoolsdratools はサブコマンド方式です。
| コマンド | 役割 |
|---|---|
url |
ダウンロード URL を表示する |
get |
ファイルをダウンロードする |
probe |
ダウンロード URL の到達性を確認する |
tree |
accession から run へ辿る探索ツリーを表示する |
meta |
レコードのメタ情報を表示する |
runs |
run accession の一覧を出力する |
size |
ダウンロードサイズを集計する |
dratools url DRR000001
dratools url --json DRR000001 DRR000002
dratools runs PRJNA341783
dratools size --type fastq PRJNA341783
dratools get -O downloads DRR000001複数の accession もまとめて渡せます。
dratools url DRR000001 DRR000002
dratools get --input list.txt -O downloads
printf 'DRR000001\nDRR000002\n' | dratools get -O downloadsget は小規模な確認や手元での簡単な取得を助けるための補助的な機能です。
この Go 版では Ruby 版以上に、ダウンロード本体よりも URL 解決を主目的にしています。
大量のデータを取得する場合は、dratools url で URL の一覧を取得するところまでにとどめ、
実際のダウンロードは curl, wget, aria2c, NAS のダウンロード機能など、
用途に合った別のツールへ渡すことを強くおすすめします。
Go 版は Ruby 版 dratools の主要コマンドと探索ロジックを引き継いでいます。
一方で、実ファイルのダウンロードは Ruby 版のように curl, wget, aria2c へ shell out せず、
Go ライブラリ grab を使います。
get は net/http ベースで、レジューム、リトライ、md5 検証、対話端末での進捗バー表示に対応しています。
それ以外は標準ライブラリ中心の実装です。
Ruby 版から引き継いでいる主な環境変数:
DRATOOLS_MAX_RECURSIVE_NON_RUN_XREFSDRATOOLS_TREE_MAX_DIRECT_RUNSDRATOOLS_URL_MAX_DIRECT_RUNSDRATOOLS_SIZE_MAX_DIRECT_RUNS
値に unlimited を指定すると、その制限を無効にできます。
Ruby 版の参照実装まで取得する場合は、submodule も初期化してください。
git submodule update --init --recursivego test ./...
go build -o dratools ./cmd/dratoolsMakefile も用意しています。
make fmt
make test
make buildCI では Linux/macOS と Go 1.22/最新系列で、gofmt、テスト、ビルドを確認します。
MIT License です。詳しくは LICENSE を参照してください。