每次在SRA上面下数据都要打命令,太烦了,于是自己写了个小shell脚本,能够快速地下载并解压SRA数据,方便使用。
主程序如下
#!/bin/sh
#调用prefetch下载SRA数据库的测序文件,并用pfastq-dump转化为fastq文件。
#以上依赖的两个软件:SRA Toolkit 和 pfastq-dump需要预先配置好。
#需要在当前目录的download_list.txt文件中把SRA编号,每个一行事先准备好,具体格式参考example.txt
#建议使用NCBI的SRA RUN SELECTOR直接导出。
read -p "请输入下载列表文件名:" downloadlist
read -p "请选择单端(SE),双端(PE)测序:" class
read -p "请输入要使用的线程数:" thread
if [ $class = "SE" ]; then
cat $downloadlist | while read line
do
echo $line
prefetch $line -o ./${line}.sra
pfastq-dump --gzip --threads $thread --outdir ./ ./${line}.sra
done
elif [ $class = "PE" ]; then
cat $downloadlist | while read line
do
echo $line
prefetch $line -o ./${line}.sra
pfastq-dump --gzip --split-3 --threads $thread --outdir ./ ./${line}.sra
done
else echo "错误的输入!"
fi
downloadlist示例
SRR8131605
SRR8131606
SRR8131607
SRR8131608
SRR8131609
SRR8131610
SRR8131611
SRR8131612
SRR8131613
SRR8131614
SRR8131615
SRR8131616
实际上只用pfastq-dump就可以直接把SRA一边下载一边解压成fastq文件,但是实测经常会报错,还是这样做稳一点,速度也很快的。