Sentieon软件为完整的纯软件基因变异检测二级分析方案,其分析流程完全忠于BWA、GATK、MuTect2、STAR、Minimap2、Fgbio、picard等金标准的数学模型。在匹配开源流程分析结果的前提下,大幅提升WGS、WES、Panel、UMI、ctDNA、RNA等测序数据的分析效率和检出精度,并匹配目前全部第二代、三代测序平台,对短读长NGS、长读长longread测序数据进行SNP/INDEL/SV分析。最高支持20万人全基因组联合变异检测分析。
一、运行环境
1.1 硬件要求:
具有以下配置的Linux服务器:
运行以下或更高版本的Linux发行版之一:RedHat/CentOS 6.5、Debian 7.7、 OpenSUSE-13.2或Ubuntu-14.04。 对于小型面板或全外显子组测序,需16GB内存;对于全基因组测序,需64GB内存。 (推荐)最好使用高速SSD驱动器,以获得理想的I/O性能,实现最大CPU利用率。
1.2 软件要求:
需要Python 2.6.x、Python 2.7.x或python3.x。您可以通过以下命令检查Python版本:
python --version
1.3 软件安装包:
下载软件安装包(以v202308.03版本为例,更新版本需要联系sentieon@insvast.com): X86 CPU版本安装包:https://insvast-download.oss-cn-shanghai.aliyuncs.com/Sentieon/release/sentieon-genomics-202308.03.tar.gz ARM CPU版本安装包:https://insvast-download.oss-cn-shanghai.aliyuncs.com/Sentieon/release/arm-sentieon-genomics-202308.03.tar.gz 使用以下命令解压软件包,其中VERSION为您使用的版本,例如202308.03:
tar xvzf sentieon-genomics-VERSION.tar.gz
1.4 许可证要求:
请参考“第四章节:许可证设置”了解如何设置许可证的详细信息。可能需要IT支持。
1.5 系统环境要求:
如果Python 2.6.x、Python 2.7.x或python3.x不是默认Python版本,您可以设置以下环境变量:
export SENTIEON_PYTHON=Python_location
如果使用本地主机许可证文件,请设置以下环境变量,其中LICENSE_DIR为许可证文件所在目录,LICENSE_FILE.lic为许可证文件名:
export SENTIEON_LICENSE=LICENSE_DIR/LICENSE_FILE.lic
如果用户使用许可证服务器,请设置以下环境变量,其中LICSRVR_HOST和LICSRVR_PORT分别为许可证服务器的主机名和端口。详情请参阅下一节。
export SENTIEON_LICENSE=LICSRVR_HOST:LICSRVR_PORT
为方便起见,请按如下方式设置二进制路径,其中PATH_TO_SENTIEON_BINARY_DIRECTORY为Sentieon®二进制文件的安装目录:
export SENTIEON_INSTALL_DIR=PATH_TO_SENTIEON_BINARY_DIRECTORY
使用NFS存储时,为提高性能,请将SENTIEON_TMPDIR环境变量设置为指向本地快速临时存储:
export SENTIEON_TMPDIR=/tmp
二、首次运行作业
我们提供了一个快速入门演示项目,其中包含示例脚本和数据,以帮助您快速测试安装并诊断潜在问题。
quikstart演示项目链接:https://insvast-download.oss-cn-shanghai.aliyuncs.com/Sentieon/release/sentieon_quickstart.tar.gz
快速入门包包含单个染色体的数据,包括样本的序列数据和参考材料。作业脚本使用Sentieon DNAscope流程处理一组双端Illumina fastq文件:
BWA:将读段比对到参考基因组。
Metrics和LocusCollector:收集读段统计信息。
Dedup:去除重复读段。
变异检测:DNAscope变异检测。
注意:DNAscope仅推荐用于二倍体生物的样本。对于其他样本,请使用DNAseq。
要开始使用,请将下载的快速入门包复制到新目录,并通过运行以下命令解压:
tar xzvf sentieon_quickstart.tar.gz
sentieon_quickstart.sh: 驱动整个流程的示例shell脚本。 reference: 包含人类基因组参考文件和已知SNP位点数据库文件的目录。 models: 包含DNAscope模型文件的目录。 FASTQ文件: 样本序列文件。
# 更新Sentieon软件包的位置
SENTIEON_INSTALL_DIR=/home/release/sentieon-genomics-202308.03
# 更新临时快速存储的位置并取消注释
#SENTIEON_TMPDIR=/tmp
# 在实际情况下分配有意义的名称很重要。
# 特别重要的是要为不同的读组分配不同的名称。
sample="sample_name"
group="read_group_name"
platform="ILLUMINA"
# 其他设置
nt=16 #计算中使用的线程数
# 数据是否使用无PCR文库制备
PCRFREE=true
在实际情况下分配有意义的名称很重要。
特别重要的是要为不同的读组分配不同的名称。
要获取CPU核心数,用户可以运行nproc,如下所示:
nproc
sh sentieon_quickstart.sh &
三、Sentieon模块描述
Sentieon®产品 | Sentieon®工具 | 典型用途 | 等效GATK流程工具 |
Sentieon® BWA | Sentieon® BWA | 读段比对和映射 | BWA |
DNAscope | DNAscope | 改进的生殖细胞SNV/Indel/SV检测 | - |
DNAseq® | Genotyper | 生殖细胞SNV/Indel检测,非单倍型基础 | UnifiedGenotyper |
DNAseq® | Haplotyper | 生殖细胞SNV/Indel检测 | HaplotypeCaller |
DNAseq® | GVCFtyper | 群体联合检测,已验证可用于多达200,000个样本 | GenotypeGVCFs |
DNAseq® | VarCal | 计算变异质量分数重校准 | VariantRecalibrator |
DNAseq® | ApplyVarCal | 应用变异质量分数重校准 | ApplyRecalibration |
RNAseq | RNASplitReadsAtJunction | RNA SNV/Indel检测 | SplitNCigarReads |
RNAseq | Haplotyper | RNA SNV/Indel检测 | HaplotypeCaller |
TNseq® | TNsnv | 体细胞SNV检测,非单倍型基础 | MuTect |
TNseq® | TNhaplotyper | 体细胞SNV/Indel检测 | MuTect2 |
TNseq® | TNhaplotyper2 + TNfilter | 体细胞SNV/Indel检测 | GATK4中的Mutect2和FilterMutectCalls |
TNscope® | TNscope® | 改进的体细胞SNV/Indel/SV检测 | - |
通用工具 | Dedup和LocusCollector | 执行去重复 | Picard MarkDuplicates |
通用工具 | Realigner | 为非单倍型基础的检测器执行Indel重比对 | RealignerTargetCreator和IndelRealigner |
通用工具 | QualCal | 执行碱基质量分数重校准 | BaseRecalibrator, AnalyzeCovariates |
通用工具 | ReadWriter | 创建BAM文件 | PrintReads |
通用工具 | AlignmentStat | QC指标 | Picard CollectAlignmentSummaryMetrics |
通用工具 | BaseDistributionByCycle | QC指标 | Picard CollectBaseDistributionByCycle |
通用工具 | CollectVCMetrics | QC指标 | Picard CollectVariantCallingMetrics |
通用工具 | ContaminationAssessment | QC指标 | ContEst |
通用工具 | CoverageMetrics | QC指标 | DepthOfCoverage |
通用工具 | GCBias | QC指标 | Picard CollectGcBiasMetrics |
通用工具 | HsMetricAlgo | QC指标 | Picard CollectHsMetrics |
通用工具 | InsertSizeMetricAlgo | QC指标 | Picard CollectInsertSizeMetrics |
通用工具 | MeanQualityByCycle | QC指标 | Picard MeanQualityByCycle |
通用工具 | QualDistribution | QC指标 | Picard QualityScoreDistribution |
通用工具 | QualityYield | QC指标 | Picard CollectQualityYieldMetrics |
通用工具 | SequenceArtifactMetricsAlgo | QC指标 | Picard CollectSequencingArtifactMetrics, ConvertSequencingArtifactToOxoG |
通用工具 | WgsMetricsAlgo | QC指标 | Picard CollectWgsMetrics |
四、设置许可证
Sentieon®软件是一个商用许可的软件。用户需要正确设置许可证才能运行软件。我们提供两种类型的许可证:
单机评估许可证:此许可证用于在单台机器上评估Sentieon®软件。它允许新用户快速开始使用软件,而无需IT部门的帮助。要使用此许可证,计划运行Sentieon®软件的计算机需要外部Internet访问。 集群许可证:此许可证用于集群环境。使用此许可证,一个轻量级的浮动许可证服务器进程在集群中的一个节点上运行,通过TCP向所有其他与许可证服务器有网络连接的节点提供许可证。此许可证服务器在集群外围的一个特殊非计算节点上运行,该节点可以通过HTTPS不受限制地访问外部世界,并通过监听集群内需要开放的特定TCP端口向集群中的其余节点提供许可证。
4.1 设置单机评估许可证
export SENTIEON_LICENSE=LICENSE_DIR/LICENSE_FILE.lic
许可证服务器应该能够访问Internet以执行许可证验证。 计算节点应该能够通过主机名LICSRVR_HOST访问许可证服务器。 运行许可证服务器的机器有一个开放的端口供许可证服务监听,并且计算节点可以访问该端口。这里我们假设可用端口是LICSRVR_PORT。
按照以下步骤获取许可证文件,设置和测试许可证服务器:
1. 将以下信息发送给sentieon@insvast.com以接收许可证文件:
指定运行许可证服务的机器的FQDN(Hostname)LICSRVR_HOST。
指定的端口LICSRVR_PORT。
<SENTIEON_INSTALL_DIR>/bin/sentieon licsrvr --start --log LOG_FILE LICENSE_PATH/LICENSE_FILE
3. 或者,您可以按照“第五章:设置许可为系统服务”- 将许可证服务器(LICSRVR)作为系统服务运行的说明,将许可证服务器配置并启动为系统守护进程。
4. 进入Sentieon®安装目录。在许可证服务器上运行以下命令,确认许可证服务器已启动并正在运行。
<SENTIEON_INSTALL_DIR>/bin/sentieon licclnt ping -s LICSRVR_HOST:LICSRVR_PORT
如果命令返回时没有错误消息,则许可证服务器已启动并正在运行。
5. 登录到其中一个计算节点,进入Sentieon®安装目录,再次运行上述命令:
<SENTIEON_INSTALL_DIR>/bin/sentieon licclnt ping -s LICSRVR_HOST:LICSRVR_PORT
如果命令返回时没有错误消息,则计算节点现在也可以访问许可证服务器。
6. 设置以下环境变量,您就可以开始使用了。
export SENTIEON_LICENSE=LICSRVR_HOST:LICSRVR_PORT
五、设置许可为系统服务
如果您的系统遵循传统的System V init启动脚本,您可以通过运行以下命令作为root用户来设置许可证服务器,使其在系统启动时自动启动:
1. 创建并自定义配置文件:配置文件通常为/etc/sysconfig/licsrvr;但在Ubuntu中,配置文件将是/etc/default/licsrvr。以下是配置文件的示例,推荐使用以下设置:
/home/sentieon/release/latest 是最新Sentieon®软件包安装目录的符号链接
/home/sentieon/licsrvr 是运行licsrvr服务的文件夹
/home/sentieon/licsrvr/licsrvr.lic 是Sentieon®许可证文件
licsrvr="/home/sentieon/release/latest/bin/sentieon licsrvr"
licfile="/home/sentieon/licsrvr/licsrvr.lic"
logfile="/home/sentieon/licsrvr/licsrvr.log"
2. 将许可证服务器启动脚本安装到/etc/init.d目录。启动脚本包含在发布包中。
install -m 0755 $SENTIEON_INSTALL_DIR/doc/licsrvr.sh /etc/init.d/licsrvr
3. 安装并启用服务。根据您的系统,您将运行不同的命令:
如果您的系统安装了Linux Standard Base Core Specifications,执行系统init脚本安装脚本:
/usr/lib/lsb/install_initd /etc/init.d/licsrvr
如果您的系统没有安装lsb.conformance包,使用chkconfig命令启用服务:
chkconfig --add licsrvr
chkconfig licsrvr on
对于Ubuntu和Debian系统,如果您没有lsb/install_initd二进制文件且选择不安装lsb-core包,请使用update-rc.d命令安装并启用服务:
update-rc.d licsrvr defaults
update-rc.d licsrvr enable
4. 您可以使用service命令来启动/停止/重启/检查服务的状态:
service licsrvr {start|stop|restart|status}
5.2 使用systemd将许可证服务器作为系统服务运行
1. 如果您使用doc文件夹中的licsrvr.service许可证服务器启动脚本,您需要创建脚本所需的必要文件,包括使用sentieon用户名:
/home/sentieon/release/latest 是最新Sentieon®软件包安装目录的符号链接
/home/sentieon/licsrvr 是运行licsrvr服务的文件夹
/home/sentieon/licsrvr/licsrvr.lic 是Sentieon®许可证文件
或者,您可以编辑许可证服务器启动脚本以指向您的特定用户名和/或位置信息。
install -m 0644 $SENTIEON_INSTALL_DIR/doc/licsrvr.service /etc/systemd/system
3. 运行以下命令以启用许可证服务器在计算机启动时自动启动:
systemctl enable licsrvr.service
4. 您可以使用systemctl命令手动启动和停止服务:
systemctl start licsrvr.service
systemctl stop licsrvr.service
六、常见问题
在安装运行Sentieon过程中可能会出现以下错误:
ERROR: ld.so: object '/usr/lib64/libjemalloc.so.2' from LD_PRELOAD cannot be preloaded: ignored. Failed to contact the license server at 10.10.10.1:8990
这个错误与jemalloc有关。Jemalloc是一个内存分配器,针对多线程方案中的高内存分配性能和更少的内存碎片进行了优化。Sentieon建议使用jemalloc来改善Sentieon应用程序中的内存管理和整体性能,尤其是Sentieon bwa-mem。
yum install epel-release
yum install jemalloc
默认安装在 /usr/lib64/libjemalloc.so.2
yum install epel-release
yum install jemalloc
默认安装在 /usr/lib64/libjemalloc.so.1
apt update
apt install libjemalloc2
默认安装在 /usr/lib/x86_64-linux-gnu/libjemalloc.so.2
apt update
apt install libjemalloc1
默认安装在 /usr/lib/x86_64-linux-gnu/libjemalloc.so.1
export LD_PRELOAD=/usr/lib64/libjemalloc.so.2
6.2 准备参考文件以供使用
如果您的参考FASTA文件尚未预处理,使得软件无法使用中指定的数据,您需要按照以下步骤对其进行处理:
1. 使用BWA生成BWA索引。这将创
sentieon bwa index reference.fasta
2. 使用samtools生成FASTA文件索引。这将创建".fasta.fai"文件。
samtools faidx reference.fasta
3. 使用Picard生成序列字典。这将创建".dict"文件。
java -jar picard.jar CreateSequenceDictionary REFERENCE=reference.fasta \
OUTPUT=reference.dict
6.3 准备RefSeq文件以供使用
grep -v "^#" FILE.refSeq > FILE.refSeq.headerless
grep -e "^#" FILE.refSeq > FILE.refSeq.header
sort -k 5 -n FILE.refSeq.headerless > FILE.refSeq.presorted
perl sortByRef.pl --k 3 FILE.refSeq.presorted FASTA.fai --tmp ~/tmp \
> FILE_sorted_headerless.refSeq
cat FILE.refSeq.header > FILE_sorted.refSeq
cat FILE_sorted_headerless.refSeq >> FILE_sorted.refSeq
sentieon licclnt query -s LICSRVR_HOST:LICSRVR_PORT klib
6.5 Driver失败并显示错误:Readgroup XX is present in multiple BAM files with different attributes
当您输入两个不同的BAM文件,其中包含具有相同ID但不同属性的读组时,会产生此错误。例如,在TNseq®和TNscope®中,肿瘤和正常样本BAM文件的RG ID都是"1"。
# 添加新的RG并修改BAM文件中的所有读段
RGtag=$(samtools view -H $INPUT_BAM|grep ^@RG|sed "s|ID:$ORIG_RGID|ID:$NEW_RGID|g")
samtools addreplacerg -r "$RGtag" -o $TMP_BAM $INPUT_BAM
# 重新设置BAM头以删除不再使用的原始RG
samtools view -H $TMP_BAM|grep -v "^@RG.*$ORIGINAL_RGID" \
|samtools reheader - $TMP_BAM > $OUTPUT_BAM
rm $TMP_BAM
6.7 使用从BAM文件创建的FASTQ文件时,BWA使用异常大量的内存
samtools sort -n -@ 32 input.bam | samtools fastq -@ 32 \
-s >(gzip -c > single.fastq.gz) -0 >(gzip -c > unpaired.fastq.gz) \
-1 >(gzip -c > output_1.fastq.gz) -2 >(gzip -c > output_2.fastq.gz) -
sentieon util vcfconvert INPUT.vcf.gz OUTPUT.vcf.gz
6.8.2 不支持gzip压缩的fasta文件
6.8.3 FASTQ文件需要采用SANGER质量格式
6.8.4 Driver失败并显示错误:ImportError: No module named argparse
6.9 常见使用问题
6.9.1 Driver或Util失败并显示错误:can not open file (xxx) in mode(r), Too many open files
ulimit -n
* soft nofile 16384
* hard nofile 16384
ulimit -n 16384
ulimit -n
6.9.2 Driver失败并显示错误:Contig XXX from vcf/bam is not present in the reference, or error Contig XXX has different size in vcf/bam than in the reference
6.9.3 Driver报告警告:Contigs in the vcf file XXX do not match any contigs in the reference
6.9.4 BWA失败并显示错误:Killed
当BWA从操作系统接收到SIGKILL信号时,会产生此错误。如果系统可用内存不足,SIGKILL可能是由内核的内存不足(OOM)管理器发送的。您可以检查系统上的内核日志以确认SIGKILL信号是否由OOM管理器发送。
要解决此错误,您可以使用bwt_max_mem环境变量减少BWA的内存使用。
2.Sentieon安装时 jemalloc error 解决办法
3.Sentieon | 应用教程: 使用DNAscope对HiFi长读长数据进行胚系变异检测分析
4.Sentieon|应用教程:利用Sentieon Python API引擎为自研算法加速
6.Sentieon | 应用教程: TNscope® 使用机器学习模型进行有匹配正常样本的体细胞变异发现
7.Sentieon | 应用教程:CCDG使用Sentieon®的功能等效流程
8.Sentieon DNAscope:适配多测序平台数据的快速精准分析流程
9.Sentieon | 应用教程:利用共识功能去除PCR重复
10.Sentieon | 应用教程:适用于PacBio HiFi和Oxford Nanopore长读长测序数据的结构变异检测
11.Sentieon | 应用教程:使用 Sentieon进行大型基因组重测序分析
12.Sentieon | 应用教程:体细胞SNP/Indel变异检测
13.Sentieon | 应用教程:DNAscope使用机器学习模型进行胚系变异调用
14.Sentieon | 应用教程:唯一分子标识符(UMI)
15.Sentieon | 应用教程:Sentieon分布模式
16.Sentieon | 应用教程:使用CNVscope进行CNV检测分析
(长按二维码·申请试用Sentieon)