Palmsonntagmorgen

NGSデータを使った解析と、その周辺。

記事一覧

書籍出版記念

「エピゲノム情報解析」を出版しました

Linux一般

文字列の検索・置換

リダイレクトとパイプ

sortコマンドの使い方(ファイルのソート)

shuf: テキストファイルの行をランダム抽出

2つのファイルの共通行を抽出する 

Linux ワンライナー覚書

解析環境構築

環境変数PATHの通し方

SSH公開鍵の生成・設定の方法

SSHその2 ssh のパスワード入力を省略 (ssh-agent)

SSHその3 ssh の設定を保存 (.ssh/config)

【Ubuntu】パッケージ管理コマンドあれこれ

pyenvでPython環境を構築する

バイオインフォマティクスのためのpython環境構築方法を考える

NGS解析のための共有サーバ環境構築を考える(2022年度版)

GitHubからプログラムをダウンロード・インストール

micromambaを用いたPython環境構築

Docker・Singularity

 【Win】【Mac】【Linux】Dockerのインストール 【2019年7月現在】

【Windows10】Windows PreviewにリリースされたWSL2をインストールしてみた

Singularityを使ったDocker環境の利用が楽ちんという話

Docker/Singularityでも環境の統一は難しいかもしれないという話

docker-ubuntu-vnc-desktopを使ってDockerイメージ (ssp_drompa) をGUIで動かす

Monocle3をRstudioで起動できる dorowu/ubuntu Dockerイメージ

Docker daemonが ルートディレクトリの容量を圧迫するのを回避する

データ生成

常染色体と性染色体のみのゲノム配列ファイル genome.fa を作成する

2bit genome を作成する

genome tableを作成する

fetchChromSizes を使ってgenome tableファイルを作成

Gene annotation データを用意する(gtf形式)

gtfファイルからrefFlat形式への変換

LiftOver: BEDファイルを異なるbuildへ変換

fastqデータ取得

SRAからfastqを取得する

ENA,DDBJからfastqを取得する

aria2を使ってENAから高速にfastq.gzを取得する

ゲノムマッピング

Readをゲノムにマッピング (その1) (2017/12/19 追記あり)

Readをゲノムにマッピング (その2)

Readをゲノムにマッピング (その3) 圧縮ファイルを入力にする方法

chromapを試す(その1)

chromapを試す(その2)

マップデータ操作

SAMtoolsとリダイレクト

SAMtoolsワンライナー覚書

マッピング: CRAM形式を試す

ChIP-seq解析: DROMPA

DROMPA3: その1 インストール

DROMPA3: その2 parse2wig

DROMPA3: その3 ピーク抽出(peak calling)

DROMPA3: その4 マップリード分布の可視化その1

DROMPA3: その5 シェル変数を使う

DROMPA3: その6 ChIP/Input ratio 及び p値の可視化

DROMPA3: その7 -i オプション詳細

DROMPA3: その8 GVコマンドでのマクロな可視化

DROMPA3: その9 リードプロファイル

DROMPA3: その10 ヒートマップ

DROMPA3: その11 複製解析(出芽酵母)

DROMPAplusを公開しました

DROMPAplus: Dockerを使ったparse2wig+

ChIP-seq解析: 品質評価

Library complexity (PCR bias)とは何か

S/N比の評価手法 その1

S/N比の評価手法 その2 Cross-correlation profile

S/N比の評価手法 その3 deepTools

S/N比の評価手法 その4 SSP

ChIP-seq解析: ピークを入力とする操作

BEDtoolsワンライナー覚書

2サンプル間ピーク比較

RNA-seq解析:

RNA-seqによる発現量解析

HISAT-StringTie-Ballgown を試してみよう

HISAT-StringTie-Ballgown を試してみよう その2

STAR-RSEMによる発現量推定 その1

STAR-RSEMによる発現量推定 その2

STAR-RSEMによる発現量推定 その3

