Picard
Picard 是一套基于 Java 开发的命令行工具集,由 Broad Institute 基因组测序平台开发并维护。它专门用于处理和分析高通量测序(HTS)数据,特别是 SAM / BAM / CRAM 格式的比对文件。
在生物信息学分析流程中,Picard 被誉为处理 SAM/BAM 文件的“瑞士军刀”。它弥补了 Samtools 在某些高级功能上的不足,特别是在去除 PCR 重复(MarkDuplicates)和添加测序组信息(AddOrReplaceReadGroups)方面,是 GATK 最佳实践流程(Best Practices)中不可或缺的预处理工具。
Picard 能够计算丰富的质控(QC)指标(如插入片段大小、GC 偏好性),帮助研究人员评估测序库的质量。
GATK 的“开路先锋”
在运行 GATK 进行变异检测之前,原始的比对文件(BAM)必须经过严格的“清洗”和“标准化”,这正是 Picard 的主战场。
| 核心命令 | 功能描述 | 生物学意义 |
|---|---|---|
| MarkDuplicates | 识别并标记 PCR 重复(Duplicates)。 | 防止因扩增偏好导致的变异频率(AF)计算错误,避免假阳性。 |
| AddOrReplaceReadGroups | 为 BAM 文件添加 Read Group (@RG) 头信息。 | GATK 必须依赖 RG 标签来区分不同的样本、文库和测序通道(Lane)。 |
| CollectInsertSizeMetrics | 统计双端测序的插入片段长度分布。 | 评估建库质量。若插入片段过短,可能导致测序 Reads 读通接头(Adapter)。 |
| LiftOverIntervalList | 将基因组坐标在不同版本间(如 hg19 -> hg38)转换。 | 实现旧数据的复用,使其能与新参考基因组进行比对。 |
Picard vs. Samtools:瑜亮之争?
两者都是处理 BAM 文件的神器,但侧重点不同。现代生信流程中常结合使用:用 BWA 比对,用 Samtools 排序/索引,用 Picard 去重/质控。
- Samtools (C语言):
• 优势:速度快,内存占用小。
• 擅长:排序 (Sort)、索引 (Index)、查看 (View)、切片 (Slice)。 - Picard (Java):
• 优势:功能复杂,可扩展性强,与 GATK 兼容性完美。
• 擅长:复杂的逻辑操作(如跨染色体的去重)、详细的统计报告、Header 修复。
关键相关概念 [Key Concepts]
1. PCR Duplicates (PCR 重复): 在建库过程中,同一个 DNA 片段被 PCR 扩增多次,产生完全相同的 Reads。这些重复会人为放大该片段上的测序错误(假阳性),或干扰变异频率计算,必须使用 Picard 标记并忽略。
2. Read Group (@RG): BAM 文件的“身份证”。包含 ID (唯一标识), SM (样本名), LB (文库名), PL (测序平台)。GATK 在进行 VQSR 和 BQSR 时,完全依赖 RG 信息来对不同样本进行分组建模。
3. HTSJDK: Picard 的底层核心库。它定义了 Java 操作 SAM/BAM/VCF 文件的 API 接口。许多其他的 Java 生信工具(包括 GATK)都依赖于 HTSJDK。
学术参考文献 [Academic Review]
[1] Broad Institute. (GitHub). Picard Tools Documentation. GitHub / Broad.
[点评]:Picard 官方并未发表独立的学术论文,其文档和源码库是引用的主要来源。通常在论文中引用为 "Picard toolkit, Broad Institute, GitHub Repository".
[2] Van der Auwera GA, et al. (2013). From FastQ data to high confidence variant calls: the Genome Analysis Toolkit best practices pipeline. Curr Protoc Bioinformatics.
[点评]:详细描述了 GATK 最佳实践流程,其中 Picard 的预处理步骤(MarkDuplicates 等)被确立为标准操作。