我正在与PLINK合作分析SNP芯片数据。
有谁知道如何删除重复的SNP(按位置重复)?
答案 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
方法仅考虑了SNP
和bp location
;而PLINK
方法(--list-duplicate-vars
)也考虑了A1
和A2
。
类似于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获得相同的结果(自awk
,sed
等以来,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版本。