GATK 很慢,怎样分染色体CALL 变异

在使用GATK CALL 变异的时候非常的慢,一天一个样本还没有结束,能不能分染色体CALL 变异?原先的命令如下: gatk --java-options "-Xmx50g" HaplotypeCaller -R $REF   \

    -I $workdir/3.map/result/${i}.sorted.dedup.bam \

    -O ${i}.g.vcf.gz --max-alternate-alleles 4  --sample-ploidy 2 \

    -ERC GVCF --tmp-dir $tmpdir

如果分染色体的话,怎样设置命令呢?

请先 登录 后评论

1 个回答

omicsgene - 生物信息
擅长:重测序,遗传进化,转录组,GWAS

是的,你可以通过分染色体来并行化GATK HaplotypeCaller的运行,这会显著提高处理速度。以下是分染色体运行的方法:

方法1:使用-L参数指定染色体


for chr in chr1 chr2 chr3 ; do
  gatk --java-options "-Xmx50g" HaplotypeCaller \
    -R $REF \
    -I $workdir/3.map/result/${i}.sorted.dedup.bam \
    -O ${i}.${chr}.g.vcf.gz \
    --max-alternate-alleles 4 \
    --sample-ploidy 2 \
    -ERC GVCF \
    -L ${chr} \
    --tmp-dir $tmpdir
done

方法2:更高效的并行化(使用GNU parallel)


# 先创建染色体列表
chromosomes=(chr1 chr2  chr3)

# 使用parallel并行处理
parallel -j 8 "gatk --java-options \"-Xmx10g\" HaplotypeCaller \
  -R $REF \
  -I $workdir/3.map/result/${i}.sorted.dedup.bam \
  -O ${i}.{}.g.vcf.gz \
  --max-alternate-alleles 4 \
  --sample-ploidy 2 \
  -ERC GVCF \
  -L chr{} \
  --tmp-dir $tmpdir" ::: ${chromosomes[@]}

后续合并步骤

分染色体运行后,你需要用GATK的CombineGVCFs合并结果 ,先按染色体合并样本,最后合并不同染色体的vcf文件:


注意事项

  1. 内存调整:并行时每个任务的内存可以适当降低(如从50G降到10G)

  2. 染色体命名:确保-L参数中的染色体命名与参考基因组一致(如有的参考基因组用"1"而非"chr1")

  3. 临时文件:为每个任务指定不同的临时目录避免冲突

  4. 线程数:根据服务器核心数调整parallel的-j参数

请先 登录 后评论