GATK最佳实践之数据预处理SnakeMake流程

news/2024/11/9 0:56:15/

<~生~信~交~流~与~合~作~请~关~注~公~众~号@生信探索>

写的数据预处理snakemake流程其实包括在每个单独的分析中比如种系遗传变异和肿瘤变异流程中,这里单独拿出来做演示用,因为数据预处理是通用的,在call变异之前需要处理好数据。

数据预处理过程包括,从fastq文件去接头、比对到基因组、去除重复、碱基质量校正,最后得到处理好的BAM或CRAM文件。

alt

fastq去接头

fastq产生的报告json可以用multiqc汇总成一份报告

if config["fastq"].get("pe"):
    rule fastp_pe:
        input:
            sample=get_fastq
        output:
            trimmed=[temp("results/trimmed/{s}{u}.1.fastq.gz"), temp("results/trimmed/{s}{u}.2.fastq.gz")],
            html=temp("report/{s}{u}.fastp.html"),
            json=temp("report/{s}{u}.fastp.json"),
        log:
            "logs/trim/{s}{u}.log"
        threads: 32
        wrapper:
            config["warpper_mirror"]+"bio/fastp"
else:
    rule fastp_se:
        input:
            sample=get_fastq
        output:
            trimmed=temp("results/trimmed/{s}{u}.fastq.gz"),
            html=temp("report/{s}{u}.fastp.html"),
            json=temp("report/{s}{u}.fastp.json"),
        log:
            "logs/trim/{s}{u}.log"
        threads: 32
        wrapper:
            config["warpper_mirror"]+"bio/fastp"

BWA-mem2 比对+去重+排序

mem2的速度更快,所以采用。

sambaster的去除重复速度比MarkDuplicat快,所以采用。

最后用picard按照coordinate对比对结果排序。

输出的格式是CRAM,不是BAM,因为CRAM压缩效率更高,所以采用。