Hi-C解析:

Hi-Cを用いたゲノム立体構造解析

その他:

論文・グラント申請書作成のポイントリンク集

Analysis Tips

研究内容を高めて(深めて)いくために大事なこと

Hi-Cを用いたゲノム立体構造解析

書籍「エピゲノム情報解析」を出版しました!みんな買ってね!

www.coronasha.co.jp

本記事は書籍出版記念更新その2として、本書籍で紹介しているHi-Cを用いたゲノム立体構造解析について書いてみたいと思います。

Hi-C解析について

NGSを用いたゲノム立体構造解析には様々な種類があり、おおまかには以下のように分類できます。

  1. 全ゲノム的な相互作用を対象とした手法:Hi-C, Micro-C, Omni-Cなど
  2. 特定のタンパク質結合を介したクロマチンループ抽出を対象とした手法:ChIA-PET, Hi-ChIP, PLAC-seqなど
  3. タンパク質を定めずにプロモーター・エンハンサーなどのゲノム間相互作用を抽出する手法:Capture-Hi-C (Capture-C)、Micro-Capture-Cなど

これらの手法をもとにした変種のアッセイも数多く提案されていますが、基本的には上の3つの分類に集約されます (シングルセル立体構造解析は本記事では割愛します)。

2.と3.は直接的な立体相互作用である「クロマチンループ」の検出に特化した手法です。 TADやコンパートメントなど、より巨視的な立体構造を見る場合には1.を利用する必要があります。 漠然と「ゲノム立体構造解析」と言う場合には1.を指すことが多く、その中でもHi-Cが最も一般的でよく用いられている(公開データも豊富である)ので、 書籍「エピゲノム情報解析」ではHi-Cにフォーカスして情報解析の各ステップを解説しました。

実際、Hi-C, Micro-C, Omni-Cなどの亜種は基本的にゲノムの断片化が異なるだけであり、情報解析部分ではほとんど同一のワークフローで良いため、Hi-Cについて理解すれば基本的に十分です。

コンタクトマップ

Hi-C解析では以下のようなコンタクトマップを図示しながら議論することが一般的です。 立体構造解析に携わっていなくても、この図を見たことがある人は多いでしょう。 Hi-Cに関するあらゆる解析法は、このコンタクトマップを入力としてスタートします。

私がHi-C解析で一番最初に感じた疑問は「四角形の図と三角形の図は何が違うのだろう?」というものでしたが、 実際には全く違いはありません。コンタクトマップは対称行列であるため、上三角部分だけを可視化しても情報量は変わりません。 可視化にどちらを使うかは著者の好みによります。

Hi-C解析パイプライン

世界的に利用されているHi-C解析パイプラインは以下のようなものがあります。

中でもJuicer、Coolerが最も有名であり、このどちらかを使うのが基本的には間違いありません。 ENCODE ProjectではJuicer, 4DN projectではCoolerが採用されています。

Hi-C Proは既に開発が止まっていますが、導入が簡単であることから利用される人が多い印象です。 FitHiChIPというHi-ChIP用のループ検出ツールはHi-C Proをデフォルトに採用しています。

HOMERはモチーフ検出ツールとして使っている方が多いと思いますが、Hi-C解析にも使えます。こちらも導入が簡単で初心者向きですが、精度面が十分確認されていないためこの業界(?)ではあまり利用されません。

これら以外にもHiCExplorer, FAN-Cなどのパイプラインが存在しますが、これらは上記のパイプラインのどれかを内部的に動かしており、オリジナルのものではありません。

なお私もCustardPyというパイプラインを2023年に発表し、研究室内で利用していますが、これはメインエンジンにJuicerを使いつつ、他のツール群も使えるようにした汎用パイプラインです。 需要があればCustardPyの使い方などもこのブログで紹介していきたいと思っています。

どのパイプラインが一番よいのか

