Я ОЧЕНЬ новичок в perl, а также в программировании в целом. Я искал последние пару дней, как подсчитать количество совпадений шаблонов; Мне было трудно понять другие решения и применить их к коду, который я уже написал.Подсчет числа совпадений шаблонов в Perl
В принципе, у меня есть последовательность, и мне нужно найти все модели, которые соответствуют [TC] C [CT] GGAAGC
Я считаю, что я эту часть вниз. но я застрял на подсчете количества вхождений каждого совпадения шаблонов. Кто-нибудь знает, как отредактировать код, который я уже должен сделать? Любые советы приветствуются. Благодаря!
#!/usr/bin/perl
use strict;
use warnings;
use diagnostics;
# open fasta file for reading
unless(open(FASTA, "<", '/scratch/Drosophila/dmel-all-chromosome- r6.02.fasta')) {
die "Can't open dmel-all-chromosome-r6.02.fasta for reading:", $!;
}
#split the fasta record
local $/ = ">";
#scan through fasta file
while (<FASTA>) {
chomp;
if ($_ =~ /^(.*?)$(.*)$/ms) {
my $header = $1;
my $seq = $2;
$seq =~ s/\R//g; # \R removes line breaks
while ($seq =~ /([TC]C[CT]GGAAGC)/g) {
print $1, "\n";
}
}
}
Update, я добавил в
my @matches = $seq =~ /([TC]C[CT]GGAAGC)/g;
print scalar @matches;
В приведенном ниже коде. Однако, похоже, он выводит 0 перед каждым совпадением шаблонов, вместо вывода общей суммы всех совпадений шаблонов.
while (<FASTA>) {
chomp;
if ($_ =~ /^(.*?)$(.*)$/ms) {
my $header = $1;
my $seq = $2;
$seq =~ s/\R//g; # \R removes line breaks
while ($seq =~ /([TC]C[CT]GGAAGC)/g) {
print $1, "\n";
my @matches = $seq =~ /([TC]C[CT]GGAAGC)/g;
print scalar @matches;
}
}
}
Редактировать: Мне нужен вывод для отображения списка совпадений. Мне также нужно найти общее количество найденных совпадений. Например:
CCTGGAAGC
TCTGGAAGC
TCCGGAAGC
3 соответствует найдено
Пожалуйста, не отрицайте свое собственное сообщение. – Dom
Не отрицайте свои вопросы –