5

我正在与PLINK合作分析全基因组数据。

有谁知道如何删除重复的 SNP?

4

4 回答 4

4

在 PLINK 1.9 中,使用--list-duplicate-vars suppress-first,它将列出重复项,并删除一个(第一个),而另一个保持不变。我知道这会滑倒。

除了--exclude像戴维建议的那样使用之外,您还可以使用--extract, 保留而不是摆脱 SNP 列表。在任何基于 Unix 的系统上都有一个简单的方法(假设您的数据是 PED/MAP 格式并被染色体分割):

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 创建一个keepers_chr.txt包含 SNP ID 的文件。然后运行 ​​PLINK 输入你的原始文件并使用--extract keepers_chr,--make-bed --out unique_file

于 2016-03-23T17:26:47.730 回答
2

我知道没有自动执行此操作的命令,但我过去执行此操作的方式是获取重复的 SNP 列表,例如将重复项更改为 rs1001.dup,然后运行--update-allele --update-name然后创建重复项的列表,因此所有条目都将.dup在其名称的末尾,然后运行--extract duplicateSNPs.txt --make-bed --out yourfilename.dups.removed

如果您熟悉 R,那么获取重复的 SNP 列表应该不会太难。很抱歉给您一个“好吧,学习 X !!!” 回答

于 2012-06-22T09:13:21.747 回答
1

其他一些可能有帮助/感兴趣的想法:

  1. 您还可以使用 bcftools 删除 vcf 重复项,命令bcftools norm -D, --remove-duplicatesbcftools 文档可以在https://samtools.github.io/bcftools/bcftools.html找到

  2. 本着也只是使用 Unix 删除重复项的精神,我以前使用过以下内容(输入是压缩的 vcf 文件)gunzip -c input.vcf.gz | grep "^[^##]" | cut -f3 | sort | uniq -d > plink.dupvarplink.dupvar 是 PLINK 程序在执行重复删除步骤时查找的文件名。

于 2020-08-15T04:13:02.077 回答
0

尽管您必须使用 TPED 文件,但使用 R 更容易。一旦您设法获得 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.TPEDnewfile.TPED部分更改为文件的实际名称。

于 2015-06-25T15:26:29.127 回答