基础概念
Phasing,基因定相/基因分型/单倍体分型:将二倍体or多倍体基因组上的等位基因,按照其亲本正确定位到父亲or母亲的染色体上,最终使得所有来自同一个亲本的等位基因都能够排列再同一条染色体中。
Imputation,基因型填充。对基因型缺失的位点进行填补(Imputation)对这个位点的基因型规律进行总结,然后对缺失位点归到某类中,赋予其一个最可能的基因型。而基因型缺失missing主要有两种可能:
- 遗传性缺失:个体遗传信息的变异而导致这个位点的DNA片段是真实的缺失
- 技术型缺失:由于探针杂交效率低,或多是测序深度较低,导致一些位点是未被测到,不可避免会产生大量的随机缺失
定相&填充(Phasing & Imputaion)的重要性
定相Phasing:对于遗传变异的功能诠释密切相关。表现在遗传诊断需要了解基因突变的单倍型时,才能判断是否会产生临床症状。
- 单倍型参考序列集(Reference panel)是基因型填充(imputation)所必须的数据材料。后者是基因型表型分析中不可少的环节。高质量的Reference Panel能提升关联分析的统计功效
- 除了Reference Panel的制造需要使用Phasing技术之外,对被研究的对象进行预先Phasing(Pre-phasing)也可以极大地提高基因型推断(Imputation)的准确性
- 多个位点组成的单倍型(Haplotype)而非单位点基因型,可实现群体遗传历史的推断。
- 可通过Phased后的家系人群单倍型序列,估算染色体重组率、重组热点等重要遗传参数;探测频发突变、选择信号以及基因表达的顺势调控
填充Imputation:基因型缺失造成信息丢失,对下游基因型-表型关联分析(GWAS分析,选择压力分析,QTL定位等)都会造成很大影响
Phasing & Imputaion常用方法
1. Phasing的方法
Phasing的方法主要有三个:家系分型(Related individuals phasing)、群体LD分型(LD-phasing)和物理分型(Physical Phasing)
- 家系分型(Related Individuals Phasing):同时对父亲和母亲(或家族中人员)的基因组进行测序。可以推断出样本的两个单倍型。但对于个体和亲本的位点都是杂合的,不可被phasing
- 群体LD phasing。根据连算不平衡原理(Linkage disequilibrium)和相关数学模型推断群体中每个个体的单倍体。根据染色体未重组的连锁不平衡区块(LD-block)的关系,利用隐马模型(HMM)等算法可以反推断出个体最有可能的单倍体型。(由于这个方法需要依据群体的信息,那么它所能够Phasing的精度就会受到群体的制约,对于常见变异,如频率在5%以上的变异效果较好)
- 物理定相:根据自身的测序数据:因为二三代测序的reads是来自同一个染色体。根据这些小的局部来连成整体。
2. Impuation的方法
Imputation:分析各个区域的单倍体组成,总结这个区域的基因型规律并分类。然后再根据某样本缺失位点的其它非缺失位点,判断这个区域属于哪种单倍型,然后再根据所属的基因型来填补此缺失样本的缺失位点信息。
根据多个个体构成的参考单倍型集合(Reference Haplotypes)推断整个群体的单倍型构成。再根据缺失样本有限的基因型信息(仅有3个位点),就可以判断这个样本与参考单倍型集中的哪种单倍型最为相似。
- 对于没有参考数据集,利用群体本身的基因型数据推断缺失位点(常用于动植物研究)对低深度测序的数据进行imputation
- 对于人类的有参考数据集的,直接利用即可。
3. 常用软件
计算密集型,比如IMPUTE、 IMPUTE2、MACH、 和fastPHASE/BIMBAM。填充的过程中充分考虑到全部可以观察到的基因型信息,使得对缺失值的估算更加精确;但以上大部分软件都是针对人类的开发的。人类种群的遗传特性是个体杂合率较高、近交率低、系谱关系来源随机。很多植物,尤其作物的遗传特性则和人类相反。以玉米为例,玉米在育种过程中,会伴随大量的自交,因此纯合度较高,而且系谱关系(杂交方式)往往可控。以上针对人类学开发的软件就未必适用了。如果是遗传特性与玉米类似的植物的GBS数据,可以采用Tassel中包含的imputation模块。
计算高效型,比如PLINK、TUNA、WHAP和BEAGLE。此种算法仅仅关注与特定位点相邻的一小部分标记的基因型,因此在计算上更加快捷。表1列出了4种常见的基因型填充软件的特性
实例学习
以BEAGLE 5.1软件学习IMPUTATION。[http://faculty.washington.edu/browning/beagle/beagle.html#download]
Beagle包含了利用家系(Related individual Phasing)和LD Phasing的模块, 如果输入的vcf文件是没有phasing的,会先进行定相,然后填充。下载基于JAVA
beagle5.1参数
data parameters ...
gt=<VCF file: use GT field> (optional)
ref=<bref3 or VCF file with phased genotypes> (optional)
out=<output file prefix> (required)
map=<PLINK map file with cM units> (optional)
chrom=<[chrom] or [chrom]:[start]-[end]> (optional)
excludesamples=<file with 1 sample ID per line> (optional)
excludemarkers=<file with 1 marker ID per line> (optional)
phasing parameters ...
burnin=<number of burnin iterations> (default=6)
iterations=<number of phasing iterations> (default=12)
phase-states=<model states for phasing> (default=280)
imputation parameters ...
impute=<impute ungenotyped markers (true/false)> (default=true)
imp-states=<model states for imputation> (default=1600)
imp-segment=<min haplotype segment length (cM)> (default=6.0)
imp-step=<IBS step length (cM)> (default=0.1)
imp-nsteps=<number of IBS steps> (default=7)
cluster=<max cM in a marker cluster> (default=0.005)
ap=<print posterior allele probabilities> (default=false)
gp=<print posterior genotype probabilities> (default=false)
general parameters ...
ne=<effective population size> (default=1000000)
err=<allele mismatch rate> (default: data dependent)
window=<window length in cM> (default=40.0)
overlap=<window overlap in cM> (default=4.0)
seed=<random seed> (default=-99999)
nthreads=<number of threads> (default: machine dependent)
实际例子
### 下载beagle5.1
wget http://faculty.washington.edu/browning/beagle/beagle.18May20.d20.jar
wget http://faculty.washington.edu/browning/beagle/bref3.18May20.d20.jar
### 下载测试数据
wget http://faculty.washington.edu/browning/beagle/test.18May20.d20.vcf.gz
zcat test.18May20.d20.vcf.gz | cut -f1-190 | tr '/' '|' | gzip > ref.18May20.d20.vcf.gz
zcat test.18May20.d20.vcf.gz | cut -f1-9,191-200 | gzip > target.18May20.d20.vcf.gz
### 运行beagle软件进行imputation
java -Xmx14256m -jar beagle.18May20.d20.jar gt=test.18May20.d20.vcf.gz out=out.gt
### 提供phasing数据集ref panels
java -jar beagle.18May20.d20.jar ref=ref.18May20.d20.vcf.gz gt=target.18May20.d20.vcf.gz out=out.ref
### 对参考数据集ref构建bref3
java -jar bref3.18May20.d20.jar ref.18May20.d20.vcf.gz > ref.18May20.d20.bref3
java -jar beagle.18May20.d20.jar ref=ref.18May20.d20.bref3 gt=target.18May20.d20.vcf.gz out=out.bref3
### 参考其它文章命令行
nohup java -Xss5m -Xmn25G -Xms100G -Xmx100G -jar soft/beagle/beagle.12Jul19.0df.jar nthreads=2 gt=172sample.recode.vcf out=172sample_out ne=172
#可能会遇到内存溢出的报错,较花时间。