DCS Tools 用户手册

DCS Cloud大约 42 分钟

1. 介绍

1.1 描述

DCS Tools 是一款依托 CPU 加速技术的先进软件,在数据分析上旨在成为 BWA-MEM、GATK 以及大人群联合调用的理想替代方案,在存储上通过压缩Fastq.gz文件大小来减少存储成本。功能包含胚系突变(Germline)的全基因组(WGS)与全外显子(WES)测序数据分析,joint calling 群体变异检测工具,基于参考基因序列的Fastq文件压缩和解压缩工具。

1.2 优势和价值

1)一致且可靠的胚系变异检测工具

该工具在保证SOAPnuke、BWA和GATK各个模块算法主体逻辑不变的情况下,进行了优秀的并行化设计与重构,加速了计算和减少了不必要的I/O操作。在极大加速的基础上,还保证了结果与gatk体系的高度一致性。

工具亮点:

  • 与 Broad Institute 的 BWA-GATK 最佳实践工作流程采用相同的数学方法,但 FASTQ 到 VCF 的速度快 16倍,BAM 到 VCF 的速度快 42 倍(以核·时作为单位进行比较)

  • 无运行间差异,高覆盖区域无下采样

  • 基于 CPU 的系统上运行的纯软件解决方案,跨平台兼容X86与云环境

  • 阿里云 ecs.i4g.8xlarge

    • 30x 基因组,NA12878 (HG001),1.82 小时内(58 个核·时)

2)Joint calling,用于群体测序项目的 gVCF 合并和joint calling工具

支持百万样本的分析,是一种基于Spark的可扩展joint calling软件,已在105,000 个全基因组上应用。

工具亮点

快速:6天完成5.2万人全基因组变异联合检测(joint calling)

准确:GIAB标准品SNP F1值99.55%,INDEL F1值98.95%

规模大:支持百万级别样本的joint calling

易于使用:自动分配任务,无需用户设计并行策略。

3)FASTQ格式数据的压缩工具

沿袭了多数工具的逻辑,将FASTQ中的ID、序列、质量值三部分独立进行压缩,其中序列的压缩除了熵编码,还提供了基于HASH或BWT的序列比对模块,以提高比对成功的序列的压缩率。此外,还使用了数据块的设计,以达到压缩率与性能的平衡,而封装格式的引入,使得数据安全、部分数据独立访问、向下兼容都能轻松完成。

专门优化

一对Pair-end文件可以压缩成单个文件,且压缩率高于单独压缩;

参考基因组序列可以大于4G;

可以对质量值采用有损压缩。

方便灵活

支持Linux、Mac OSX平台,可灵活设置并发线程数,解压无license限制。

生态完整

与DCS Tools中的工具无缝对接,实现边解边算。

数据由基本单元封装,方便进行格式扩展,并保证向下兼容。

1.3 平台要求

DCS Tools 设计为运行在Linux系统的可执行程序。推荐的Linux发行版为:Centos 7, Debian 8, Ubuntu 14.04及以上的版本。

DCS Tools 对于系统硬件要求如下:cpu 至少有8核,mem至少有128G,并且建议使用读写速度更快的SSD硬盘。

1.4 软件部署

本软件运行时会进行License验证,以确保合法性,因此需要一台可以联网(用来与验证服务端通信)的机器,其它机器(往往是计算节点)不需要联网,保证能与联网机器通信即可。当然,单台联网机器也可以部署本软件。认证逻辑可参考本小节末示意图。除了软件包,还需要一份License文件,该文件可以通过云平台(cloud@stomics.tech)或者销售经理获取。

1.4.1 获取联网节点出口IP地址

请保证联网节点不经过额外的HTTP_PROXY或HTTPS_PROXY就能访问cloud.stomics.tech

在申请 License 文件时要求填写联网节点出口 IP 地址,请通过如下命令获取联网节点的出口 IP 地址:

curl --noproxy "*" -X POST https://cloud.stomics.tech/api/licensor/licenses/anon/echo

返回结果中 data 指向所需的 IP 地址:

{"code":0,"msg":"Success","data":"172.19.29.215"}

如果您遇到了如下错误:

curl: (35) error:0A000152:SSL routines::unsafe legacy renegotiation disabled

请改用下面的命令行获取 IP 地址:

echo -e "openssl_conf = openssl_init\n[openssl_init]\nssl_conf = ssl_sect\n[ssl_sect]\nsystem_default = system_default_sect\n[system_default_sect]\nOptions = UnsafeLegacyRenegotiation" | OPENSSL_CONF=/dev/stdin curl --noproxy "*" -X POST https://cloud.stomics.tech/api/licensor/licenses/anon/echo

1.4.2 获取License文件

向云平台(cloud@stomics.tech)申请或者通过销售经理获取。

1.4.3 获取软件包

从云平台获取程序压缩包并解压,目录 libexec 下包含 License 代理程序(licproxy)。

1.4.4 在联网节点部署 License Proxy

请先在联网节点上使用如下命令在前台运行 License 代理程序:

./libexec/licproxy --license /path/to/XXXXXXXXX.lic

请用您的 License 文件路径代替 /path/to/XXXXXXXXX.lic,该 License 代理程序默认监听 0.0.0.0:8909,如果该地址已被其它程序使用中,您将看到类似警告:

[2025-03-27T06:34:46Z WARN  pingora_core::listeners::l4] 0.0.0.0:8909 is in use, will try again

程序将自动重试若干次直到返回,建议您手动 Ctrl + C 停止它后通过添加参数设置其它地址:

./libexec/licproxy --license /path/to/XXXXXXXXX.lic --bind 0.0.0.0:8910

若看到以下输出而没有其它异常,则代表启动成功。

[2025-03-27T07:15:52Z INFO  pingora_core::server] Bootstrap starting
[2025-03-27T07:15:52Z INFO  pingora_core::server] Bootstrap done
[2025-03-27T07:15:52Z INFO  pingora_core::server] Server starting

在进行下一步之前,您可以先通过如下命令检测 License 代理程序和云平台之间的连接是否成功:

curl http://127.0.0.1:8909/api/licensor/licenses/anon/pool

预期看到类似以下输出,代表连接成功:

{"code":0,"msg":"Success"}

在前台运行测试正常后请?Ctrl?+?C?停止它,您可以通过添加选项-d在后台运行License代理程序:

./libexec/licproxy --license /path/to/XXXXXXXXX.lic -d

它将作为守护进程或常驻进程运行。

建议一个节点只需要一个 License 代理在后台运行,也支持同一名 Linux 用户在同一个节点的后台运行多个 License 代理,但不支持多名 Linux 用户在同一个节点的后台运行多个 License 代理,除非您亲自 kill 进程或删除文件 /tmp/pingora.pid

1.4.5 运行dcs工具

如前所述,在联网节点或者能跟联网节点通信的其它节点上运行dcs工具。如何使用本工具集分析WGS或者群体等数据,可以参照quick_start包里的示例脚本。

运行工具前,需要设置好PROXY_HOST环境变量。其值为联网机器的ip和端口,需保证在当前节点可以ping通该ip。如果计算节点和联网节点为同一台机器,ip可以设置为127.0.0.1。

测试计算节点与联网节点的网络

$DCS_HOME/bin/dcs lickit --query $PROXY_HOST

运行dcs工具示例:压缩一份fastq数据

