Tenho uma matriz de genótipos (com espaço tabular), com 2 milhões de linhas e 12 colunas. As colunas são indivíduos e as linhas são SNPs. Eu tenho 2 linhas por cada SNP para cada indivíduo, uma é o número do alelo de referência e o outro número do alelo alternativo (cada 2 linhas correspondem a um SNP, o que significa que as linhas 1 e 2 correspondem ao SNP 1, as linhas 3 e 4 correspondem ao SNP2, as linhas 5 e 6 correspondem ao SNP 3).
Este é um exemplo (2 SNPs e 8 indivíduos):
head genotype
2 3 1 0 0 3 5 3
18 15 19 18 16 15 13 17
2 1 0 0 0 1 1 1
18 19 18 16 20 17 17 23
Para cada SNP, se a soma do alelo de referência e alternativo for menor que 20, quero substituir os dois alelos por 0 e, se forem iguais ou maiores que 20, quero mantê-los. Esta é a minha saída desejada
head (desired_output)
2 0 1 0 0 0 0 3
18 0 19 0 0 0 0 17
2 1 0 0 0 0 0 1
18 19 0 0 20 0 0 23
Alguma ideia de como fazer isso com precisão?
A ideia é salvar linhas consecutivas em 2 arrays, então comparar os elementos do array pelos índices correspondentes.
Salve isso em um arquivo, diga "twenty.awk"
Então corra com