2013-11-01 36 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 

希望這有助於!