export PROXY_HOST=<ip>:<port>
$DCS_HOME/bin/dcs SeqArc compress -i input.fastq.gz -o output.fastq
图1.1 DCS Tools license认证示意图
图1.1 DCS Tools license认证示意图

1.4.6 软件更新后的部署

拿到更新后的软件包后,除非特殊说明,一般不用重新部署license proxy(1.4.4),只需要解压新的软件包,将DCS_HOME设置为新的软件路径即可。

1.5 工具列表

场景工具(模块)名称功能
WGS/WES分析aligner质控、比对、排序和标记重复
bqsr碱基质量值矫正
variantCaller变异检测(类似GATK haplotypeCaller)
genotyperGVCF->VCF
report输出报告
群体基因组联合分析jointcaller联合变异检测,支持百万级样本
FASTQ数据压缩解压SeqArc高效无损FASTQ压缩工具
license查询等lickit查询可用线程数和测试网络连接
小工具extract-vcf简化vcf文件,缩小文件大小,减轻IO压力,主要针对bqsr和genotyper的knownSites(dbsnp等)输入
bam-stat统计比对信息
vcf-stat统计变异信息
tbi2lix将tbi索引文件简化为自定义的线性索引文件,用于jointcalling

2. 典型用法

2.1 WGS

WGS(Whole Genome Sequencing, 全基因组测序)是一种能够测定生物体全部基因组序列的技术。WGS分析流程一般包括数据质控、序列比对、标记重复、碱基质量值重校正、变异检测等步骤。DCS tools 遵循原始算法,对算法实现进行了性能优化,优化后的分析流程比BWA-GATK快16倍。

2.1.1 准备工作

WGS分析流程的输入文件如下:

  1. 序列比对工具需要的文件;
索引文件描述
species.fa参考基因组FASTA文件
species.fa.fai用于快速定位和随机访问FASTA文件的序列区域
species.dict索引作用,为后续处理流程提供参考序列的快速查找表
species.fa.*比对索引文件

通过aligner工具构建比对索引,索引文件放置在FASTA同级目录,比对索引构建命令是:

dcs aligner --threads <INT> --build-index <FASTA>
  1. FASTQ测序数据,支持gz格式;
  2. 单核苷酸多态性数据库(dbSNP)数据和已知变异位点文件,以VCF格式提供;

DCS tools 工具包提供的WGS分析流程主要包括以下步骤:

  1. 序列比对和标记重复:在序列进行比对之前会进行质控,将经过质控的序列比对到FASTA文件中记录的参考基因组上,比对结果在进行标记重复后写入BAM文件;
  2. 碱基质量值重校正:调整分配给序列每个碱基的质量分数,消除因测序方法引入的实验偏差;
  3. 变异检测:识别出测序数据相对参考基因组存在的变异位点,并为每个样本在这些位点计算基因型;

2.1.2 序列比对和标记重复

将序列比对到参考基因组上确定每条序列的位置,为进一步检测变异提供基础;标记重复消除PCR扩增产生的重复序列,降低假阳性提高变异检测准确性,这些步骤由软件alinger完成。而且aligner 还集成了数据质控功能,可以在序列比对之前对序列进行过滤和处理,从而降低错误率,避免后续分析受到噪音数据的干扰。

dcs aligner --threads             THREADNUM \
            --aln-index           INDEX \
            --fq1                 FASTQ1 \
            --fq2                 FASTQ2 \
            --read-group          RGROUP \
            --bam-out             BAMFILE \
            --fastq-qc-dir        QCDIR \
            --high-speed-storage  TEMPDIR

该命令需要以下输入:

  1. THREADNUM: 线程数量,建议该值不要超过CPU数量;
  2. INDEX: 参考基因组FASTA文件路径,在FASTA同级目录下存放比对软件构建的索引文件;
  3. FASTQ1: PE测序的FASTQ1文件路径;
  4. FASTQ2: PE 测试的FASTQ2文件路径;
  5. RGROUP: 格式是“@RG\tID:GROUP_NAME\tSM:SAMPLE_NAME\tPL:PLATFORM“, 其中GROUP_NAME 是read group标识符,SAMPLE_NAME表示样品名称,PLATFORM表示测序平台;
  6. BAMFILE: 经过标记重复后的BMA文件;
  7. QCDIR: 质控报告的输出位置;
  8. TEMPDIR: 临时文件的存储路径,若该路径处于高速存储设备,则有利于提升软件性能;

2.1.3 碱基质量值矫正

由于存在系统误差,序列碱基质量值并不总是完全准确,需要对序列的碱基质量值重校正。该步骤可以纠正系统偏差生成更精确的质量分数,提高变异检测准确性,减少假阳性和假阴性。统一质量评估标准符合GATK推荐的最佳实践,该步骤由软件bqsr完成。

dcs bqsr --threads          THREADNUM \
         --in-bam           BAMFILE \
         --reference        FASTA \
         --known-sites      KNOWN_SITES \
         --recal-table      RECAL_TABLE

该命令需要以下输入:

  1. THREADNUM: 线程数量,建议该值不要超过CPU核数;
  2. BAMFILE: 输入文件,序列比对和标记重复后生成的BAM文件;
  3. FASTA: 参考基因组FASTA文件路径,确保使用参考基因组和序列比对阶段使用的相同;
  4. KNOWN_SITES: 单核苷酸多态性数据库数据和已知变异位点文件;
  5. RECAL_TABLE: 输出文件,保存用来矫正碱基质量值的信息

2.1.4 变异检测

检测SNP和INDEL变异,生成gvcf文件,同时生成bam的统计信息,统计文件与GVCF同目录,名字为bamStat.txt。该步骤由软件variantcaller完成

dcs variantCaller -I INPUT_BAM \
                  -O OUTPUT_GVCF \
                  -R REFERENCE \
                  --recal-table RECAL_TABLE
                  -t THREADUM

该命令需要以下输入:

  1. INPUT_BAM:2.1.2输出的BAM文件(排序标记重复后)。
  2. OUTPUT_GVCF:输出gvcf文件。
  3. REFERENCE:参考基因组FASTA文件。
  4. RECAL_TABLE:输入文件,包含矫正碱基质量值所需要的信息,由2.1.3步骤生成。
  5. THREADNUM:线程数量,建议该值不要超过CPU核数。

对于单个样本,如果仅仅需要获取包含变异记录的vcf文件,可以使用genotyper软件。

dcs genotyper -I INPUT_GVCF \
              -O OUTPUT_VCF \
              -s QUAL \
              -t THREDNUM

该命令需要以下输入:

  1. INPUT_GVCF:来自于variantcaller的GVCF文件。
  2. OUTPUT_VCF:输出VCF文件。
  3. QUAL:变异质量值阈值,大质量值大于或等于QUAL的记录将被输出。
  4. THREADNUM:线程数量,建议该值不要超过CPU核数。

2.1.5 报告生成

可以根据每个样本的统计文件进行整合,生成可视化HTML报告文件

dcs report --sample SAMPLE_NAME \
           --filter QCDIR \
           --bam_stat BAMStat \
           --vcf_stat VCFStat \
           --output OUTPUT_DIR

该命令需要以下输入:

  1. SAMPLE_NAME:样本命名。
  2. QCDIR:aligner生成的质控统计报告文件夹。
  3. BAMStat:variantCaller结果目录下的bamStat.txt。
  4. VCFStat:vcf统计结果,默认在工作目录下的vcfStat.txt。
  5. OUTPUT_DIR: 报告输出目录。

2.2 WES