Hi-Cで最も有名な(引用数の多い)論文に以下の2つがあります。

1つめは最も初期のHi-C解析論文であり、コンパートメントという構造単位を提唱した論文です。2つめはGM12878細胞を用いて超高解像度のHi-Cデータを生成した論文で、このGM12878データは以降のHi-Cツール論文に非常によく用いられています。

この2つの論文を出版したErez Lieberman-Aiden がJuicerの作者であり、Juicerは上記論文の概念を反映した設計になっています。 従って、これらの論文で提案された解析を踏襲する場合にはJuicerが第一選択肢になります。そのため私のCustardPyでもJuicerを第一エンジンに用いていました。

しかしながら、Juicerは最近開発が止まっており、従って最新の知見は取り入れられていないものと思われます。例えば制限酵素を用いないMicro-C解析には直接用いることができません。 また、Java言語を用いて作られており、内部がブラックボックス的であること、バージョン間で非互換であり、異なるバージョンで生成された.hicファイルを読み込ませるとエラーになるということもよく起こります。

2025年時点で最も精力的に更新が続けられているのはCoolerシリーズであり、Open2Cというコミュニティによってオープンな開発がなされています。 最近も以下のような論文が出されました。

これらはPythonで書かれており、APIも充実しています。オープンサイエンスの精神を最も反映していると個人的には感じており、CustardPyの最新版(v3.0.0予定)ではCoolerをメインエンジンにするために大幅な更新を行う予定です。

まとめ

Hi-C解析ツールなどについて簡単に紹介しました。 Hi-C解析自体にはほとんど触れていませんが、機会があればこのブログでも簡単に紹介したいと思っています。

なお、日本国内でのHi-C解析コミュニティはなかなか大きくならないのですが、個人的にはもっと盛り上がって欲しいと思っています。 それでHi-C研究会という名前の研究会を開催して、お互いに意見と知見を交換する場を作ったりしています。 クローズドのコミュニティですが、誰でも参加歓迎ですので、もし参加されたい人がいましたらいつでもご相談ください。

micromambaを用いたPython環境構築

書籍「エピゲノム情報解析」を出版しました!みんな買ってね!

www.coronasha.co.jp

本記事は書籍出版記念更新その1として、micromambaを用いたPython環境構築を紹介します。

(その2もあればいいな)

Micromambaとは

Linux PC上でのPython環境の構築、仮想環境の管理にはpyenvやcondaをお使いの方が多いと思います。 このブログでも何度か記事にしています。

pyenvでPython環境を構築する - Palmsonntagmorgen

NGS解析のための共有サーバ環境構築を考える(2022年度版)(2022/9/12追記) - Palmsonntagmorgen

しかしcondaを使うと(pyenvを経由してインストールする場合を含む)、 多数のパッケージがインストールされる際に依存関係の競合を解決するのに要する時間が極めて長いという問題があります。 多数の依存関係を持つ解析ツールをbiocondaでインストールしようとすると、一晩待っても依存関係が解決せず、最終的に「解決できませんでした」とエラーになって終了するということもしばしば起こります。

そのために仮想環境を作ってパッケージ群を細かく分割し、バージョンの競合を防止することが有効なのですが、そもそも競合解決がもっと短時間で完了する方が便利です。

その理由から私は現在、Python環境構築にmicromambaを使っています。 仮想環境やベース環境の作成はCondaよりもはるかに高速であり、ローカルPCやDockerイメージのビルドにおいて、異なるツール・バージョン群のインストールテストが格段に楽になりました。

mamba.readthedocs.io

高速なPython環境構築を行ってくれるツールは他にもPixiuvなどがあり、これらを利用するのでも良いと思います。 私がmicromambaを採用した理由は、小さなバイナリファイルをダウンロードするだけで利用可能になるという簡便さに魅力を感じたためです。他のラボメンバーなどに利用を推奨することが簡単ですし、Dockerfileと一緒に置いておけばDockerイメージ構築もはかどります!

