寫在前面
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