Чтобы выполнить метаанализ между когортами, мне нужно, чтобы все аллели были закодированы одинаково.
Для этого выполните следующие шаги:
- Для каждого SNP определите, совпадают ли аллели (т. Е.
A1
одинаково в обеих когортах, A2
одинаково в обеих когортах). - Если аллели совпадают, ничего не делать
- Если аллели для SNP не совпадают (т.е. они переворачиваются), переверните аллели и поменяйте знак эффекта. размер (столбец
BETA
) - Если аллели для SNP различны, удалите SNP
Когорта 1 (cohort1.txt)
SNP CHR A1 A2 BP P BETA
SNP1 1 C T 74648 0.224 0.32
SNP2 4 A T 82193 0.345 0.04
SNP3 5 T C 34223 0.234 -0.12
SNP4 6 AA G 31871 0.241 0.043
Cohort 2 (cohort2.txt)
SNP CHR BP A1 A2 BETA P
SNP1 1 74648 C T 0.32 0.224
SNP2 4 82193 A T 0.04 0.345
SNP3 5 34223 C T -0.12 0.234
SNP4 6 31871 A G 0.13 0.003
Вывод «перевернутый» для когорты 2 будет:
SNP CHR BP A1 A2 BETA P
SNP1 1 74648 C T 0.32 0.224
SNP2 4 82193 A T 0.04 0.345
SNP3 5 34223 T C 0.12 0.234
Чтобы получить список не перевернутых SNP, я бы использовал:
awk 'NR==FNR{_[$3]=$4} NR!=FNR{if($4==_[$5]) print;}' cohort2.txt cohort1.txt
Затем, чтобы перевернуть аллели в когорте 2, я бы использовал:
awk ' { t = $4; $4 = $5; $5 = t; print; } ' cohort2.txt
И, наконец, изменил знак эффекта-размера:
awk '{$6=$6*a;print}' a=-1 cohort2.txt
Однако я не могу понять, как это сделать, только если исходное условие (совпадение аллелей) неверно.