首页 > 其他分享 >GATK最佳实践之数据预处理SnakeMake流程

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

时间:2023-05-27 09:22:49浏览次数:38  
标签:log temp fastq GATK results gatk dict SnakeMake 预处理

<众~号@生信探索>

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

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

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

标签:log,temp,fastq,GATK,results,gatk,dict,SnakeMake,预处理
From: https://www.cnblogs.com/BioQuest/p/17436263.html

相关文章

  • 01.GATK人种系变异最佳实践SnakeMake流程:WorkFlow简介
    <~生~信~交~流~与~合~作~请~关~注~公~众~号@生信探索>学习的第一个GATK找变异流程,人的种系变异的短序列变异,包括SNP和INDEL。写了一个SnakeMake分析流程,从fastq文件到最后的vep注释后的VCF文件,关于VCF的介绍可以参考上一篇推文基因序列变异信息VCF(VariantCallFormat)流程代......
  • 【计算机视觉1】--图形预处理(色彩空间转换)
    图像预处理计算机视觉图像预处理是指在进行图像处理前对图像进行一系列的处理和转换,以便更好地进行后续的图像处理和分析。其主要目的是使得图像能够被计算机识别、处理和分析,同时保留尽可能多的有用信息。图像预处理框架图今天主要讲下色彩空间转换,其他的在图像增强算法和锐化算法......
  • 2.2 数据预处理
    2.2.1读取数据集importosimportpandasaspdimporttorch创建一个人工数据集并存储在CSV文件../data/house_tiny.csv中。调用read_csv函数读出该文件os.makedirs(os.path.join('..','data'),exist_ok=True)data_file=os.path.join('..','data',&#......
  • Pytorch数据预处理
    为了能用深度学习来解决现实世界的问题,我们经常从预处理原始数据开始,而不是从那些准备好的张量格式数据开始。首先我们准备一个人工数据集: 这是一个.csv格式(用逗号隔开)的数据文件。该数据集有四行三列。其中每行描述了房间数量(“NumRooms”)、巷子类型(“Alley”)和房屋价格(“P......
  • matlab学习2(数据预处理、简单线性规划)
    1.matlab导入数据注意事项:记得保存数据,清空工作区或者关闭matlab后数值就没有了。2.数据预处理清理缺失值实时编辑器-->任务-->清理缺失数据处理异常值:实时编辑器-->任务-->清理离群数据例子:x=1:100;%构造一个数组,元素为1,2,...,100%randn(1,100)生成1行100列矩......
  • 【数据预处理&机器学习】对于薪资数据的倾斜情况以及盒图离群点的探究
    一.需求背景课题中心:招聘网站的职位招聘数据预处理之前的文章,我们已经对职位薪资数据进行了爬取(9000条)数据,然后进行了数据的清洗,最终得到了4000条有效数据。具体需求:按不同的类别划分职位中的薪酬数据,画盒图/箱线图,检查孤立点/离群点;使用分位数图、分位数-分位数图方法处理数......
  • 开心档之C++ 预处理器
    C++预处理器预处理器是一些指令,指示编译器在实际编译之前所需完成的预处理。所有的预处理器指令都是以井号(#)开头,只有空格字符可以出现在预处理指令之前。预处理指令不是C++语句,所以它们不会以分号(;)结尾。我们已经看到,之前所有的实例中都有 #include 指令。这个宏用于把头......
  • XI Samara Regional Intercollegiate Programming Contest Problem L. Queries on a
    Astringsisgiven.Alsothereisastringp,andinitiallyitisempty.Youneedtoperformqoperationsofkind«addalettertotheendofthestringp»and«removealetterfromtheendofthestringp»,andafterperformingeachoperationyoumu......
  • codeforces 234C C. Weather(枚举+前缀后缀预处理)
    题目链接:codeforces234C题目大意:给出一个序列,问最少修改多少个元素,能保证前半截全是负数,后半截全是正数。题目分析:预处理出前缀中大于等于0的数的个数和后缀中小于等于0的数的个数。枚举每一个位置,判断以当前位置为分界点时需要修改的元素的个数。AC代码:#include<iostream>#inc......
  • GCC预处理、编译、汇编、链接全过程
    //hello.c#include<stdio.h>intmain(void){printf("Hello,world!\n");return0;} 预处理:替代宏,引入头文件cpphello.c>hello.i 编译:gcc-Wall-Shello.i(生成hello.s) 汇编:ashello.s-ohello.o(生成hello.o) 链接:复杂ld版:ld-dynamic-linke......