2014年5月16日金曜日

シーケンスデータの一括ダウンロード

論文を見るとGEOのaccsession番号が書かれているが複数のシーケンスデータが置かれている事がほとんどで、前回は一つだけをダウンロードする方法を書いた。深く解析しようと思って全てのシーケンスデータをダウンロードしたいが、一個ずつやってるとめんどくさいので。シェルスクリプトを記述する事でそれを解決する。
シーケンスデータは多くの場合連番でSRAにupされているが、SRRだとかSRXだとか色々番号があって対応関係を把握するのが先決。
例えば以下GSMの番号は連番。
一番上のリンクへ行くと
最下部にとあるのでftpへ行く(chromeで見た方がいい)
となっている。SRR824704にSRR824704.sraという目的のファイルが入っている。
同様にGMS1111729もみてみると
となっていて、SRR824727にSRR824727.sraという目的のファイルが入っている。
なので今回はSRX263794-263817とSRR824704-824727がそれぞれ対応しているという事がわかる。シーケンスデータによっては全てのデータが連番ではないこともあるので注意が必要。
シェルスクリプトの作法はよくわからないのでググるヽ(゚∀゚)メ(゚∀゚)メ(゚∀゚)ノ
vimを使っているので、
vim SRA_download.sh
としてファイルを作る。
シェルスクリプト作る際は思った挙動するかわからないので、echoでおもっているようなスクリプトがかかれているか確認する。
#!/bin/sh
# 全てのSRX Number
srx_list=({263794..263817})
# 全てのSRA Accussion Number
sra_list=({824704..824727})
# ダウンロードする FTP サイトの共通部分までのパス
base_url=ftp://ftp-trace.ncbi.nlm.nih.gov/sra/sra-instant/reads/ByExp/sra/SRX%2FSRX263/
for i in {0..23}
do
        echo "wget ${base_url}/SRX${srx_list[i]}/SRR${sra_list[i]}/SRR${sra_list[i]}.sra"
        #sleep 10m
done
と記述して上書きする(esc :wq)
chmod u+x SRA_download.sh
としてから
./SRA_download.sh
とすると確認が出来るので出てきたURLからftp://以下から.sraの一つ上流までをコピーしてブラウザーで確認する。chromeでftp://ftp-trace.ncbi.nlm.nih.gov/sra/sra-instant/reads/ByExp/sra/SRX%2FSRX263/SRX263809/SRR824719とすれば、先ほどのリンクにたどれる。
これで一応問題ないので
#!/bin/sh
# 全てのSRX Number
srx_list=({263794..263817})
# 全てのSRA Accussion Number
sra_list=({824704..824727})
# ダウンロードする FTP サイトの共通部分までのパス
base_url=ftp://ftp-trace.ncbi.nlm.nih.gov/sra/sra-instant/reads/ByExp/sra/SRX%2FSRX263/
for i in {0..23}
do
       wget ${base_url}/SRX${srx_list[i]}/SRR${sra_list[i]}/SRR${sra_list[i]}.sra
       sleep 10m
done
とecho" "と#を取り払って、上書きする(esc :wq)
./SRA_download.sh
でダウンロードが始まる。

説明しとくと
#!/bin/sh---シェルスクリプトのおまじない
# 全てのSRX Number
srx_list=({263794..263817})先に調べておいたSRXの番号のリスト
# 全てのSRA Accussion Number
sra_list=({824704..824727})先に調べておいたSRRの番号のリスト
# ダウンロードする FTP サイトの共通部分までのパス
base_url=ftp://ftp-trace.ncbi.nlm.nih.gov/sra/sra-instant/reads/ByExp/sra/SRX%2FSRX263/
#全データが24個あるので24回ループさせる。(1番目は0らしい。)
for i in {0..23}
#なんかやらせる時-do
do
#URL共通部分/SRX+番号(リストのi番目)/SRA+番号(リストのi番目)/SRA+番号(リストのi番目).sraってこと
${base_url}/SRX${srx_list[i]}/SRR${sra_list[i]}/SRR${sra_list[i]}.sra
#ftpって色々制限あったりするらしいのでダウンロード終わってから10分待ってから次のダウンロード始める。
sleep 10m
#やらせるの終わったら-done
done


0 件のコメント:

コメントを投稿