美文网首页基因组分析Linux
minimap2 + samtools 比对参考序列,并提取un

minimap2 + samtools 比对参考序列,并提取un

作者: QXPLUS | 来源:发表于2022-05-24 08:15 被阅读0次

    一、minimap2

    Manual Reference Pages - minimap2 (1)

    • Long-read alignment with CIGAR:

    minimap2 -a [-x preset] target.mmi query.fa > output.sam

    minimap2 -c [-H] [-k kmer] [-w miniWinSize] [...] target.fa query.fa > output.paf

    minimap2 将query序列比对到参考序列上,

    • ${sample}_contig.fa : target 参考序列,可以是Megahit组装后的contigs或者参考基因组

    • ${sample}_R[12].fq: query 查询序列,paired-end则要指定R1和R2

    • -t: Number of threads [3].

    • -a : 生成CIGAR, 并以SAM格式输出比对结果(minimap2默认输出PAF格式的文件)

    • -x [STR]: 预设选项。部分选项:

      • -x map-ont: 默认选项, 将noisy long reads(~10% error rate)比对到参考基因组
      • -x sr: Short single-end reads without splicing.
    • -o FILE Output alignments to FILE [stdout].

    $minimap2 -ax sr \          # 短reads比对模式;以SAM格式输出比对结果
        -t ${threads} \         # 设置CPU线程数(threads >= 3)
        3_assembly/${sample}_contig.fa \    # target.fa
        ${sample}_R1.fq \          # query.R1.fq
        ${sample}_R2.fq \          # query.R2.fq
        -o ${sample}_aln.sam                 # minimap2比对结果文件
    

    二、samtools view

    1. Manual page from samtools-1.15
    2. SAM格式详细说明-简书
    3. samtools常用命令详解

    sam转bam格式

    # 将sam文件转换成bam文件
    ${samtools} view -bS abc.sam > abc.bam
    # 等价于
    ${samtools} view -b -S abc.sam -o abc.bam
    
    • -b: output BAM。默认下输出是 SAM 格式文件,该参数设置输出 BAM 格式
    • -S: input is SAM。默认下输入是 BAM 文件,若是输入是 SAM 文件,则最好加该参数,否则有时候会报错。
    • -o FILE output file name [stdout]

    1. 从bam中提取mapped/unmapped 的序列信息

    • 从比对结果文件${sample}_aln.bam中提取匹配上的序列信息,并保存到${sample}_mapped.bam文件
    ${samtools} view -bF 4 ${sample}_aln.bam > ${sample}_mapped.bam
    
    • 从比对结果文件${sample}_aln.bam中提取没有匹配上的序列信息,并保存到${sample}_unmapped.bam文件
    ${samtools} view -bf 4 ${sample}_aln.bam > ${sample}_unmapped.bam
    
    • 从比对结果文件${sample}_aln.bam中提取没有 read1read2均匹配上的序列信息,并保存到${sample}_all.mapped.bam文件
    ${samtools} view -bF 12 ${sample}_aln.bam > ${sample}_all.mapped.bam
    

    2. 给予指定的reference文件,将sam转化为bam

    sam是序列比对厚度输出格式,包括头部信息(以@开头)和比对信息两部分组成

    • Header 信息
      • @HD VN:1.0 SO:unsorted 【排序类型】
        头部区第一行:VN是格式版本;SO表示比对排序的类型,有unknown(default),unsorted,queryname和coordinate几种。samtools软件在进行行排序后不能自动更新bam文件的SO值,而picard却可以。
      • @SQ SN:contig1 LN:9401 【参考序列ID及其长度】
        参考序列名,这些参考序列决定了比对结果sort的顺序,SN是参考序列名;LN是参考序列长度;每个参考序列为一行。
        例如:@SQ SN:NC_000067.6 LN:195471971
      • @RG ID:sample01 【样品基本信息】
        Read Group。1个sample的测序结果为1个Read Group;该sample可以有多个library的测序结果,可以利用bwa mem -R 加上去这些信息。
        例如:@RG ID:ZX1_ID SM:ZX1 LB:PE400 PU:Illumina PL:Miseq
        ID:样品的ID号 SM:样品名 LB:文库名 PU:测序以 PL:测序平台
        这些信息可以在形成sam文件时加入,ID是必须要有的后面是否添加看分析要求
      • @PG ID:bowtie2 PN:bowtie2 VN:2.0.0-beta7 【比对所使用的软件及版本】
        例如:@PG ID:bwa PN:bwa VN:0.7.12-r1039 CL:bwa sampe -a 400 -f ZX1.sam -r @RG ID:ZX1_ID SM:ZX1 LB:PE400 PU:Illumina PL:Miseq …/0_Reference/Reference_Sequence.fa ZX_HQ_clean_R1.fq.sai ZX_HQ_clean_R2.fq.sai …/2_HQData/ZX_HQ_clean_R1.fq …/2_HQData/ZX_HQ_clean_R2.fq
        这里的ID是bwa,PN是bwa,VN是0.7.12-r1039版本。CL可以认为是运行程序@RG是上面RG表示的内容,后面是程序内容,这里的@GR内容是可以自己在运行程序是加入的

    sam转bam

    (1) sam文件的header包含@SQ ,即sam中包含了reference的信息。

    ${samtools} view -bS aln.sam > aln.bam
    

    (2) sam文件不包含header或者header不包含@SQ ,即sam中不包含了reference的信息,此时需要提供生成sam文件时使用的reference文件。

    ${samtools} faidx ref.fa  # 建索引
    ${samtools} view -bS -t ref.fa.fai aln.sam > aln.bam  # 输出转换结果
    # 或者
    ${samtools} view -bS -T ref.fa aln.sam > aln.bam # 自动建索引,并输出转换结果
    

    ref: 1. 生信:2:sam格式文件解读

    1. Manual page from samtools-1.15: samtools-view

    3. 从上面minimap2的比对输出文件${sample}_aln.sam文件中,提取未匹配的文件,并保存为bam文件

    ${samtools} view -bS \
        -T 3_assembly/${sample}_contig.fa \
        -f 4 \
        ${sample}_aln.sam
        > ${sample}_aln.bam
    

    三、samtools fastq

    samtools fastq [options] in.bam
    将输入的bam文件转化为fastq文件,并将结果保存至指定的输出-1 -2 -o -0-s中.
    其对序列的分类依据是序列末尾的READ1 flagREAD2 flag, flag有3类:

    • 1 : Only READ1 is set.
    • 2 : Only READ2 is set.
    • 0 : Either both READ1 and READ2 are set; or neither is set.

    对于PE测序reads, 同时指定-1 R1.fq -2 R2.fq -s singleton.fq时,samtools会将 flag1和flag2配对的序列分别输出到-1 -2指定的文件,对于无法匹配的flag 1/2,全部的flag 0 都会保存到-s 指定的文件中。

    refs: Manual page from samtools-1.15: samtools fastq

    ${samtools} fastq -n \
        -1 3_assembly/${sample}_unmapped_R1.fq.gz \
        -2 3_assembly/${sample}_unmapped_R2.fq.gz \
        -s 3_assembly/${sample}_unmapped_singleton.fq.gz \
        ${sample}_aln.bam
    

    四、samtools 给予管道(|)的输入输出 -

    samtools旨在处理数据流(stream),
    它可以将-作为管道中的标准输入文件(stdin);
    也可以将- 作为管道中的标准输出文件(stdout).

    全部代码

    threads=12
    sample=A01
    minimap2=/software/miniconda2/envs/metadenovo/bin/minimap2
    samtools=/software/samtools/samtools-1.8/bin/samtools
    ## mapping
    $minimap2 -ax sr -t ${threads} \
        3_assembly/${sample}_contig.fa \ 
        ${sample}_R1.fq \
        ${sample}_R2.fq | \
    ${samtools} view -bS -T 3_assembly/${sample}_contig.fa \
        -f 4 - | \
    ${samtools} fastq -n \
        -1 3_assembly/${sample}_unmapped_R1.fq.gz \
        -2 3_assembly/${sample}_unmapped_R2.fq.gz \
        -s 3_assembly/${sample}_unmapped_singleton.fq.gz -
    

    相关文章

      网友评论

        本文标题:minimap2 + samtools 比对参考序列,并提取un

        本文链接:https://www.haomeiwen.com/subject/yzqdprtx.html