Bayenv 是一种基于环境相关性识别与局部适应相关位点的软件,主要用于检测那些在局部适应过程中可能发挥重要作用的遗传标记(如 SNP)。
和环境相关性的分析这里暂不介绍,仅介绍如何寻找在群体之间表现出极端差异的遗传位点。
但是,由于以下因素使得这种分析变得复杂:
样本量差异:不同群体样本量不均可能引入偏差。
中性进化信号:由于群体间的共有历史(如共同祖先)和基因流动,等位基因频率之间可能自然相关,而不是选择的结果。
BAYENV2 可以通过计算位点的 XTX 值,来鉴定在群体之间存在显著分化的位点。
XTX 统计量与 FST 统计量类似,但它通过对等位基因频率进行标准化,以控制群体结构和样本不均衡,从而提供更加精确的选择信号检测。
Bayenv 首先从基因组范围内的一组中性标记(如同义突变或随机选取的一组 SNP)中,估计群体间等位基因频率的协方差矩阵。该协方差矩阵反映了由于共享历史和基因流动导致的等位基因频率之间的相关性,并构建了一个中性模型,作为后续分析的基准。
而后对每个 SNP,使用贝叶斯方法,将实际的等位基因频率差异与中性协方差矩阵进行比较。如果一个 SNP 的等位基因频率差异显著超出中性协方差模型的期望值,表明该 SNP 在群体间表现出极端差异。
最后生成 XTX 统计量:XTX是类似于 FST 的统计量,用于量化每个 SNP 的群体间差异。与 FST 不同的是,XTX 已经校正了群体间遗传结构的影响。SNP 的 XTX 值越高,表示它的差异程度越大,可能受到选择的作用。
分析流程:
首先将 vcf 文件进行格式转换,转换为 BAYENV2 可识别的格式,官方文件推荐使用 PGDSpider 进行格式转换。
PGDSpider 的使用见:PGDSpider 进行格式转换 - 简书 (jianshu.com)
而后计算
## 计算协方差矩阵示例
./bayenv2 -i SNPSFILE -p NUMPOPS -k 100000 -r 63479 > matrix.out
## 计算群体间分化指数 XTX 统计量
bayenv2 -i SNPFILE -m MATRIXFILE -e ENVIRONFILE -n 1 -p NUMPOPS -k 100000 -t -X -r 13258
必选参数:
-i SNPFILE 输入文件,包含 SNP 数据。
-k NUMRUNS 迭代次数。
-p NUMPOPS 种群数量。
# test mode 下必需参数
-m MATRIXFILE 矩阵文件,是 Bayenv2.0 的输出文件。
-e ENVIRONFILE 环境文件,用于指定环境变量信息。
-n NUMENVIRON 环境变量的数量。
可选参数:
-s SAMPLEFILE 样本大小文件,每个种群的样本数。pool mode 下必需。
-r SEED 随机种子,用于确保结果的可重复性。
-t 进入 test mode,计算单个 SNP 的 Z 值、Bayes 因子(BF)或相关系数(ρ)。
-x 启用 pool mode,用于处理来自种群池测序的输入数据。
-o OUTFILE 自定义输出文件名称。仅在测试模式下可用。
-f 将标准化的等位基因频率写入文件。
-c 除了计算 Bayes 因子(BF),还计算相关系数(ρ)。
-X 计算矩阵XTXX^T XXTX。
-z 在 test mode 下为未分组数据计算 Z 值,仅支持单个环境变量。