我正在使用PLINK分析SNP芯片数据。
有谁知道如何删除重复的SNP(按位置复制)?
发布于 2017-11-08 06:28:53
发布于 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扩展名。
发布于 2019-05-09 05:07:21
我需要注意的是,下面给出的两个答案会产生不同的结果。这是因为sort | uniq方法只考虑了SNP和bp location;而PLINK方法(--list-duplicate-vars)也考虑了A1和A2。
与.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 method rs2 的标记为重复的。
如果你想使用获得相同的结果(对于awk,sed等BGEN文件格式来说,这不是一个简单的任务。不能在二进制文件上工作!)你可以使用--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版本。
https://stackoverflow.com/questions/47079489
复制相似问题