minimap2 + samtools 比對(duì)參考序列帜讲,并提取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序列比對(duì)到參考序列上购桑,

  • ${sample}_contig.fa : target 參考序列群嗤,可以是Megahit組裝后的contigs或者參考基因組

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

  • -t: Number of threads [3].

  • -a : 生成CIGAR, 并以SAM格式輸出比對(duì)結(jié)果(minimap2默認(rèn)輸出PAF格式的文件)

  • -x [STR]: 預(yù)設(shè)選項(xiàng)。部分選項(xiàng):

    • -x map-ont: 默認(rèn)選項(xiàng)骇径, 將noisy long reads(~10% error rate)比對(duì)到參考基因組
    • -x sr: Short single-end reads without splicing.
  • -o FILE Output alignments to FILE [stdout].

$minimap2 -ax sr \          # 短reads比對(duì)模式;以SAM格式輸出比對(duì)結(jié)果
    -t ${threads} \         # 設(shè)置CPU線程數(shù)(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比對(duì)結(jié)果文件

二、samtools view

  1. Manual page from samtools-1.15
  2. SAM格式詳細(xì)說明-簡書
  3. samtools常用命令詳解

sam轉(zhuǎn)bam格式

# 將sam文件轉(zhuǎn)換成bam文件
${samtools} view -bS abc.sam > abc.bam
# 等價(jià)于
${samtools} view -b -S abc.sam -o abc.bam
  • -b: output BAM。默認(rèn)下輸出是 SAM 格式文件卦方,該參數(shù)設(shè)置輸出 BAM 格式
  • -S: input is SAM瓦宜。默認(rèn)下輸入是 BAM 文件诅诱,若是輸入是 SAM 文件近刘,則最好加該參數(shù)介劫,否則有時(shí)候會(huì)報(bào)錯(cuò)。
  • -o FILE output file name [stdout]

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

  • 從比對(duì)結(jié)果文件${sample}_aln.bam中提取匹配上的序列信息誉碴,并保存到${sample}_mapped.bam文件
${samtools} view -bF 4 ${sample}_aln.bam > ${sample}_mapped.bam
  • 從比對(duì)結(jié)果文件${sample}_aln.bam中提取沒有匹配上的序列信息,并保存到${sample}_unmapped.bam文件
${samtools} view -bf 4 ${sample}_aln.bam > ${sample}_unmapped.bam
  • 從比對(duì)結(jié)果文件${sample}_aln.bam中提取沒有 read1read2均匹配上的序列信息,并保存到${sample}_all.mapped.bam文件
${samtools} view -bF 12 ${sample}_aln.bam > ${sample}_all.mapped.bam

2. 給予指定的reference文件贩耐,將sam轉(zhuǎn)化為bam

sam是序列比對(duì)厚度輸出格式管搪,包括頭部信息(以@開頭)和比對(duì)信息兩部分組成

  • Header 信息
    • @HD VN:1.0 SO:unsorted 【排序類型】
      頭部區(qū)第一行:VN是格式版本更鲁;SO表示比對(duì)排序的類型澡为,有unknown(default)媒至,unsorted驯绎,queryname和coordinate幾種谋旦。samtools軟件在進(jìn)行行排序后不能自動(dòng)更新bam文件的SO值册着,而picard卻可以乞巧。
    • @SQ SN:contig1 LN:9401 【參考序列ID及其長度】
      參考序列名绽媒,這些參考序列決定了比對(duì)結(jié)果sort的順序是辕,SN是參考序列名;LN是參考序列長度疙教;每個(gè)參考序列為一行。
      例如:@SQ SN:NC_000067.6 LN:195471971
    • @RG ID:sample01 【樣品基本信息】
      Read Group裸弦。1個(gè)sample的測(cè)序結(jié)果為1個(gè)Read Group理疙;該sample可以有多個(gè)library的測(cè)序結(jié)果,可以利用bwa mem -R 加上去這些信息。
      例如:@RG ID:ZX1_ID SM:ZX1 LB:PE400 PU:Illumina PL:Miseq
      ID:樣品的ID號(hào) SM:樣品名 LB:文庫名 PU:測(cè)序以 PL:測(cè)序平臺(tái)
      這些信息可以在形成sam文件時(shí)加入粤攒,ID是必須要有的后面是否添加看分析要求
    • @PG ID:bowtie2 PN:bowtie2 VN:2.0.0-beta7 【比對(duì)所使用的軟件及版本】
      例如:@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可以認(rèn)為是運(yùn)行程序@RG是上面RG表示的內(nèi)容,后面是程序內(nèi)容盔几,這里的@GR內(nèi)容是可以自己在運(yùn)行程序是加入的

