как нумеровать последовательности с одинаковыми именами в файле постели - PullRequest
0 голосов
/ 30 мая 2019

У меня есть напильник как это.

    KQ4156  0       34      Simple_repeat   .   +
    KQ4156  35      64      Simple_repeat   .   +
    KQ4156  1759    1822    Simple_repeat   .   +
    KQ4156  1901    2059    Simple_repeat   .   -
    KQ4156  2112    2258    DNA/hAT-Charlie .   +
    KQ4156  2890    2964    Simple_repeat   .   +
    KQ4156  4085    4130    DNA/hAT-Charlie .   +
    KQ4156  5587    5619    Simple_repeat   .   +
    KQ4156  5931    5995    SINE/tRNA-Deu   .   -

для последующего анализа мне нужно различать одни и те же элементы. эс. simple_repeats_1, simple_repeats_2, и т. Д. И DNA/hAT-Charlie_1, DNA/hAT-Charlie_2, и т. Д. .... для всех элементов. Используемый скрипт:

awk 'BEGIN{OFS="\t"}{if(NR>3) {if($9=="C"){strand="-"}else{strand="+"};print $5,$6-1,$7,$11,".",strand}}' file.fa.out > file.bed

как я могу изменить его, чтобы получить то, что я ищу? Я думал о применении paste, но я не знаю, как применить его для всех последовательностей

Ответы [ 2 ]

3 голосов
/ 30 мая 2019

Не могли бы вы попробовать следующее.

awk 'BEGIN{OFS="\t"} {$4=$4"_"++count[$4]} 1'  Input_file
2 голосов
/ 30 мая 2019

Решение awk с использованием таблицы является самым простым:

awk -vOFS='\t' '{ seen[$4]++; $4=$4"_"seen[$4]; print; }' file

выведет:

KQ4156  0   34  Simple_repeat_1 .   +
KQ4156  35  64  Simple_repeat_2 .   +
KQ4156  1759    1822    Simple_repeat_3 .   +
KQ4156  1901    2059    Simple_repeat_4 .   -
KQ4156  2112    2258    DNA/hAT-Charlie_1   .   +
KQ4156  2890    2964    Simple_repeat_5 .   +
KQ4156  4085    4130    DNA/hAT-Charlie_2   .   +
KQ4156  5587    5619    Simple_repeat_6 .   +
KQ4156  5931    5995    SINE/tRNA-Deu_1 .   -
...