【问题标题】:How do I remove duplicated by position SNPs using PLink?如何使用 PLink 删除按位置重复的 SNP?
【发布时间】:2017-11-02 15:52:19
【问题描述】:

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

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

【问题讨论】:

标签: bioinformatics genetics


【解决方案1】:

如果我们已经有 plink 格式的文件,那么我们应该有 .bim 用于二进制 plink 文件或 .map 用于文本 plink 文件。无论哪种情况,位置都在第 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

【讨论】:

  • 亲爱的 zx8754, 非常感谢。您知道如何将 .txt 文件转换为 plink 格式吗?实际上,该文件来自插补后分别对每个染色体的分析,所以我想将所有输出结果组合回 plink。 26个单独文件的格式为:第一列是ID,其他列都是估算的snps?
  • @user2808642 如果您有一个新的问题帖子作为单独的问题。还提供示例数据和预期输出。
  • 如果这有帮助,也可以考虑投票/接受作为答案。
【解决方案2】:

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

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

如果你想删除所有出现的重复变量,你必须在 --list-duplicate-vars 的输出文件上使用 --exclude 标志, 它应该有一个.dupvar 扩展名。

【讨论】:

    【解决方案3】:

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

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

    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 获得相同的结果(对于 BGEN 文件格式来说这是一项不平凡的任务,因为 awksed 不要处理二进制文件! )您可以使用--rm-dup command from PLINK2.0。可以使用list 参数记录所有删除的重复 SNP 列表(到以.rmdup.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 版中不可用的命令。因此,在 plink1.9 中(此时)使用 bgen 文件的唯一方法是使用较旧的 1.1 版本

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-03-21
      • 2014-04-18
      • 1970-01-01
      • 1970-01-01
      • 2018-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多