3、安装常用工具:samtools、bcftools、IGV、bedtools、GATK等

说实话,做多组学格式转换,工具就是你的武器。你想想看,没有samtools怎么操作BAM文件?没有bcftools怎么处理VCF?这些工具就像bioconductor里的瑞士军刀,每一个都有自己独特的用途。我记得刚入行那会儿,连samtools view和samtools sort都分不清,真是踩了不少坑。

下面是我个人常用的版本推荐,实测稳定。你直接照着装就行,别去追最新的,稳定压倒一切。

工具 推荐版本 主要用途 安装方式
samtools 1.16+ BAM/SAM/CRAM 操作 conda / 源码
bcftools 1.16+ VCF/BCF 操作 conda / 源码
IGV 2.14+ 可视化 reads 比对 官网下载 / conda
bedtools 2.30+ 基因组区间操作 conda / 源码
GATK 4.3+ 变异检测、数据预处理 conda / 官网jar

3.1 samtools:BAM文件的掌门人

samtools简直是处理比对数据的必备工具。它的核心功能是操作BAM、SAM、CRAM文件。说白了,你读到的测序数据比对到基因组后,就靠samtools来管理。

我个人习惯,每次拿到BAM文件,第一件事就是跑一下samtools flagstat,看看数据质量怎么样。

# 安装(conda一条命令搞定)
conda install -c bioconda samtools=1.16

# 常用命令速览
# 查看BAM文件统计信息
samtools flagstat sample.bam

# 排序BAM文件
samtools sort -o sample.sorted.bam sample.bam

# 建立索引
samtools index sample.sorted.bam

# 提取特定区域的reads
samtools view -b sample.sorted.bam chr1:1000000-2000000 > region.bam

注意:排序和建索引是必须的。未排序的BAM文件,很多下游工具会报错。我曾经遇到过一次,IGV死活打不开BAM文件,查了半天,原来是没建索引。嗯,这种低级错误犯一次就够了。

3.2 bcftools:VCF文件的大管家

bcftools和samtools是兄弟项目。它专门处理VCF和BCF格式。你可能问为什么会有BCF?说白了,BCF就是VCF的二进制版本,速度快,空间省,适合大规模计算。

我在项目中遇到过,有些变异位点需要过滤掉低质量的。bcftools filter就特别好用。

# 安装
conda install -c bioconda bcftools=1.16

# 查看VCF文件头部
bcftools head input.vcf.gz

# 过滤低质量变异(QUAL < 30)
bcftools filter -i 'QUAL>=30' -o filtered.vcf input.vcf.gz

# 合并多个VCF文件
bcftools merge -o merged.vcf.gz file1.vcf.gz file2.vcf.gz

# 统计变异信息
bcftools stats input.vcf.gz > stats.txt

小技巧:当你需要处理全基因组范围的VCF时,建议先用bcftools view -h查看头部,确保样本ID和参考基因组版本正确。否则,后期转换格式可能会出错。

3.3 IGV:可视化神器

IGV全称Integrative Genomics Viewer。它的作用就是让你“看”数据。说实话,不看一眼IGV,我都不知道自己处理的BAM文件到底长什么样。

安装很简单。现在有两种主流方式:

# 方式一:conda(适合服务器无界面环境)
conda install -c bioconda igv

# 方式二:官网下载(推荐桌面版)
# 直接去 https://igv.org 下载安装包
# Windows/macOS/Linux都有对应版本

为什么要装IGV?因为你要验证格式转换是否成功。比如你从BAM转成CRAM,可以用IGV打开看reads对不对。同样的,从VCF转成BCF,也可以在IGV里检查位点有没有丢失。

我的经验:在写脚本批量处理前,先拿一个小文件在IGV里手动看一眼。没问题了,再上全基因组尺度。这样能避免你在50个样本跑完后才发现格式问题。

3.4 bedtools:区间操作的利器

bedtools不是处理VCF和BAM的核心工具,但它是「多组学」环节里必不可少的拼图。你想想看,如果你需要找某个基因区域的覆盖度,或者合并多个样本的区间,那就是bedtools的活儿。

# 安装
conda install -c bioconda bedtools=2.30.0

# 常用操作
# 取交集:找两个bed文件重叠的区域
bedtools intersect -a regions.bed -b target.bed > overlap.bed

# 计算覆盖度
bedtools coverage -a regions.bed -b sample.bam > coverage.txt

# 合并重合区间
bedtools merge -i regions.bed > merged.bed

注意:bed文件必须是chromosome coordinate sorted的。我刚开始用的时候,没排序就直接跑bedtools intersect,结果跑出来的结果全是乱的。后来才发现,bedtools要求输入文件必须已经排好序,不然它不认。

3.5 GATK:变异检测的标准Pipeline

GATK,全称Genome Analysis Toolkit,是Broad Institute开发的。它在多组学格式转换中的作用主要是数据标准化。比如,你要把原始BAM文件中的reads重校准、重比对,最后生成标准的GVCF,都离不开GATK。

安装GATK稍微有点讲究。

# 推荐使用conda安装最新稳定版
conda install -c bioconda gatk4=4.3.0.0

# 或者下载jar包
# wget https://github.com/broadinstitute/gatk/releases/download/4.3.0.0/gatk-4.3.0.0.zip
# unzip gatk-4.3.0.0.zip

我建议:GATK的Java版本有讲究。默认用OpenJDK 11,不要用Java 8或者Java 17。我以前试过一次Java 8,结果GATK的HaplotypeCaller跑着跑着就OOM了。换成Java 11就好了。

核心思路:这几个工具的关系是这样的——samtools做BAM的“骨架”操作,bcftools做VCF的“提炼”操作,bedtools做“区间”操作,IGV做“检查”,GATK做“标准化”。你只要掌握好这几个,多组学格式转换的底子就扎好了。

3. 工具安装与职能关系图 多组学格式转换与标准化 VCF ↹ BAM 转换核心 原始测序数据 FASTQ / BAM / CRAM 变异数据 VCF / BCF / GVCF 区间数据 BED / GFF / GTF samtools BAM/SAM 操作与管理 bcftools VCF/BCF 过滤与合并 bedtools 基因组区间演算 IGV 可视化验证 GATK 数据标准化与变异检测