私は perl が初めてで、ハッシュの使用に関して質問があります。同様の質問が投稿される前に投稿されましたが、私の問題に関連するものはありませんでした。
長さが異なるいくつかのシーケンスを含む fasta ファイルがあり、すべてのシーケンスの長さが同じになるまで、各 fasta エントリの末尾に文字列 (この場合は N) を追加したいと考えています。この時点で、fasta ファイルを読み取って、各シーケンスを文字列として (ただし、配列としても実行できます)、ハッシュの値に返すことができます。重要な要素は、fasta ファイルの対応するヘッダーです。
私のコードは次のとおりです。
###### calculate the length of each hash value and store the highest value in $max
my $length;
my $max = 0;
my $addN = "N";
foreach $name ( keys %seq ) {
$length = length($seq{$name});
if ($max < $length) {
$max = $length;
} else { next }
print $max,"\n";
while (length ($seq{$name}) < $max) {
$seq{$name} .= $addN;
}
foreach $name (keys %seq) {
print $seq{$name};
print "\n";
}
}
ここでの問題は、このコードの出力が入力とまったく同じであることです。たとえば、
INPUT:
>fasta1
AAAAAAAAA
>fasta2
AA
OUTPUT
>fasta1
AAAAAAAAA
>fasta2
AA
次のような出力が必要な場所:
>fasta1
AAAAAAAAA
>fasta2
AANNNNNNN
このタスクを達成するのを手伝ってくれませんか?