与WGS步骤基本相同,仅在variantCaller步骤有区别,该步骤需要增加一个区间参数(-L)

dcs variantCaller -I INPUT_BAM \
              -O OUTPUT_GVCF \
              -R REFERENCE \
              --recal-table RECAL_TABLE
              -L INTERVAL_FILE
              -t THREADUM

INTERVAL_FILE:记录WES区间的bed文件,按照惯例其中每行格式如下

chr<tab>start<tab>end

其中start和end位置是0-based表示,属于左闭右开的区间。

2.3 Joint Calling

Joint Calling是一种检测群体变异的方法,这里特指以多个gvcf文件为输入,合并多个样本的变异并重新计算样本基因型的过程。DPGT是一个分布式的spark程序,可以高效完成大规模样本的Joint Calling工作。dcs jointcaller是DPGT工具的一个包装器,用于运行单机模式的DPGT。

# 设置JAVA_HOME为jdk8
export JAVA_HOME=/path_to/jdk8
# 将spark bin加入到PATH,用于调用spark-submit
export PATH=/path_to/spark/bin/:$PATH
dcs jointcaller \
    -i GVCF_LIST \
    -r REFERENCE \
    -o OUTDIR \
    -j JOBS \
    --memory MEMORY \
    -l REGION

DPGT依赖java8,请设置JAVA_HOME=/path_to/jdk8。spark推荐2.4.5及以上的版本,spark 2.4.5下载路径:https://archive.apache.org/dist/spark/spark-2.4.5/spark-2.4.5-bin-hadoop2.6.tgzopen in new window

该命令需要如下输入:

GVCF_LIST:输入的gvcf列表,是一个文本文件,每行一个gvcf路径。注意gvcf需要有匹配的tbi索引文件,程序默认通过gvcf路径+.tbi查找gvcf相匹配的tbi索引文件。

REFERENCE:参考基因组fasta文件路径,注意这个fasta文件需要与生成gvcf是使用的fasta文件一致。程序同时需要与fasta文件匹配的.dict和.fai文件,例如fasta文件名是hg38.fasta,那么程序也需要读取hg38.dict, hg38.fasta.fai。

OUTDIR:输出文件夹,结果vcf路径是OUTDIR/result.*.vcf.gz。

JOBS:并行的任务数目,使用的线程数目是JOBS个,JOBS是一个整型值,范围是1到机器的线程数目。

MEMORY:java最大堆内存大小,内存的单位是"g"或"m"。内存大小和JOBS值和样本量存在关联,对于1000样本,推荐每个job分配2g内存,对于2000-5000样本,推荐每个job分配4g内存,对于5000-100000样本,推荐每个job分配6g内存,对于100000-500000样本,推荐每个job分配8g内存。

REGION:目标区域。支持输入字符串和一个bed路径,区域字符串格式与bcftools定义的格式一致,例如:"chr20:1000-2000", "chr20:1000-", "chr20",如果需要指定多个区域,请指定多个-l参数,例如指定处理chr1和chr2:1000-2000可以这样做:-l chr1 -l chr2:1000-2000

2.4 Fastq压缩

SeqArc 可以执行有参考序列的压缩和解压,也可以执行无参考序列的压缩和解压。一般在有参情况下,整体压缩率会有较大提升;在无参情况下,压缩、解压速度会比较快。

文件描述
*.fa使用的参考序列文件
*.fa.mini_28_10根据参考序列生成的短读长比对索引文件
*.fa.similar_26_23根据参考序列生成的长读长比对索引文件
*.dmp建立物种识别索引的输入文件
*.cdb根据参考序列生成的物种识别库索引文件
*.arc压缩生成的结果文件

压缩时,输入的fastq文件支持普通文本文件,gzip文件,mgz文件,管道输入等。

解压时,输出的是文本文件。如果不指定输出路径,会输出到标准输出。如果压缩输入的是mgz文件,在解压输出时,设置参数--rawtype 可以输出mgzip文件。

2.4.1 创建参考序列索引文件

  1. 直接创建参考序列的索引文件
dcs SeqArc index -r REF -o  OUTDIR 
  1. 或者创建物种识别库索引和每个物种的索引文件,需要执行两步
# i.创建物种识别库索引,会在REFDIR生成clsf.cdb,clsf_del.cdb,clsf_opt.cdb,clsf_tax.cdb
dcs SeqArc index -K REFDIR -H CNT


# ii.为每个物种创建对应的比对索引
dcs SeqArc index -r REF -o REFDIR

上述命令需要输入下述参数:

  1. REF : 输入ref的路径
  2. REFDIR:包含多物种参考序列的目录
  3. OUTDIR :输出的目录路径
  4. CNT:minimizer的命中计数

2.4.2 使用压缩命令进行压缩

  1. 用户如果知道fastq的物种,可以使用【-r】参数直接选择对应物种的参考序列进行压缩:
dcs SeqArc compress -r REF \
                    -i FASTQ \
                    -o ARC \
                    -t THREADNUM
  1. 如果用户不知道具体物种,可以使用物种识别库进行有参压缩,程序会利用物种识别库分析输入数据的物种,然后选用对应的索引文件进行有参压缩
dcs SeqArc compress  -K REFDIR \
                     -i FASTQ \
                     -o ARC \
                     -t THREADNUM
  1. 如果用户没有参考序列,也可以进行无参压缩
dcs SeqArc compress  -i FASTQ \
                     -o ARC \
                     -t THREADNUM
  1. 用户可以对某个目录进行打包
dcs SeqArc compress -K REFDIR \
                    -a FASTQDIR \
                    -o ARC \
                    -t THREADNUM

该命令需要输入下述参数:

  1. REF:输入的参考序列路径
  2. REFDIR:包含多物种参考序列的目录
  3. FASTQ:输入的fastq文件路径
  4. ARC:输出的压缩文件路径
  5. THREADNUM:设置的线程数

2.4.3 使用解压命令进行解压

  1. 用户如果知道压缩使用的具体参考序列,可以使用【-r】参数直接选择对应物种的参考序列进行压缩
dcs SeqArc decompress  -r REF \
                       -i ARC \
                       -o FASTQ \
                       -t THREADNUM
  1. 用户如果使用物种识别库进行的压缩,解压时需要指定物种识别库路径
dcs SeqArc decompress  -r REFDIR \
                       -i ARC \
                       -o FASTQ \
                       -t THREADNUM
  1. 用户如果是无参压缩,解压也是无参解压
dcs SeqArc decompress  -i ARC \
                       -o FASTQ \
                       -t THREADNUM

该命令需要输入下述参数:

  1. REF:输入的参考序列路径
  2. REFDIR:包含多物种参考序列的目录
  3. FASTQ:输出的fastq文件路径
  4. ARC:输入的压缩文件路径
  5. THREADNUM:设置的线程数

2.4.4 解压工具进行解压

如果客户没有购买DCS Tools,但需要解压缩arc格式的文件,可以用独立的免费解压工具对数据进行解压缩,解压工具软件包(Seqarc_decompress)向销售获取。

  1. 用户如果知道压缩使用的具体参考序列,可以使用【-r】参数直接选择对应物种的参考序列进行压缩
Seqarc_decompress      -r REF \
                       -i ARC \
                       -o FASTQ \
                       -t THREADNUM
  1. 用户如果使用物种识别库进行的压缩,解压时需要指定物种识别库路径
