Я хочу сравнить две последовательности, используя standalone blastn
.объединить два элемента в массиве perl
Но прежде чем я смогу сделать это, я должен вырезать последовательность на 1020nt каждого фрагмента. Если последний фрагмент меньше 1020nt, я должен объединить (последовательность) в последнем фрагменте с последовательностью в предыдущем фрагменте. Например, я вырезал последовательность на 1020nt и получаю 7 фрагментов. Но 7-й фрагмент меньше 1020nt, поэтому я должен объединить его в 6-й фрагмент. Кто-нибудь знает, как это сделать с помощью Perl language?
Это мой код:
while(<QR>){
chomp;
s/>//g;
my ($scaf,$seq)= split /\n/,$_,2;
my $scaf_name = (split /\s+/,$scaf)[0];
$seq =~ s/\s+//g;
my @cut = ($seq =~ /(.{1,$chop_len})/g);
if (length($#cut) < 1020) {
$#cut="@cut[-2 .. -1]"; # i get error here
}
else {
}
print $#cut;
for my $cut_num (0..$#cut){
my $sgmID = "$scaf_name\_$cut_num";
print CR ">$sgmID\n$cut[$cut_num]\n";
}
}
close QR;
close CR;
На самом деле я нашел этот сценарий Perl в Интернете, и изменить его так, что я слил последние два фрагмента.
да, вот работа! Спасибо . Но этот код читает только один файл. Затем я пытаюсь прочитать несколько файлов и выполнить один и тот же процесс для каждого файла. Я могу запустить его, но в файле просто покажутся последние фрагменты. – era