Skip to content
This repository was archived by the owner on Mar 26, 2026. It is now read-only.
Lianm edited this page Oct 21, 2024 · 10 revisions

Bamboo说明文档

基本介绍

Bamboo是一款专门为三代测序数据开发的质控工具,支持无参(reference-free, or pre-alignment)或有参(reference-based, or post-alignment)QC,支持 fastq 或 bam 格式文件作为输入,根据不同的输入组合以启动不同的分析模式:

即:

  • Fastq only:无参QC
  • Bam & ref.fa:有参QC
  • Fastq & ref.fa:无参&有参QC

分析完成后分别会得到以下结果:

Reference-free QC

  • Sequencing summary:以表格形式展示从fastq文件统计得到的全局测序数据信息,包括Total reads、Total bases等;
  • Sequence length:以图形可视化展示从fastq文件统计得到的read长度分布信息;
  • Sequence quality:以图形可视化展示从fastq文件统计得到的read/base测序质量分布信息;
  • Sequence content:以图形可视化展示从fastq文件统计得到的read的碱基组成信息,包括A/T/C/G碱基组成、GC含量等;

Reference-based QC

  • Mapping summary:以表格形式展示从bam文件得到的全局比对信息,包括Total reads、Unmapped reads等;
  • Coverage and bias:以图形可视化展示从bam文件统计得到的基因组覆盖信息,包括全基因组覆盖度、覆盖度分布等;
  • Sequence accuracy:以图形可视化展示从bam文件统计得到的read准确率/一致性信息,包括read准确率分布、总体错误水平等;
  • Low complexity regions:以图形可视化展示从bam文件统计得到的低复杂度区域,即homo/heteropolymer区域的测序错误模式,以及它们对测序错误的贡献度;

安装

基本使用

无参QC模式

若只提供fastq文件,则执行无参QC,命令示例如下:

bamboo -i input1.fastq input2.fastq -o output_dir --sample_size 50000 --seed 123

其中,

-i/--sequence_path:指定fastq文件(可以是纯文本或gz文件)路径,可以给定一个或多个文件,文件之间用空格分隔开。注意:无论给定的是一个还是多个fastq文件,最终都会被合并成一个文件进行处理;

-o/--output_dir:指定输出目录,会在该目录下创建一个名叫sequence的子目录来保存分析结果;

--sample_size:指定抽样量,默认为1e5,也可以设定为-1以不执行抽样;

--seed:指定随机抽样过程的随机数种子;

注意:无参QC无并行模式,故设置-t参数无效

有参QC模式

若同时提供bam文件和ref.fa,则执行有参QC,命令示例如下:

bamboo -b input.bam -r reference.fasta -o output_dir --realign

其中,

-b/--bam_path:指定bam文件路径,要求输入的bam文件满足两个条件:1)CIGAR列中以=X区分展示M状态;2)不包含secondary alignment。若不满足其中的任意一个条件,请添加--realign参数以调用minimap2进行重新比对;

-r/--reference_path:指定参考序列的fasta文件(可以是纯文本或gz文件)路径;

-o/--output_dir:指定输出目录,会在该目录下创建一个名叫alignment的子目录来保存分析结果;

--realign:调用minimap2进行重新比对;

-t/--threads:指定有参QC的并行线程数。注意,该参数仅在执行有参QC时有效;

无参&有参QC模式

若同时提供fastq文件和ref.fa,则执行无参&有参QC,命令示例如下:

bamboo \
-i input.fastq.gz -r reference.fasta.gz \
-o test_bamboo_fastqtobam2 \
--sample_size 10000 \
-t 4 \
--align_all \
--minimap2_args "-ax map-ont --eqx --secondary=no"

其中,

-o/--output_dir:指定输出目录,会在该目录下创建两个分别名叫sequence和alignment的子目录来保存分析结果;

-t/--threads:指定有参QC的并行线程数。注意,该参数仅在执行有参QC时有效。该参数的设定会对minimap2运行产生影响,即若在--minimap2_args未设定线程数,则会将其设为与-t的值一致;

--align_all:在执行有参QC之前,会调用minimap2执行参考基因组比对,默认情况下使用抽样后的fastq文件进行比对,若设置该参数,则会使用原始fastq文件进行比对;

--minimap2_args:设置调用minimap2执行参考基因组比对时的参数组合,默认为“-ax map-ont --eqx --secondary=no

