写点什么

Sentieon 快速入门指南

作者:INSVAST
  • 2024-07-10
    广东
  • 本文字数:8285 字

    阅读完需:约 27 分钟

Sentieon快速入门指南

Sentieon 软件为完整的纯软件基因变异检测二级分析方案,其分析流程完全忠于 BWA、GATK、MuTect2、STAR、Minimap2、Fgbio、picard 等金标准的数学模型。在匹配开源流程分析结果的前提下,大幅提升 WGS、WES、Panel、UMI、ctDNA、RNA 等测序数据的分析效率和检出精度,并匹配目前全部第二代、三代测序平台,对短读长 NGS、长读长 longread 测序数据进行 SNP/INDEL/SV 分析。最高支持 20 万人全基因组联合变异检测分析。

Sentieon 为纯 CPU 计算加速软件,完全适配主流 CPU 计算架构:Intel、AMD、海光等 X86 架构 CPU,华为鲲鹏、阿里倚天等 ARM 架构 CPU。可灵活部署在实验室单机工作站、HPC 集群、超算中心和云计算中心,保持同一套流程下不同规模数据计算结果的一致性。

Sentieon 软件团队拥有丰富的软件开发及算法优化工程经验,致力于解决生物数据分析中的速度与准确度瓶颈,为来自于分子诊断、药物研发、临床医疗、人群队列、动植物等多个领域的合作伙伴提供高效精准的软件解决方案,共同推动基因技术的发展。

截至 2023 年底,Sentieon 已经在全球范围内为 1300+用户提供服务,被世界一级影响因子刊物如 NEJM、Cell、Nature 等广泛引用,引用次数近千篇。此外,Sentieon 连续数年摘得了 Precision FDA、Dream Challenges 等多个权威评比的桂冠,在业内获得广泛认可。

一、运行环境

要开始使用 Sentieon®软件,您需要以下条件:

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=LICSRVR_HOST:LICSRVR_PORT
复制代码

•如果用户使用许可证服务器,请设置以下环境变量,其中 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。

2.1 运行快速入门包

要开始使用,请将下载的快速入门包复制到新目录,并通过运行以下命令解压:

tar xzvf sentieon_quickstart.tar.gz
复制代码

包中包含以下内容:

•sentieon_quickstart.sh: 驱动整个流程的示例 shell 脚本。

•reference: 包含人类基因组参考文件和已知 SNP 位点数据库文件的目录。

•models: 包含 DNAscope 模型文件的目录。

•FASTQ 文件: 样本序列文件。

在运行脚本之前,您需要确保正确设置了上述环境变量,包括许可证和目录路径。

然后使用您喜欢的编辑器编辑 sentieon_quickstart.sh 中的用户设置。

# 更新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
复制代码

注意: 在用户设置 shell 脚本 sentieon_quickstart.sh 中:

•在实际情况下分配有意义的名称很重要。

•特别重要的是要为不同的读组分配不同的名称。

要获取 CPU 核心数,用户可以运行 nproc,如下所示:

nproc
复制代码

要更好地理解 sentieon_quickstart.sh 脚本的其余部分,请阅读每个部分的注释以及手册中的相应章节。

现在,只需运行 sentieon_quickstart.sh 来启动脚本,并观察结果展开。在典型的 Linux 服务器上,整个运行大约需要 3-5 分钟。实际时间取决于计算环境。

sh sentieon_quickstart.sh &
复制代码

三、 Sentieon 模块描述

下表展示了不同的 Sentieon 软件模块及其用途。同时也标注了哪些工具实现了与现有 GATK 流程工具相同的功能。

3.1 Sentieon 模块列表



四、设置许可证

Sentieon®软件是一个商用许可的软件。用户需要正确设置许可证才能运行软件。

我们提供两种类型的许可证:

单机评估许可证:此许可证用于在单台机器上评估 Sentieon®软件。它允许新用户快速开始使用软件,而无需 IT 部门的帮助。要使用此许可证,计划运行 Sentieon®软件的计算机需要外部 Internet 访问。

集群许可证:此许可证用于集群环境。使用此许可证,一个轻量级的浮动许可证服务器进程在集群中的一个节点上运行,通过 TCP 向所有其他与许可证服务器有网络连接的节点提供许可证。此许可证服务器在集群外围的一个特殊非计算节点上运行,该节点可以通过 HTTPS 不受限制地访问外部世界,并通过监听集群内需要开放的特定 TCP 端口向集群中的其余节点提供许可证。

