GWAS 前 PCA 步骤详解

a typical genomic PCA analysis
plink
gwas
bioinformatics
pca
Author
Published

Wednesday, December 25, 2024

基因组广泛关联研究(GWAS)旨在探索遗传变异与表型特征之间的关系,但由于群体结构(即不同人群间的遗传差异)和样本亲缘关系的影响,可能会导致假阳性或假阴性结果。为了控制这些偏差,主成分分析(PCA)成为了 GWAS 前的重要步骤。

这里,我们将详细介绍 GWAS 前 PCA 的原因以及如何通过一系列步骤有效进行 PCA 分析。

为什么要进行 PCA?

1. 去除群体结构的影响

在多种族或多地区样本的 GWAS 中,样本的群体结构可能会影响分析结果。例如,不同的群体可能拥有不同的基因频率,这种结构性差异如果不加以控制,可能会误导结果,导致某些表型与基因变异之间的假相关。

2. 去除亲缘关系的干扰

如果样本中存在亲缘关系(如父母-子女、兄弟姐妹等),这些亲缘关系会增加样本间的相关性,从而影响 GWAS 的准确性。PCA 能够帮助识别并去除这些干扰,确保样本的独立性。

3. 降低计算复杂度

PCA 能够通过减少数据的维度来降低后续分析的计算复杂度,并帮助更清晰地理解数据的结构。

PCA 的步骤

进行 PCA 时,主要分为以下几个关键步骤:

1. LD剪枝(LD-Pruning)

在进行 PCA 前,我们通常会进行 LD 剪枝,即去除那些高度相关(连锁不平衡,LD)变异位点。这样做的目的是减少冗余信息,使得 PCA 能够更准确地反映独立的遗传变异。

在 PLINK 中,可以使用以下命令进行 LD 剪枝:

plink2 --bfile ${genotypeFile} \
       --indep-pairwise 50 5 0.2 \
       --out ${outPrefix}.prune

--indep-pairwise 50 5 0.2 进行 LD 剪枝,窗口大小为 50 个 SNP,步长为 5,LD 阈值为 0.2,表示去除那些与其他 SNP 高度相关的 SNP。--out 指定输出文件的前缀。这将生成一个包含独立 SNP 的文件 ${outPrefix}.prune.in,后续将用于 PCA 计算。

2. 去除亲缘关系样本

PCA 计算时需要去除亲缘关系较近的样本,通常是 2 度以内的亲属。PLINK 的 --king-cutoff 命令可以用来筛选样本,并去除与其他样本亲缘关系过近的样本。

plink2 --bfile ${genotypeFile} \
       --king-cutoff 0.0884 \
       --out ${outPrefix}.king.cutoff

--king-cutoff 0.0884 此命令通过阈值 0.0884(约对应亲缘关系为 2 度的样本)去除亲缘关系过近的样本。这会生成两个文件:plink_results_king.king.cutoff.in.id(保留的样本 ID)和 plink_results_king.king.cutoff.out.id(被排除的样本 ID)。

3. 使用无亲缘关系样本和独立 SNP 进行 PCA

接下来,使用去除亲缘关系的样本和独立 SNP 来运行 PCA。PCA 计算的目的是识别样本间最显著的遗传变异。我们可以使用 PLINK 中的 --pca 命令来进行 PCA 计算。

plink2 --bfile ${genotypeFile} \
       --keep ${outPrefix}.king.cutoff.in.id \
       --extract ${outPrefix}.prune.in \
       --freq counts \
       --threads ${threads} \
       --pca approx allele-wts 10 \
       --out ${outPrefix}.pca

--keep ${outPrefix}.king.cutoff.in.id 指定只使用无亲缘关系的样本,--extract ${outPrefix}.prune.in 指定仅使用经过 LD 剪枝的独立 SNP。--freq counts 计算等位基因频率,--pca approx allele-wts 10 请求进行 PCA 计算,并输出前 10 个主成分的等位基因权重。此命令会生成多个输出文件,包括主成分得分文件(.eigenvec)、主成分方差解释比例文件(.eigenval)等。

4. 将 PCA 结果投影到所有样本

完成 PCA 后,我们可以将主成分的得分投影到所有样本中。这样可以确保即使是在 PCA 分析后没有被直接计算的样本,也能够获得与前几个主成分的关联。

plink2 --bfile ${genotypeFile} \
       --threads ${threads} \
       --read-freq ${outPrefix}.acount \
       --score ${outPrefix}.eigenvec.allele 2 6 header-read no-mean-imputation variance-standardize \
       --score-col-nums 7-16 \
       --out ${outPrefix}_projected

--read-freq ${outPrefix}.acount 读取计算过的等位基因频率,--score ${outPrefix}.eigenvec.allele 2 6 header-read no-mean-imputation variance-standardize 使用主成分分析的结果对所有样本进行投影,--score-col-nums 7-16 指定投影的主成分列。投影后的结果可以用于进一步的 GWAS 分析,确保将群体结构和亲缘关系的影响考虑在内。

5. 分析和解释 PCA 结果

完成 PCA 分析后,我们可以查看每个主成分的解释比例,了解各个主成分对于遗传变异的贡献。通常,前几个主成分会解释大部分的方差,因此我们关注的是这些主成分的贡献。

在 PLINK 的输出文件中,.eigenval 文件包含每个主成分的特征值,这些特征值表示该主成分对于数据方差的贡献比例。通过查看这些值,我们可以判断哪些主成分最能解释数据中的变异。

总结

PCA 是 GWAS 分析中的一个关键步骤,能够有效去除群体结构和亲缘关系的影响,从而提高 GWAS 结果的可靠性和准确性。通过 PCA,我们不仅能去除数据中的噪声,还能更好地理解样本之间的遗传结构,为 GWAS 的成功开展奠定坚实基础。