删除标签/TAA/TGA

删除标签/TAA/TGA

我有一个下面提到的格式的文件。我必须删除任何与 TAG、TAA 或 TGA 匹配的终止密码子 (TAG/TAA/TGA)。搜索应该是三的倍数。 (就像它必须每三个字母搜索一次,如果发现终止密码子,则应将其丢弃 特格 ccc 三氯乙酸 阿加)。我搜索了不同的形式来删除终止密码子,但没有成功。感谢您抽出时间。谢谢

输入.fa

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

答案1

#!/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>";
    }
}

相关内容