You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于SLURM HPC批量运行GATK4 HaplotypeCaller的技术方案咨询

多样本批量运行GATK4 HaplotypeCaller的SLURM脚本实现

背景

已完成黑麦草全基因组测序(PE 150bp)数据预处理:通过trim galore去除低质量reads,bwa比对至参考基因组,完成BAM排序、添加RG标签,并使用以下SLURM脚本完成重复序列标记。现需编写类似脚本,实现多样本批量运行GATK4 HaplotypeCaller进行SNP检测。

参考的重复序列标记脚本

#!/bin/bash
#SBATCH --job-name=markdup
#SBATCH --array=1-11
#SBATCH --ntasks=1
#SBATCH --cpus-per-task=4
#SBATCH --mem=30G
#SBATCH --time=02:00:00
#SBATCH --output=logs/markdup_%A_%a.out
#SBATCH --error=logs/markdup_%A_%a.err


module load apps/samtools/1.9/gcc-14.1.0
module load apps/picard/3.0.0/bin

# 获取样本信息
LINE=$(sed -n "${SLURM_ARRAY_TASK_ID}p" samples.tsv)
SAMPLE=$(echo $LINE | cut -d' ' -f1)

IN_BAM=${SAMPLE}.rg.bam
OUT_BAM=${SAMPLE}.dedup.bam
METRICS=${SAMPLE}.dedup.metrics.txt

if [[ ! -f "${IN_BAM}" ]]; then
  echo "缺失输入BAM文件: ${IN_BAM}" >&2
  exit 2
fi

# 运行Picard MarkDuplicates
picard MarkDuplicates \
    I=${IN_BAM} \
    O=${OUT_BAM} \
    M=${METRICS} \
    CREATE_INDEX=true \
    VALIDATION_STRINGENCY=SILENT \
    REMOVE_DUPLICATES=false

# 结果快速检查
echo "${SAMPLE}的重复序列统计信息:"
head -n 20 ${METRICS} || echo "未生成统计文件"

samtools flagstat ${OUT_BAM} || echo "samtools flagstat处理${OUT_BAM}失败"
samtools view -H ${OUT_BAM} | grep '^@RG' || echo "${OUT_BAM}中未找到@RG头信息" >&2

批量运行GATK4 HaplotypeCaller的SLURM脚本

#!/bin/bash
#SBATCH --job-name=gatk_hc
#SBATCH --array=1-11  # 对应samples.tsv中的样本数量,按需修改
#SBATCH --ntasks=1
#SBATCH --cpus-per-task=4  # 与--native-pair-hmm-threads参数对应,按需调整
#SBATCH --mem=32G
#SBATCH --time=04:00:00  # 根据样本基因组大小调整,大基因组可延长
#SBATCH --output=logs/gatk_hc_%A_%a.out  # 输出日志路径,确保logs目录存在
#SBATCH --error=logs/gatk_hc_%A_%a.err
#SBATCH --mail-type=END,FAIL  # 任务结束/失败时发送邮件,按需开启


# 加载依赖模块,根据集群环境修改
module load apps/java/18.0.1.1/noarch
module load apps/gatk/4.2.2.0/noarch
module load apps/samtools/1.9/gcc-14.1.0


# 从samples.tsv中获取当前样本名(文件每行一个样本名)
LINE=$(sed -n "${SLURM_ARRAY_TASK_ID}p" samples.tsv)
SAMPLE=$(echo $LINE | cut -d' ' -f1)

# 定义输入输出文件路径
BAM=${SAMPLE}.dedup.bam  # 输入为去重后的BAM文件,需确保已生成对应的索引文件(.bai)
GVCF=${SAMPLE}.g.vcf.gz  # 输出的GVCF文件,适合后续联合基因分型
REFERENCE=GCF_019359855.2_Kyuss_2.0_genomic.fna  # 参考基因组路径,需确保已生成索引(.fai)和dict文件

# 检查输入BAM文件是否存在
if [[ ! -f "${BAM}" ]]; then
  echo "缺失输入BAM文件: ${BAM}" >&2
  exit 2
fi

# 运行GATK4 HaplotypeCaller
gatk --java-options "-Xmx28G" HaplotypeCaller \
  -R ${REFERENCE} \
  -I ${BAM} \
  -O ${GVCF} \
  -ERC GVCF \  # 生成GVCF格式,支持后续多样本联合分型
  --native-pair-hmm-threads ${SLURM_CPUS_PER_TASK}  # 利用分配的CPU核心加速

关键注意事项

  • samples.tsv格式:文件每行存放一个样本名称,确保无多余空格,数量与--array=1-11中的数字一致。
  • 模块适配:根据自己集群的软件环境修改module load命令,确保Java、GATK、Samtools版本兼容。
  • 资源参数调整:--mem设置需预留足够内存给Java(-Xmx建议比总内存少4G左右),--time根据黑麦草基因组大小和样本数据量调整,若数据量大可延长至8-12小时。
  • 参考基因组准备:需提前为参考基因组生成索引文件(samtools faidx)和序列字典(gatk CreateSequenceDictionary),否则HaplotypeCaller会报错。
  • 输入BAM要求:去重后的BAM文件必须带有RG标签且已生成索引(.bai),否则会影响变异检测结果。

内容的提问来源于stack exchange,提问作者bioinfonext

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.11 11:43:15