结果说明/解读

我们提供了一个示例网页报告,你可以下载到本地后,用浏览器打开查看

1. 无参QC

1.1. Sequencing summary

相关统计数据保存在<outdir>/sequence/fastq_overall_stat.txt

1.2. Sequence length

Sequence length

这张图展示了read长度的分布情况,横坐标表示read长度,纵坐标表示具有该长度的read数量

Read length & quality

这张图展示了read长度与质量值的关系,横坐标表示read长度,纵坐标表示质量值。颜色深浅表示该位置(对应长度与质量)reads的密度,密集度越高颜色越深

Cumulative base fraction

这张图展示了read长度的累积碱基分数分布情况,即长度大于等于n bp的reads的总数据量占比。虚线位置表示这些reads的N50长度。

1.3. Sequence quality

Read quality

此图展示了reads质量值的分布情况。横坐标表示reads的质量值,纵坐标表示具有该质量值的reads数量。一条read的质量值的计算方法为:先计算各碱基错误的均值q’ ,然后按照公式-10 log q’转换成Phred Q

Base quality in relative position

此图展示了reads在相对位置的碱基质量值分布。横坐标表示reads的百分比位置,纵坐标表示所有reads在该百分比位置碱基的平均质量值。

Base quality in 5’/3’ ends

这两张图展示了reads首尾或5’/3’端1000 bp内,每个碱基位置的平均碱基质量值分布情况。x轴表示从5'端或3’端起始的相对位置,y轴表示该位置所有reads的平均碱基质量值。

1.4. Sequence content

Base content in 5’/3’ ends

以上两张图展示了reads首尾或5’/3’端1000 bp内,4种碱基(ATCG)的占比。x轴表示从5'端或3’端起始的相对位置,y轴表示各碱基的比例。

Read GC content

这张图展示了每个reads的GC含量分布情况。横坐标表示GC含量百分比,纵坐标表示具有该GC含量的reads数量。

Homo/heteropolymer in 3’ ends

以上4张图分布展示了reads 3’ 端1000 bp内,Homo/Heteropolymer的事件(events)频率和长度(length)的分布情况。横坐标表示相对于reads末端起始的位置,纵坐标表示在该位置各种Homo/Heteropolymer的累积事件频率或累积长度。例如,如果read1中位置900-910是由A形成的homopolymer,则900到910位置的累积事件频率会增加1,累积长度会增加10

Homo/heteropolymer occurrences

以上两张图展示了平均每10kb区域内Homo/Heteropolymer事件的发生频率。横坐标表示Homo/Heteropolyme的长度,纵坐标表示不同种类Homo/Heteropolyme在每10kb内的发生次数

2. 有参QC

2.1. Mapping summary

相关统计数据保存在<outdir>/alignment/bam_info.txt

2.2. Coverage and bias

Coverage along chromosomes

此图展示了基因组各染色体的覆盖情况,每条染色体占一行,横坐标是染色体位置(以Mb为单位),纵坐标代表该位置的测序深度。图中使用颜色区分不同染色体,以帮助识别高覆盖和低覆盖区域,评估数据的完整性和均匀性。

注意:

(1)由于图片分辨率的原因,不可能展示原始每个碱基的实际覆盖深度,故实际展示的覆盖深度为一定窗口内的平均覆盖深度。

(2)为了提供更为有信息的统计结果,会对过短的染色体或contig(长度短于最长染色体的1%)进行过滤而不展示。

(3)图中展示的覆盖深度为基于全基因组平均深度标准化后的,即若全基因组平均深度为5X,某一区域的深度为10X,其则标准化后深度为2X。

(4)若在无参&有参QC分析模式下,默认会使用随机抽样的序列进行比对并进行下游的分析,故深度相关信息是基于该抽样结果得到的,并按照抽样比例进行了等比例放大,以近似估计原始全数据的情况,而非原始全数据,此时的深度相关的统计结果并不能完全反映原始全数据的真实情况,请注意!为此,我们在网页报告的对应部分,以更为醒目的方式给出了提示:

即折叠图片的展示,并给出提示框,若想要查看图片需要点击Display image按钮以展开显示图片,但是图片上会加上Demo字样的水印,该水印仅是网页蒙版效果,不影响用户右键保存以得到无水印的原图片

