У меня есть файл (sequences.txt) с 3 последовательностями Fasta, например:
>Line40_Chr2L
AAAA
>Line41_Chr2L
CCCC
>Line42_Chr2L
TTTT
Я написал код, который позволяет мне хранить последовательности (без заголовка (>) в переменной с именем $sequences.
open INFILE, $infile or die "Can't open $infile: $!";
my $sequence = (); # This sequence variable stores the sequences from the .fasta file
my $line; # This reads the input file one-line-at-a-time
while ($line = <INFILE>) {
chomp $line;
if {
if($line =~ /^\s*$/) { # This finds lines with whitespaces from the beginning to the ending of the sequence. Removes blank line.
next;
} elsif($line =~ /^\s*#/) { # This finds lines with spaces before the hash character. Removes .fasta comment
next;
} elsif($line =~ /^>/) { # This finds lines with the '>' symbol at beginning of label. Removes .fasta label
next;
} else {
$sequence = $line;
}
$sequence =~ s/\s//g; # Whitespace characters are removed
}
}
Теперь я хочу сравнить одну и ту же позицию в каждой последовательности (в столбцах). Например, я хочу сравнить первую позицию из трех последовательностей. Намерение состоит в том, чтобы проанализировать, есть ли у меня одна и та же база в одном и том же положении последовательностей. Но у меня проблемы с этим, потому что я не знаю, как индексировать столбцы, если у меня есть переменная с 3 последовательностями без разделителя.
Итак, я думал о двумерном массиве (i, j), но я начинаю с Perl, и мне нужна помощь. Или вы знаете более простой способ?
Кто-нибудь может мне помочь?
Большое спасибо!