4.1 设置单机评估许可证

要使用单机评估许可证,计算节点需要能够访问 Internet。这允许 Sentieon®软件验证许可证。

要使用单机评估许可证,请按照以下步骤操作:

1.将许可证文件复制到计算节点。例如,许可证文件 LICENSE_FILE.lic 现在位于 LICENSE_DIR。

2.按如下方式设置环境变量:

export SENTIEON_LICENSE=LICENSE_DIR/LICENSE_FILE.lic
复制代码

4.2 设置许可证服务器

如下面 Sentieon 软件授权许可拓扑图,许可证服务器需要满足以下条件:

•许可证服务器应该能够访问 Internet 以执行许可证验证。

•计算节点应该能够通过主机名 LICSRVR_HOST 访问许可证服务器。

•运行许可证服务器的机器有一个开放的端口供许可证服务监听,并且计算节点可以访问该端口。这里我们假设可用端口是 LICSRVR_PORT。

您可能需要 IT 同事支持来获取 LICSRVR_HOST:LICSRVR_PORT,并确认满足上述要求。

注意:如果许可证服务器位于防火墙后面,通过 NAT 与计算节点分离,则节点可见的许可证服务器主机名/IP 可能与其实际主机名/IP 不同。如果是这种情况,您需要将许可证服务器绑定到实际 IP 地址,而计算节点从 NAT 后的 IP 地址请求许可证。请联系sentieon@insvast.com以获取更多详细信息。

按照以下步骤获取许可证文件,设置和测试许可证服务器:

1.将以下信息发送给sentieon@insvast.com以接收许可证文件:

• 指定运行许可证服务的机器的 FQDN(Hostname)LICSRVR_HOST。

• 指定的端口 LICSRVR_PORT。

2.将收到的许可证文件复制到许可证服务器 LICSRVR_HOST。我们假设许可证文件位于 LICENSE_PATH/LICENSE_FILE。在许可证服务器上运行以下命令以启动许可证服务器进程:

<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
复制代码

五、设置许可为系统服务

5.1 使用 sysvint 将许可证服务器作为系统服务运行

如果您的系统遵循传统的 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 licsrvrchkconfig licsrvr on
复制代码

•对于 Ubuntu 和 Debian 系统,如果您没有 lsb/install_initd 二进制文件且选择不安装 lsb-core 包,请使用 update-rc.d 命令安装并启用服务:

update-rc.d licsrvr defaultsupdate-rc.d licsrvr enable
复制代码

4.您可以使用 service 命令来启动/停止/重启/检查服务的状态:

service licsrvr {start|stop|restart|status}
复制代码

5.2 使用 systemd 将许可证服务器作为系统服务运行

您可以使用操作系统的 systemd 系统和服务功能来设置许可证服务器,使其在系统中自动启动。要做到这一点,请以 root 用户身份运行以下命令:

1.如果您使用 doc 文件夹中的 licsrvr.service 许可证服务器启动脚本,您需要创建脚本所需的必要文件,包括使用 sentieon 用户名:

•/home/sentieon/release/latest 是最新 Sentieon®软件包安装目录的符号链接

•/home/sentieon/licsrvr 是运行 licsrvr 服务的文件夹

•/home/sentieon/licsrvr/licsrvr.lic 是 Sentieon®许可证文件

或者,您可以编辑许可证服务器启动脚本以指向您的特定用户名和/或位置信息。

2.将许可证服务器启动脚本安装到/etc/systemd/system 目录:

install -m 0644 $SENTIEON_INSTALL_DIR/doc/licsrvr.service /etc/systemd/system
复制代码

3.运行以下命令以启用许可证服务器在计算机启动时自动启动:

systemctl enable licsrvr.service
复制代码

4.您可以使用 systemctl 命令手动启动和停止服务:

systemctl start licsrvr.servicesystemctl stop licsrvr.service
复制代码

六、常见问题

6.1 Sentieon 安装时出现 jemalloc error

在安装运行 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。

解决方案:

1.安装 jemalloc:

对于不同的操作系统,安装命令如下:

•RHEL/CentOS 8.x:

yum install epel-releaseyum install jemalloc
复制代码

默认安装在 /usr/lib64/libjemalloc.so.2

•RHEL/CentOS 7.x:

