首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用PLink删除重复的位置SNP?

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

Stack Overflow用户
提问于 2017-11-02 23:52:19
回答 3查看 2.8K关注 0票数 0

我正在使用PLINK分析SNP芯片数据。

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

EN

回答 3

Stack Overflow用户

发布于 2017-11-08 06:28:53

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

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

代码语言:javascript
复制
sort -k3n myFile.map |  uniq  -f2 -D | cut -f2 > dupeSNP.txt

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

代码语言:javascript
复制
plink --file myFile --exclude dupeSNP.txt --out myFileSubset
票数 0
EN

Stack Overflow用户

发布于 2018-01-23 04:25:11

您也可以直接在PLINK1.9中使用--list-duplicate-vars标志以及<require-same-ref><ids-only><suppress-first>修饰符,这取决于您想要做什么。

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

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

票数 0
EN

Stack Overflow用户

发布于 2019-05-09 05:07:21

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

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

代码语言:javascript
复制
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
代码语言:javascript
复制
# 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 method rs2 的标记为重复的。

如果你想使用获得相同的结果(对于awksed等BGEN文件格式来说,这不是一个简单的任务。不能在二进制文件上工作!)你可以使用--rm-dup command from PLINK2.0。可以使用list参数记录删除的所有重复SNP的列表(记录到以.rmdup.list结尾的文件中),如下所示:

代码语言:javascript
复制
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版本。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47079489

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档