2013-11-01 54 views
0

我有像这样如何删除包含Ns个

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

我需要在一排与至少2 N以除去序列(因为这些内含子misannotated)一个FASTA文件的fasta格式化的序列。

在此,这将是序列" >ENS..._intronY "(第3行,图4和5应被删除)

任何建议?

谢谢

回答

3

随着

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

应该用N +来代替NNNN吗? –

+0

@BugKiller,叹气,'ENS'中的'N'导致所有记录不符合条件 – iruvar

+0

downvoter,我想这是关于awk不是解析fasta文件的正确工具,但是请解释 – iruvar

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 

希望这有助于!