У меня есть короткий сценарий, который делает то, что я хочу, однако я хочу применить сценарий к каждому столбцу в файле (независимо от того, сколько столбцов у меня есть)
Входной файл (с разделителями табуляции):
1/2:17,6:23:85:85,0,370 0/0:51,6:57:17:0,17,1359 0/0:3,0:3:9:0,9,99
0/0:3,0:3:0:.:.:0,0,38 0/0:1,0:1:3:.:.:0,3,33 0/1:1,2:3:26:0|1:13813_T_G:81,0,26
./.:2,0:2:.:.:.:0,0,0 0/0:1,0:1:3:.:.:0,3,33 0/1:1,2:3:26:0|1:13813_T_G:81,0,26
./.:0,0:0:.:0,0,0 1/1:0,4:4:12:131,12,0 ./.:0,0:0:.:0,0,0
1/1:0,2:2:6:1|1:14590_G_A:90,6,0 0/0:3,0:3:9:.:.:0,9,98 0/0:1,0:1:3:.:.:0,3,30
Предполагается, что:
0/1, 0/2, 1/2 = HET
0/0 =? REF
1 / 1, 2/2 = HOM
else = unknown
Желаемый результат (на основе первых трех символов каждого столбца):
1/2:17,6:23:85:85,0,370 0/0:51,6:57:17:0,17,1359 0/0:3,0:3:9:0,9,99 HET ?REF ?REF
0/0:3,0:3:0:.:.:0,0,38 0/0:1,0:1:3:.:.:0,3,33 0/1:1,2:3:26:0|1:13813_T_G:81,0,26 ?REF ?REF HET
./.:2,0:2:.:.:.:0,0,0 0/0:1,0:1:3:.:.:0,3,33 0/1:1,2:3:26:0|1:13813_T_G:81,0,26 unknown ?REF HET
./.:0,0:0:.:0,0,0 1/1:0,4:4:12:131,12,0 ./.:0,0:0:.:0,0,0 unknown HOM unknown
1/1:0,2:2:6:1|1:14590_G_A:90,6,0 0/0:3,0:3:9:.:.:0,9,98 0/0:1,0:1:3:.:.:0,3,30 HOM ?REF ?REF
Я написал сценарий который берет первый столбец и выводит правильный HET /? REF / HOM / unknown:
awk 'BEGIN{FS=OFS="\t"}{if(($1 ~ /0\/1/) || ($1 ~ /1\/2/) || ($1 ~ /0\/2/)) print $1,"HET"; \
else if(($1 ~ /1\/1/) || ($1 ~ /2\/2/)) print $1,"HOM"; \
else if($1 ~ /0\/0/) print $1,"?REF"; \
else print $1,"unknown";}' inputfile
Это дает мне следующее:
1/2:17,6:23:85:85,0,370 HET
0/0:3,0:3:0:.:.:0,0,38 ?REF
./.:2,0:2:.:.:.:0,0,0 unknown
./.:0,0:0:.:0,0,0 unknown
1/1:0,2:2:6:1|1:14590_G_A:90,6,0 HOM
Пока все хорошо. Теперь я хочу перебрать каждый столбец, используя приведенный выше сценарий, а затем распечатать правильный REF / HET / HOM в последовательном порядке, как показано ниже, т.е. генотип1 соответствует coded1, а генотип2 соответствует coded2 et c.
genotype1 genotype2 genotype3 coded1 coded2 coded3
1/2:17,6:23:85:85,0,370 0/0:51,6:57:17:0,17,1359 0/0:3,0:3:9:0,9,99 HET ?REF ?REF
Боюсь, здесь я застреваю! Я не уверен, как пропустить oop через каждую колонку ...
Пожалуйста, go полегче, я клиницист, а не биоинформатик! E