使用 Eigensoft 中的 smartPCA 进行 PCA 分析

Eigensoft
plink
gwas
bioinformatics
pca
eigensoft
smartpca
Author
Published

Thursday, December 26, 2024

昨天我们介绍了如何使用 plink 进行 pca 分析,这里,我们将介绍如何使用 Eigensoft 包中的工具 smartPCA 进行 PCA 分析。

smartPCA

smartPCA 是 Eigensoft 包中的一个工具,专门用于基因型数据的 PCA 分析。它可以处理大规模的遗传数据集,输出主成分和相应的特征值,帮助我们识别数据中最重要的变异模式。

1. 准备数据

首先,需要准备三个输入文件,这些文件包含了基因型数据的核心信息: - SNP 文件(.snp):包含 SNP 位置信息,如 SNP 名称、染色体、遗传位置、参考等位基因和替代等位基因。 - 个体文件(.ind):包含个体信息,如个体名称、性别、种群信息等。 - 基因型文件(.geno):包含实际的基因型数据,每个个体对应一个SNP位点的基因型数据。

这些文件通常采用 EIGENSTRAT 格式,智能地将数据组织成易于处理和分析的形式。

2. 编写参数文件

为了运行 smartPCA,需要准备一个参数文件(.par),该文件指定了输入文件和输出文件的路径、PCA 分析的相关设置。一个典型的参数文件示例如下:

genotypename: <GENOTYPE_DATA>.geno
snpname: <GENOTYPE_DATA>.snp
indivname: <GENOTYPE_DATA>.ind
evecoutname: <OUT_FILE>.evec
evaloutname: <OUT_FILE>.eval
poplistname: <POPULATION_LIST_FILE>.txt
lsqproject: YES
numoutevec: 4
numthreads: 1
  • genotypename: 基因型数据文件路径。
  • snpname: SNP位点数据文件路径。
  • indivname: 个体数据文件路径。
  • evecoutname: 输出的主成分文件路径(.evec)。
  • evaloutname: 输出的特征值文件路径(.eval)。
  • poplistname: 种群列表文件路径,指定用于计算主成分的种群。
  • lsqproject: 是否对缺失数据进行投影。
  • numoutevec: 计算的主成分数量。
  • numthreads: 使用的线程数量。

3. 运行 PCA 分析

创建好参数文件后,可以通过命令行运行 smartPCA 进行分析。假设参数文件名为 params.par,可以使用以下命令启动 PCA 分析:

smartpca -p params.par

运行时间通常在 15 到 30 分钟之间,具体时间取决于数据集的大小。

4. 查看输出结果

smartPCA 会生成两个主要的输出文件: - .evec 文件:包含每个个体在各个主成分上的坐标。可以使用这些坐标绘制主成分图(例如,二维或三维散点图),以可视化个体或种群之间的关系。 - .eval 文件:包含每个主成分的特征值。这些特征值反映了每个主成分对数据方差的贡献。

例如,特征值较大的主成分通常解释了数据中更大的变异,因此我们可以根据特征值的大小来判断是否保留某个主成分。

5. 可视化 PCA 结果

PCA 的最终目的是将数据降到二维或三维空间,便于我们观察数据的分布和结构。常见的做法是将第一主成分和第二主成分的坐标作为横纵坐标,绘制二维散点图。

例如,使用 R 或 Python 中的可视化工具,可以将 .evec 文件中的数据提取出来,并绘制主成分图,来分析不同群体、种群或个体在遗传空间中的分布。

6. 投影其他个体

如果我们使用的是包含现代和古代个体的混合数据集,可以使用 smartPCA 的投影功能。这个功能允许我们将不在种群列表中的个体投影到已计算的主成分上。这样,可以将古代 DNA 样本投影到现代群体的 PCA 结果中,进一步分析古代遗传变异在现代遗传空间中的位置。

总结

通过使用 Eigensoft 中的 smartPCA 工具,我们可以方便地对大规模的基因型数据进行 PCA 分析,识别数据中的遗传结构,了解群体之间的遗传关系。通过合理选择主成分,结合特征值和可视化技术,PCA 能够帮助我们从高维遗传数据中提取出有价值的信息,进行种群间比较、演化历史分析等。