Bowtie和Bowtie2使用
1. 下載
Bowtie和Bowtie 2都可以在這裏下載: http://sourceforge.net/projects/bowtie-bio/files/
這裏以 Building from source 爲例子, 從而需要下載其源代碼,而非針對特定OS已經編譯好了的binary release. 從而 32bit和64bit的Windows, Linux, Mac OS 都可以這樣做。
我下載的是以下2個文件:
bowtie-1.0.0-src.zip
bowtie2-2.1.0-source.zip
2. 編譯
分別解壓下載的那2個文件,打開linux terminal (我用的是Linux Mint, 64 bit), 讓terminal進入解壓後的某一個目錄,比如bowtie2-2.1.0, 運行“make”。 若編譯沒有異常,編譯好以後分別運行:
chmod 777 bowtie2
./bowtie2
若沒有問題,會顯示出bowtie2的使用信息。
3. 設置參考基因組
以S. cerevisiae爲例,先下載fasta格式的參考基因組:
用bowtie2-build生成索引文件,前綴名爲s_cerevisiae
./bowtie2-build s_cerevisiae.fasta s_cerevisiae
4. 使用
這個和具體情況關係很大,參數自己弄懂後再決定。
基本命令:
bowtie2 [options]* -x <bt2-idx> {-1 <m1> -2 <m2> | -U <r>} -S [<hit>]
必須參數:
-x <bt2-idx> 由bowtie2-build所生成的索引文件的前綴。首先 在當前目錄搜尋,然後 在環境變量 BOWTIE2_INDEXES 中制定的文件夾中搜尋。 -1 <m1> 雙末端測尋對應的文件1。可以爲多個文件,並用逗號分開;多個文件必須和 -2 <m2> 中制定的文件一一對應。比如:"-1 flyA_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. 在最近的illumina pipiline中 得以運用。 --phred64 輸入的鹼基質量等於ASCII碼值加上64. --solexa-quals 將Solexa的鹼基質量轉換爲Phred。在老的GA Pipeline版本中得以 運用。Default: off. --int-quals 輸入文件中的鹼基質量爲用“ ”分隔的數值,而不是ASCII碼。比如 40 40 30 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 -i S,0,2.50 --sensitive Same as: -D 15 -R 2 -N 0 -L 22 -i S,1,1.15 (default in --end-to-end mode) --very-sensitive Same as: -D 20 -R 3 -N 0 -L 20 -i S,1,0.50
–loca模式下的預設參數
–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模式中默認值爲”-i S,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不和前導鏈(forward reference strand)進行比對; --norc設定不和後隨鏈(reverse-complement reference 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'端下游, 和前導鏈一致; --fr: 兩條reads都和前導鏈一致. Default: --fr. 默認 設置適合於Illumina的paired-end測序數據; 若是mate-paired, 則要選擇—rf參數. --no-mixed 默認設置下, 一對reads不能成對比對到參考序列上, 則單獨對每個read進 行比對. 該選項則阻止此行爲. --no-discordant 默認設置下, 一對reads不能和諧比對(concordant alignment, 即滿足-I, -X, --fr/--rf/--ff的條件)到參考序列上, 則搜尋其不和諧比對(discon cordant 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> 將unpaired reads寫入到<path>, gzip壓縮. --un-bz2 <path> 將unpaired reads寫入到<path>, bz2壓縮. --al <path> 將至少能比對1次以上的unpaired reads寫入<path>. --al-gz <path> ... ,gzip壓縮. --al-bz2 <path> ... ,bz2壓縮. --un-conc <path> 將不能和諧比對的paired-end reads寫入<path>. --un-conc-gz <path> ... ,gzip壓縮. --un-conc-bz2 <path> ... ,bz2壓縮. --al-conc <path> 將至少能和諧比對一次以上的paired-end reads寫入<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 header lines. --rg-id <text> 設定read group Id到<text>. --rg <text> 增加<text>作爲一行@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 打印用法信息並推出