若想要在该分析模式下,得到原始全数据的真实情况,可以添加--align_all参数,不过进行全数据的比对和下游分析可能带来较大的计算开销

Coverage fraction

此图展示了基因组达到不同覆盖深度(≥ n X)的区域的占比。横坐标是覆盖深度,纵坐标是达到该覆盖深度的基因组比例,帮助评估测序数据的覆盖度和均匀性。

注意,若在无参&有参QC分析模式下,默认会使用随机抽样的序列进行比对并进行下游的分析,故深度相关信息是基于该抽样结果得到的,并按照抽样比例进行了等比例放大,以近似估计原始全数据的情况,而非原始全数据,此时的深度相关的统计结果并不能完全反映原始全数据的真实情况,请注意!

更为详细的说明,请查看Coverage along chromosomes部分

GC content vs. coverage depth

此图展示了GC含量与覆盖深度之间的关系。横坐标是基因组区间的GC含量百分比,纵坐标是这些区间的测序深度。图中虚线表示平均覆盖深度,颜色深浅表示数据点的密度分布,边缘的直方图分别表示GC含量区间和覆盖深度区间的分布数量。

注意,若在无参&有参QC分析模式下,默认会使用随机抽样的序列进行比对并进行下游的分析,故深度相关信息是基于该抽样结果得到的,并按照抽样比例进行了等比例放大,以近似估计原始全数据的情况,而非原始全数据,此时的深度相关的统计结果并不能完全反映原始全数据的真实情况,请注意!

更为详细的说明,请查看Coverage along chromosomes部分

2.3. Sequence accuracy

Read accuracy

此图展示了read的准确率分布情况。read的准确率基于参考基因组的比对结果计算得到,即match bases/read align length。横坐标是read比对到参考基因组的一致性百分比,纵坐标是具有该一致性的reads比例。此分析用以帮助用户评估测序数据的准确性。

Overall error rate

此图展示了不同类型错误(插入insertion、缺失deletion、错配mismatch)的整体错误率分布。横坐标是不同错误类型(插入、缺失、错配),纵坐标是百分比错误率,该分析用以帮助用户了解当前测序数据的整体错误率水平。

Read quality vs. error-rate

此图展示了read错误率与质量值之间的关系。横坐标为read质量值,纵坐标为read错误率,计算公式为:1 -match bases/read align length。Expectation直线为标准参考线,即read错误率与质量值若完全对应的情况下,应该落在这条直线上。

此分析用以帮助用户了解read错误率与质量值之间的关系,以及评估fastq文件中给出的质量值是否准确。

Substitution errors

此图展示了碱基替换(substitution)错误事件发生频率的分布情况。纵坐标是不同种类的碱基替换事件(如A→G,C→T等),横坐标是每种替换发生的错误率(百分比),帮助用户了解不同类型替换错误的发生频率。

Indel size

此图展示了不同长度(bp)的插入(insertion)和缺失(deletion)错误事件发生比例的分布情况。横坐标是插入或缺失的长度(bp),纵坐标是该长度的插入或缺失错误事件在所有插入或缺失错误中的比例。

Errors in read position

此图展示了随机抽样的read中错误事件的发生位置和发生频率,其中short reads(长度不超过6kb)部分按照长度降序排列,long reads(长度超过6kb)部分选取头、中、尾各2kb,且按照头部2kb的错误事件发生频率进行降序排列。每种随机抽取200条。

此图展示read 5’端10kb范围内,各碱基位置的错误事件(events)发生频率和错误率(length)水平,注意图中实际展示结果以50bp一个窗口进行了平滑处理。

2.4. Low complexity regions

Homopolymer expansion/contraction

此图展示了不同长度的homopolymer区域在测序结果中发生的长度膨胀(expansion)或收缩(contraction)情况的相对误差分布。对于基因组中(X)*n的homopolymer区域,若在测序结果中仍然保持(X)*m的形式,如果长度一致,即m=n,则测序正确,若长度发生改变,即m≠n,则我们将这种情况成为发生expansion(m>n)或contraction(m<n)错误,除此之外的情况,都归为其他复杂情况(complex)。

横坐标是参考序列中homopolymer区域的长度,纵坐标不同色带的宽度为不同错误情况的占比。

左图是不区homopolymer区域碱基组成的总体错误情况,右图则是细分各个homopolymer区域碱基组成下,各自错误情况。

