1. 程式人生 > >bowtie和bowtie2用法詳解

bowtie和bowtie2用法詳解

bowtie 短序列比對工具詳解

常見的短序列比對工具有很多,如fasta、blast、bowtie、shrimp、soap等。每個工具都有其自身的優點,但同時也具備了一些缺點。權衡利弊,我選擇bowtie作為主要的短序列比對工具。它速度很快,比對結果也容易理解。
現在舉個例子來探討bowtie的使用方法:現在有GENOME.fa、高通量測序資料Reads.fa,我們希望將Reads.fa比對到基因組GENOME.fa上。
(一)、對Reference檔案(GENOME.fa)建庫

1、bowtie-build GENOME.fa GENOME.fa

建庫步驟可能需要1h甚至幾個小時,建議在後臺執行:
nohup bowtie-build GENOME.fa GENOME.fa &

(二)、將Reads.fa比對到GENOME.fa上,只能比對到正鏈,且匹配到基因組不多於20個不同位置,允許有1個錯配(引數見下)

1

bowtie -f -a -m 20 -v 1 --al Reads_aligned --un Reads_unaligned --norc GENOME.fa Reads.fa Reads.bwt 2> log

  • 注:
  • -f 指定query檔案為fasta格式
  • -a 保留所有比對結果
  • -m 指定最大比對到基因組的次數
  • -v 允許最大錯配數,為[0-2]
  • --al 能map到GENOME的reads,fasta格式
  • --un 不能map到GENOME的reads,fasta格式
  • --norc 不輸出匹配到負鏈的結果;如果不想輸出比對到正鏈的結果,則用"--nofw"。不指定該選項則正負鏈結果都輸出
  • 後面依次寫上GENOME索引檔案,Reads檔案,輸出結果檔案Reads.bwt,日誌檔案log。
  • --best、--strata參考 https://www.plob.org/article/932.html

(三)、bowtie輸出結果的說明

1
2

sample001_x75 + Chr1 12453 ATCGGCCAATTACGGACTTAA IIIIIIIIIIIIIIIIIIIII 4 9:G>T
     1                       2  3            4             5                                                      6            7   8

  • 1. query id
  • 2. "+"表示正向match;"-"表示對query作反向互補後match
  • 3. reference id
  • 4. 第2列為"+"時,表示query 第一個鹼基map到reference(5'->3')上的位置,0-based(以0開始);第2列為"-"時,表示query的反向互補序列第一 個鹼基map到reference(5'->3')上的位置,0-based(以0開始)
  • 5. 如果第2列為"+",則和query序列一致;否則,和query序列反向互補
  • 6. 質量檔案,如果query檔案為fasta格式,則無法獲取質量檔案,用I代替,I的數量與query序列長度一致
  • 7. 當前query能map到GENOME的4個不同位置
  • 8. 如果存在第8列,表示有mismatch。第8列可以分為三個部分,最左端的數字,中間的鹼基為reference鹼基,最右端的鹼基為query鹼基,下面分情況討論:
  • 第2列為"+"時:最左端的數字9表示query從5'端數起,第10個鹼基為"T",而對應的reference為"G";
    第2列為"-"時:最左端的數字9表示query先作反向互補,然後從3'端數起,第10個鹼基為"T",而對應的reference為"G";

 原文連結:http://blog.sina.com.cn/s/blog_4b91a9e50101mmqi.html

bowtie2 短序列比對工具詳解

 

懶人必看

對參考序列構建index

bowtie2-build genome.fasta index

嘗試使用前10000個reads進行比對

bowtie2 -u 10000 -p 8 -x index -1reads1.fq -2 reads2.fq -S out.sam

使用8個執行緒進行比對

bowtie2 -p 8 -x index -1 reads1.fq -2reads2.fq -S out.sam

比對的sam結果中添加了read group資訊

bowtie2 -p 8 --rg-id sample01 --rg"PL:ILLUMINA" --rg "SM:sample01" -x index -1 reads1.fq -2reads2.fq -S out.sam

常用的引數進行比對,可以更改其中的引數獲得更好的結果

bowtie2 -q --phred33 --sensitive--end-to-end -I 0 -X 500 --fr --un unpaired --al aligned --un-conc unconc --al-concalconc -p 6 --reorder -x <bt2-idx> {-1 <m1gt; -2 <m2> | -U<r>} -S [<hit>]

用法:

bowtie2 [options]* -x <bt2-idx> {-1<m1> -2 <m2> | -U <r>} -S [<hit>]

bowtie2-build用法

bowtie2-build預設情況下將fasta檔案換成index的資料庫。

bowtie2-build <fasta檔案> <要生成的索引檔案字首名>

必須引數:

-x <bt2-idx>由bowtie2-build所生成的索引檔案的字首。首先 在當前目錄搜尋,然後在環境變數BOWTIE2_INDEXES中制定的資料夾中搜尋。

-1 <m1>雙末端測尋對應的檔案1。可以為多個檔案,並用逗號分開;多個檔案必須和-2<m2>中制定的檔案一一對應。比如:"-1flyA_1.fq,flyB_1.fq -2 flyA_2.fq,flyB

_2.fq".測序檔案中的reads的長度可以不一樣。

-2 <m2>雙末端測尋對應的檔案2.

-U <r>非雙末端測尋對應的檔案。可以為多個檔案,並用逗號分開。測序檔案中的reads的長度可以不一樣。

-S <hit>所生成的SAM格式的檔案字首。預設是輸入到標準輸出。

以下是可選引數:

輸入引數

-q輸入的檔案為FASTQ格式檔案,此項為預設值。

-qseq輸入的檔案為QSEQ格式檔案。

-f 輸入的檔案為FASTA格式檔案。選擇此項時,表示--ignore-quals也被選擇了。

-r輸入的檔案中,每一行代表一條序列,沒有序列名和測序質量等。選擇此項時,表示--ignore-quals也被選擇了。

-c後直接為比對的reads序列,而不是包含序列的檔名。序列間用逗號隔開。選擇此項時,表示—ignore-quals也被選擇了。

-s/--skip <int> input的reads中,跳過前<int>個reads或者pairs。

-u/--qupto <int>只比對前<int>個reads或者pairs(在跳過前<int>個reads或者pairs後)。Default: no limit.

-5/--trim5 <int>剪掉5'端<int>長度的鹼基,再用於比對。(default:0).

-3/--trim3 <int>剪掉3'端<int>長度的鹼基,再用於比對。(default:0).

--phred33輸入的鹼基質量等於ASCII碼值加上33.在最近的illuminapipiline中得以運用。最低鹼基質量是“#”。

--phred64輸入的鹼基質量等於ASCII碼值加上64.最低鹼基質量是“B”。

--solexa-qualsSolexa的鹼基質量轉換為Phred。在老的GAPipeline版本中得以運用。Default: off.

 --int-quals輸入檔案中的鹼基質量為用“”分隔的數值,而不是ASCII碼。比如40 4030 40...。Default: off.

 –end-to-end模式下的預設引數

--very-fast Same as: -D 5 -R 1 -N 0 -L 22-i S,0,2.50

--fast Same as: -D 10 -R 2 -N 0 -L 22 -iS,0,2.50

--sensitive Same as: -D 15 -R 2 -N 0 -L 22-i S,1,1.15 (default in --end-to-endmode)

--very-sensitive Same as: -D 20 -R 3 -N 0-L 20 -i S,1,0.50

–loca模式下的預設引數

--very-fast-local Same as: -D 5 -R 1 -N 0-L 25 -i S,1,2.00

--fast-local Same as: -D 10 -R 2 -N 0 -L 22-i S,1,1.75

--sensitive-local Same as: -D 15 -R 2 -N 0-L 20 -i S,1,0.75 (default in --local mode)

--very-sensitive-local Same as: -D 20 -R 3-N 0 -L 20 -i S,1,0.50

 比對引數:

-N <int>進行種子比對時允許的mismatch數.可以設為0或者1.Default:0.

 

-L <int>設定種子的長度.

 

************************************************************

功能選項

給bowtie的一些引數設定值的時候,使用一個計算公式代替,於是值的大小與比對序列的長

度成一定關係。<func>有三部分組成: (a)計算方法,包括常數(C),線性(L),平方根(S)和

自然對數(G); (b)一個常數; (c)一個係數.

例如:

<func>為L,-0.4,-0.6則計算公式為: f(x)= -0.4 + -0.6 * x

<func> 為G,1,5.4則計算公式為: f(x)= 1.0 + 5.4 * ln(x)

************************************************************

 

-i <func>設定兩個相鄰種子間所間距的鹼基數。

************************************************************

例如:如果read的長度為30,種子的長度為10,相鄰種子的間距為6,則提取出的種子如下