micromambaのインストール

micromambaはmambaのtiny versionであり、利用方法はmambaに準じます。

バイナリ形式で配布されており、以下からダウンロード可能です。

Release micromamba 2.3.1-0 · mamba-org/micromamba-releases · GitHub

CPUの種類に合わせていくつかのバイナリがありますが、 基本的にはmicromamba-linux-64 を選べばよいです。 ダウンロード後、以下のようにリネームしつつ、パーミッションを変更して実行可能にします。

mv micromamba-linux-64 micromamba   # リネーム
chmod +x micromamba      # 実行権限の付与

このmicromambaファイルをコピーすれば、どのマシンでもmicromambaが使えます。便利ですね。

micromambaは各ユーザごとにインストールすることが想定されているため、$HOME/.micromamba/bin/ ディレクトリを作成し、そこにバイナルファイルを置きましょう。

mkdir ~/.micromamba/bin/
mv micromamba ~/.micromamba/bin/   

~/.micromamba/bin/micromamba が実行ファイルになりますので、~/.micromamba/bin/ にPATHを通してください。

参考:環境変数PATHの通し方 - Palmsonntagmorgen

micromamba とタイプして以下のようにヘルプが表示されればインストール完了です。

$ micromamba
Version: 2.3.1

micromamba [OPTIONS] [SUBCOMMAND]

OPTIONS:
  -h,     --help              Print this help message and exit
          --version
(以下略)