Seqarc_decompress      -r REFDIR \
                       -i ARC \
                       -o FASTQ \
                       -t THREADNUM
  1. 用户如果是无参压缩,解压也是无参解压
Seqarc_decompress      -i ARC \
                       -o FASTQ \
                       -t THREADNUM

参数介绍:

  1. REF: 输入的参考序列路径

  2. REFDIR :包含多物种参考序列的目录

  3. FASTQ:输出的fastq文件路径

  4. ARC:输入的压缩文件路径

  5. THREADNUM: 设置的线程数

3. 工具参数详细说明

3.1 aligner

aligner支持的命令行参数如下:

  • --threads: 线程数量,建议不超过CPU核数
  • --fq1: 输入数据fastq1; 若是多文件,支持逗号分割,支持文件列表;
  • --fq2:输入数据fastq1; 若是多文件,支持逗号分割,支持文件列表;
  • --seqarc-ref:SeqArc格式文件的解压需要的索引文件;
  • --read-group: 格式是“@RG\tID:GROUP_NAME\tSM:SAMPLE_NAME\tPL:PLATFORM“, 其中GROUP_NAME 是read group标识符,SAMPLE_NAME表示样品名称,PLATFORM表示测序平台;
  • --build-index: 构建比对工具需要的索引文件;
  • --aln-index:序列比对需要的FASTA路径,注意配套的索引文件和FASTA处于相同目录;
  • --mark-split-hits-secondary:将较短的拆分命中标记为次要
  • --use-soft-clipping-for-sup-align:使用软裁剪进行补充比对
  • --no-markdup:不进行标记重复;
  • --bam-out:输出BAM文件
  • --high-speed-storage:临时文件的存储路径,若该路径处于高速存储设备,则有利于提升软件性能;
  • --fastq-qc-dir: FASTQ 质控报告输出目录;
  • --no-filter:不过滤FASTQ数据
  • --output-clean-fq:输出clean reads
  • --qualified-quality-threshold: 合格碱基质量阈值(默认是12)
  • --low-quality-ratio: 低质量值碱基比例阈值(默认是0.5)
  • --mean-qual: 平均质量值阈值
  • --quality-offset: 质量值偏移,典型值为33、64。若设置为0,则该值由程序推断(默认值:33)
  • --adapter1:read1的接头序列,全大写
  • --adapter2:read2的接头序列,全大写
  • --adapter-max-mismatch:adapter查找时最大允许碱基错配数量(默认值是2)
  • --adapter-match-ratio:adapter的最短匹配长度比例(默认是0.5)
  • --trim-adapter:从reads序列中截去adapter, 而不是直接丢弃reads;
  • --min-read-len:最小reads长度阈值(默认是30)
  • --n-base-ratio:N碱基比例阈值(默认是0.1)
  • --trim-ends: 截去reads两端一定数量的碱基,格式是逗号分隔的整数;

3.2 bqsr

bqsr支持的命令行选项如下:

  • --threads: 线程数量,建议不超过CPU核数;
  • --in-bam: 经过标记重复的BAM文件;
  • --out-bam: 碱基质量值校正后生成BAM存放的路径,如果不加该参数,将会只生成recal table;
  • --reference: 参考基因组FASTA文件,该文件和序列比对阶段使用的参考基因组相同;
  • --recal-table: 输出文件,保存用来矫正碱基质量值的信息
  • --known-sites: 单核苷酸多态性数据库数据和已知变异位点文件,支持文本和gz压缩格式;
  • --interval: BED文件;
  • --interval-padding: BED区间两边填充碱基个数;

3.3 variantCaller

variantCaller的详细参数说明如下:

  • -I, --input <file1> <file2> ...:输入bam文件路径,可以接受多个bam路径,以空格分割。
  • -O, --output <file>:输出vcf/gvcf BGZF文件,程序自动创建相应的索引文件。
  • -R, --reference <file>:参考基因组fasta文件路径。
  • --recal-table <file>: 输入文件,用来矫正碱基质量值
  • -H, --help:打印帮助信息。
  • --version:打印版本号。
  • -L, --interval <file>:目标区间bed文件路径。
  • -P, --interval-padding <int>: 区间向两侧扩展的大小,必须是非负整数。(默认值:0)
  • -Q, --base-quality-score-threshold <int>:碱基质量值阈值,质量值低于该阈值时将会被置为最小值6。(默认值:18)
  • -D, --max-reads-depth <int>:每个比对起始位置保留的最大reads数目。reads数目超过该阈值时将进行下采样。(默认值:50)
  • -G, --gvcf-gq-bands <int1> <int2> ...:参考置信模型(Reference confidence model)GQ分组, 输入空格分隔的多个int。(默认值:[1,2,3,...,59,60,70,80,90,99])
  • -t, --threads <int>:程序使用的线程数目,范围是[1,128]。(默认值:30)
  • --pcr-indel-model <str>: PCR indel模型,参数范围:{NONE, HOSTILE, CONSERVATIVE, AGGRESSIVE}。(默认值:CONSERVATIVE)
  • --emit-ref-confidence <str>:运行参考置信打分模型,参数范围:{NONE, BP_RESOLUTION, GVCF},NONE:不运行参考置信打分模型;BP_RESOLUTION:运行参考置信打分模型,每个位点都输出一个变异记录;GVCF:运行参考置信打分模型,按照-G参数对参考置信位点(ALT=<NON\_REF>)按照GQ值进行分组输出。(默认值:NONE)
  • --compression-level <int>:输出vcf/gvcf BGZF文件压缩等级,范围是[0,9]。(默认值:6)

3.4 genotyper

genotyper的功能是处理单个样本的gvcf文件,输出仅仅包含变异记录的vcf文件,如果需要对处理多个gvcf文件并进行联合变异检测(joint calling)请使用高性能的DPGT软件。genotyper的详细参数说明如下:

  • -I, --input <file>: 输入gvcf文件路径。
  • -O, --output <file>:输出包含基因型的vcf BGZF文件,程序自动创建相应的索引文件。
  • -s, --stand-call-conf <float>: 变异质量值阈值,质量值大于或等于该值的变异将被输出。(默认值10.0)
  • -D, --dbsnp <file>: dbsnp文件
  • -t, --threads <int>:程序使用的线程数目。(默认值6)
  • --version:打印版本号。
  • -h, --help:打印帮助信息。

3.5 jointcaller (DPGT)

