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

一、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 -
©著作权归作者所有,转载或内容合作请联系作者
禁止转载,如需转载请通过简信或评论联系作者。
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,014评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,796评论 3 386
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,484评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,830评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,946评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,114评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,182评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,927评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,369评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,678评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,832评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,533评论 4 335
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,166评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,885评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,128评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,659评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,738评论 2 351

推荐阅读更多精彩内容