GATK 中Inbreeding Coefficient(近交系数)是如何计算的

已邀请:

YellowTree - 泛基因发起人,Ph.D,关注基因组学发展

赞同来自:

关于近交系数是什么的定义,除了英文资料,百度百科上也给出了清晰的定义,这里应用一下:

近交系数(inbreeding coefficient)是指根据近亲交配的世代数,将基因的纯化程度用百分数来表示即为近交系数,也指个体由于近交而造成异质基因减少时,同质基因或纯合子所占的百分比也叫近交系数。普通以F或f来表示。


 题目中,GATK近交系数的计算程序在github上可以找到,路径是:https://github.com/broadgsa/ga ... f.java" rel="nofollow" target="_blank">InbreedingCoeff.java,代码很长,但计算很简单,我主要说一下它的这个计算核心并做了注释:
int N = 0; // number of samples that have likelihoods
for ( final Genotype g : genotypes ) {
if ( g.isNoCall() || !g.hasLikelihoods() )
continue;

if (g.getPloidy() != 2) // only work for diploid samples
continue;
N++;
final double normalizedLikelihoods = MathUtils.normalizeFromLog10( g.getLikelihoods().getAsVector() );
refCount += normalizedLikelihoods[idxAA];
hetCount += normalizedLikelihoods[idxAB];
homCount += normalizedLikelihoods[idxBB];
}

final double p = ( 2.0 * refCount + hetCount ) / ( 2.0 * (refCount + hetCount + homCount) ); // expected reference allele frequency REF的个数比例≈支持REF的概率
final double q = 1.0 - p; // expected alternative allele frequency 支持ALT的概率
final double F = 1.0 - ( hetCount / ( 2.0 * p * q * (double)N ) ); //inbreeding coefficient
总的来说,是利用哈迪温伯格定律来计算的。 2.0 * p * q * (double)N ,N 是人数。这个值给出的是期望的杂合变异的个数。所以参数说的就是"实际的hetCount”除以"期望的hetCount"再与1.0取差。当F值越接近0,就意味着实际的hetCount与理论的hetCount越接近。
 

要回复问题请先登录注册