在VCF文件中用genotypes来编码一个snv的等位情况,通过“|”来分隔等位基因值(allele values)。一般地,用0值来表示在REF字段的等位基因值,用1来表示在ALT字段的第一个等位基因值,用2来表示在ALT字段的第二个等位基因值(如果有的话),然后以此类推。
对于一个二倍体的物种,其ALT字段中包含2类变异的记录时,genotypes会有0|0、0|1、1|1、0|2、1|2、2|2这几种情况。
现在的问题是,如果是三倍体物种呢,如果ALT字段中包含3类、4类或更多类的变异呢?在这样的情况下,genotypes在INFO字段处的分布情况应该是怎么样的?
这里以二倍体为例
当REF为G,ALT为T,C时,genetypes的顺序分布应为:
0|0、0|1、1|1、0|2、1|2、2|2
当REF为G,ALT为T,C,A时,genetypes的顺序分布应为:
0|0、0|1、1|1、0|2、1|2、2|2、0|3、1|3、2|3、3|3
以ALT有3种类型做示例,计算方法为:
In [*]: genotypes = []
In [*]: n_alt = 3
In [*]: for i in range(n_alt+1):
...: for j in range(i+1):
...: genotypes.append('{}|{}'.format(j, i))
...:
In [*]: genotypes
Out[*]: ['0|0', '0|1', '1|1', '0|2', '1|2', '2|2', '0|3', '1|3', '2|3', '3|3']