使用adegenet读取PLINK文件报错:部分个体缺少-5 SNPs求助
解决adegenet read.PLINK报错"some individuals do not have -5 SNPs"
这个错误本质是adegenet读取PLINK .raw文件时,发现部分个体的有效SNP数量不符合预期(.raw文件前5列是个体信息,后续列是SNP基因型,程序会用总列数-5作为预期SNP数,若某个体的有效基因型数远低于此就会触发报错)。结合你已经做过QC的情况,试试以下方案:
1. 修正na.strings参数设置
你当前把0也设为缺失值,但PLINK .raw文件中0是合法的纯合参考基因型(对应AA型,1为杂合AB,2为纯合BB),将其标记为缺失会导致大量基因型被判定为无效,直接触发SNP数量不足的错误。修改代码,仅保留-9作为缺失标记:
FST_pop <- read.PLINK("data1.raw", na.strings = "-9", sep = "\t", select.subjects = NULL, select.snps = NULL, map.file = NULL, quiet = FALSE, chunkSize = 1000, parallel = require("parallel"), n.cores = 1)
2. 验证PLINK .raw文件格式正确性
用文本编辑器打开data1.raw,确认:
- 前5列严格为
FID, IID, PAT, MAT, SEX,无错位或缺失 - 后续每列对应一个SNP的基因型,值为
0/1/2/-9 - 分隔符确实是制表符(\t),没有混用空格或其他分隔符导致列数统计错误
3. 重新执行正确的PLINK样本QC步骤
确认你执行的是样本缺失率过滤(而非仅过滤SNP):
# 第一步:过滤样本缺失率>1%的个体 plink --bfile your_raw_data --mind 0.01 --make-bed --out qc_filtered_samples # 第二步:重新导出符合要求的.raw文件 plink --bfile qc_filtered_samples --recode A --out data1
注:--mind 0.01是过滤样本缺失率,--geno 0.01是过滤SNP缺失率,二者需配合使用才能同时清理不合格的样本和SNP。
4. 手动定位异常样本
如果以上步骤仍无效,用PLINK生成样本缺失率报告,手动剔除极端异常的个体:
plink --bfile your_raw_data --missing --out sample_missing_stats
查看sample_missing_stats.imiss文件,找到F_MISS(样本总缺失率)过高的个体,在PLINK中用--remove参数剔除后再导出.raw文件。
内容的提问来源于stack exchange,提问作者JosephMuthivhi
相关产品推荐
相关产品推荐

