Skip to content

从ENA下载测序数据

wangshun1121 edited this page Nov 18, 2020 · 1 revision

下载脚本为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

  • 最简单的下载方式,直接指定Reads的SRR Accession ID,即可直接下载数据,例如:
perl FTPena.pl -i SRR4254607

直接将SRR4254607的fastq的序列下载在当前目录。SRR4254607_1.fastq.gzSRR4254607_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

该命令运行完成,得到的文件与参见上一节的介绍。

其他有用的下载参数

-data指定数据类型

FTPena.pl下载的数据,默认类型为fastq.gz,且会自动适配单端和双端数据。而有时我们会需要其他类型的测序数据,此时通过-d/-data指定测序数据类型。

-data可接受的值目前仅有下面三种:fastq(默认)、sracram。若指定的数据类型,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中的说明,使用方法请自行搜索。

-ftp利用wget下载数据

若Aspera未能成功安装,或者命令行添加了-ftp时,程序会调用wget通过ftp来下载数据:

perl FTPena.pl -ftp -p PRJNA343403

多数情况下,Aspera相对ftp还是要快。但提供ftp方法,算保留一个下载的备选方案。

其他参数

  • -outdir:指定下载数据的输出文件夹,默认为当前路径;
  • -t|-threads:下载多个数据时,指定同时下载多少数据,默认为4。

下载工具使用小技巧

SAME CODE RUN TWICE!JUST DO RUN TWICE!!

FTPena.pl工具运行时,有下面的特点:

  • 若目标目录中有和待下载数据同名的文件,程序会自动校验其md5
  • md5校验成功的文件,不会重复下载;若md5不一致,则数据会被删除并重新下载
  • 若数据下载未结束,则程序会继续传输文件(使用Aspera)
  • 若数据传输中断,则程序会自动尝试重新连接,但最多5次。失败5次之后确认数据下载失败

所以,当发生下面的情况时,就在相同的路径下,把相同的代码反复输入第二遍即可:

  • 数据较多,中途断网了导致下载未完成
  • 数据下载完毕,想确定一下有没有未下载或传输未完成的数据

DRY RUN

大批数据下载前,往往需要对数据进行调研,从中选择感兴趣的数据。此时,在工具中添加-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 {}