micromambaのインストール(Mac

Macユーザの方はHomebrewでも入ります。

brew install micromamba

環境変数の設定

micromambaを利用するためには、MAMBA_ROOT_PREFIX などいくつかの環境変数の設定が必要になります。 以下のコマンドを実行すると、そのような設定を一括で環境ファイルに保存してくれます。 これはインストール時に一度だけ行えば以降は必要ありません。

micromamba shell init -s bash -p ~/.micromamba

このコマンドではシェルにbashを指定していますが、zshやfishも指定可能です。

base環境の構築

いよいよ環境構築です。まずはbase環境(デフォルト環境)です。

micromambaの場合、base環境も最初は空っぽで、Pythonがインストールされていません。 まずはbase環境にPythonをインストールしましょう。

micromamba install -n base python=3.10  # base環境にpython3.10をインストール

-n baseは省略可能ですが、間違いを防ぐためここでは明示的につけています。

以降は普通にpip install pandasなどでパッケージをインストールすることができます。

conda installに相当するコマンドは以下のようになります。

micromamba install -n base -c defaults <パッケージ名>

-c defaults はconda でも指定するパッケージコレクションのチャンネル名です。condaではdefaultsはデフォルトで入りますが、micromambaでは入らないので、明示的に指定しましょう。

例えばconda-forge をチャンネルとして追加する場合は以下のようになります。

 micromamba install -n base -c defaults -c conda-forge <パッケージ名>

env.yamlを使ってパッケージインストール

最初にも述べたように、パッケージをあれこれ無作為にインストールしているとバージョンの競合が起きたり、インストール済のパッケージのバージョンが書き換わったりしますので、インストールするパッケージの一覧をenv.yamlなどに保存しておき、そこからインストールすることが望ましいです。

以下のように記述したファイルをenv.yaml というファイル名で保存してみましょう。

name: base
channels:
  - conda-forge
  - defaults
dependencies:
  - python==3.10.13
  - numba==0.59.0
  - numexpr==2.8.7
  - numpy==1.26.4
  - pandas==2.2.1
  - scikit-learn==1.3.0
  - scipy==1.11.4
  - matplotlib==3.8.0
  - seaborn==0.12.2
  - notebook==6.5.6
  - pip:
      - macs2==2.2.9.1

channels に必要なチャンネルを指定し、dependenciesにパッケージを箇条書きで指定します。pip(PyPI)でしか入らないものは、- pip:の下にインデントを入れて指定しましょう。 パッケージのバージョンは必ずしも指定する必要はありませんが、再現性を確保するうえでは可能な限り指定することが望ましいです。

このようにしておくと、以下のようにenv.yamlを指定するだけで全てのパッケージをインストールしてくれます。

micromamba install -y -n base -f env.yaml

このenv.yamlファイルを共有することで、他の人と同一の環境を共有することができます。便利ですね!

仮想環境の構築

micromamba create を使うと任意の名前の仮想環境を構築できます。 以下はpy39cu118 という名前の環境を構築する例です。

envname=py39cu118
micromamba create -n $envname python=3.9 -c defaults  # 仮想環境を生成
# py39cu118環境にツールを個別にインストール
micromamba run -n $envname pip install pandas==2.2.1 scikit-learn==1.3.0 scipy==1.11.4 
micromamba install -n $envname -c defaults -c conda-forge <パッケージ名>

ここでもenv.yamlを用いて一括でインストールすることが可能です。

micromamba create -n $envname -f env.yaml

micromambaの利点:環境の再構築

ここまでで、micromambaを使った環境構築を紹介しました。 やり方はcondaなどと大差ないので、何が違うのだろう?と思われたかもしれません。

micromambaを用いる最大のメリットはその速さにあります。 env.yamlに大量のパッケージを記述した場合でも非常に高速に終了します(数分から十数分)。試してみると、condaと比較した高速さに驚くかもしれません。

高速であるということは、やり直すことが簡単であるということです。 環境を構築したが、何かがおかしい/失敗してしまったので最初からやり直したい、と思えば、 極端な話~/.micromamba/ ディレクトリごと削除して最初からやり直したとしても大した時間がかかりません。condaであれば、ここまでかかった環境構築の時間を考えると、削除をためらう…となってしまうでしょう。 env.yamlさえ用意しておけばコマンド1行で環境構築がほぼ完了するので、試しては削除して…と試行錯誤することが非常に簡単です。 依存関係が解決せずエラーで終了する場合も高速に結果を返してくれますし、env.yamlにバージョンを明記しておけばどれを修正すればいいのかもわかりやすいでしょう。

以前は、環境構築の再現性・統一に関してはDockerイメージを公開するのがベストではないかと思っていましたが、Dockerにも限界があります。

rnakato.hatenablog.jp

むしろenv.yamlを共有してその都度仮想環境を全員に作ってもらう方が、Python限定では再現性が高くなるのではないかという気がしました。高速なので、時間が限られた学内実習などでも利用できそうです。

ぜひ活用してみてください!

「エピゲノム情報解析」を出版しました

学生「エピゲノム情報解析を学びたいんですが、何か良い参考書はありますか?」

これの答えにベストマッチする本をこの度出版しました。

www.coronasha.co.jp

私の専門であるエピゲノム解析について書いた大学生~若手研究者向けの入門書になります。ChIP-seqやHi-Cなどを中心に、エピゲノム情報解析を学ぶ上で必要になる概念や歴史などについて初心者向けに解説しています。

上記Webサイトでも記していますが、参考書として長く有用なものとするため、個別のNGSアッセイの詳細なプロトコルや具体的なツールの利用法などは割愛し,その背後にあるゲノムデータの特性,その解析で認識しておくべき普遍的な考え方や歴史的な潮流を紹介することに注力しています。

細かい点を色々調べながら書いたので、完成まで2年以上かかってしまいました。 それだけの価値があるものができあがったと思っています。ぜひ御覧ください😃🙂

この本は何か、誰のための本か

  • 「エピゲノム解析にはどのような種類があるのか知りたい」
  • 「それぞれで用いられている解析ステップの概要と、要点が知りたい」
  • 「押さえておくべき文献が知りたい」

というような人に特におすすめしたいです。また、

  • 「Hi-C解析の情報解析部分について詳しく書かれた参考書が欲しい」

と思われている方にもおすすめです。ゲノム立体構造解析について詳しく書かれた和書は少ないと思うので、参考になると思います。

ATAC-seqの章ではシングルセル解析(scATAC-seq)にも触れているので、シングルセル・オープンクロマチン解析について学びたい人にも良いかもしれません。

また、

  • 「エピゲノム情報解析の講義をするのだが、良い参考図書が欲しい」

と思われている講師の先生方に強くおすすめしたい一品となっております。 2章のChIP-seq解析だけでも、半年分の講義として十分な内容になっています。

この本は何ではないか

様々なNGSアッセイを紹介していますが、それぞれについて具体的なプロトコルを示したものではありません。

プロトコルの詳細が知りたい方は、以下のような書籍が参考になるでしょう。

www.yodosha.co.jp

www.yodosha.co.jp

  • 解析ツールの利用法は書かれていません

今回、情報がすぐ古くなってしまうことを避けるため、具体的なツール名を紹介することは可能な限り控えました。

したがって、各解析に適した具体的なツールや、それらを利用するためのコマンド紹介などは書かれていません。

それらの情報が知りたい場合は、以下のような書籍が参考になるでしょう。

(このブログも参考になりますよね!)

hon.gakken.jp

www.oreilly.co.jp

終わりに

この本が皆さんに親しまれ、長く用いられることを願っています。

一方、「この本には◯◯が記述されていない、不十分だ」というご意見もあるかと思います。そのような意見が更に新たな参考書が誕生するきっかけとなると思います。 そのようにして、エピゲノム情報解析の関連和書がどんどん増えることを願っています!

書籍出版記念でしばらくこのBlogを更新しようと思います。お楽しみに

aria2を使ってENAから高速にfastq.gzを取得する

1論文あたりで用いられるデータが年々増加しており、論文の再実験をするためにFASTQをダウンロードするのもなかなか苦労しますよね。 以下の記事でENAからwgetを使ってfastqを取得する方法を紹介していますが、

rnakato.hatenablog.jp

今回はその高速版です。

ENAから fastqファイルを取得する

ここでは例として、Ahn et al., Nature, 2021の論文RNA-seqデータ(paired-end)を使います。IDはPRJNA604380です。

ENA上で PRJNA604380を検索すると、以下のようなページになります。RNA-seqデータが18サンプル含まれています。

右側にある "Download All" をクリックすればダウンロードが開始されますが、めちゃくちゃ遅いです。しばしば途中でタイムアウトになり、うまくダウンロードされません。 FASTQのリンクをクリックすれば個別にダウンロードできますが、それでも遅いですし、サンプル数が多いと大変です。

ENAから wget を使ってfastqファイルを一括取得する

FTPリンクをファイルに保存し、wget -i を使う方法をおさらいします。

画面上部 "Download report"の TSV をクリックすると、各サンプルの詳細をテキスト形式でダウンロードできます。ここでは "filereport_read_run_PRJNA604380_tsv.txt" という名前で保存されました。

 $ head -n3 filereport_read_run_PRJNA604380_tsv.txt
study_accession sample_accession        experiment_accession    run_accession   tax_id  scientific_name fastq_ftp       submitted_ftp   sra_ftbam_ftp
PRJNA604380     SAMN13967826    SRX7659655      SRR10998571     9606    Homo sapiens    ftp.sra.ebi.ac.uk/vol1/fastq/SRR109/071/SRR10998571/SRR10998571_1.fastq.gz;ftp.sra.ebi.ac.uk/vol1/fastq/SRR109/071/SRR10998571/SRR10998571_2.fastq.gz          ftp.sra.ebi.ac.uk/vol1/srr/SRR109/071/SRR10998571
PRJNA604380     SAMN13967825    SRX7659656      SRR10998572     9606    Homo sapiens    ftp.sra.ebi.ac.uk/vol1/fastq/SRR109/072/SRR10998572/SRR10998572_1.fastq.gz;ftp.sra.ebi.ac.uk/vol1/fastq/SRR109/072/SRR10998572/SRR10998572_2.fastq.gz          ftp.sra.ebi.ac.uk/vol1/srr/SRR109/072/SRR10998572

ごちゃごちゃしていますが、サンプルの各種IDや生物種、FTPのURLなどが記載されています。 FTPのURLは7列目に記載されています。

 $ cut -f7 filereport_read_run_PRJNA604380_tsv.txt
ftp.sra.ebi.ac.uk/vol1/fastq/SRR109/071/SRR10998571/SRR10998571_1.fastq.gz;ftp.sra.ebi.ac.uk/vol1/fastq/SRR109/071/SRR10998571/SRR10998571_2.fastq.gz
ftp.sra.ebi.ac.uk/vol1/fastq/SRR109/072/SRR10998572/SRR10998572_1.fastq.gz;ftp.sra.ebi.ac.uk/vol1/fastq/SRR109/072/SRR10998572/SRR10998572_2.fastq.gz
ftp.sra.ebi.ac.uk/vol1/fastq/SRR109/073/SRR10998573/SRR10998573_1.fastq.gz;ftp.sra.ebi.ac.uk/vol1/fastq/SRR109/073/SRR10998573/SRR10998573_2.fastq.gz
ftp.sra.ebi.ac.uk/vol1/fastq/SRR109/074/SRR10998574/SRR10998574_1.fastq.gz;ftp.sra.ebi.ac.uk/vol1/fastq/SRR109/074/SRR10998574/SRR10998574_2.fastq.gz
ftp.sra.ebi.ac.uk/vol1/fastq/SRR109/075/SRR10998575/SRR10998575_1.fastq.gz;ftp.sra.ebi.ac.uk/vol1/fastq/SRR109/075/SRR10998575/SRR10998575_2.fastq.gz
ftp.sra.ebi.ac.uk/vol1/fastq/SRR109/078/SRR10998578/SRR10998578_1.fastq.gz;ftp.sra.ebi.ac.uk/vol1/fastq/SRR109/078/SRR10998578/SRR10998578_2.fastq.gz
ftp.sra.ebi.ac.uk/vol1/fastq/SRR109/081/SRR10998581/SRR10998581.fastq.gz
ftp.sra.ebi.ac.uk/vol1/fastq/SRR109/079/SRR10998579/SRR10998579_1.fastq.gz;ftp.sra.ebi.ac.uk/vol1/fastq/SRR109/079/SRR10998579/SRR10998579_2.fastq.gz
ftp.sra.ebi.ac.uk/vol1/fastq/SRR109/082/SRR10998582/SRR10998582.fastq.gz
ftp.sra.ebi.ac.uk/vol1/fastq/SRR109/083/SRR10998583/SRR10998583.fastq.gz
ftp.sra.ebi.ac.uk/vol1/fastq/SRR109/084/SRR10998584/SRR10998584.fastq.gz
ftp.sra.ebi.ac.uk/vol1/fastq/SRR109/087/SRR10998587/SRR10998587.fastq.gz
ftp.sra.ebi.ac.uk/vol1/fastq/SRR109/086/SRR10998586/SRR10998586.fastq.gz
ftp.sra.ebi.ac.uk/vol1/fastq/SRR109/088/SRR10998588/SRR10998588.fastq.gz
ftp.sra.ebi.ac.uk/vol1/fastq/SRR109/076/SRR10998576/SRR10998576_1.fastq.gz;ftp.sra.ebi.ac.uk/vol1/fastq/SRR109/076/SRR10998576/SRR10998576_2.fastq.gz
ftp.sra.ebi.ac.uk/vol1/fastq/SRR109/077/SRR10998577/SRR10998577_1.fastq.gz;ftp.sra.ebi.ac.uk/vol1/fastq/SRR109/077/SRR10998577/SRR10998577_2.fastq.gz
ftp.sra.ebi.ac.uk/vol1/fastq/SRR109/080/SRR10998580/SRR10998580_1.fastq.gz;ftp.sra.ebi.ac.uk/vol1/fastq/SRR109/080/SRR10998580/SRR10998580_2.fastq.gz
ftp.sra.ebi.ac.uk/vol1/fastq/SRR109/085/SRR10998585/SRR10998585.fastq.gz

paired-end のファイルがセミコロン(;) 区切りで記載されているので、セミコロンを改行に変換してファイル保存します。

 $ cut -f7 filereport_read_run_PRJNA604380_tsv.txt | sed 's/;/\n/g' | grep -v fastq_ftp > ftp.txt
 $ cat ftp.txt
ftp.sra.ebi.ac.uk/vol1/fastq/SRR109/071/SRR10998571/SRR10998571_1.fastq.gz
ftp.sra.ebi.ac.uk/vol1/fastq/SRR109/071/SRR10998571/SRR10998571_2.fastq.gz
ftp.sra.ebi.ac.uk/vol1/fastq/SRR109/072/SRR10998572/SRR10998572_1.fastq.gz
ftp.sra.ebi.ac.uk/vol1/fastq/SRR109/072/SRR10998572/SRR10998572_2.fastq.gz
ftp.sra.ebi.ac.uk/vol1/fastq/SRR109/073/SRR10998573/SRR10998573_1.fastq.gz
ftp.sra.ebi.ac.uk/vol1/fastq/SRR109/073/SRR10998573/SRR10998573_2.fastq.gz
(中略)
ftp.sra.ebi.ac.uk/vol1/fastq/SRR109/080/SRR10998580/SRR10998580_1.fastq.gz
ftp.sra.ebi.ac.uk/vol1/fastq/SRR109/080/SRR10998580/SRR10998580_2.fastq.gz
ftp.sra.ebi.ac.uk/vol1/fastq/SRR109/085/SRR10998585/SRR10998585.fastq.gz

あとはこのファイルにwget -i を実行すれば順番にダウンロードされます。

 $ wget -i ftp.txt

aria2を使ってfastqファイルを一括取得する

wgetはやはり低速であり、ダウンロードに時間がかかるという点では改善されません。 ここではwgetよりも高速にダウンロードできるaria2を使ってみましょう。

curlやwgetの数倍速い 爆速ダウンローダー aria2を使う #Linux - Qiita

aria2がインストールされていない場合はインストールします。aptでもbrewでも入ります。

 $ sudo apt install aria2

ひとつファイルをダウンロードしてみましょう。コマンド名はaria2c です。元のFTP URLは受け付けないようですので、冒頭に "ftp://" を追加して実行してください。

 $ aria2c -x 16 ftp://ftp.sra.ebi.ac.uk/vol1/fastq/SRR109/085/SRR10998585/SRR10998585.fastq.gz

-x 16 は使用するCPU数です。最大で16まで指定できます。 これにより、wgetよりも圧倒的に高速にファイルをダウンロードすることが可能です。

全ファイルをダウンロードしてみましょう。aria2cも "-i" オプションが使えますが、ここでは "ftp://"を追加しなければいけません。色々なやり方がありますが、ここではシンプルにfor文を使いましょう。

for url in $(cat ftp.txt); do
    echo $url
    aria2c -x 16 ftp://$url
done

これで全ファイルをダウンロードできます。

終わりに

  • この方法をGEOやSRAで使えると楽なのですが、これらのデータベースではダウンロードURLが公開されていません。ariawgetを使いたい場合はENAを使いましょう。
  • また、aria2cも時々ダウンロードに失敗することがあるようです。ダウンロード完了後には全てのファイルが揃っているか確認するようにしてください。