yum install epel-releaseyum install jemalloc
复制代码

默认安装在 /usr/lib64/libjemalloc.so.1

•Ubuntu 20.04:

apt updateapt install libjemalloc2
复制代码

默认安装在 /usr/lib/x86_64-linux-gnu/libjemalloc.so.2

•Ubuntu 18.04:

apt updateapt install libjemalloc1
复制代码

默认安装在 /usr/lib/x86_64-linux-gnu/libjemalloc.so.1

2.对于没有预构建软件包的其他系统,请参考 jemalloc GitHub 页面 (https://github.com/jemalloc/jemalloc) 以获取有关如何构建和安装 jemalloc 的更多信息。

3.使用环境变量在运行时加载 jemalloc 库到 Sentieon 中:

例如,在 CentOS 8.x 系统上,在运行 Sentieon 工具之前,您可以使用以下命令设置环境变量:

export LD_PRELOAD=/usr/lib64/libjemalloc.so.2
复制代码

6.2 准备参考文件以供使用

如果您的参考 FASTA 文件尚未预处理,使得软件无法使用中指定的数据,您需要按照以下步骤对其进行处理:

1.使用 BWA 生成 BWA 索引。这将创建".fasta.amb"、".fasta.ann"、".fasta.bwt"、".fasta.pac"和".fasta.sa"文件。

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 文件以供使用

RefSeq 文件用于将 CoverageMetrics 算法的结果聚合到基因级别。为了使用从 UCSC 基因组浏览器下载的 RefSeq 文件,需要按染色体和位点对它们进行排序。要执行排序,您需要执行以下步骤:

1.从文件中删除头部

grep -v "^#" FILE.refSeq > FILE.refSeq.headerlessgrep -e "^#" FILE.refSeq > FILE.refSeq.header
复制代码

2.首先使用 unix sort 对位点进行排序。

sort -k 5 -n FILE.refSeq.headerless > FILE.refSeq.presorted
复制代码

3.使用 GATK sortByRef.pl(可从获取)和 FASTA 索引 fai 按染色体排序。

perl sortByRef.pl --k 3 FILE.refSeq.presorted FASTA.fai --tmp ~/tmp \> FILE_sorted_headerless.refSeq
复制代码

4.将头部放回文件。

cat FILE.refSeq.header > FILE_sorted.refSeqcat FILE_sorted_headerless.refSeq >> FILE_sorted.refSeq
复制代码

6.4 许可证消息:No more license available for Sentieon…

当您请求运行 Sentieon®软件的线程数超过您的许可证当前允许的数量时,会产生此消息。这种情况发生是因为您同时运行的命令集体请求的线程数超过了您的许可证支持的核心数。可使用以下命令查看授权剩余的线程数:

sentieon licclnt query -s LICSRVR_HOST:LICSRVR_PORT klib
复制代码

Sentieon®命令在等待空闲许可证时将处于空闲状态,但命令不会失败。

6.5 Driver 失败并显示错误:Readgroup XX is present in multiple BAM files with different attributes

当您输入两个不同的 BAM 文件,其中包含具有相同 ID 但不同属性的读组时,会产生此错误。例如,在 TNseq®和 TNscope®中,肿瘤和正常样本 BAM 文件的 RG ID 都是"1"。

在使用 BAM 文件之前,您需要编辑它们以使 RG ID 唯一,例如通过将 SM 名称添加到 RG ID 中。您可以查看此问题的解决方法示例。

或者,您可以使用 samtools addreplacerg 功能来修改输入 BAM 文件的 RG ID 并使其唯一:

# 添加新的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头以删除不再使用的原始RGsamtools view -H $TMP_BAM|grep -v "^@RG.*$ORIGINAL_RGID" \|samtools reheader - $TMP_BAM > $OUTPUT_BAMrm $TMP_BAM
复制代码

6.6 Driver 报告警告:none of the QualCal tables is applicable to the input BAM files

此警告意味着重校准表输入文件中的信息都不能应用于输入的 BAM 文件,这可能是由于使用了与 BAM 文件不对应的重校准表。

当 QualCal 的输入 BAM 文件在 RG 字段中没有正确的字段时,可能会产生此警告。例如,如果 RG 的 PL 标签设置为 ILLUMINA 以外的其他值,就可能发生这种情况;在这种情况下,您需要修改 BAM 头以包含/修改缺失/不正确的字段,为此您可以使用 samtools reheader 功能。

6.7 使用从 BAM 文件创建的 FASTQ 文件时,BWA 使用异常大量的内存

当您使用通过转换已排序的 BAM 文件创建的 FASTQ 文件时,可能会发生所有未映射的读段都被分组到 FASTQ 输入的末尾。在这种情况下,BWA 可能在对齐结束时使用异常大量的内存,因为映射质量差或无法映射的读段需要额外的内存。

为了减少异常内存使用,您应该首先重新排序 bam 文件,以确保未映射的读段不会被分组在一起。您可以使用 samtools 来做到这一点:

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) -
复制代码