jointcaller是DPGT工具的一个包装器,用于便捷地运行单机模式DPGT。DPGT是一个分布式Joint Calling工具,它的详细参数说明如下:

  • -i,--input <FILE>:输入gvcf文件列表,是一个文本文件,每行一个gvcf路径。.
  • --indices <FILE>:可选参数,程序默认通过在gvcf路径末尾加.tbi获取索引文件路径,通过该参数可以指定索引文件路径,该参数需要输入一个文本文件,每行一个索引路径,索引路径的顺序需要与gvcf路径的顺序匹配。.
  • -use-lix <Boolean>:使用lix索引格式。lix文件是DPGT实现的一种简化索引文件,可以通过tbi2lix程序将tbi索引转换成lix索引,lix索引的大小仅仅是tbi索引的约1/80。可选参数:true, false(默认值:false)
  • --header <FILE>:可选参数,使用一个预先计算的vcf头文件,避免重复计算。
  • -o,--output <DIR>:输出文件夹。
  • -r,--reference <FILE>:参考基因组fasta文件。
  • -l,--target-regions <STRING>:目标区域字符串或bed文件,默认处理全基因组。
  • -j,--jobs <INT>:并行任务数目 (默认值:10)
  • -n,--num-combine-partitions <INT>:合并变异阶段的分区数目,默认值是样本数目的平方根,向下取整。(默认值:-1)
  • -w,--window <INT>:每个合并-基因型计算过程处理的区域大小,(默认值:300M)
  • -d,--delete <Boolean>:是否删除临时文件。可选参数: true, false,(默认值:true)
  • -s,--stand-call-conf <FLOAT>:质量值阈值,变异记录的质量值大于或等于该值时将被输出,(默认值:30.0)
  • --dbsnp <FILE>:dbsnp vcf文件路径,用于注释dbsnp ID。
  • --use-old-qual-calculator <Boolean>:是否使用旧质量值计算器,设为true时使用旧质量值计算器,旧质量值计算器的结果与GATK v4.1.0设置--use-old-qual-calculator true --use-new-qual-calculator false结果匹配,设为false时使用新质量值计算器,新质量值计算器的结果与GATK v4.1.1后的版本结果匹配,可选参数: true, false,(默认值:true)
  • --heterozygosity <FLOAT>:杂合SNP变异的先验概率,(默认值:0.001)
  • --indel-heterozygosity <FLOAT>:杂合INDEL变异的先验概率,(默认值:1.25E-4)
  • --heterozygosity-stdev <FLOAT>:SNP和INDEL变异先验概率的标准差, (默认值:0.01)
  • --max-alternate-alleles <INT>:最大等位基因数目,等位基因数目超过该值的变异,程序仅保留可能性最大的该值个等位基因,(默认值:6)
  • --ploidy <INT>:倍性, (默认值:2)
  • -h,--help:打印帮助信息并退出。
  • -V,--version:打印版本号并退出。

3.6 SeqArc

3.6.1 创建索引功能, 子命令【index】

创建索引参数如下:

  • -h, --help :获取创建索引参数使用帮助信息
  • -r, --ref <file> : 设置输入的参考序列文件(fasta)路径
  • -K, --clsdb <dir> : 设置输入的多个物种的参考序列文件所在的目录,目录下面需要存在文names.dmp

和nodes.dmp, 这两个文件可以从http://ftp.ncbi.nih.gov/pub/taxonomy/taxdump.tar.gzopen in new window 下载 .

  • -H, --hitlimit <int> : 设置在分类法上minimizer的命中计数,默认是【2】
  • -t, --thread <int> : 设置线程数,默认是【8】
  • -o, --output <dir>: 设置输出目录,用于存放生成的参考序列文件对应的索引文件
  • --aligntype <int> : 设置生成索引文件的比对方式,默认是【2】 【1--hash 2--minimizer 3-- longseq】

用户如果知道fastq的物种,可以使用【-r】参数直接选择对应物种的参考序列生成对应的索引文件,使用【-o】参数保存生成的索引文件,然后使用这个索引文件进行压缩解压。

如果用户不知道fastq的物种,可以使用【-K】参数对目录下所有的参考序列创建一个物种识别库索引。然后再对每一个参考序列使用【-r】参数创建对应的索引文件,此时【-o】的目录需要和【-K】的输入目录保持一致。

3.6.2 压缩功能, 子命令【compress】

压缩参数如下:

  • -h, --help : 获取压缩参数的使用帮助说明
  • -r, --ref <file>: 设置输入的参考序列路径,该路径下需要存在对应生成的索引文件
  • -K, --clsdb <dir>:设置输入的多个物种的参考序列文件所在的目录,该目录下需要存在生成的物种识别库文件,和各个物种对应的索引文件
  • -H, --hitlimit<int>: 设置在分类法上最小化器的命中计数,默认是【2】。保持和创建参数一致
  • -J, --clsmin <float>:设置物种识别时,判断物种的最小命中率,默认是【0.6】
  • -L, --clsnum <int> :设置物种识别时,需要从fastq读取多少条read用于判别种类,默认是【10000】
  • -t, --thread <int> : 设置线程数,默认是【8】
  • -f, --force : 设置输出文件是否强制覆盖已有的同名文件
  • -i, --input <file> : 设置输入的fastq文件
  • --pipein : 设置输入的是否是管道数据
  • -o, --output <file> :设置输出的文件路径,会自动在尾部添加 【.arc】后缀
  • --blocksz <int> :设置压缩时每个数据块大小,默认是【50】
  • --ccheck : 设置是否在压缩完成且数据落盘后,再执行一遍解压逻辑,保证数据的完整性
  • --calcmd5 :设置是否在压缩时计算输入文件的md5,并保存到压缩文件中
  • --aligntype <int> :设置选用的压缩比对方式,默认是【2】
  • -a, --archive <dir>: 设置输入的要打包压缩的目录,可对目录下的文件进行压缩后打包
  • --slevel <int> : 设置seq的压缩阶乘,默认是【10】
  • --verify <int> : 设置每个数据块的校验方式,默认是【1】【0:不校验 1:校验整个数据块 2:分别校验name,seq,qual】

3.6.3 解压功能, 子命令【decompress】

解压参数如下:

  • -h, --help : 获取解压参数的使用帮助说明
  • -r, --ref <dir/file> : 设置输入的具体参考序列路径,该路径下需要存在对应生成的索引文件。或者输入的物种识别库目录,该目录下需要存在各个物种的索引文件。
  • -t, --thread <int> : 设置线程数,默认是【8】
  • -f, --force : 设置输出文件是否强制覆盖已有的同名文件
  • -i, --input <file> : 设置输入的压缩结果文件路径
  • -o, --output <file> : 设置输出的解压文件路径
  • --rawtype : 设置解压输出文件和压缩原始文件格式保持一致,只对mgz格式文件生效
  • --dcheck : 设置解压完成且数据落盘后,再读取解压落盘数据块,并对块进行校验,保证解压的完整性
  • -x, --extract : 提取压缩包的一个或者多个文件,需要输入文件是【-a, --archive】生成的打包文件
  • -l, --list : 显示压缩包内的文件信息,需要输入文件是【-a, --archive】生成的打包文件
  • --show : 显示压缩文件的文本md5值,需要压缩时指定【--calcmd5】

3.7 license-proxy

可执行文件 license-proxy 参数如下:

  • -h, --help:打印帮助信息
  • --license <LICENSE\_PATH>:License 文件路径
  • --bind <BIND\_ADDR>:监听地址
  • -d, --daemon:是否在后台启动

3.8 report

对WGS/WES分析结果统计文件进行整理,画图,并生成HTML格式的报告。参数如下:

  • --sample : 样本名称
  • --filter : 过滤目录路径
  • --bam_stat : BAM统计文件路径
  • --vcf_stat : VCF统计文件路径
  • --output : 输出报告的目录
  • --is_se : (可选)如果使用单端测序,加上该标志。

3.9 lickit

用于检查网络的联通性,以及查询用户可用的线程数。

  • --ping <ip:port> : 检查网络是否联通
  • --query <ip:port> : 查询用户当前可用的线程数
  • --uplog <ip:port logpath [msg] > :用户主动上传问题日志

3.10 小工具(Utility tools)

3.10.1 extract-vcf

常规vcf文件每行含有8列字段,其中6,7,8列内容占用空间大但是程序不需要这些信息,为了减小IO压力,该工具只从vcf文件中提取前5列信息,后3列内容置为*号。主要参数如下:

  • --known-sites <file> : 输入vcf文件,支持文本和gz压缩格式;
  • --output-mini-vcf <file>: 输出vcf文件,若输出文件名带有gz, 则为压缩格式;

