如何使用PLink删除位置SNP的重复?

时间:2017-11-02 15:52:19

标签: bioinformatics genetics

我正在与PLINK合作分析SNP芯片数据。

有谁知道如何删除重复的SNP(按位置重复)?

3 个答案:

答案 0 :(得分:0)

如果我们已经有plink格式的文件,那么对于二进制plink文件我们应该有.bim,对于文本plink文件我们应该有.map。在任何一种情况下,位置都在第3列,SNP名称在第2列。

我们需要创建一个重复的SNP列表:

sort -k3n myFile.map |  uniq  -f2 -D | cut -f2 > dupeSNP.txt

然后使用--exclude标志运行plink:

plink --file myFile --exclude dupeSNP.txt --out myFileSubset

答案 1 :(得分:0)

您也可以使用--list-duplicate-vars标志直接在PLINK1.9中执行此操作 与<require-same-ref><ids-only><suppress-first>修饰符一起使用,具体取决于您要执行的操作。

检查https://www.cog-genomics.org/plink/1.9/data#list_duplicate_vars了解详情

如果要删除具有重复项的变体的所有出现,则必须在--exclude的输出文件上使用--list-duplicate-vars标记,  应该有.dupvar延伸。

答案 2 :(得分:0)

我应注意,下面给出的两个答案会产生不同的结果。这是因为sort | uniq方法仅考虑了SNPbp location;而PLINK方法(--list-duplicate-vars)也考虑了A1A2

类似于sort | uniq文件上的.map,我们可以在AWK文件上使用.gen,如下所示:

22 rs1 12 A G 1 0 0 1 0 0
22 rs1 12 G A 0 1 0 0 0 1
22 rs2 16 C A 1 0 0 0 1 0
22 rs2 16 C G 0 0 1 1 0 0
22 rs3 17 T CTA 0 0 1 0 1 0
22 rs3 17 CTA T 1 0 0 0 0 1
# Get list of duplicate rsXYZ ID's
awk -F' ' '{print $2}' chr22.gen |\
        sort |\
        uniq -d > chr22_rsid_duplicates.txt

# Get list of duplicated bp positions
awk -F' ' '{print $3}' chr22.gen |\
        sort |\
        uniq -d > chr22_location_duplicates.txt

# Now match this list of bp positions to gen file to get the rsid for these locations
awk 'NR==FNR{a[$1]=$2;next}$3 in a{print $2}' \
        chr22_location_duplicates.txt \
        chr22.gen |\
        sort |\
        uniq \
        > chr22_rsidBylocation_duplicates.txt

cat chr22_rsid_duplicates.txt \
        chr22_rsidBylocation_duplicates.txt \
        > tmp

# Get list of duplicates (by location and/or rsid)
cat tmp | sort | uniq > chr22_duplicates.txt

plink --gen chr22.gen \
        --sample chr22.sample \
        --exclude chr22_duplicates.txt  \
        --recode oxford \
        --out chr22_noDups

这会将rs2分类为重复项;但是,对于PLINK list-duplicate-vars方法rs2而言,不会被标记为重复

如果要使用PLINK获得相同的结果(自awksed 等以来,BGEN文件格式的一项艰巨任务不起作用。 二进制文件上!),则可以使用--rm-dup command from PLINK2.0。可以使用.rmdup.list参数将已删除的所有重复SNP的列表记录(以list结尾的文件中),如下所示:

plink2 --bgen chr22.bgen \
  --sample chr22.sample \
  --rm-dup exclude-all list \
  --export bgen-1.1 \   # Export as bgen version 1.1
  --out chr22_noDups

注意:我将输出保存为1.1版,因为plink1.9仍具有plink 2.0版中不可用的命令。因此,(此时)将bgen文件与plink1.9一起使用的唯一方法是使用较早的1.1版本。