Sentieon | TNscope 分析流程详解
一、前言
在肿瘤基因组学研究中,精准识别体细胞变异位点(call somatic mutations)是解析肿瘤发生机制、寻找用药靶点与监控疗效的核心基础。然而,由于肿瘤样本的异质性和测序噪音,高灵敏度和高特异性的变异检测极具挑战。
Sentieon 的 TNscope 模块为此提供了高效解决方案,TNscope 流程采用了优化的机器学习算法,能在极大提升分析速度的同时,显著提高体细胞点突变与插入缺失检测的灵敏度与准确性,尤其擅长处理低丰度变异。该模块已成为肿瘤精准医疗与大规模测序项目中不可或缺的生信分析工具。
下图展示了利用 Sentieon 软件的 TNscope 模块进行体细胞变异和结构变异检测,从而运行仅针对肿瘤或肿瘤-正常组织样本的生物信息学分析流程。
图1 Sentieon TNscope 的生物信息学分析流程
二、流程总览
1. 概述
在这个生物信息学流程中,你需要以下输入:
参考基因组 FASTA 文件。
两组包含待分析样本核苷酸序列的 FASTQ 文件,一组用于肿瘤样本,一组用于匹配正常样本。这些文件包含 DNA 测序的原始读段。该软件支持输入使用 GZIP 压缩的 FASTQ 文件。该软件仅支持包含桑格格式(Phred+33)高质量评分的文件。
(可选)单核苷酸多态性数据库(dbSNP)数据。数据以 VCF 文件的形式使用。
(可选)多个已知位点数据。数据以 VCF 文件的形式使用。
以下步骤构成肿瘤正常匹配对的典型生物信息学流程:
对肿瘤样本和正常样本,分别采用类似于“DNAseq® 典型使用流程”中所介绍的DNA测序流程,进行独立的前处理,包括以下步骤:
将测序读数比对到参考基因组上;你需要确保肿瘤样本和正常样本的 SM 标签不同,因为在体细胞变异检测中,这将被用作一个参数。同时,你还需要确保两个样本的 RG:ID 是不同且唯一的。
统计数据指标。
删除重复序列。
(可选)基础质量评分重新校准(BQSR)。
体细胞变异检测:此步骤旨在识别肿瘤基因组数据中相较于正常基因组存在体细胞变异的位点,并计算该位点的基因型。
2. 分析流程步骤
(1)比对
使用多线程时,为了保持 bwa 输出结果的一致性,需要添加-K 10000000参数。
# ****************************************** # 1a. Mapping reads with BWA-MEM, sorting for tumor sample # ****************************************** #The results of this call are dependent on the number of threads used. To have number of threads independent results, add chunk size option -K 10000000 ( $SENTIEON_INSTALL_DIR/bin/sentieon bwa mem -R "@RG\tID:$TUMOR_RGID\tSM:$TUMOR_SM\tPL:$PL" \ -t $NT -K 10000000 $FASTA$TUMOR_FASTQ_1$TUMOR_FASTQ_2 || \ { echo -n 'BWA error'; exit 1; } ) | \ $SENTIEON_INSTALL_DIR/bin/sentieon util sort -o tumor_sorted.bam -t $NT --sam2bam -i - || \ { echo"Alignment1 failed"; exit 1; } # ****************************************** # 1b. Mapping reads with BWA-MEM, sorting for normal sample # ****************************************** #The results of this call are dependent on the number of threads used. To have number of threads independent results, add chunk size option -K 10000000 ( $SENTIEON_INSTALL_DIR/bin/sentieon bwa mem -R "@RG\tID:$NORMAL_RGID\tSM:$NORMAL_SM\tPL:$PL" \ -t $NT -K 10000000 $FASTA$NORMAL_FASTQ_1$NORMAL_FASTQ_2 || \ { echo -n 'BWA error'; exit 1; } ) | \ $SENTIEON_INSTALL_DIR/bin/sentieon util sort -o normal_sorted.bam -t $NT --sam2bam -i - || \ { echo"Alignment2 failed"; exit 1; }(2)统计质控和质控绘图
# ****************************************** # 2a. Metrics for tumor sample # ****************************************** $SENTIEON_INSTALL_DIR/bin/sentieon driver -r $FASTA -t $NT -i tumor_sorted.bam \ --algo MeanQualityByCycle tumor_mq_metrics.txt \ --algo QualDistribution tumor_qd_metrics.txt --algo GCBias \ --summary tumor_gc_summary.txt tumor_gc_metrics.txt --algo AlignmentStat \ --adapter_seq '' tumor_aln_metrics.txt \ --algo InsertSizeMetricAlgo tumor_is_metrics.txt \ --algo CoverageMetrics tumor_coverage_metrics || \ { echo"Metrics1 failed"; exit 1; } $SENTIEON_INSTALL_DIR/bin/sentieon plot GCBias -o tumor_gc-report.pdf tumor_gc_metrics.txt $SENTIEON_INSTALL_DIR/bin/sentieon plot QualDistribution \ -o tumor_qd-report.pdf tumor_qd_metrics.txt $SENTIEON_INSTALL_DIR/bin/sentieon plot MeanQualityByCycle \ -o tumor_mq-report.pdf tumor_mq_metrics.txt $SENTIEON_INSTALL_DIR/bin/sentieon plot InsertSizeMetricAlgo \ -o tumor_is-report.pdf tumor_is_metrics.txt # ****************************************** # 2b. Metrics for normal sample # ****************************************** $SENTIEON_INSTALL_DIR/bin/sentieon driver -r $FASTA -t $NT -i normal_sorted.bam \ --algo MeanQualityByCycle normal_mq_metrics.txt \ --algo QualDistribution normal_qd_metrics.txt --algo GCBias \ --summary normal_gc_summary.txt normal_gc_metrics.txt --algo AlignmentStat \ --adapter_seq '' normal_aln_metrics.txt \ --algo InsertSizeMetricAlgo normal_is_metrics.txt \ --algo CoverageMetrics normal_coverage_metrics || \ { echo"Metrics2 failed"; exit 1; } $SENTIEON_INSTALL_DIR/bin/sentieon plot GCBias -o normal_gc-report.pdf normal_gc_metrics.txt $SENTIEON_INSTALL_DIR/bin/sentieon plot QualDistribution \ -o normal_qd-report.pdf normal_qd_metrics.txt $SENTIEON_INSTALL_DIR/bin/sentieon plot MeanQualityByCycle \ -o normal_mq-report.pdf normal_mq_metrics.txt $SENTIEON_INSTALL_DIR/bin/sentieon plot InsertSizeMetricAlgo \ -o normal_is-report.pdf normal_is_metrics.txt如果输入样本是WGS也可以添加一步统计:
$SENTIEON_INSTALL_DIR/bin/sentieon driver --temp_dir $TMPDIR -r $FASTA -t $NT \ -i tumor_sorted.bam --algo WgsMetricsAlgo tumor.wgs_metrics.txt $SENTIEON_INSTALL_DIR/bin/sentieon driver --temp_dir $TMPDIR -r $FASTA -t $NT \ -i normal_sorted.bam --algo WgsMetricsAlgo normal.wgs_metrics.txtDedup模块默认是标记重复 reads ,如果需要删除重复 reads ,可以添加--rmdup参数。
# ****************************************** # 3a. Remove Duplicate Reads for tumor # sample. It is possible # to remove instead of mark duplicates # by adding the --rmdup option in Dedup # ****************************************** $SENTIEON_INSTALL_DIR/bin/sentieon driver -t $NT -i tumor_sorted.bam --algo LocusCollector \ --fun score_info tumor_score.txt || { echo"LocusCollector1 failed"; exit 1; } $SENTIEON_INSTALL_DIR/bin/sentieon driver -t $NT -i tumor_sorted.bam --algo Dedup \ --score_info tumor_score.txt --metrics tumor_dedup_metrics.txt tumor_deduped.bam || \ { echo"Dedup1 failed"; exit 1; } # ****************************************** # 3b. Remove Duplicate Reads for normal # sample. It is possible # to remove instead of mark duplicates # by adding the --rmdup option in Dedup # ****************************************** $SENTIEON_INSTALL_DIR/bin/sentieon driver -t $NT -i normal_sorted.bam --algo LocusCollector \ --fun score_info normal_score.txt || { echo"LocusCollector2 failed"; exit 1; } $SENTIEON_INSTALL_DIR/bin/sentieon driver -t $NT -i normal_sorted.bam --algo Dedup \ --score_info normal_score.txt --metrics normal_dedup_metrics.txt normal_deduped.bam || \ { echo"Dedup2 failed"; exit 1; }3. 兼顾配对与无配对样本的体细胞变异分析
只需执行一个指令,即可调用肿瘤-正常匹配对的变异。
sentieon driver -t NUMBER_THREADS -r REFERENCE \ -i TUMOR_DEDUPED_BAM [-q TUMOR_RECAL_DATA.TABLE] \ -i NORMAL_DEDUPED_BAM [-q NORMAL_RECAL_DATA.TABLE] \ --algo TNscope \ --tumor_sample TUMOR_SAMPLE_NAME --normal_sample NORMAL_SAMPLE_NAME \ [--dbsnp DBSNP] OUT_TN_VCF过 Normal BAM 文件和 Normal 名输入,因为这些不是必需的;但由于缺乏正常样本,生殖系变异会出现在输出文件中:
sentieon driver -t NUMBER_THREADS -r REFERENCE \ -i TUMOR_DEDUPED_BAM [-q TUMOR_RECAL_DATA.TABLE] \ --algo TNscope --tumor_sample TUMOR_SAMPLE_NAME \ [--dbsnp DBSNP] OUT_TN_VCF为了在缺少匹配正常样本时过滤生殖系变异,你可以用通用 PON 替换匹配的正常样本,使用下文所述方法生成 PON vcf(Panel of Normal VCF)文件。
只需执行一个命令即可检测 tumor only 样本上的变异:
sentieon driver -t NUMBER_THREADS -r REFERENCE \ -i TUMOR_DEDUPED_BAM [-q TUMOR_RECAL_DATA.TABLE] \ --algo TNscope --tumor_sample TUMOR_SAMPLE_NAME \ --pon PANEL_OF_NORMAL_VCF [--dbsnp DBSNP] OUT_TN_VCF该命令需要以下输入:
线程数:计算中使用的计算机线程数。建议该数值不要超过系统可用计算核心数。
参考文件:参考 FASTA 文件的位置。请确保此参考文件与映射阶段使用的文件相同。
TUMOR_DEDUPED_BAM:肿瘤样本去重后预处理 BAM 文件的位置。
NORMAL_DEDUPED_BAM:正常样本去重后预处理 BAM 文件的位置。
TUMOR_SAMPLE_NAME:用于将 Map reads 比对到参考阶段的肿瘤样本的样本名称。
OUT_TN_VCF:包含变异体的输出文件的位置和文件名。
以下输入参数为可选:
TUMOR_RECAL_DATA.TABLE:肿瘤样本的 BQSR 分期结果存储位置。
NORMAL_RECAL_DATA.TABLE:NORMAL 样本的 BQSR 阶段存储结果的位置。
NORMAL_SAMPLE_NAME:在将读取数据映射到参考序列阶段使用的正常样本名称。
DBSNP:单核苷酸多态性数据库 (dbSNP) 的位置。dbSNP 中的变异更有可能被标记为种系变异,因为它们需要更多证据证明在正常人群中不存在。您只能使用一个 dbSNP 文件。
PANEL_OF_NORMAL_VCF:普通 VCF 文件中面板的位置和名称。
4. 生成PON VCF
为了生成您自己的用于 TNscope® 的 PON VCF 文件,您需要对 panel 中要使用的每个正常样本运行以下命令:
sentieon driver -t NUMBER_THREADS -r REFERENCE -i NORMAL_DEDUPED_BAM \ [-q NORMAL_RECAL_DATA.TABLE] --algo TNscope \ --tumor_sample NORMAL_SAMPLE_NAME OUT_NORMAL_VCF该命令需要以下输入:
线程数:计算中使用的计算机线程数。建议该数值不要超过系统可用计算核心数。
参考文件:参考 FASTA 文件的位置。请确保此参考文件与映射阶段使用的文件相同。
NORMAL_DEDUPED_BAM:正常样本去重后预处理 BAM 文件的位置。
NORMAL_SAMPLE_NAME:在将读取数据映射到参考序列阶段使用的正常样本名称。
OUT_NORMAL_VCF:包含输入正常样本相关变异的输出 VCF 文件的位置和名称。
以下输入参数为可选:
NORMAL_RECAL_DATA.TABLE:NORMAL 样本的 BQSR 阶段存储结果的位置。
生成所有要包含在面板中的 VCF 文件后,需要将它们合并成一个单独的 Normal VCF 面板。您可以使用 bcftools 来完成此操作:
BCF=/path_to_bcftools export BCFTOOLS_PLUGINS=$BCF/plugins DIR=/path_to_normal_vcf_file $BCF/bcftools merge -m all -f PASS,. --force-samples $DIR/*.vcf.gz |$BCF/bcftools plugin fill-AN-AC |$BCF/bcftools filter -i 'SUM(AC)>1' > panel_of_normal.vcf官方文档:
https://support.sentieon.com/docs/TNscope_usage/tnscope/#
Sentieon TNscope 流程 github 地址:
https://github.com/Insvast/bioinformatics/tree/main/TNscope_WGS
三、实际测试运行
本次测序运行使用 GIAB 项目的 HG008 样本和真实生产项目中的 Test 样本的 Fastq 数据作为输入,从而进行 TNscope 分析查看实际的运行效率。
1. Sentieon软件下载安装
https://ftp.insvast.com/user/Sentieon/release/sentieon-genomics-202503.03.tar.gz(适配 X86 架构 CPU 服务器,例如 Intel、 AMD、 曙光)
https://ftp.insvast.com/user/Sentieon/release/arm-sentieon-genomics-202503.03.tar.gz(适配 ARM 架构 CPU 服务器, 例如华为鲲鹏、 阿里倚天、 Ampere)
软件下载链接需用户名与密码,请于后台发送“Sentieon安装包”进行获取。
2. 测试项目使用配置
CPU 为 Intel(R) Xeon(R) Platinum 8358P CPU @ 2.60GHz 64 核心
内存为 512GB DDR4
系统为 Ubuntu 22.04.3 LTS
3. 参考基因组和dbsnp下载
curl -L \ -o 'hg38_ucsc.fa''https://ngi-igenomes.s3.amazonaws.com/igenomes/Homo_sapiens/UCSC/hg38/Sequence/WholeGenomeFasta/genome.fa' \ -o 'hg38_ucsc.fa.fai''https://ngi-igenomes.s3.amazonaws.com/igenomes/Homo_sapiens/UCSC/hg38/Sequence/WholeGenomeFasta/genome.fa.fai' \ -o 'hg38_ucsc.fa.amb''https://ngi-igenomes.s3.amazonaws.com/igenomes/Homo_sapiens/UCSC/hg38/Sequence/BWAIndex/genome.fa.amb' \ -o 'hg38_ucsc.fa.ann''https://ngi-igenomes.s3.amazonaws.com/igenomes/Homo_sapiens/UCSC/hg38/Sequence/BWAIndex/genome.fa.ann' \ -o 'hg38_ucsc.fa.bwt''https://ngi-igenomes.s3.amazonaws.com/igenomes/Homo_sapiens/UCSC/hg38/Sequence/BWAIndex/genome.fa.bwt' \ -o 'hg38_ucsc.fa.pac''https://ngi-igenomes.s3.amazonaws.com/igenomes/Homo_sapiens/UCSC/hg38/Sequence/BWAIndex/genome.fa.pac' \ -o 'hg38_ucsc.fa.sa''https://ngi-igenomes.s3.amazonaws.com/igenomes/Homo_sapiens/UCSC/hg38/Sequence/BWAIndex/genome.fa.sa' \ -O 'https://storage.googleapis.com/gcp-public-data--broad-references/hg38/v0/Homo_sapiens_assembly38.dbsnp138.vcf.gz' \ -O 'https://storage.googleapis.com/gcp-public-data--broad-references/hg38/v0/Homo_sapiens_assembly38.dbsnp138.vcf.gz.tbi'# HG008 来自 GIAB项目 wget -c https://42basepairs.com/download/web/giab/data_somatic/HG008/Liss_lab/superseded-2022-data/BCM_ILMN-somatic-analysis_20220816/HG008-N_Illumina_R1.fastq.gz wget -c https://42basepairs.com/download/web/giab/data_somatic/HG008/Liss_lab/superseded-2022-data/BCM_ILMN-somatic-analysis_20220816/HG008-N_Illumina_R2.fastq.gz wget -c https://42basepairs.com/download/web/giab/data_somatic/HG008/Liss_lab/superseded-2022-data/BCM_ILMN-somatic-analysis_20220816/HG008-T_Illumina_R1.fastq.gz wget -c https://42basepairs.com/download/web/giab/data_somatic/HG008/Liss_lab/superseded-2022-data/BCM_ILMN-somatic-analysis_20220816/HG008-T_Illumina_R2.fastq.gz # Test 样本为私有样本,不提供下载5. 分析运行
sbatch somatic_wgs_TNscope.HG008.sh sbatch somatic_wgs_TNscope.Test.sh6. 分析结果展示
├── [ 10M] output_tnscope.filtered.vcf.gz ├── [146K] output_tnscope.filtered.vcf.gz.tbi ├── [ 10M] output_tnscope.pre_filter.vcf.gz ├── [146K] output_tnscope.pre_filter.vcf.gz.tbi ├── [ 32K] run.log ├── [1.2K] tumor_aln_metrics.txt ├── [ 79G] tumor_coverage_metrics ├── [8.5K] tumor_coverage_metrics.sample_cumulative_coverage_counts ├── [6.3K] tumor_coverage_metrics.sample_cumulative_coverage_proportions ├── [6.9K] tumor_coverage_metrics.sample_interval_statistics ├── [ 14K] tumor_coverage_metrics.sample_interval_summary ├── [ 12K] tumor_coverage_metrics.sample_statistics ├── [ 160] tumor_coverage_metrics.sample_summary ├── [135G] tumor_deduped.bam ├── [9.0M] tumor_deduped.bam.bai ├── [1.9K] tumor_dedup_metrics.txt ├── [6.0K] tumor_gc_metrics.txt ├── [ 534] tumor_gc_summary.txt ├── [ 12K] tumor_is_metrics.txt ├── [4.3K] tumor_mq_metrics.txt ├── [ 295] tumor_qd_metrics.txt ├── [2.8G] tumor_score.txt ├── [3.0M] tumor_score.txt.idx ├── [134G] tumor_sorted.bam ├── [9.0M] tumor_sorted.bam.bai ├── [3.8K] tumor.wgs_metrics.txt7. 质控统计
SampleID | Test-normal | Test-tumor | HG008-normal | HG008-tumor |
|---|---|---|---|---|
TotalReads | 890057280 | 770464744 | 3124709250 | 2912610202 |
TotalBases(Gb) | 133.508592 | 115.569712 | 471.831097 | 439.804141 |
MappedRate(%) | 99.9773 | 99.9553 | 99.6472 | 99.7546 |
Duplicate(%) | 0.8671 | 1.7955 | 20.6579 | 20.1688 |
MeanDepth | 27.563 | 21.426 | 142.41 | 133.85 |
PCT_1X | 97.258 | 96.595 | 97.472 | 97.242 |
PCT_5X | 96.208 | 95.013 | 97.056 | 96.842 |
PCT_10X | 94.35 | 89.959 | 96.861 | 96.649 |
PCT_15X | 89.95 | 78.538 | 96.723 | 96.511 |
PCT_20X | 82.096 | 59.534 | 96.606 | 96.391 |
PCT_25X | 68.038 | 36.153 | 96.502 | 96.281 |
PCT_30X | 45.819 | 16.976 | 96.405 | 96.176 |
PCT_40X | 8.0265 | 2.5083 | 96.218 | 95.962 |
PCT_50X | 0.58713 | 0.72416 | 96.029 | 95.689 |
PCT_60X | 0.21731 | 0.36173 | 95.819 | 95.155 |
PCT_70X | 0.15295 | 0.23001 | 95.56 | 93.4 |
PCT_80X | 0.11544 | 0.15452 | 95.237 | 87.976 |
PCT_90X | 0.092602 | 0.10481 | 94.813 | 77.468 |
PCT_100X | 0.076159 | 0.073361 | 94.122 | 65.48 |
MedianInsertSize | 190 | 165 | 438 | 420 |
8. 耗时统计
Test | HG008 | |
|---|---|---|
Normal 比对+排序时间(min) | 37.49 | 379.43 |
Normal 去重时间(min) | 4.68 | 10.37 |
Normal 统计 metrics 质控信息时间(min) | 2.41 | 6.12 |
Normal LocusCollector 统计 | 1.13 | 3.67 |
Tumor 比对+排序时间(min) | 71.53 | 406.08 |
Tumor 去重时间(min) | 5.67 | 11.38 |
Tumor统计metrics 质控信息时间(min) | 2.65 | 6.57 |
Tumor LocusCollector 统计 | 1.51 | 4.72 |
TNscope变异检测时间(min) | 30.69 | 9.02 |
总时间 | 157.75 | 837.35 |
在 64 核测试服务器上 tumor 115Gb+normal 133Gb 数据量的人类 WGS 数据(27.5X Tumor + 21.4X Normal WGS 样本)最快分析仅耗时 157.75 分钟,若 TNscope 前面步骤同时跑,时间能进一步压缩到 112 分钟,极大缩短了分析时间,加快科研成果转化。
Sentieon在不断地优化算法的运行效率,为科研工作者提供更快速、更经济的基因检测方案。若您刚好有需要检测的数据,不妨来申请试用Sentieon吧!
Sentieon软件介绍
Sentieon为完整的纯软件基因变异检测二级分析方案,其分析流程完全忠于BWA、GATK、MuTect2、STAR、Minimap2、Fgbio、picard等金标准的数学模型。在匹配开源流程分析结果的前提下,大幅提升WGS、WES、Panel、UMI、ctDNA、RNA等测序数据的分析效率和检出精度,并匹配目前全部第二代、三代测序平台。
Sentieon软件团队拥有丰富的软件开发及算法优化工程经验,致力于解决生物数据分析中的速度与准确度瓶颈,为来自于分子诊断、药物研发、临床医疗、人群队列、动植物等多个领域的合作伙伴提供高效精准的软件解决方案,共同推动基因技术的发展。
截至2026年4月份,Sentieon已经在全球范围内为1860+用户提供服务,用户处理超过7400+PB数据量,被世界一级影响因子刊物如NEJM、Cell、Nature等广泛引用,引用次数超过1900篇。此外,Sentieon连续数年摘得了Precision FDA、Dream Challenges等多个权威评比的桂冠,在业内获得广泛认可。
