SEQUOIA(R)谱系分配步骤sequoia()运行报错排查
运行sequoia包执行重复检测与谱系分配:
ParOUT <- sequoia(GenoM = Geno, LifeHistData = LH, Err=0.005, Module="ped", UseAge = "no", quiet = FALSE, Plot = TRUE)
输出及报错如下:
Warning: There are 2111 SNPs scored for <5% of individuals, these will be excluded
Warning: There are 1 monomorphic (fixed) SNPs, these will be excluded
Warning: In addition, there are 52874 SNPs scored for <50% of individuals
Warning: *********** There are 8 individuals scored for <5% of SNPs, these WILL BE IGNORED ***********
After exclusion, There are 40 individuals and 185843 SNPs.
Ageprior: Flat 0/1, overlapping generations, MaxAgeParent = 4,4
Error in if (!is.double(MAF) || any(MAF < 0 | MAF > 1)) { :
missing value where TRUE/FALSE needed
切换Module为"ped"和"par"结果一致,请问这段if代码检查的内容中,我的数据缺失了什么?
这段代码是对**次要等位基因频率(MAF)**的有效性校验,包含两个检查点:
!is.double(MAF):校验MAF是否为合法的双精度数值类型any(MAF < 0 | MAF > 1):校验所有MAF值是否在0-1的合理区间(频率值不可能超出这个范围)
报错提示"missing value where TRUE/FALSE needed",说明你的数据中存在MAF缺失值(NA),或者MAF未被正确计算生成,导致条件判断无法得到明确的布尔结果。
可能的解决方向:
- 手动计算过滤后剩余位点的MAF,排查是否存在NA或异常值
- 进一步严格过滤SNPs:比如提高缺失率阈值,移除那些无法计算有效MAF的位点
- 检查基因型矩阵
Geno的编码格式是否符合sequoia要求,避免因编码错误导致MAF计算失败
内容的提问来源于stack exchange,提问作者CRK