3.10.2 bam-stat

根据bam文件,统计比对信息,在WGS流程中,该功能已集成到variantCaller中,也可以单独运行。其参数为:

  • --bam <file> : 输入bam文件路径
  • --bed <file> : 目标区间,如果是WGS数据,可以指定非N区文件(如果不方便提供,使用variantCaller的bam统计结果即可)。如果是WES数据,则指定目标区域文件
  • --output <file> : 输出文件路径

3.10.3 vcf-stat

根据genotyper后的vcf文件,统计变异信息,包括snp数量等,其参数为:

  • --vcf <file> : 输入vcf文件路径,支持文本和gz格式

结果默认输出到标准输出,可以重定向到指定文件(参照4.1的step 5)。

3.10.4 tbi2lix

  • -i, --input FILE: 输入tbi索引文件
  • -o, --output FILE: 输出lix索引文件
  • -m, --min-shift INT: 设置lix线性索引的最小区间大小为2^INT (默认值14,对应区间大小16K)
  • -h, --help: 打印帮助信息并退出

4. 快速开始——使用示例脚本和数据

按照1.4部署好软件后,获取quick start数据包(从销售经理处获取),解压后修改示例脚本中的DCS_HOME和PROXY_HOST值,DCS_HOME为软件包解压后的路径,PROXY_HOST为联网节点的ip和1.4中部署时指定的端口(默认8909)。不同应用场景执行相应的示例脚本。

tar xzvf dcs-quick-start-xxxx.tar.gz
cd dcs-quick-start

4.1 WGS

参考脚本为quick_start_wgs.sh

#!/bin/bash

# This script provides a quick start guide for using the dcs tool to analyze whole-genome sequencing data.
# The script demonstrates how to build the index of the reference genome, align the reads, 
# recalibrate the base quality scores, call variants, and filter the variants.
# if you have any questions, please contact us at cloud@stomics.tech

# set the location of the dcs tool
export DCS_HOME=/path/to/dcs

if [ ! -d "$DCS_HOME" ]; then
    echo "--- Error: DCS_HOME directory does not exist: $DCS_HOME"
    exit 1
fi
if [ ! -r "$DCS_HOME" ]; then
    echo "--- Error: No read permission for DCS_HOME: $DCS_HOME"
    exit 1
fi

# Before using the dcs tool, you must obtain a license file and start the authentication proxy program 
# on a node that can connect to the internet.

# Get the local IP address, which is used for license application. 
# The output data field of the following command indicates the IP address.
# curl -X POST https://cloud.stomics.tech/api/licensor/licenses/anon/echo

# start the proxy program
# LICENSE=<path/to/license/file>
# $DCS_HOME/bin/dcs licproxy --license $LICENSE

# Set the following environment variables
export PROXY_HOST=127.0.0.1:8909

# check the status of the proxy program
$DCS_HOME/bin/dcs lickit --ping $PROXY_HOST

# query the available resources provided by the certification
$DCS_HOME/bin/dcs lickit --query $PROXY_HOST

# Get the directory where the script is located
SCRIPT_PATH=$(realpath "$0" 2>/dev/null || readlink -f "$0" 2>/dev/null || echo "$0")
SCRIPT_DIR=$(dirname "$SCRIPT_PATH")

# Set the following variables for the dcs tool
FQ1=$SCRIPT_DIR/data/fastq/simu.r1.fq.gz
FQ2=$SCRIPT_DIR/data/fastq/simu.r2.fq.gz
FA=$SCRIPT_DIR/data/ref/chr20.fa
KN1=$SCRIPT_DIR/data/known_sites/1000G_phase1.snps.high_confidence.hg38.chr20.vcf.gz
KN2=$SCRIPT_DIR/data/known_sites/dbsnp_151.hg38.chr20.vcf.gz
KN3=$SCRIPT_DIR/data/known_sites/hapmap_3.3.hg38.chr20.vcf.gz
KN4=$SCRIPT_DIR/data/known_sites/Mills_and_1000G_gold_standard.indels.hg38.chr20.vcf.gz

nthreads=8 
sample=simu
group="@RG\\tID:sample\\tLB:sample\\tSM:sample\\tPL:COMPLETE\\tCN:DCS"

# run the wgs pipeline ------------------------------------------------------------------------------------

# check the existence of the index files
for file in $FA.0123 $FA.amb $FA.ann $FA.bwt $FA.index1 $FA.index2 $FA.pac $FA.sa;
do
    if [ ! -f $file ]; then
        echo "File $file does not exist, try to build the index ..."
        $DCS_HOME/bin/dcs aligner --threads 16 --build-index $FA
        break;
    fi
done

# Step 0: Set the working directory
workDir=$SCRIPT_DIR/result_wgs
mkdir -p $workDir
mkdir -p $workDir/${sample}.qcdir 

# Step 1: Alignment
$DCS_HOME/bin/dcs aligner --threads $nthreads --aln-index $FA --fq1 $FQ1 --fq2 $FQ2 --read-group $group --no-filter --fastq-qc-dir $workDir/${sample}.qcdir --bam-out $workDir/${sample}.align.bam

# Step 2: base quality score recalibration
$DCS_HOME/bin/dcs bqsr --threads $nthreads --in-bam $workDir/${sample}.align.bam --reference $FA --known-sites $KN1 --known-sites $KN2 --known-sites $KN3 --known-sites $KN4 --recal-table $workDir/${sample}.recal.table

# Step 3: variant calling
$DCS_HOME/bin/dcs variantCaller --threads $nthreads --input $workDir/${sample}.align.bam --output $workDir/${sample}.variantCaller.g.vcf.gz --reference $FA --recal-table  $workDir/${sample}.recal.table

# Step 4: genotype calling
$DCS_HOME/bin/dcs genotyper --threads $nthreads --input $workDir/${sample}.variantCaller.g.vcf.gz --output $workDir/${sample}.genotyper.vcf.gz --dbsnp $KN2 -s 30.0

# Step 5: generate the final report
$DCS_HOME/bin/dcs vcf-stat --vcf $workDir/${sample}.genotyper.vcf.gz >$workDir/vcfStat.txt

$DCS_HOME/bin/dcs report --sample ${sample} --filter $workDir/${sample}.qcdir --bam_stat $workDir/bamStat.txt --vcf_stat $workDir/vcfStat.txt --output $workDir/report

修改文件中的环境变量后,直接运行即可。

# 修改DCS_HOME和PROXY_HOST值
vi quick_start_wgs.sh
sh quick_start_wgs.sh
图4.1 WGS流程图
图4.1 WGS流程图

4.2 WES

与WGS步骤基本相同,仅在variantCaller步骤有区别,该步骤需要增加一个区间参数(-L),填上wes区间的bed文件

# Step 3: variant calling
$DCS_HOME/bin/dcs variantCaller --threads $nthreads --input $workDir/${sample}.align.bam --output $workDir/${sample}.variantCaller.g.vcf.gz --reference $FA --recal-table  $workDir/${sample}.recal.table -L <wes.target.bed>

4.3 Joint Calling

参考脚本为quick_start_jointcalling.sh,与WGS类似,修改其中的DCS_HOME和PROXY_HOST环境变量,此外dcs jointcaller需要设置JAVA_HOME为jdk8,并将spark/bin(spark版本2.4.5及以上)加入到PATH环境变量。

