SRA ExplorerとAspera Connectを使って効率的にfastqをダウンロードする

# 1.はじめに
生物学関連のデータ解析をしていると公共データセットを利用する場面があります。私の場合は今までレポジトリでAccessionを打ち込んで、`fastq-dump`でダウンロードしてきました。これが数検体ならまだしも、これが数十、数百で容量も大きくなると、データセットを探すのも大変でダウンロードも数日かかるのが最近の悩み事でした。
そこで、調べているとSRA Explorerを使って効率的に必要なデータセットの一覧を得て、IBMが無償で提供しているAspera Connectなるファイル転送プログラムを使うとかなり早いという情報を得たので、実際に試してみました。

# 2.手順
### 作業環境
・CPU：Apple M1 pro
・メモリ:32GB
・ストレージ：1TB SSD
・OS Ventura
・ネットワーク速度計測結果：100MB/sくらい

### １.Aspera Connectのセットアップ
Aspera Connect バージョン > 4.2 には必要な秘密鍵が付属していないasperaweb_id_dsa.opensshのため、バージョン < 4.2 をダウンロードする必要があります。
```shell
wget https://ak-delivery04-mul.dhe.ibm.com/sar/CMA/OSA/0adri/0/ibm-aspera-connect_4.1.3.93_macOS_x86_64.dmg
```
### 2.PATHを通す
後述のSRA Exprolerが提示する`ascp`(Aspera　Connect用のコマンド)はあらかじめPATHを通す必要があります。以下の手順で実行しておきます。

```shell
#ホームディレクトリへ移動
cd ~
vi .zshrc
#PATHの追加
Export
PATH=$PATH:$HOME/Applications/Aspera\ Connect.app/Contents/Resources
```
```shell
#追加したPATHが末尾に表示されていればOK
echo $PATH
```
### 3.SRA Explorerでデータセットを探す
実際にやってみます。

https://sra-explorer.info/#

![スクリーンショット 2023-03-30 20.42.33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2698051/90c5ed0f-0b34-a6b4-b556-e2dd46dcd960.png)

Accessionを打ち込むといくつかデータセットが出てきます。必要なデータセットが含まれていることを確認したら、add to collectionをクリックし saved datasetsに移動します。
Aspera commands for downloading FastQ filesのプルダウンからコードをダウンロードできます。
デフォルトではLinux用のコードが表示されるのでOSXの人は切り替え忘れのないように注意です。

![スクリーンショット 2023-03-30 20.49.09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2698051/d9bbad94-79cb-2816-e881-52ff0677db98.png)

### 4.ダウンロード
あとはダウンロードしたいディレクトリで.sh file実行すればダウンロードが開始されます。

```shell
cd /path/to/download
#sh file 実行
sh sra_explorer_fastq_aspera_download.sh
```
# ３.ダウンロードテスト
実際どれくらい早くなりそうか、今回はマウス糞便から取得したWGSのfastq.gz（total:約23GB）を`fastq-dump`とAsperaで比較してみます。(accession:SRR12398540)
※ネットワーク環境に依存するので、以下の実行時間はご参考までに。

まずは今まで通り`fastq-dump`でダウンロードします。
```shell
# 実行開始時間を記録 
start_time=`date +%s`;
fastq-dump SRR12398540 --split-files --gzip;
end_time=`date +%s`;
# 実行時間を計算し、表示する
time=$((end_time - start_time)) ;
echo "$time"
#result:26932
```
実行時間は26932秒でした。

続いてAsperaでダウンロードします。

```shell
# 実行開始時間を記録 
start_time=`date +%s`

#DL
ascp -QT -l 300m -P33001 -i $HOME/Applications/Aspera\ Connect.app/Contents/Resources/asperaweb_id_dsa.openssh era-fasp@fasp.sra.ebi.ac.uk:vol1/fastq/SRR123/040/SRR12398540/SRR12398540_1.fastq.gz . && mv SRR12398540_1.fastq.gz SRR12398540_WGS_of_C57BL_6J_Mice_High-MAC_12_week_old_mice_feces_1.fastq.gz
ascp -QT -l 300m -P33001 -i $HOME/Applications/Aspera\ Connect.app/Contents/Resources/asperaweb_id_dsa.openssh era-fasp@fasp.sra.ebi.ac.uk:vol1/fastq/SRR123/040/SRR12398540/SRR12398540_2.fastq.gz . && mv SRR12398540_2.fastq.gz SRR12398540_WGS_of_C57BL_6J_Mice_High-MAC_12_week_old_mice_feces_2.fastq.gz

# 実行終了時間を記録
end_time=`date +%s`
# 実行時間を計算し、表示する
time=$((end_time - start_time)) 
echo "$time"
#result 3047
```
実行時間は3047秒でした。
Asperaの方が`fastq-dump`と比べると8~9倍ほど速いですね。


# 4.引用
Mac OSでのAspera Connectのセットアップについて
https://www.biostars.org/p/9528910/

# 5.おまけ
SRA Explorerはcurlでダウンロードできるコードも生成できるのでこちらも試してみます。
```shell
# sh fileの中身（テスト用に実行時間の記録をしています）
# 実行開始時間を記録 
start_time=`date +%s`

#DL
curl -L ftp://ftp.sra.ebi.ac.uk/vol1/fastq/SRR123/040/SRR12398540/SRR12398540_1.fastq.gz -o SRR12398540_WGS_of_C57BL_6J_Mice_High-MAC_12_week_old_mice_feces_1.fastq.gz
curl -L ftp://ftp.sra.ebi.ac.uk/vol1/fastq/SRR123/040/SRR12398540/SRR12398540_2.fastq.gz -o SRR12398540_WGS_of_C57BL_6J_Mice_High-MAC_12_week_old_mice_feces_2.fastq.gz

# 実行終了時間を記録
end_time=`date +%s`
# 実行時間を計算し、表示する
time=$((end_time - start_time)) 
echo "$time"
#result :8242
```
実行時間は8242秒でした。
やっぱりAsperaの方が速いんですね。