我正在与PLINK合作分析全基因组数据。
有谁知道如何删除重复的SNP?
答案 0 :(得分:4)
在PLINK 1.9中,使用--list-duplicate-vars suppress-first
,它将列出重复项,并删除一个(第一个),保留另一个完整。我知道这会滑倒。
您可以使用--exclude
来保留而不是删除SNP列表,而不是使用Davy建议的--extract
。在任何基于Unix的系统上都有一个简单的方法(假设您的数据采用PED / MAP格式并通过chromossome进行切割):
for i in {1..22}; do
cat yourfile_chr${i}.map | grep "$i" | cut -f -4 | uniq | cut -f -2 | keepers_chr${i}.txt;
done
这将为唯一位置的SNP创建一个带有SNP ID的keepers_chr.txt
文件。然后运行PLINK,将原始文件输入,并使用--extract keepers_chr
1}} {/ 1}}
答案 1 :(得分:2)
我没有自动执行此操作的命令,但我过去的方法是获取重复的SNP列表,例如将重复项更改为rs1001.dup,然后运行--update-allele --update-name
然后创建重复项列表,以便所有条目的名称末尾都有.dup
,然后运行--extract duplicateSNPs.txt --make-bed --out yourfilename.dups.removed
如果你熟悉R,获取重复的SNP列表应该不会太难。抱歉给你一个“好好学习X !!!”答案
答案 2 :(得分:0)
使用R更容易,但您必须使用TPED文件。一旦你设法获得TPED文件,只需将其复制并粘贴到R控制台:
a = read.table("yourfile.TPED",sep = " ",header=FALSE)
b = a[!duplicated(a$V2),]
write.table(b,file="newfile.TPED",sep=" ",quote = FALSE,col.names = FALSE, row.names=FALSE)
没有重复的newfile.TPED
将在R工作目录中显示。
提示:您可以更改脚本的yourfile.TPED
和newfile.TPED
部分,以获取您文件的实际名称。
答案 3 :(得分:0)
其他一些可能有帮助/兴趣的想法:
您还可以使用bcftools norm -D, --remove-duplicates
命令使用bcftools删除vcf副本bcftools文档可以在https://samtools.github.io/bcftools/bcftools.html
本着仅使用Unix删除重复项的精神,我以前使用过以下命令(输入是压缩的vcf文件)gunzip -c input.vcf.gz | grep "^[^##]" | cut -f3 | sort | uniq -d > plink.dupvar
plink.dupvar是PLINK程序在何时查找的文件名。执行重复删除步骤。