# This script provides a quick start guide for using the dcs jointcaller to perform joint calling on multiple gvcf files
# if you have any questions, please contact us at cloud@stomics.tech


# set the location of the dcs tool
export DCS_HOME=/path/to/dcs


# dcs jointcaller is a wrapper of DPGT, which is a spark java application
# set JAVA_HOME and add spark/bin to PATH
export JAVA_HOME=/path/to/jdk8
export PATH=/path/to/spark/bin:$PATH


# Before using the dcs tool, you must obtain a license file and start the authentication proxy program 
# on a node that can connect to the internet.


# Get the local IP address, which is used for license application. 
# The output data field of the following command indicates the IP address.
# curl -X POST https://uat-cloud.stomics.tech/api/licensor/licenses/anon/echo?cliIp=true


# start the proxy program
# LICENSE=<path/to/license/file>
# DCS_HOST=0.0.0.0:8909
# $DCS_HOME/bin/licproxy --command start --license $LICENSE --bind $DCS_HOST --log-level INFO


# Set the following environment variables to your desired values
export PROXY_HOST=127.0.0.1:8909


# check the status of the proxy program
$DCS_HOME/bin/dcs lickit --ping $PROXY_HOST


# query the available resources provided by the certification
$DCS_HOME/bin/dcs lickit --query $PROXY_HOST


# Get the directory where the script is located
SCRIPT_PATH=$(realpath "$0" 2>/dev/null || readlink -f "$0" 2>/dev/null || echo "$0")
SCRIPT_DIR=$(dirname "$SCRIPT_PATH")


# Set the following variables for dcs jointcaller
# gvcf directory
GVCF_DIR=$SCRIPT_DIR/data/gvcf
# target region
REGION=chr20:1000000-2000000
# reference fasta file
FA=$SCRIPT_DIR/data/ref/chr20.fa


# number of threads
nthreads=4
# java heap max memory
memory_size=8g


# Step 0: Set the working directory
workDir=$SCRIPT_DIR/result_jointcalling
mkdir -p $workDir