6.8 KPNS - 已知问题无解决方案

6.8.1 不支持未使用 bgzip 压缩的 gzip 压缩 vcf 文件

普通的 gzip 文件不允许随机或索引访问其中包含的信息,只有使用 bgzip 压缩的文件才可索引。

因此,Sentieon®软件不支持 gzip 压缩的 VCF 文件作为输入。

要使用这些文件,您需要使用 gunzip 解压缩它们,然后不压缩使用或使用 bgzip 重新压缩。

或者,您可以使用 util vcfconvert 重新压缩和索引文件。

sentieon util vcfconvert INPUT.vcf.gz OUTPUT.vcf.gz
复制代码
6.8.2 不支持 gzip 压缩的 fasta 文件

目前,软件不支持 gzip 压缩的 FASTA 文件作为输入。您需要在使用之前 gunzip 这些文件。

6.8.3 FASTQ 文件需要采用 SANGER 质量格式

如果您的 FASTQ 文件是在 1.8 之前使用 Illumina™测序技术编码的,读取质量分数将不是 SANGER 格式,这可能会产生意外结果。Sentieon®基因组学软件不会检测到您正在使用不支持的格式。

6.8.4 Driver 失败并显示错误:ImportError: No module named argparse

当在 Python 版本为 2.6.x 且不存在 argparse 模块的环境中运行 tnhapfilter 时,会产生此错误。您需要为您的 Python 安装安装 argparse 模块;您可以通过运行 pip install argparse 或您使用的其他包管理器来完成此操作。

6.9 常见使用问题

以下是常见问题的症状列表以及解决方案。

6.9.1 Driver 或 Util 失败并显示错误:can not open file (xxx) in mode(r), Too many open files

此错误的根本原因是系统中同时打开的文件限制设置得不够高。

您可以通过设置系统 ulimit -n 来解决此错误。在基于 Linux 的系统中:

检查系统中最大打开文件数的限制,运行以下命令:

ulimit -n
复制代码

通过以 root 身份编辑文件/etc/security/limits.conf 来设置更高的限制,并添加以下 2 行:

* soft nofile 16384* hard nofile 16384
复制代码

如果您的系统运行的是 Ubuntu,您还需要将此行添加到您的 shell 配置文件~/.bashrc 中:

ulimit -n 16384
复制代码

您需要注销系统并重新登录才能使更改生效。登录后,通过运行以下命令检查更改是否正确应用:

ulimit -n
复制代码

命令应返回 16384。

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

此错误的根本原因是输入的 VCF 或 BAM 文件与参考 fasta 文件不兼容。文件中的 contig 不存在于参考中,或 contig 的大小不同。这很可能是由于使用了与不同参考处理的 VCF 或 BAM 文件造成的。

6.9.3 Driver 报告警告:Contigs in the vcf file XXX do not match any contigs in the reference

此警告的根本原因是输入的 VCF 文件与参考 fasta 文件不兼容,文件中的 contig 不存在于参考中。这很可能是由于使用了来自不同参考的 VCF 文件造成的。

6.9.4 BWA 失败并显示错误:Killed

当 BWA 从操作系统接收到 SIGKILL 信号时,会产生此错误。如果系统可用内存不足,SIGKILL 可能是由内核的内存不足(OOM)管理器发送的。您可以检查系统上的内核日志以确认 SIGKILL 信号是否由 OOM 管理器发送。

要解决此错误,您可以使用 bwt_max_mem 环境变量减少 BWA 的内存使用。


用户头像

INSVAST

关注

还未添加个人签名 2023-07-04 加入

还未添加个人简介

评论

发布
暂无评论
Sentieon快速入门指南_软件_INSVAST_InfoQ写作社区