PacBio,又称单分子实时荧光测序,采用单链发卡状的接头使文库两端的接头相连,形成滚环结构,测序的时候采用荧光对ZMW进行照射,DNA聚合酶在ZMW孔中将互补的荧光dNTP捕获,从而得到一个荧光信号。
PacBio HiFi
https://www.pacb.com/technology/hifi-sequencing/
专为 PacBio 数据设计,支持直接处理 subreads.bam 或 ccs.bam 文件,保留 PacBio 长读长特性。
安装与使用
# 安装(通过 conda) conda create -n bam2fastx conda activate bam2fastx conda install -c bioconda bam2fastx # 转换命令 bam2fastq -o output_prefix input.subreads.bam # 生成 output_prefix.fastq bam2fasta -o output_prefix input.subreads.bam # 可选 FASTA 格式:ml-citation{ref="3" data="citationList"}
需注意输入 BAM 文件的排序方式,避免输出异常:
# 双端数据需按名称排序(单端可选) samtools sort -n -o sorted.bam input.bam # 按名称排序 bedtools bamtofastq -i sorted.bam -fq output.fq # 单端输出 bedtools bamtofastq -i sorted.bam -fq output_1.fq -fq2 output_2.fq # 双端输出:ml-citation{ref="7" data="citationList"}
注意:单端转换时可能重复输出序列,需检查 output.fq 的序列数量是否与 BAM 一致。
(2) Samtools
适用于简单转换场景:
samtools fastq input.bam > output.fastq # 直接提取 FASTQ:ml-citation{ref="1" data="citationList"}
若需生成高精度 HiFi reads,可先执行 CCS(Circular Consensus Sequencing)校正:
# 生成 CCS reads ccs -j 8 input.subreads.bam output.ccs.bam # 线程数设为 8:ml-citation{ref="4" data="citationList"} bam2fastq -o hifi_reads output.ccs.bam # 转换 CCS 结果为 FASTQ:ml-citation{ref="4" data="citationList"}
转换完成后需检查数据完整性:
# 统计序列数与长度 seqkit stat output.fastq # 安装 seqkit:conda install -c bioconda seqkit # 对比 BAM 与 FASTQ 记录数 samtools view -c input.bam # BAM 总记录数 grep -c "^@" output.fastq # FASTQ 序列数(应为 BAM 记录数的 1/4):ml-citation{ref="7,8" data="citationList"}
工具对比与选择建议
常见问题转换后序列长度异常:检查 BAM 是否包含质量值(如 QUAL 字段缺失会导致 FASTQ 格式错误)。性能优化:大文件处理时建议增加线程参数(如 -j 8)提升速度。
PacBio 的 .pbi 文件(PacBio Index)是用于加速 BAM 文件访问的索引文件,其核心功能与特点如下:
pbindex input.subreads.bam # 生成 input.subreads.bam.pbi:ml-citation{ref="1,6" data="citationList"}
内容结构:包含 BAM 中每条记录的物理位置、长度等关键信息,以二进制格式存储。3. 应用场景数据拆分:在混合样本测序中,结合 barcode 信息快速拆分数据(如使用 lima 工具)。质量控制:辅助 ccs 或 bam2fastq 工具过滤低质量 reads。
以下是判断 PacBio BAM 文件是否已完成 CCS(Circular Consensus Sequencing)处理的综合方法:
使用 samtools view -H 查看头信息中的 @RG 字段,判断是否包含 CCS 处理标记:
samtools view -H input.bam | grep '@RG'
Subreads BAM:@RG 中 DS:READTYPE=SUBREAD。CCS BAM:@RG 中可能出现 DS:READTYPE=CCS 或 DS:BINDINGKIT=HiFi 等标识。3. 分析 Read 名称
通过 samtools view 查看 read 名称:
samtools view input.bam | head -n 1 | cut -f 1
Subreads:名称格式为 //_(如 m64011_230609_001234/1/0_1000)。CCS reads:名称可能包含 ccs 后缀(如 m64011_230609_001234/1/ccs)或明确标注为 HiFi。4. 统计 ZMW 子读数量
CCS 处理要求每个 ZMW(零模波导孔)至少包含 3 次完整测序循环(passes)。通过以下命令统计单孔子读数量:
samtools view input.bam | awk '{split($1,a,"/"); print a[2]}' | sort | uniq -c
Subreads BAM:每个 ZMW 对应多个子读(如 3、5 等)。CCS BAM:每个 ZMW 仅保留一条校正后的序列(计数为 1)。5. 验证序列长度与质量
通过 bam2fastq 转换为 FASTQ 后检查质量值分布:
bam2fastq -o test input.bam seqkit stat test.fastq
Subreads:平均读长较短(如 10-20 kb),质量值波动较大。CCS reads:读长均匀(如 15-25 kb),质量值普遍高于 Q20。总结判断流程
通过以上方法可快速确认 BAM 文件是否已完成 CCS 处理。