如何删除包含Ns的fasta格式化序列

时间:2013-11-01 19:34:20

标签: perl awk fasta

我有一个类似

的fasta文件
">ENS..._intronX
acgtacgtacgtacgt
">ENS..._intronY
acgtacgtNNNNa
acgtacgtacgtacgt
">ENS..._intronZ
acgtacgtacgtacgt
acgtacgtacgtacgt

我需要删除连续至少2 N的序列(因为这些内含子被错误注释)。

这里,它将是序列" >ENS..._intronY "(第3行,第4行和第5行应该删除)

有什么建议吗?

谢谢,

2 个答案:

答案 0 :(得分:3)

awk -v RS='">' '!/NN/{printf $0RT}' file
">ENS..._intronX
acgtacgtacgtacgt
">ENS..._intronZ
acgtacgtacgtacgt
acgtacgtacgtacgt    

答案 1 :(得分:1)

由于您似乎正在寻求生物信息学,因此请考虑熟悉Bio::SeqIO,因为它对此以及许多其他fasta解析作业有所帮助:

use strict;
use warnings;
use Bio::SeqIO;

my $in = Bio::SeqIO->new( -file => shift, -format => 'Fasta' );

while ( my $seq = $in->next_seq() ) {
    print '>' . $seq->id . ' ' . $seq->desc . "\n" . $seq->seq . "\n"
      if $seq->seq !~ /nn/i;
}

用法:perl script.pl inFile [>outFile]

最后一个可选参数将输出定向到文件。

数据集输出:

>ENS..._intronX 
acgtacgtacgtacgt
>ENS..._intronZ 
acgtacgtacgtacgtacgtacgtacgtacgt

希望这有帮助!