背景
双亲高度杂合(亲本由多个单体型构成)的分离群体利用常规的BSA分析方法往往结果并不理想,因为在混池中有多等位基因的干扰。OcBSA就通过解析两个杂合亲本的4条单体型在后代群体中的遗传规律实现利用BSA对F1群体的精细遗传定位,能比较好的解决亲本杂合BSA定位所遇到的一些问题。
原理
- 在两个杂合父本之间选择一组多态位点的子集,这些位点在 P1 中是杂合的(lm,基因型 l 和 m 分别来自 P1 的单倍型 h1 和 h2),而在 P2 中则是纯合的(m'm'',基因型 m' 和 m'' 分别来自 P2 的单倍型 h3 和 h4)或未基因分型的(NN)。考虑到SNP和InDel的两种基因型特征,“l”是一种基因型,而“m、m'和m''”是同一种基因型(m),但来自不同的单倍型。这组位点将用于随后的分析。
-
从两个对比样本池中剔除覆盖P2基因型(m' 和 m'',相互相等)的测序 reads 。通过计算位点从P2中继承的基因型的测序 reads 数量,并将它们从两个对比样本池中筛除,消除了两个P2单倍型的影响,产生OcPools。
分析步骤
OcBSA分析从处理如上所述通过变异调用生成的VCF文件开始。
第一步:根据测序覆盖范围对位点进行过滤。用户可以设置参数来指定两个父本和两个样本池的最小和最大读取覆盖阈值。
第二步:根据亲本的基因型进行过滤。保留在亲本P1中杂合性,P2中纯合性或未基因分型的位点,进行分析。
第三步:去除来自P2父本序列的reads。通过上面推倒出的两个方程式获得两个OcPools中基因型“m”和“l”的reads深度:OcDm=(Dm-Dl)/2; OcDl=Dl(Dm:基因型“m”的reads深度,Dl:基因型“l”的reads深度)。
第四步:计算OcValues来估计两个OcPools之间偏倚遗传的强度。此外,SNP和InDel均用于计算OcValues。
软件安装
这个软件安装使用都很简单,运行速度也挺快。主体是三个python脚本,即计算脚本OC_BSA.py(OcBSA)和F2_BSA.py(一般群体使用ED和snpindex算法进行分析),可视化脚本bsa_fig.py,此外还有附加功能的脚本一个是批量设计引物的脚本primer_design.py,和多样本变异信息合并脚本cluster_vcf.py。
git clone https://gitee.com/Bioinformaticslab/OcBSA.git
# 软件使用参数说明
optional arguments:
-h, --help show this help message and exit
-p1 PARENT1 (Column number of dominant parent in the VCF; 显性亲本在vcf中的列数)
-p2 PARENT2 (Column number of another parent in the VCF; 隐性亲本在vcf中的列数)
-b1 POOL1 (Column number of pool with dominant trait in the VCF; 具有显性表型的混池在vcf中的列数)
-b2 POOL2 (Column number of pool with Recessive trait in the VCF; 具有隐性表型的混池在vcf中的列数)
-d1 PARENTDEP1 (Minimum coverage of the parents; 亲本的最低覆盖度)
-d2 POOLDEP1 (Minimum coverage of the pools; 混池的最低覆盖度)
-d3 PARENTDEP2 (Maximum coverage of the parents; 亲本的最高覆盖度)
-d4 POOLDEP2 (Maximum coverage of the pools; 混池的最高覆盖度)
-w WIN (Size of sliding windows; 滑窗的大小)
-f, frc, (size of lowess function; 使用lowess平滑曲线并选择窗口大小,0-1) -vcf INPUT_VCF (Path of VCF file; vcf文件 )
-table INPUT_FORMAT (Path of simple VCF file; 本程序简易的VCF文件格式,替换VCF文件的输入 -OcValue INPUT_OcValue (The intermediate file (.OcValue) generated earlier can be used to resize the window; OcValue文件, 如果只是调整窗口大小, 可以使用之前生成的中间文件(.OcValue))
-o OUT (Name of output file; 输出文件名)
# 运行命令行,示例数据都在脚本同级目录的example/下面
# run with VCF file
python OC_BSA.py -vcf ./potato_example.vcf -p1 -2 -p2 -1 -b1 -3 -b2 -4 -w 200000 -o ./potato_example.vcf_200k_OCBSA.txt
# 可以直接利用上面得到,或者整理出来的table文件直接进行计算
# table格式很简单,这里就不做详细讲解了,看不懂的可以看看我之前的推文中对VCF文件各类信息的介绍
python OC_BSA.py -table potato_example.vcf.table -w 200000 -o ./potato_example.vcf_200k_OCBSA.txt
# 如果只是更改窗口大小,可以直接运行这一步,不需要重头进行计算
python OC_BSA.py -OcValue potato_example.vcf_200k_OCBSA.txt.OcValue -w 100000 -o ./potato_example.vcf_100k_OCBSA.txt
# 可视化结果
# 全基因组结果可视化
python bsa_fig.py -f potato_example.vcf_200k_OCBSA.txt -OcValue -o test.png
# 区间结果可视化(chr10:50000000-60000000)
python bsa_fig.py -f potato_example.vcf_200k_OCBSA.txt -p chr10,50000000,60000000 -OcValue -o test.png
这篇推文主要介绍OcBSA,snp-index在前面已经选择使用QTLseqr包做了实现,这里不再重复讲了,有兴趣的可自行尝试。至于ED,则会和MMAPPR放在一起进行介绍,引物批量设计会放在下游分析里讲解。
该软件出的图效果如下:
参考资料
Lingkui Zhang, Yanfeng Duan, Zewei Zhang, Lei Zhang, Shumin Chen, Chengcheng Cai, Shaoguang Duan, Kang Zhang, Guangcun Li, Feng Cheng,OcBSA: an NGS-based Bulk Segregant Analysis Tool for Outcross Populations,Molecular Plant,2024,,ISSN 1674-2052,https://doi.org/10.1016/j.molp.2024.02.011.