所示:

Read:     TAGCTACGCTCTACGCTATCATGCATAAAC

Seed 1 fw: TAGCTACGCT

Seed 1 rc: AGCGTAGCTA

Seed 2 fw:       CGCTCTACGC

Seed 2 rc:       GCGTAGAGCG

Seed 3 fw:             ACGCTATCAT

Seed 3 rc:             ATGATAGCGT

Seed 4 fw:                   TCATGCATAA

Seed 4 rc:                   TTATGCATGA

************************************************************

 在--end-to-end模式中預設值為”-iS,1,1.15”.即表示f(x) = 1 + 1.15 *sqrt(x).如果read長度為100,則相鄰種子的間距為12.

 

--n-ceil <func>設定read中允許含有不確定鹼基(非GTAC,通常為N)的最大數目.Default: L,0,0.15.計算公式為: f(x) =0 + 0.15 * x,表示長度為100的read最多執行存在15個不確定鹼基.一旦不確定鹼基數超過15,則該條read會被過濾掉.

 

--dpad <int> Default: 15.

 

--gbar <int>在read頭尾<int>個鹼基內不允許gap.Default: 4.

 --ignore-quals計算錯配罰分的時候不考慮鹼基質量.當輸入序列的模式為-f, -r或者-c的時候,該設定自動成為預設設定.

 

--nofw/--norc –nofw設定read不和前導鏈(forwardreference strand)進行比對;

 --norc設定不和後隨鏈(reverse-complementreference strand)進行比對.

Default: both strands enabled.

 

--end-to-end比對是將整個read和參考序列進行比對.該模式--ma的值為0.該模式為預設模式, --local模式衝突.

 

--local該模式下對read進行區域性比對,從而, read兩端的一些鹼基不比對,從而使比對得分滿足要求.該模式下 –ma預設為2.

 

得分罰分引數

--ma <int>設定匹配得分.--local模式下每個read上鹼基和參考序列上鹼基匹配,則加<int>分.在—end-to-end模式中無效. Default: 2.

 

--mp MX,MN設定錯配罰分.其中MX為所罰最高分, MN為所罰最低分.預設設定下罰分與鹼基質量相關.罰分遵循的公式為: MN + floor( (MX-MN)(MIN(Q, 40.0)/40.0) ).其中Q為鹼基的質量值.如果設定了—ignore-qual引數,則錯配總是罰最高分. Default:MX = 6, MN = 2.

 

--np <int>當匹配位點中read,reference上有不確定鹼基(比如N)時所設定的罰分值.Default: 1.

 

--rdg <int1>,<int2>設定在read上開啟gap罰分<int1>,延長gap罰分<int2>.Default: 5, 3.

 

--rfg <int1>,<int2>設定在reference上開啟gap罰分<int1>,延長gap罰分<int2>. Default: 5, 3.

 

--score-min <func>設定成為有效比對的最小分值.在—end-to-end模式下預設值為:L,-0.6,-0.6;在--local模式下預設值為:G,20,8.

 

報告引數

-k <int>預設設定下,bowtie2搜尋出了一個read不同的比對結果,並報告其中最好的比對結果(如果好幾個最好的比對結果得分一致,則隨機挑選出其中一個).而在該模式下,bowtie2最多搜尋出一個read<int>個比對結果,並將這些結果按得分降序報告出來.

 

-a和-k引數一樣,不過不限制搜尋的結果數目.並將所有的比對結果都按降序報告出來.此引數和-k引數衝突.值得注意的是:如果基因組含有很多重複序列時,該引數會導致程式

執行極其緩慢.

 

Effort引數

-D <int>比對時,將一個種子延長後得到比對結果,如果不產生更好的或次好的比對結果,則該次比對失敗.當失敗次數連續達到<int>次後,則該條read比對結束. Bowtie2才會繼續進行下去. Default: 15.當具有-k或-a引數,則該引數所產生的限制會自動調整.

 

-R <int>如果一個read所生成的種子在參考序列上匹配位點過多.當每個種子平均匹配超過300個位置,則通過一個不同的偏移來重新生成種子進行比對. <int>則是重新生成種子

的次數. Default: 2.

 

Paired-end引數

-I/--minins <int> 設定最小的插入片段長度.Default: 0.

 

-X/--maxins <int> 設定最長的插入片段長度.Default: 500.

 

