基因组分析Linux

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

2022-05-24  本文已影响0人  QXPLUS

一、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序列比对到参考序列上,

$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

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

${samtools} view -bF 4 ${sample}_aln.bam > ${sample}_mapped.bam
${samtools} view -bf 4 ${sample}_aln.bam > ${sample}_unmapped.bam
${samtools} view -bF 12 ${sample}_aln.bam > ${sample}_all.mapped.bam

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

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

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类:

对于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 -
上一篇 下一篇

猜你喜欢

热点阅读