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

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

input.fa

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

  • как привязать snps к файлу ref ref
  • извлекать блоки текста из xml-файла с условием
  • Найдите наименьшие числа во втором столбце, соответствующие значениям индекса в первом столбце
  • Поиск и замена вопроса
  • shell-скрипт для выполнения текстовой обработки структуры данных текстовых файлов и небольших изменений содержимого
  • Как выбрать несколько строк из одного входа и сохранить их в разные файлы одновременно?
  • Удалите повторяющиеся строки с помощью twist
  • Скрипт, сравнивающий два файла, соответствует двум строкам в любой точке
  • 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 - лучшая ОС в мире.