# Step 1: Set input file and output dir
# dcs jointcaller input file
GVCF_FOFN=$workDir/gvcf.fofn
ls ${GVCF_DIR}/*gz > ${GVCF_FOFN}
# dcs jointcaller output directory
OUT_DIR=$workDir/result


# Step 2: Run dcs jointcaller
$DCS_HOME/bin/dcs jointcaller \
    --input ${GVCF_FOFN} \
    --output ${OUT_DIR} \
    --reference ${FA} \
    --jobs ${nthreads} \
    --memory ${memory_size} \
    -l ${REGION}

4.4 SeqArc

参考脚本为quick_start_seqarc.sh,与WGS类似,修改其中的DCS_HOME和PROXY_HOST环境变量。

#!/bin/bash


# set the location of the dcs tool
export DCS_HOME=/path/to/dcs


# Set the following environment variables to your desired values
export PROXY_HOST=127.0.0.1:8909


# check the status of the proxy program
$DCS_HOME/bin/dcs lickit --ping $PROXY_HOST


# query the available resources provided by the certification
$DCS_HOME/bin/dcs lickit --query $PROXY_HOST




# Get the directory where the script is located
SCRIPT_PATH=$(realpath "$0" 2>/dev/null || readlink -f "$0" 2>/dev/null || echo "$0")
SCRIPT_DIR=$(dirname "$SCRIPT_PATH")


nthreads=2
FQ1=$SCRIPT_DIR/data/fastq/simu.r1.fq.gz
FA=$SCRIPT_DIR/data/ref/chr20.fa
ARCFA=$SCRIPT_DIR/data/arcref/
mkdir -p $ARCFA




workDir=$SCRIPT_DIR/result_seqarc
mkdir -p $workDir


# Step 1: create index
$DCS_HOME/bin/dcs SeqArc index -r $FA -o $ARCFA
 
# Step 2: compress 
$DCS_HOME/bin/dcs SeqArc compress -t $nthreads -r $ARCFA/chr20.fa -i $FQ1 -o $workDir/test 


# step 3 : decompress
$DCS_HOME/bin/dcs SeqArc decompress -t $nthreads -r $ARCFA/chr20.fa -i $workDir/test.arc -o $workDir/simu.r1.fq

5. 发版说明

v1.1.0

模块类型描述
WGS/WES问题修复解决aligner内存泄漏问题
问题修复解决aligner在构建某些ref fasta索引时出现卡死问题
SeqArc功能开发使用simde来实现跨平台指令集
功能开发实现了单独的解压工具
功能开发实现了基因库的统计功能

v1.0.1

改动模块:aligner, report

模块类型描述
WGS/WES问题修复修复了aligner某种场景下coredump的问题
问题修复修复了aligner输出文件为不带路径的纯文件名时的问题
问题修复将aligner生成的bam索引文件重命名为*.bam.bai,不再是*.bai
问题修复修复report模块深度累积频率图潜在问题
问题修复quick_start包中wgs脚本中增加set -e,遇到错误时及时退出

v1.0.0

模块类型描述
WGS/WES功能开发新增比对和变异相关信息统计功能
SeqArc功能开发按照avs-g标准,重构了项目框架
功能开发增加了长读长数据的压缩功能
功能开发调整了参数解析方式,增加了子命令和长短参数

6. 注意事项

6.1 WGS/WES

  1. 比对时需要参考序列索引文件,用aligner提前准备好,避免找不到文件报错
  2. bqsr步骤默认只输出recal.table,如果需要碱基质量校正后的bam文件,需要设置--out-bam参数
  3. 在WES场景下做比对结果统计时,可以有两种方式,一是在variantCaller步骤指定interval参数为wes bed文件,二是单独运行bam-stat工具,设置--bed参数。如果不添加bed文件,默认统计的是全基因组范围,导致覆盖度深度等信息结果不准

6.2 Joint Calling

  1. 输入的gvcf文件需要带上tbi索引文件。
  2. 参考基因组fasta需要fai和dict文件。
  3. 样本量很大时,建议参考7中的运行示例设置内存,避免内存设置过小导致内存溢出。

6.3 SeqArc

  1. 压缩输入的fastq文件,文件名后缀需要是 *.fq *.fastq *.fq.gz *.fastq.gz,否则认为文件类型不正确
  2. 输入的参考序列文件,需要是文本文件,文件名后缀需要是*.fa *.fasta,否则认为文件类型不正确
  3. 解压输入的arc文件,需要是本程序压缩的结果文件,否则认为文件类型不正确。
  4. 解压输入的参考序列文件,需要和压缩的参考文件保持一致,如果不一致,会报错提示:[ref load md5 error]
  5. fastq如果不完整,会报错提示[read fastq error]
  6. read如果seq和qual不等长,会报错提示[seqlen isnot equal quallen]
  7. 压缩,解压如果文件读写异常,会报错提示[read file err] [write file err]
  8. 解压时,如果数据块校验失败,会提示报错[block check fail],这可能是压缩时异常,或者压缩数据没有正确保存。
  9. 需要设置 ulimit -n, 对于运行时的崩溃,会生成对应的coredump。

6.4 License Proxy

工具 DCS Tools 或 lickit 无法连接 licproxy。

如果您遇到了类似如下错误提示:

  • connection refused

  • couldn't connect to server

请按照如下步骤进行排查:

  1. 在运行 DCS Tools 或 lickit 的机器通过如下命令行检查与 License 代理是否联通
curl -v http://$PROXY_HOST/api/licensor/licenses/anon/pool

请将 $PROXY_HOST 替换成您部署 licproxy 的内网 IP 地址和端口,例如 172.20.9.149:8909,而不是您在获取 License 文件前执行获取联网机器的出口 IP 地址!

如果运行 DCS Tools 或 lickit 的机器和运行 licproxy 在同一台机器,您可以将 $PROXY_HOST 替换为 127.0.0.1:8909

预期返回包含 Success,若提示无法连接,则请继续按下面的步骤检查 License 代理进程是否存在。

  1. 在部署 licproxy 的机器上查看进程是否存在
ps aux | grep licproxy

若进程不存在,则请先按照上文 1.4 软件部署进行操作。若进程存在,则请联系您们的 IT 运维确保运行DCS Tools 或 lickit 的机器可以通过上文步骤 1 访问 licproxy 所在机器,若网络不通则请向 IT 运维申请开通。

  1. 检查投递任务的脚本或命令行是否正确设置变量 PROXY_HOST

请检查您使用的脚本或命令行是否覆盖环境变量 PROXY_HOST,例如 licproxy 部署在 172.20.9.149:8909,那么您在运行脚本或命令行之前务必先设置:

export PROXY_HOST=172.20.9.149:8909
./path/to/your
# 或者
PROXY_HOST=172.20.9.149:8909 /path/to/your

License 认证常见错误提示

  • Permission denied(无权限或验证失败)

  • Size must be greater than 0(提交线程数必须大于零)

  • Pool size exceeded(提交线程数大于当前线程数)

  • License expired(许可证已过期)

  • Unknown error(未知错误)

7. 性能和运行时间

7.1 WGS

在阿里云的ecs.i4g.8xlarge(32核,128G内存)机型上,存储使用SSD,分别对HG001 30X WGS NovaSeq、HG001 30X DNBSEQ-G400和HG005 40X WGS数据进行测试,dcs tools需要1.82小时、1.91小时和2.45小时完成从FASTQ到VCF的过程。

数据运行时间(h)线程数最大内存
HG001 30X NovaSeq1.8232101
HG001 30X DNBSEQ-G4001.9132100
HG005 40X DNBSEQ-G4002.4532120

7.2 SeqArc

在阿里云的ecs.c6a.xlarge(4核,8G内存)机型上,针对NA12878 (30X WGS)数据进行压缩和解压测试:

压缩测试结果:

输入数据时长压缩率(相比.gz输入数据)
r1.fq.gz(27G)27m 24s5.17
r2.fq.gz (30G)29m 14s4.10

解压测试结果:

输入数据时长
r1.fq.arc14m 32s
r2.fq.arc14m 25s

7.3 Joint Calling

在公开数据1KGP样本集和内部的多个大规模人群样本集上测试,dcs jointcaller(DPGT)的计算性能表现如下表:

数据样本数进程数(每个进程分配6g内存)核时运行时间
1KGP2504256696327.2 hours
Internal 10K91652562137683.5 hours
Internal 52K520004400407760~6 days
Internal 105K10500036751026155~19 days

8. FAQ

8.1 部署相关问题

1. DCS Tools对平台的要求?

DCS Tools 设计为运行在Linux系统的可执行程序;

推荐的Linux发行版为:Centos 7,Debian 8,Ubuntu 14.04及以上的版本。

2.对系统硬件的要求?

cpu 至少有8核,mem至少有128G,并且建议使用读写速度更快的SSD硬盘。

3.软件部署环节是否需要联网?

DCS Tools运行时会进行 License 验证,以确保合法性,因此需要一台可以联网(用来与验证服务端通信)的机器,其它机器(往往是计算节点)不需要联网,保证能与联网机器通信即可。当然,单台联网机器也可以部署本软件。

4.软件部署都需要哪些文件?

软件包+License 文件,可以通过云平台(cloud@stomics.tech)或者销售经理获取。

我们支持30天免费试用,可联系销售经理。

5.license proxy部署成功后,为什么运行DCS Tools时还会出现license相关错误?

在license proxy部署后,可以通过文档中提供的命令,确认与云平台的连接是否成功。另外每个license都有对应线程数上限,如果使用达到了上限,也会导致新任务无法成功启动,需要等待正在运行的任务结束或者扩充线程数。

8.2 工具相关问题

1.Joint calling输出的不是合并的gvcf,而是vcf?

由于传统一次性生成多样本 gvcf 文件计算量大且占用存储空间,我们未采用该策略来获取所有样本的 gvcf 结果。建议用户保留各样本的 gvcf 文件,后续若需对特定样本进行联合调用(joint calling),直接基于单样本 gvcf 文件运行即可。

2.WGS是否支持非二倍体物种的分析?

DCS Tools的变异检测流程是基于二倍体检测模型构建的,因此WGS暂无法对多倍体样本开展有效的变异检测工作。

3.WGS数据运行时间为啥比文档中的要明显长?

除数据量因素外,WGS流程的运行时间还会受到存储设备读写速度的制约。在我们的测试环境中,采用了具备高速读写性能的SSD固态硬盘,以尽可能降低该因素对流程运行时间的影响。

4.压缩测试用的是什么平台的数据?

目前DCS Tools所用压缩方法已实际压缩数据达几十PB,在开发阶段开展的大规模测试中,最具代表性的数据集为 AVS-G 参考测试集。该数据集抽取自 NCBI-SRA 库,涵盖了13个最具代表性的物种,包含39组 FASTQ 数据。在样本属性、实验方法、测序技术、测序代数以及测序平台等方面,集尽可能全面地覆盖了 NCBI 上的各类情况。

作为参考,DCS Tools压缩方法在该测试集上的压缩率为8.11,而 gzip 的压缩率为4.15。鉴于物种、测序平台等不同属性均会对压缩率产生一定影响,建议用户结合DCS Tools及同类工具在自身数据上的实际测试结果进行决策。

AVS-G 参考测试集相关详细资料可通过销售经理,或者公众号后台联系我们获取。

5.压缩100GB FASTQ 源文件,DCS Tools与常用的 pigz 相比如何?

在32线程环境对人类100GB WGS的PE数据进行测试,测试结果如下:

测试数据pigz压缩率pigz压缩速度pigz CPU占用率DCS Tools压缩率DCS Tools压缩速度DCS Tools CPU占用率
BGI-SEQ500(ERR2755197)3.93450MB/s3224%5.66937MB/s3177%
NovaSeq(SRR10965088)4.9220MB/s3175%21.15794MB/s3147%

6.同平台的不同FASTQ文件压缩率会不一样么?主要原因有哪些?

FASTQ文件主要包含测序序列和质量分数两个部分,差异也出自这里。

首先是测序序列,DCS Tools推荐使用在压缩&解压时加入参考序列的模式,可以有效提升序列的压缩率,而参考序列是该物种的基因组序列,那么对于转录组测序来说这个模式的效果就比较差,而宏基因组测序难以使用该模式。即便对于基因组测序来说,不同平台/型号的测序准确率也是不同的,一般来说测序越准确压缩率就越好。

然后是质量分数,首先不同型号的质量分数的种类是不同的,质量值种类一般分为40和4两种,显然种类越少压缩率越好,这也是它们压缩率差异的主要来源。另外,质量分数本身随机性较强,这也与测序仪强相关,随机性越强的数据压缩率就越差。

上次编辑于: