0

我有一个这样的fasta文件

">ENS..._intronX
acgtacgtacgtacgt
">ENS..._intronY
acgtacgtNNNNa
acgtacgtacgtacgt
">ENS..._intronZ
acgtacgtacgtacgt
acgtacgtacgtacgt

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

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

有什么建议么?

谢谢,

4

2 回答 2

3

呆呆

awk -v RS='">' '!/NN/{printf $0RT}' file
">ENS..._intronX
acgtacgtacgtacgt
">ENS..._intronZ
acgtacgtacgtacgt
acgtacgtacgtacgt    
于 2013-11-01T19:40:41.223 回答
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

希望这可以帮助!

于 2013-11-01T20:00:08.190 回答