在合並數據過程當中,經常會發現不同來源的數據正負鏈不是統一的,這是一件很頭疼的事。
正負鏈沒有統一的情況下直接合並在一起會產生什么后果呢。
舉個最簡單的例子,假如我們從小明和小紅分別拿到了一批基因型數據。那么存在以下幾種可能:1)小明的基因型數據統一好正鏈或者負鏈;2)小紅的基因型數據統一好正鏈或者負鏈;3)小明和小紅都不知道他們的數據有沒有統一好,反正數據拿給你了,你自己解決。
在我們不知道這兩人的基因型數據正負鏈是否統一的情況下,如果直接合並這兩個不同來源的數據,會產生什么情況呢?
對於大多數突變位點,通過數據處理,再合並是沒有問題的。比如A/G,A/C,T/G,T/C。
如果好巧不巧,存在A/T,C/G這種突變,那么結果會是什么樣呢。
結果就是對於同一個個體,他在小明的數據庫顯示的鹼基是A,在小紅的數據庫顯示的是T。這就是正負鏈惹的禍。
正鏈的小明:A
負鏈的小紅:T
如果從個體角度還不能理解,我再從群體的角度去說明這個問題。
假定小明和小紅的數據都是東亞人,那么理論上同一個突變位點的頻率是接近的。存在正負鏈混淆的情況下,可能的結果就是小明數據的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