FASTA ファイル内の「N」の数を数えようとしています。これは次のとおりです。
>Header
AGGTTGGNNNTNNGNNTNGN
>Header2
AGNNNNNNNGNNGNNGNNGN
最後に、「N」の数のカウントを取得したいのですが、各ヘッダーは読み取りであるため、ヒストグラムを作成したいので、最終的に次のような出力を行います。
# of N's # of Reads
0 300
1 240
等...
したがって、「N」の数が 0 のシーケンスまたはリードが 300 あります。
use strict;
use warnings;
my $file = shift;
my $output_file = shift;
my $line;
my $sequence;
my $length;
my $char_N_count = 0;
my @array;
my $count = 0;
if (!defined ($output_file)) {
die "USAGE: Input FASTA file\n";
}
open (IFH, "$file") or die "Cannot open input file$!\n";
open (OFH, ">$output_file") or die "Cannot open output file $!\n";
while($line = <IFH>) {
chomp $line;
next if $line =~ /^>/;
$sequence = $line;
@array = split ('', $sequence);
foreach my $element (@array) {
if ($element eq 'N') {
$char_N_count++;
}
}
print "$char_N_count\n";
}