跳转至

sra-tools

SRA-Tools (Sequence Read Archive Tools) 是一组用于处理美国国家生物技术信息中心 (NCBI) 的序列读取档案(Sequence Read Archive, SRA)数据的命令行工具。它包括了一系列实用程序,主要用于下载、转换和处理基因组测序数据。以下是一些常用的工具和功能:

  • fastq-dump :将SRA格式的文件转换为常见的FASTQ格式,用于基因组序列的进一步分析。
  • prefetch :用于从SRA数据库下载数据。
  • fasterq-dump :是 fastq-dump 的改进版本,速度更快,通常用于高效地将SRA文件转换为FASTQ文件。
  • vdb-validate :用于验证下载的SRA数据是否完整、无损。 因此工欲善其事必先利其器,再次学习一下。

软件安装

micromamba create -n sra2fq_yhfu -c conda-forge -c bioconda parallel-fastq-dump 'sra-tools>=3.0.0'
micromamba activate sra2fq_yhfu

parallel-fastq-dump 测评

fastq-dump vs fasterq-dump vs parallel-fastq-dump,由于parallel-fastq-dump是fastq-dump的并行版本,故在此为考虑与fastq-dump的对比。

速度测试
#### 方案1 parallel-fastq-dump
# 32核 60M/S(gz)339s
# 64核 110M/S(gz)180s
# 128核 150M/S(gz)133s

cd /data03/idata/tmp/test_yhfu/t1
OUT_DIR="./"
START_TIME=$(date +%s)
parallel-fastq-dump -t 32  -O ./ --split-files --gzip -s /data03/idata/tmp/test_yhfu/data/ERR9577179/ERR9577179.sra
END_TIME=$(date +%s)
REAL_TIME=$((END_TIME - START_TIME))
echo "执行完成!总共耗时: $REAL_TIME 秒"
DIR_SIZE=$(du -sh $OUT_DIR | awk '{print $1}')
echo "输出目录 $OUT_DIR 的大小: $DIR_SIZE"
SIZE_MB=$(echo $DIR_SIZE | sed 's/[^0-9]*//g')  # 提取数字部分
OUTPUT_PER_SECOND=$(echo "scale=2; $SIZE_MB / $REAL_TIME" | bc)
echo "每秒输出数据量: $OUTPUT_PER_SECOND MB/秒"

#### 方案2 fasterq-dump + pigz
# 32核 52M/S(gz)166+220=386s
# 64核 71M/S(gz)159+122=281s

cd /data03/idata/tmp/test_yhfu/t1
OUT_DIR="./"
START_TIME=$(date +%s)
fasterq-dump --split-3 -e 64 -O ./ /data03/idata/tmp/test_yhfu/data/ERR9577179/ERR9577179.sra
END_TIME=$(date +%s)
REAL_TIME=$((END_TIME - START_TIME))
echo "执行完成!总共耗时: $REAL_TIME 秒"
DIR_SIZE=$(du -sh $OUT_DIR | awk '{print $1}')
echo "输出目录 $OUT_DIR 的大小: $DIR_SIZE"
SIZE_MB=$(echo $DIR_SIZE | sed 's/[^0-9]*//g')  # 提取数字部分
OUTPUT_PER_SECOND=$(echo "scale=2; $SIZE_MB / $REAL_TIME" | bc)
echo "每秒输出数据量: $OUTPUT_PER_SECOND MB/秒"

cd /data03/idata/tmp/test_yhfu/t1
OUT_DIR="./"
START_TIME=$(date +%s)
pigz -p 64 /data03/idata/tmp/test_yhfu/t1/ERR9577179_1.fastq
pigz -p 64 /data03/idata/tmp/test_yhfu/t1/ERR9577179_2.fastq
END_TIME=$(date +%s)
REAL_TIME=$((END_TIME - START_TIME))
echo "执行完成!总共耗时: $REAL_TIME 秒"
DIR_SIZE=$(du -sh $OUT_DIR | awk '{print $1}')
echo "输出目录 $OUT_DIR 的大小: $DIR_SIZE"
SIZE_MB=$(echo $DIR_SIZE | sed 's/[^0-9]*//g')  # 提取数字部分
OUTPUT_PER_SECOND=$(echo "scale=2; $SIZE_MB / $REAL_TIME" | bc)
echo "每秒输出数据量: $OUTPUT_PER_SECOND MB/秒"
测试结论

parallel-fastq-dump具有更高的效率和更低的IO占用率,单受CPU限制(当前每个节点64个核心,超线程后为128),可以考虑每个节点投递3个32核心的任务或者一个64核心的任务

本文阅读量  次
本站总访问量  次
Authors: Wind