Как удалить дублирующиеся SNP по положению с помощью PLink?

Я работаю с PLINK для анализа данных чипа SNP.

Кто-нибудь знает, как удалить дублированные SNP (дублированные по положению)?


person user2808642    schedule 02.11.2017    source источник
comment
Вы можете получить дополнительные ответы на более специализированном сайте bioinformatics.stackexchange.com.   -  person bli    schedule 03.11.2017


Ответы (3)


Если у нас уже есть файлы в формате plink, то у нас должен быть .bim для двоичных файлов plink или .map для текстовых файлов plink. В любом случае должности указаны в 3-м столбце, а имена SNP — во 2-м столбце.

Нам нужно создать список SNP, которые дублируются:

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

Затем запустите plink с флагом --exclude:

plink --file myFile --exclude dupeSNP.txt --out myFileSubset
person zx8754    schedule 07.11.2017
comment
Уважаемый zx8754, Спасибо, все отлично работает. У вас есть идеи, как я могу преобразовать файлы .txt в формат plink. На самом деле эти файлы получаются в результате анализа каждой хромосомы отдельно после импутации, поэтому я хочу объединить все выходные результаты обратно в plink. формат 26 отдельных файлов таков: первый столбец - это идентификатор, а все остальные столбцы - вмененные snps? - person user2808642; 10.11.2017
comment
@user2808642 user2808642, если у вас есть новый вопрос как отдельный вопрос. Также предоставьте пример данных и ожидаемый результат. - person zx8754; 10.11.2017
comment
Также рассмотрите возможность голосования / принятия в качестве ответа, если это было полезно. - person zx8754; 10.11.2017

вы также можете сделать это непосредственно в PLINK1.9, используя флаг --list-duplicate-vars вместе с модификаторами <require-same-ref>, <ids-only> или <suppress-first> в зависимости от того, что вы хотите сделать.

проверьте https://www.cog-genomics.org/plink/1.9/data#list_duplicate_vars подробнее

Если вы хотите удалить все вхождения варианта с дубликатами, вам придется использовать флаг --exclude в выходном файле --list-duplicate-vars, который должен иметь расширение .dupvar.

person Imus    schedule 22.01.2018

Я должен предупредить, что два ответа, приведенные ниже, дают разные результаты. Это связано с тем, что метод 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 как дубликат; однако метод rs2 для PLINK list-duplicate-vars не будет помечен как дубликат.

Если вы хотите получить те же результаты, используя PLINK (нетривиальная задача для форматов файлов BGEN, поскольку awk, sed и т. д. не работают с двоичными файлами!), вы можете используйте команду --rm-dup из PLINK2.0. Список всех удаленных повторяющихся SNP можно зарегистрировать (в файл, оканчивающийся на .rmdup.list), используя параметр 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.

person Matthew J. Oldach    schedule 08.05.2019