2017-10-18 13 views
0

私はfastaファイルを持っています。私は "N"を含む配列を削除する必要がありますか、少なくとも3つのユニークな塩基を含んでいません。 これまでのコードは以下の通りです。また、シーケンスIDラインを削除すると、削除したシーケンスの進行状況が表示されます。あなたのコードが間違って何perlがシーケンスに少なくとも3つのユニークな塩基が含まれているかどうかを確認し、削除しない場合は

#!/usr/bin/perl 
use strict; 
use warnings; 

open FILE, '<', $ARGV[0] or die qq{Failed to open "$ARGV[1]" for input: $!\n}; 
open match_fh, ">$ARGV[0]_trimmed.fasta" 
    or die qq{Failed to open for output: $!\n}; 

while (my $line = <FILE>) { 
    chomp($line); 

    if ($line =~ m/^>/) { 
     print match_fh "$line\n"; 

     my @data = split(/\|/, $line); 

     my $nextline = <FILE>; 

     if ($nextline !~ /N+/g) { 

      if ($nextline =~ /[ATGC]{3}/g) { 

      } 
      print match_fh "$nextline"; 
     } 
    } 
} 

close FILE; 
close match_fh; 



INPUT 
>seq1 
ATGCGGGATGATCCGAACGTTTAATCTCGTATGCCGTCTTCTATCTCNNN 
>seq2 
GATGAGCTTGACTCTAGTCCATCTCGTATGCCGTCTTCTGCTATCTCGTA 
>seq3 
TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTC 
>seq4 
TGGTACTGTAAGCATGAGAGTAATCTCGTATGCCGTCTTCTGCTTGAAAA 

OUTPUT 
>seq2 
GATGAGCTTGACTCTAGTCCATCTCGTATGCCGTCTTCTGCTATCTCGTA 
>seq4 
TGGTACTGTAAGCATGAGAGTAATCTCGTATGCCGTCTTCTGCTTGAAAA 
+0

?それはエラーまたは不正確な結果を与えるか?はいの場合、どちらですか? – user5226582

+0

3文字以下の行を削除しません。 – cara

+0

短いサンプル入力ファイルと期待される出力ファイルを提供できますか? – dgw

答えて

0
while(my $head = <FILE>) { 
    next if($head !~ /^>/); 
    $_=<FILE>; 
    if(!/N+/ && /A/+/T/+/G/+/C/ >= 3) { 
    print match_fh $head, $_; 
    } 
} 
関連する問題