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

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

input.fa

  • Как объединить файлы CSV
  • Извлечь unix-совместимый файл-путь с пространством из вывода команды
  • awk: принудительное возвращение статуса?
  • grep окружающие символы матча
  • Как узнать общие элементы между двумя файлами?
  • использовать awk для замены скобок?
  • 3 1896 FOMPING00005383 atgccctcaagacagccggggatgcctccgctggcgcctgggcttcaattcagcccaaaggccagccacggtcagcccacgtcggaagcccatcttccagccattgggtccgccgccgtcgacgtctattcatttgtcacagaagatgcaatcgcgctggggccggcaagctccgtctcacccgaaaatattgtcatgacacaacctaccactatacatcatgactctgtgaaaggcgagaagtttaccgttgagcgagacagcgtcgacgcgctctccttcagctcgaaccagagcgttccccggcc------taagttacccttaccttggcaagtattgatagcggccttgacctgtttgtgtactttcggcaaccactggtcgaat---------------------accaccatcattaaagagacgcatatcaacaactcccaattcgccaccttg------------------ 

  • Strip // Комментарии из файлов
  • Как сообщить «sed» на месте изменения
  • Как создать список элементов под определенными заголовками в текстовом документе? (Linux / Bash)
  • Подведение общих строк в разных файлах
  • Распечатайте каждое поле CSV на новой строке, не зная количества полей
  • Сравнение независимых строк в двух файлах
  • 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 - лучшая ОС в мире.