HaplotypeCaller是怎么計算PL的?(VCF解密)

貝聿銘先生設計的盧浮宮

寫在前面

PL是HaplotypeCaller等GATK變異檢測軟件在sample層面給出的注釋,一般記錄在VCF文件的FORMAT/sample一欄中。它代表了根據某位點變異情況給出的基因型判定不正確的可能性。

計算方法

計算PL的基本公式如下:
PL=?10?logP(Data|Genotype)
公式右面的P(Data | Genotype)指的是:根據觀察到的數據 D 計算出的基因型為 G 的條件概率(想知道P(D|G)是怎么計算的請戳這兒)。將P(D|G)取log值并乘以-10后將其轉換為Phred-scale格式即為PL,然后將所有基因型的PL進行歸一化,使得最有可能的基因型PL為0。

舉個例子

假如某位點的參考等位基因是A,現在觀察到一個read在該位點為T,并且我們現在有HaplotypeCaller根據這個read計算出來的各基因型的條件概率P(D|G)(當然如果有多個read,它們的貢獻將會相加):

Alleles
Reference: A
Read: T

Conditional probabilities calculated by HC
P(AA | Data) = 0.000001
P(AT | Data) = 0.000100
P(TT | Data) = 0.010000

計算初始PL值:

我們要分別計算基因型為0/0, 0/1 和 1/1時的初始PL值,根據前述的公式,結果如下:

Genotype A/A A/T T/T
Raw PL -10 * log(0.000001) = 60 -10 * log(0.000100) = 40 -10 * log(0.010000) = 20

可以發現P(D|G)最低的基因型在轉換為PL后變為最大值。這是在我們的意料之中的,因為PL指的就是這個基因型是不正確的概率。一個基因型的Raw PL值越小,代表越有可能是真實的基因型。

標準化:

在將PL值寫入VCF之前,還要對Raw PL進行一個小小的計算:對所有的PL值進行標準化,使得最小的PL值為零。很簡單,取所有基因型的PL值和最小PL值之間的差值即可。

Genotype A/A A/T T/T
Normalized PL 60 - 20 = 40 40 - 20 = 20 20 - 20 = 0

我們從中可以發現,最終的PL值和原始的P(G|D)之間的關系:我們取的原始P(G|D)之間依次相差100倍,最終的PL之間最終相差20,也就是100取Phred-scale后的值。這樣我們掃一眼VCF里面PL值的大小,就可以方便的比較各個基因型之間可能性的差異了。

PL和GQ之間的聯系和區別

GQ的值其實就是PL次小值和最小值之間的差異,由于PL的最小值總是0,所以GQ就是PL的次小值。在上面的例子中,GQ = 20 - 0 = 20。需要注意的是,為了節省計算空間,在GATK中,GQ值最大為99,就算實際計算出的GQ大于99,VCF中也只會記錄為99哦。

參考資料

https://software.broadinstitute.org/gatk/documentation/article?id=5913

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。