Как использовать разделитель записи, а затем использовать разделитель субзаписей? Возможно, это не лучший способ подумать о том, что я пытаюсь сделать. Вот моя цель:Сепаратор записи в разделителе записей
Я хочу выполнить цикл while на отдельной вкладке с разделителем за раз в заданной строке элементов. Для каждой строки (строки) элементов, разделенных вкладкой, мне нужно распечатать результаты всех циклов while в уникальный файл. Позвольте пояснить следующие примеры.
Мой входной файл будет примерно следующим. Он будет называться «Clustered_Barcodes.txt»
TTTATGC TTTATGG TTTATCC TTTATCG
TTTATAA TTTATAA TTTATAT TTTATAT TTTATTA
CTTGTAA
Мой Perl-код выглядит следующим образом:
#!/usr/bin/perl
use warnings;
use strict;
open(INFILE, "<", "Clustered_Barcodes.txt") or die $!;
my %hash = (
"TTTATGC" => "TATAGCGCTTTATGCTAGCTAGC",
"TTTATGG" => "TAGCTAGCTTTATGGGCTAGCTA",
"TTTATCC" => "GCTAGCTATTTATCCGCTAGCTA",
"TTTATCG" => "TAGCTAGCTTTATCGCGTACGTA",
"TTTATAA" => "TAGCTAGCTTTATAATAGCTAGC",
"TTTATAA" => "ATCGATCGTTTATAACGATCGAT",
"TTTATAT" => "TCGATCGATTTATATTAGCTAGC",
"TTTATAT" => "TAGCTAGCTTTATATGCTAGCTA",
"TTTATTA" => "GCTAGCTATTTATTATAGCTAGC",
"CTTGTAA" => "ATCGATCGCTTGTAACGATTAGC",
);
while(<INFILE>) {
$/ = "\n";
my @lines = <INFILE>;
open my $out, '>', "Clustered_Barcode_$..fasta" or die $!;
foreach my $sequence (@lines){
if (exists $hash{$sequence}){
print $out ">$sequence\n$hash{$sequence}\n";
}
}
}
Мой желаемый результат будет три разных файла. Первый файл будет называться «Clustered_Barcode_1.fasta» и будет выглядеть следующим образом:
>TTTATGC
TATAGCGCTTTATGCTAGCTAGC
>TTTATGG
TAGCTAGCTTTATGGGCTAGCTA
>TTTATCC
GCTAGCTATTTATCCGCTAGCTA
>TTTATCG
TAGCTAGCTTTATCGCGTACGTA
Обратите внимание, что это отформатированный так, что ключи предшествует морковь, а затем на следующей строке является больше связана последовательность (стоимость). Этот файл включает в себя все последовательности в первой строке Clustered_Barcodes.txt
Мой третий файл должен называться «Clustered_Barcode_3.fasta» и выглядит следующим образом:
>CTTGTAA
ATCGATCGCTTGTAACGATTAGC
Когда я запускаю мой код, только берет вторую и третью строки последовательностей во входном файле. Как начать с первой строки (избавляясь от требования \ n для разделителя записей)? Как я могу обрабатывать каждый элемент одновременно, а затем печатать результаты результатов линии в один файл? Кроме того, если есть способ включить количество последовательностей в имя файла, это будет здорово. Это поможет мне позже организовать файлы по размеру. Например, имя может быть чем-то вроде «Clusterd_Barcodes_1_File_3_Sequences.fasta».
Спасибо всем.
Есть ли способ изменить это, так что имя выходного файла включает в себя количество строк в файле? Например, в выходном файле «Clustered_Barcode_3_2_rows.fasta» будет только 2 строки, и в выходном файле «Clustered_Barcode_2_4_rows.fasta» будет 4 строки. Благодаря, – Rob