-
Notifications
You must be signed in to change notification settings - Fork 0
从ENA下载测序数据
下载脚本为FTPena.pl
,直接输入这个脚本,显示下面的帮助信息:
Usage:
perl ~/Git/ASCPsra/FTPena.pl -i SRRXXXXXX -d sra
perl ~/Git/ASCPsra/FTPena.pl -l SraAccList.txt -o ./sequences -p 5 -t 8
perl ~/Git/ASCPsra/FTPena.pl -p PRJNAXXXXX
-i|-id <str> SRA accession ID
-l|-list <file> SRA ID list, all IDs should be in one column
-p|-prj <str> SRA project ID, such as PRJNAXXXXXX or PRJEBXXXXXX
-d|data <str> Download data type, can be fastq, sra or cram [fastq]
-ftp <!> Add -ftp, then use ftp rather than aspera to download data
If aspera was not installed, only ftp can choose, and this parameter will be ignored
-o|-outdir <dir> Output directory [working directory ~]
-t|threads <int> Threads number used for multi detasets downloading [48 at most, 4 default]
-dry <!> Typig -dry, then only download commandline will be printed.
-h|-help Show this message
- 最简单的下载方式,直接指定Reads的SRR Accession ID,即可直接下载数据,例如:
perl FTPena.pl -i SRR4254607
直接将SRR4254607的fastq的序列下载在当前目录。SRR4254607_1.fastq.gz
和SRR4254607_2.fastq.gz
两个序列文件,一个记录Reads详细信息的SRR4254607.tsv
,还有一个md5文件。下载结束,请使用下面的命令校验一下文件:
md5sum -c md5
- 给定PRJECT ID批量下载数据
通过-prj
参数给定PRJECT ID,可以自动搜索并直接下载该PPJECT下全部的序列,例如:
perl FTPena.pl -prj PRJNA343403
PRJNA343403中,一共包含2组测序数据,运行结束,下载文件夹中有如下文件:
.
├── md5
├── PRJNA343403.list
├── SRR4254607_1.fastq.gz
├── SRR4254607_2.fastq.gz
├── SRR4254607.tsv
├── SRR4254608_1.fastq.gz
├── SRR4254608_2.fastq.gz
└── SRR4254608.tsv
其中,PRJNA343403.list
只有一列,即该PRJECT中测序数据的SRR ACCESION ID,4个fastq.gz
文件为测序数据,md5
文件中记录了测序数据的md5码,两个tsv
文件记录了每一个测序数据的信息。数据下载结束,直接采用下面的命令,将全部测序数据的详细信息直接方便地汇总:
cat *.tsv|sort -r|uniq > PRJNA343403.summary.txt
使用Excel打开PRJNA343403.summary.txt
即可方便查看测序数据的基本信息汇总表。
- 给定SRR ACCESSION ID列表批量下载测序数据
将待下载的测序数据的SRR ID放在1列,保存为列表,通过-l
参数输入程序,即可批量下载测序数据。
以前一节下载得到的PRJNA343403.list
为例子,该文件只有两个SRR ID:
SRR4254607
SRR4254608
通过下面的命令批量下载测序数据:
perl FTPena.pl -list PRJNA343403.list
该命令运行完成,得到的文件与参见上一节的介绍。
FTPena.pl
下载的数据,默认类型为fastq.gz
,且会自动适配单端和双端数据。而有时我们会需要其他类型的测序数据,此时通过-d
/-data
指定测序数据类型。
-data
可接受的值目前仅有下面三种:fastq
(默认)、sra
和cram
。若指定的数据类型,ENA上不存在,则对应数据下载失败,程序报错,但直到所有数据都尝试下载完成程序才会停止运行。
例如运行下面的示例代码:
perl FTPena.pl -p PRJNA343403 -d sra
运行结束得到文件如下:
.
├── md5
├── PRJNA343403.list
├── SRR4254607
├── SRR4254607.tsv
├── SRR4254608
└── SRR4254608.tsv
此时没成对的fastq.gz
文件了,只多了两个无后缀的文件:SRR4254607和SRR4254608。这俩文件为SRA格式,可通过fastq-dump将它们转换为fastq格式。本脚本中没有集成fastq-dump
,安装方法可以参考ASCPsra中的说明,使用方法请自行搜索。
若Aspera未能成功安装,或者命令行添加了-ftp
时,程序会调用wget
通过ftp来下载数据:
perl FTPena.pl -ftp -p PRJNA343403
多数情况下,Aspera相对ftp还是要快。但提供ftp方法,算保留一个下载的备选方案。
-
-outdir
:指定下载数据的输出文件夹,默认为当前路径; -
-t|-threads
:下载多个数据时,指定同时下载多少数据,默认为4。
FTPena.pl
工具运行时,有下面的特点:
- 若目标目录中有和待下载数据同名的文件,程序会自动校验其md5
- md5校验成功的文件,不会重复下载;若md5不一致,则数据会被删除并重新下载
- 若数据下载未结束,则程序会继续传输文件(使用Aspera)
- 若数据传输中断,则程序会自动尝试重新连接,但最多5次。失败5次之后确认数据下载失败
所以,当发生下面的情况时,就在相同的路径下,把相同的代码反复输入第二遍即可:
- 数据较多,中途断网了导致下载未完成
- 数据下载完毕,想确定一下有没有未下载或传输未完成的数据
大批数据下载前,往往需要对数据进行调研,从中选择感兴趣的数据。此时,在工具中添加-dry
标签,数据不会直接被下载,而将下载代码直接打印到标准输出,而测序数据的基本信息和md5码仍然会在输出文件夹出现。例如下面的代码:
perl FTPena.pl -dry -p PRJNA343403 > Download.sh
除了测序数据没有,其他的文件都会出现。还是通过一样的命令,将测序数据信息为一张表格,进一步挑选出待下载的数据:
cat *.tsv|sort -r|uniq > PRJNA343403.summary.txt
而Download.sh
中,会出现下载全部测序数据的代码,这些代码可以直接运行:
bash Download.sh
或者通过xargs
实现多文件同时下载,例如同时下载4个文件:
cat Download.sh|xargs -P 4 -i bash -c {}