此图与上图相似,以不同的形式展示不同长度的homopolymer区域在测序结果中发生的长度膨胀(expansion)或收缩(contraction)情况的相对误差分布。

横坐标是测序结果中的homopolymer区域长度,纵坐标是参考序列中的homopolymer区域长度,方块中的数字大写与颜色深浅表示对应情况下的比例高低。左图中明显颜色较深的对角线区域为横纵坐标取值相同,即长度检测正确的情况,该对角线以上,y>x,对应长度收缩(contraction)情况,该对角线以下,y<x,对应长度膨胀(expansion)情况。

左图是不区homopolymer区域碱基组成的总体错误情况,右图则是细分各个homopolymer区域碱基组成下,各自错误情况。

Heteropolymer expansion/contraction

与上面的homopolymer expansion/contraction部分类似,不过分析的目标区域为heteropolymer区域,即展示不同长度的heteropolymer区域在测序结果中发生的长度膨胀(expansion)或收缩(contraction)情况的相对误差分布。对于基因组中(XY)*n的heteropolymer区域,若在测序结果中仍然保持Y*i + (XY)*m + Y*j(i,j取值0或者1)的形式,如果长度一致,即2m+i+j=2n,则测序正确,若长度发生改变,即2m+i+j≠2n,则我们将这种情况成为发生expansion(2m+i+j>2n)或contraction(2m+i+j<2n)错误,除此之外的情况,都归为其他复杂情况(complex)。

横坐标是参考序列中heteropolymer区域的长度,纵坐标不同色带的宽度为不同错误情况的占比。

左图是不区heteropolymer区域碱基组成的总体错误情况,右图则是细分各个heteropolymer区域碱基组成下,各自错误情况。

此图与上图相似,以不同的形式展示不同长度的heteropolymer区域在测序结果中发生的长度膨胀(expansion)或收缩(contraction)情况的相对误差分布。

横坐标是测序结果中的heteropolymer区域长度,纵坐标是参考序列中的heteropolymer区域长度,方块中的数字大写与颜色深浅表示对应情况下的比例高低。左图中明显颜色较深的对角线区域为横纵坐标取值相同,即长度检测正确的情况,该对角线以上,y>x,对应长度收缩(contraction)情况,该对角线以下,y<x,对应长度膨胀(expansion)情况。

左图是不区heteropolymer区域碱基组成的总体错误情况,右图则是细分各个heteropolymer区域碱基组成下,各自错误情况。

Errors near homo/heteropolymer

此图展示了Deletion、Insertion和Mismatch等错误类型事件中落在homo/heteropolymer区域附近的累计长度比重,用以估计homo/heteropolymer对不同错误类型事件的贡献度。这里“临近(near)”的定义为,落在homo/heteropolymer区域内,或者紧邻区间两侧,即只要与目标区间前后延伸1bp的区间有坐标重叠,就属于“临近”的情况。若一个错误事件落在homopolymer区间和heteropolymer区域的分界点等情况,例如落在AAAACAC 的A碱基位置,则属于临近Homo/hetero的情况

此图展示了落在homopolymer区域附近的Deletion、Insertion和Mismatch等错误类型事件中,落在不同长度homopolymer区域附近的累计长度比重。一个错误事件若落在多个homopolymer区域附近,则长度为多个homopolymer区域长度的加和。

名词解释

homo/heteropolymer

如下图所示,以(XY)*n形式出现的连续碱基组成的DNA片段,我们称之为Heteropolymer区域(n≥2);以(X)*n形式出现的连续碱基组成的DNA片段,我们称之为Homopolymer区域(n≥3)

N50

N50长度‌是评估基因组组装质量的一个重要指标,它反映了组装序列的长度分布情况。具体来说,N50是将所有组装得到的序列(无论是contig还是scaffold)按照长度从大到小排序后,从最长序列开始累加长度,直到累加的总长度超过整个基因组总长度的一半时,最后一个被累加的序列的长度即为N50长度。这个指标用于衡量基因组组装的质量,N50长度越长,说明组装出来的片段长度越长,从而在一定程度上证实了组装结果越好‌

read质量值

read质量值是其各碱基质量值的综合反映,一条read的质量值的计算方法为:先计算各碱基错误的均值q’ ,然后按照公式-10 log q’转换成Phred Q