sam轉(zhuǎn)bam

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

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

(2) sam文件不包含header或者h(yuǎn)eader不包含@SQ 逊拍,即sam中不包含了reference的信息上鞠,此時(shí)需要提供生成sam文件時(shí)使用的reference文件。

${samtools} faidx ref.fa  # 建索引
${samtools} view -bS -t ref.fa.fai aln.sam > aln.bam  # 輸出轉(zhuǎn)換結(jié)果
# 或者
${samtools} view -bS -T ref.fa aln.sam > aln.bam # 自動(dòng)建索引芯丧,并輸出轉(zhuǎn)換結(jié)果

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

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

3. 從上面minimap2的比對(duì)輸出文件${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文件轉(zhuǎn)化為fastq文件谴咸,并將結(jié)果保存至指定的輸出-1 -2 -o -0-s中.
其對(duì)序列的分類依據(jù)是序列末尾的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.

對(duì)于PE測(cè)序reads, 同時(shí)指定-1 R1.fq -2 R2.fq -s singleton.fq時(shí),samtools會(huì)將 flag1和flag2配對(duì)的序列分別輸出到-1 -2指定的文件骗露,對(duì)于無法匹配的flag 1/2岭佳,全部的flag 0 都會(huì)保存到-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旨在處理數(shù)據(jù)流(stream)珊随,
它可以將-作為管道中的標(biāo)準(zhǔn)輸入文件(stdin);
也可以將- 作為管道中的標(biāo)準(zhǔn)輸出文件(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 -
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
禁止轉(zhuǎn)載,如需轉(zhuǎn)載請(qǐng)通過簡信或評(píng)論聯(lián)系作者驹暑。
  • 序言:七十年代末玫恳,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子优俘,更是在濱河造成了極大的恐慌,老刑警劉巖掀序,帶你破解...
    沈念sama閱讀 206,126評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件帆焕,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)叶雹,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門财饥,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人折晦,你說我怎么就攤上這事钥星。” “怎么了满着?”我有些...
    開封第一講書人閱讀 152,445評(píng)論 0 341
  • 文/不壞的土叔 我叫張陵谦炒,是天一觀的道長。 經(jīng)常有香客問我风喇,道長宁改,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,185評(píng)論 1 278
  • 正文 為了忘掉前任魂莫,我火速辦了婚禮还蹲,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘耙考。我一直安慰自己谜喊,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,178評(píng)論 5 371
  • 文/花漫 我一把揭開白布倦始。 她就那樣靜靜地躺著锅论,像睡著了一般。 火紅的嫁衣襯著肌膚如雪楣号。 梳的紋絲不亂的頭發(fā)上最易,一...
    開封第一講書人閱讀 48,970評(píng)論 1 284
  • 那天,我揣著相機(jī)與錄音炫狱,去河邊找鬼藻懒。 笑死,一個(gè)胖子當(dāng)著我的面吹牛视译,可吹牛的內(nèi)容都是我干的嬉荆。 我是一名探鬼主播,決...
    沈念sama閱讀 38,276評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼酷含,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼鄙早!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起椅亚,我...
    開封第一講書人閱讀 36,927評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤限番,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后呀舔,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體弥虐,經(jīng)...
    沈念sama閱讀 43,400評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,883評(píng)論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了霜瘪。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片珠插。...
    茶點(diǎn)故事閱讀 37,997評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖颖对,靈堂內(nèi)的尸體忽然破棺而出捻撑,到底是詐尸還是另有隱情,我是刑警寧澤缤底,帶...
    沈念sama閱讀 33,646評(píng)論 4 322
  • 正文 年R本政府宣布顾患,位于F島的核電站,受9級(jí)特大地震影響训堆,放射性物質(zhì)發(fā)生泄漏描验。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,213評(píng)論 3 307
  • 文/蒙蒙 一坑鱼、第九天 我趴在偏房一處隱蔽的房頂上張望膘流。 院中可真熱鬧,春花似錦鲁沥、人聲如沸呼股。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,204評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽彭谁。三九已至,卻和暖如春允扇,著一層夾襖步出監(jiān)牢的瞬間缠局,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,423評(píng)論 1 260
  • 我被黑心中介騙來泰國打工考润, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留狭园,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,423評(píng)論 2 352
  • 正文 我出身青樓糊治,卻偏偏與公主長得像唱矛,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子井辜,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,722評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容