bismark
?軟件根據序列的比對情況就可以識別甲基化位點,首先需要對基因組建立索引,建好索引之后,就可以開始比對了。
我用的軟件自帶的單端測序的數據集進行測試, 命令如下
bismark hg19_bismark_db/ ?test_data.fastq -o test
第一個參數為bismark_genome_preparation
命令構建的基因組索引所在的目錄,第二個參數為需要比對的序列, -o
參數指定輸出的目錄
bismark
的參數很多,通常情況下,采用默認參數就好。其他參數全部默認的情況下:bismark
比對的過程分為以下幾步:
1 . 將輸入序列進行C->T的轉換
軟件在運行過程中的log信息如下:
Input file is in FastQ format
Writing a C -> T converted version of the input file test_data.fastq to test_data.fastq_C_to_T.fastq
Created C -> T converted version of the FastQ file test_data.fastq (10000 sequences in total)
Input file is test_data.fastq_C_to_T.fastq (FastQ)
2 . 將C-> 轉換好的序列分別與 C->T 轉換的基因組和G->A 轉換的基因組進行比對
Now starting the Bowtie 2 aligner for CTreadCTgenome
Using Bowtie 2 index: hg19_bismark_db/CT_conversion/BS_CT
Using Bowtie 2 index: hg19_bismark_db/GA_conversion/BS_GA
我用的是 1.9.0
版本的bismark, 現在絕大多數的BS-seq的文庫構建都是采用illumina提供的的標準protocol, 構建出來的文庫都是鏈特異性的文庫,所以從0.7.0
版本之后的bismark, 默認只做兩次比對,但是這個默認情況只適合鏈特異性文庫,如果你的文庫不是鏈特異性的,那么就需要添加--non_directional
選項。
何為鏈特異性文庫,就是說鏈是由方向性的。對于普通的文庫,測序的插入片段都是雙鏈,但是鏈特異性文庫是單鏈。通過在反向互補時添加特定的標記,在雙鏈合成后,將第二條鏈去除,最后用于測序的就只有一條鏈了。如果一個甲基化位點發生在基因組的正鏈上,那么這段區域在測序時插入序列就只有正鏈上的序列,如果發生在負鏈上,則只有負鏈作為插入序列。
在bismark
中,將基因組的正鏈定義為top strand
, 簡稱OT
, 負鏈定義為bottom strand
, 簡稱OB
; 亞硫酸氫鹽處理后,正負鏈之間并不是完全的反向互補的,將OT
鏈的反向互補鏈定義為CTOT
, 將OB
鏈的反向互補鏈定義為CTOB
。
對于鏈特異性文庫而言,由于插入序列為單鏈,只需要比對OT
和OB
兩條鏈即可,大大減少了運算量,所以目前illumina的標準BS-seq protocol構建的文庫都是鏈特異性文庫,新版的bismark
默認的運行方式也是針對鏈特異性文庫的。
放一張bismark
的原理圖:
圖中展示了bismark
比對的過程, 包括了原始序列轉換和比對兩個過程:
原始序列轉換包括兩種方式:
C->T 的轉換
-
G->A 的轉換
比對也包括兩種基因組:
C->T 轉換的基因組
-
G->A 轉換的基因組
所以每條reads 最多會有 2 X 2 = 4 種比對情況,對于鏈特異性的文庫,只有C->T ?轉換,所以只有2種比對情況。