--fr/--rf/--ff 設定上下游reads和前導鏈paired-end比對的方向. --fr: 匹配時,read1在5'端上游, 和前導鏈一致, read2在3'下游, 和前導鏈反向互補. 或者read2在上游, read1在下游反向互補; --rf: read1在5'端上游, 和前導鏈反向互補, read2在3'端下游, 和前導鏈一致; --ff:兩條reads都和前導鏈一致. Default: --fr. 預設設定適合於Illumina的paired-end測序資料; 若是mate-paired, 則要選擇—rf引數.

 

--no-mixed 預設設定下, 一對reads不能成對比對到參考序列上,則單獨對每個read進行比對. 該選項則阻止此行為.

 

--no-discordant 預設設定下, 一對reads不能和諧比對(concordantalignment,即滿足-I, -X, --fr/--rf/--ff的條件)到參考序列上, 則搜尋其不和諧比對(disconcordant alignment, 即兩條reads都能獨一無二地比對到參考序列上, 但是不滿足-I,-X,--fr/--rf/--ff的條件). 該選項阻止此行為.

 

--dovetail read1和read2的關係為dovetail的時候,該狀況算為和諧比對. 預設情況下dovetail不算和諧比對.

 

--no-contain read1和read2的關係為包含的時候, 該狀況不算為和諧比對. 預設情況下包含關係算為和諧比對.

 

--no-overlap read1和read2的關係為有重疊的時候, 該狀況不算為和諧比對. 預設情況下兩個reads重疊算為和諧比對.

 

輸出引數

-t/--time --un <path> 將unpaired reads寫入到<path>.

--un-gz <path> 將unpairedreads寫入到<path>, gzip壓縮.

--un-bz2 <path> 將unpairedreads寫入到<path>, bz2壓縮.

 

--al <path> 將至少能比對1次以上的unpairedreads寫入<path>.

--al-gz <path> ... ,gzip壓縮.

--al-bz2 <path> ... ,bz2壓縮.

 

--un-conc <path> 將不能和諧比對的paired-endreads寫入<path>.

--un-conc-gz <path> ... ,gzip壓縮.

--un-conc-bz2 <path> ... ,bz2壓縮.

 

--al-conc <path> 將至少能和諧比對一次以上的paired-endreads寫入<path>.

--al-conc-gz <path> ... ,gzip壓縮.

--al-conc-bz2 <path>... ,bz2壓縮.

 

--quiet 安靜模式,除了比對錯誤和一些嚴重的錯誤, 不在螢幕上輸出任何東西.

 

--met-file <path> 將bowtie2的檢測資訊(metrics)寫入檔案<path>.用於debug.Default: metrics disabled.

 

--met-stderr <path> 將bowtie2的檢測資訊(metrics)寫入標準錯誤檔案控制代碼. 和上一個選項不衝突. Default: metrics disabled.

 

--met <int> 每隔<int>秒寫入一次metrics記錄. Default:1.

 

 Sam 引數

--no-unal不記錄沒比對上的reads.

 

--no-hd不記錄SAM header lines (以@開頭).

 

--no-sq不記錄@SQ的SAM headerlines.

 

--rg-id <text>設定read groupID為text。在SAM檔案的頭中增加一行@RG,在輸出的SAM檔案中新增Tag "RG:Z:text"。

 

--rg <text>使用text作為@RG的一列,比如"SM:Pool1"。在@RG中加入多列,則多次使用該引數即可。在進行Variant calling的過程中需要@RG頭,SM資訊和Tag RG。

 

效能引數

-o/--offrate <int> 無視index的offrate值, 以<int>取代之. Index預設的<int>值為5. <int>值必須大於index的offrate值, 同時<int>越大, 耗時越長,耗記憶體越少.

 

-p/--threads NTHREADS 設定執行緒數.Default: 1

 

--reorder 多執行緒運算時, 比對結果在順序上會和檔案中reads的順序不一致, 使用該選項, 則使其一致.

 

--mm 使用記憶體定位的I/O來載入index, 而不是常規的檔案I/O. 從而使多個bowtie程式共用記憶體中同樣的index, 節約記憶體消耗.

 

其它引數:

--qc-filter 濾除QSEQ fileter filed為非0的reads. 僅當有—qseq選項時有效.Default: off.

 

--seed <int>使用<int>作為隨機數產生的種子.Default: 0.

 

--version列印程式版本並退出

 

-h/--help 列印用法資訊並推出