rule bwa_mem2:
    input:
        reads=get_trimmed_fastq,
        reference=gatk_dict["ref"],
        idx=multiext(gatk_dict["ref"], ".0123"".amb"".bwt.2bit.64"".ann",".pac"),
    output:
        temp("results/prepared/{s}{u}.aligned.cram"# Output can be .cram, .bam, or .sam
    log:
        "logs/prepare/bwa_mem2/{s}{u}.log"
    params:
        bwa="bwa-mem2"# Can be 'bwa-mem, bwa-mem2 or bwa-meme.
        extra=get_read_group,
        sort="picard",
        sort_order="coordinate",
        dedup=config['fastq'].get('duplicates',"remove"), # Can be 'mark' or 'remove'.
        dedup_extra=get_dedup_extra(),
        exceed_thread_limit=True,
        embed_ref=True,
    threads: 32
    wrapper:
        config["warpper_mirror"]+"bio/bwa-memx/mem"

碱基质量校正

GATK说碱基的质量分数对call变异很重要,所以需要校正。

BaseRecalibrator计算怎么校正,ApplyBQSR更具BaseRecalibrator结果去校正。

rule BaseRecalibrator:
    input:
        bam="results/prepared/{s}{u}.aligned.cram",
        ref=gatk_dict["ref"],
        dict=gatk_dict["dict"],
        known=gatk_dict["dbsnp"],  # optional known sites - single or a list
    output:
        recal_table=temp("results/prepared/{s}{u}.grp")
    log:
        "logs/prepare/BaseRecalibrator/{s}{u}.log"
    resources:
        mem_mb=1024
    params:
        # extra=get_intervals(),  # optional
    wrapper:
        config["warpper_mirror"]+"bio/gatk/baserecalibrator"

rule ApplyBQSR:
    input:
        bam="results/prepared/{s}{u}.aligned.cram",
        ref=gatk_dict["ref"],
        dict=gatk_dict["dict"],
        recal_table="results/prepared/{s}{u}.grp",
    output:
        bam="results/prepared/{s}{u}.cram"
    log:
        "logs/prepare/ApplyBQSR/{s}{u}.log"
    params:
        embed_ref=True  # embed the reference in cram output
    resources:
        mem_mb=2048
    wrapper:
        config["warpper_mirror"]+"bio/gatk/applybqsr"

索引

最后对CRAM构建所以,之后可能用得到。

rule samtools_index:
    input:
        "results/prepared/{s}{u}.cram"
    output:
        "results/prepared/{s}{u}.cram.crai"
    log:
        "logs/prepare/samtools_index/{s}{u}.log"
    threads: 32
    params:
        extra="-c"
    wrapper:
        config["warpper_mirror"]+"bio/samtools/index"

Reference

https://gatk.broadinstitute.org/hc/en-us/articles/360035535912-Data-pre-processing-for-variant-discovery

本文由 mdnice 多平台发布


http://www.ppmy.cn/news/93303.html

相关文章

GPC_UICC Configuration

GPC_UICC Configuration_v2.0.pdf 1 简介 本文档规定了在 ETSI 规范 TS 102 221 [TS 102 221]、TS 102 223 [TS 102 223] 中指定的 UICC 平台上实施 GlobalPlatform 规范的配置要求&#xff0c; TS 102 225 [TS 102 225] 和 TS 102 226 [TS 102 226]。 GlobalPlatform Common …

叮咚音乐门铃芯片方案推荐 WTN6006-8S 低功耗 高性价比

​ 随着物联网技术的不断发展&#xff0c;智能家居已经成为了生活中不可或缺的一部分。作为智能家居中的重要组成部分&#xff0c;门铃同样需要进行智能化升级&#xff0c;在改善用户体验、保障家庭安全方面起到了重要作用。本文将介绍一种基于音乐芯片的叮咚门铃应用方案…

金融、医疗、教育等各场景下小程序SDK的应用

近年来&#xff0c;随着数字经济的飞速发展和移动终端的迅速普及&#xff0c;移动互联网全面覆盖&#xff0c;各类应用服务层出不穷&#xff0c;涵盖了方方面面的生活、工作和学习。 而小程序作为一种轻量级的应用形态&#xff0c;越来越受到开发者和用户的欢迎。为了满足不同行…

Git进阶·GitFlow·壹

文章目录 1 Git进阶——GitFlow工作流程1.1 master与develop分支1.1.1 master1.1.2 develop 1.2 feature分支1.3 Release分支1.4 hotfix分支1.5 GitFlow示例1.5.1 在master上新建dev分支1.5.2 基于dev创建feature分支1.5.3 feature分支上开发业务代码1.5.4 将feature合并到dev1…

【C++】unordered_map unordered_set 练习题

文章目录 unordered系列关联式容器unordered_mapunordered_map的文档介绍unordered_map的构造接口使用: unordered_multimapunorder_map&&unorder_multimap对比:unordered_setunordered_set的文档介绍unordered_set的构造接口使用 unordered_multisetOJ练习961.在长度2…

13. InnoDB引擎底层原理及Mysql 8.0 新增特性详解

MySQL性能调优 一、InnoDB引擎底层原理1. 深入理解Redolog日志底层原理1.1 innodb引擎底层事务原理1.1.1 WAL 2. redolog日志文件2.1 为什么要redolog日志文件2.2 redolog的内部结构2.3 redolog的刷盘时机2.4 Log Sequence Number2.5 innodb_flush_log_at_trx_commit 3. undolo…

【Leetcode -643.子数组最大平均值Ⅰ -645.错误的集合】

Leetcode Leetcode -643.子数组最大平均值ⅠLeetcode -645.错误的集合 Leetcode -643.子数组最大平均值Ⅰ 题目&#xff1a;给你一个由 n 个元素组成的整数数组 nums 和一个整数 k 。 请你找出平均数最大且长度为 k 的连续子数组&#xff0c;并输出该最大平均数。 任何误差小…

RK3568平台开发系列讲解(环境篇)10min带你获取、了解与编译U-Boot源代码

🚀返回专栏总目录 文章目录 一、U-Boot获取二、U-Boot根目录2.1 api/2.2 arch/2.3 board/2.4 cmd/2.5 common/2.6 config/2.7 disk/2.8 drivers/2.9 dts/2.10 env/2.11 fs/2.12 Makefile、Kbuild、Kconfig、config.mk2.13 mak