在合併數據過程中,常常會發現不一樣來源的數據正負鏈不是統一的,這是一件很頭疼的事。git
正負鏈沒有統一的狀況下直接合並在一塊兒會產生什麼後果呢。github
舉個最簡單的例子,假如咱們從小明和小紅分別拿到了一批基因型數據。那麼存在如下幾種可能:1)小明的基因型數據統一好正鏈或者負鏈;2)小紅的基因型數據統一好正鏈或者負鏈;3)小明和小紅都不知道他們的數據有沒有統一好,反正數據拿給你了,你本身解決。數據庫
在咱們不知道這兩人的基因型數據正負鏈是否統一的狀況下,若是直接合並這兩個不一樣來源的數據,會產生什麼狀況呢?工具
對於大多數突變位點,經過數據處理,再合併是沒有問題的。好比A/G,A/C,T/G,T/C。ip
若是好巧不巧,存在A/T,C/G這種突變,那麼結果會是什麼樣呢。get
結果就是對於同一個個體,他在小明的數據庫顯示的鹼基是A,在小紅的數據庫顯示的是T。這就是正負鏈惹的禍。it
正鏈的小明:Aio
負鏈的小紅:Tioc
若是從個體角度還不能理解,我再從羣體的角度去說明這個問題。方法
假定小明和小紅的數據都是東亞人,那麼理論上同一個突變位點的頻率是接近的。存在正負鏈混淆的狀況下,可能的結果就是小明數據的A頻率是0.4,小紅的A頻率是0.6,問題是,小明的A是小紅的T,非A,把他們直接合並的話,A和T就混在一塊兒了
因此不一樣來源的基因型數據直接合並數據,是不對的。
那麼,咱們有什麼方法解決這個問題呢?
下面我來推一個工具snpflip。
這個工具很簡單,算起來很是快。分析完成後,會生成三個文件:annotated_bim、ambiguous、reverse
第一個文件是annotated_bim,這個文件是整體評估你丟進去的SNP位點是正鏈、負鏈、仍是沒法區分正負鏈(最後一列)。
chromosome 0_idx_position snp_name genetic_distance allele_1 allele_2 reference reference_re strand
1 0 snp1 0 A C A T forward
1 1 snp2 0 A T C G ambiguous
1 2 snp3 0 A G T A reverse
2 0 snp4 0 A G C G reverse
2 1 esv5 0 AA G C G reverse
25 1 snp7 0 A G ambiguous
X 1 inv1 0 A G N N ambiguous
Y 0 snp6 0 A G A T forward
第二個文件是ambiguous,這個文件是彙總全部沒法分清正負鏈的位點;
snp2
snp7
inv1
最後一個文件是reverse,這個文件是彙總全部負鏈的位點;
snp3
snp4
esv5