удалить TAG / TAA / TGA

У меня есть файл в указанном ниже формате. Мне нужно удалить стоп-кодоны (TAG / TAA / TGA) все, что соответствует TAG или TAA или TGA. поиск должен быть кратным трем. (например, он должен искать каждые три буквы, и если он найдет стоп-кодоны, их следует отбросить atg ccc tca aga ). Я искал различные формы для удаления стоп-кодонов, но не был успешным. оцените ваше время. Спасибо

input.fa

3 1896 FOMPING00005383 atgccctcaagacagccggggatgcctccgctggcgcctgggcttcaattcagcccaaaggccagccacggtcagcccacgtcggaagcccatcttccagccattgggtccgccgccgtcgacgtctattcatttgtcacagaagatgcaatcgcgctggggccggcaagctccgtctcacccgaaaatattgtcatgacacaacctaccactatacatcatgactctgtgaaaggcgagaagtttaccgttgagcgagacagcgtcgacgcgctctccttcagctcgaaccagagcgttccccggcc------taagttacccttaccttggcaagtattgatagcggccttgacctgtttgtgtactttcggcaaccactggtcgaat---------------------accaccatcattaaagagacgcatatcaacaactcccaattcgccaccttg------------------ 

  • Вызов латекса от vim прекратил работу
  • Вырезать каждую 100-ю колонку из csv
  • Как изменить порядок столбцов в текстовом файле?
  • gawk: Как я могу печатать выходные данные с помощью команды gawk в нескольких строках на терминале в одной строке в файле
  • Как использовать скрипт bash для чтения содержимого двоичного файла?
  • Извлеките значение из вывода команды и используйте значение в качестве параметра для следующей команды
  • Добавьте все столбцы отдельно в linux, если первый столбец имеет одинаковые записи
  • проанализировать первый столбец вывода команды, получить соответствующее второе значение столбца
  • One Solution collect form web for “удалить TAG / TAA / TGA”

     #!/usr/bin/env perl use strict; use warnings; while ( my $line = <> ) { chomp($line); if ($line =~ /\d+\s+\d+/) { printf("%s\n", $line); next; } my ( $head, $seq ) = split( /\s+/, $line ); my $newseq; while ( $seq =~ /(...)/g ) { if ( $1 !~ /tag|taa|tga/ ) { $newseq .= $1; } } printf("%s %s\n", $head, $newseq); } 

    Запуск:

     $ ./script input.fa >output.fa 

    Предположения и ограничения:

    1. Файл находится в «последовательном формате», как описано здесь: http://evolution.genetics.washington.edu/phylip/doc/sequence.html
    2. В последовательности нет пробелов.
    3. Полная длина последовательности кратна трем (в противном случае последний незавершенный кодон будет оставлен вне выхода).
    4. Последовательность не разбивается на несколько строк.

    Режим работы:

    1. Прочитывается строка.
    2. Если он содержит два целых числа, предположим, что это «строка заголовка» и выводит его.
    3. Разделите строку на символы пробела на $head (первый бит строки) и $seq (последовательность).
    4. Пройдите через последовательность по три базы за раз.
    5. Если текущие три базы соответствуют стоп-кодону, они не будут помещены в новую последовательность ( $newseq ), иначе они будут.
    6. Выведите головной бит строки вместе с новой последовательностью.
    7. Продолжайте со следующей строкой, если она есть.

    Чтобы получить визуальную индикацию найденных стоп-кодонов, измените цикл на

     while ( $seq =~ /(...)/g ) { if ( $1 !~ /tag|taa|tga/ ) { $newseq .= $1; } else { $newseq .= "<STP>"; } } 
    Linux и Unix - лучшая ОС в мире.