我有一个下面提到的格式的文件。我必须删除任何与 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
假设和限制:
- 该文件采用“顺序格式”,如下所述:http://evolution. Genetics.washington.edu/phylip/doc/sequence.html
- 序列中没有空格。
- 完整的序列长度是三的倍数(否则,最后一个不完整的密码子将被排除在输出之外)。
- 该序列不会分成多行。
操作模式:
- 读取一行。
- 如果它包含两个整数,则假设它是“标题行”并输出它。
- 将空格字符上的行拆分为
$head
(行的第一位)和$seq
(序列)。 - 一次遍历三个碱基的序列。
- 如果当前三个碱基与终止密码子匹配,则它们不会被放入新序列(
$newseq
)中,否则将被放入新序列中。 - 输出该行的头位以及新序列。
- 继续下一行(如果存在)。
要获得所发现终止密码子的视觉指示,请将循环更改为
while ( $seq =~ /(...)/g ) {
if ( $1 !~ /tag|taa|tga/ ) {
$newseq .= $1;
}
else {
$newseq .= "<STP>";
}
}