У меня много файлов в папке.И я хочу открыть и прочитать их в порядке следования в зависимости от справочного файла.имя моего файла:
AAAAA_AAAAA.CCCCC3.1.bbb.DDDDD.1.fa
AAAAA_AAAAA.CCCCC3.1.bbb.DDDDD.2.fa
AAAAA_AAAAA.CCCCC3.1.bbb.DDDDD.3.fa
AAAAA_AAAAA.CCCCC3.1.bbb.DDDDD.4.fa
.
.
.
Структура справочного файла:
chr1 744 745
chr1 1208 1209
chr2 1250 1251
chr2 1454 1455
chr3 1676 1677
chr3 1683 1684
Структура входного файла:
AAAAA_AAAAA.CCCCC3.1.bbb.DDDDD.1.fa
>1 dna:
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNTATGTGAGAAGATAGCTGAA
CGCCTTGTCCACATCATCTTACTGCTGAGAGTTGAGCTCACCCTCAGTCCCTCACAGTTC
AAAAA_AAAAA.CCCCC3.1.bbb.DDDDD.2.fa
>2 dna:
GAGAGCTGGCTTCTAGGCATGCTTCCTTTTGAGAGCTGAGGACAGGACAGAACCCTCCCG
CATCCTGCCTGACTGTAGACGTACCTGCTAACCTCCTCATGTTAGTGGCTGGGATAGATT
GTGGGAAAAGCATGTGTAAGCATTGGGCCTGAACTCCCGTGTATCTGAGTTGAATACAGC
GATTTCCAACATCCTTCTTCAATAGGAGTGTAGCTAGGTTCCAACTCCCATGTCCGAGTG
GGTAGCAGACATCTGCCTTCCATGCATACACACTTCTGAGAGTTGAGCTTATGGCCTGTA
ACCCTACCTCCTGCCTGCAGCTACCTTTTGCTTCCAAAAGTCCTAGGCTCGCTGCTTCAC
CAAAGTGTTGGGAGAGGTAACTGTTGTCTCCCGGCACACAAGACTAGTGCCTCCAAGCTC
AATCCAGCGATTTCCCAGTAATTCCTGGGTTAGACTGGTGCTACATACTAAGTTCCATAC
GTGAGTAGGTAGTTGAAAGCCTTGTCCAAAAACATCTTACTTCTGAGAGTTGAGCTCACC
CTCAGTCCCTCACAGTTCCACACTGCCTGCAGAGTGAGTTTCCCACGTCTTCATCAGAGA
CTTTTGCCAGAGGCTTCTGAGACGCAAGTTAACAATGCAAACAGGAGGGTATACCCAGGT
GCAGTAGATTGGTTATCTGGGAACCTCCTTACTCAGAATACTGTTACCTTCACACTGTCA
TAAGAATGCAGCTAGTTGAGAGCTGGCTTCTAGGCATGCTTCCCTGTGAGAGCTGAGGAC
мои выводы:
chr1 A
chr1 G
chr2 C
chr2 C
chr3 T
chr3 T
Я могу использовать bioperl, чтобы найти положение и распечатать значения одно за другим (файл за файлом).
Затем я пытаюсь открыть и прочитать файлы из папки.
my $dir = '/home/Documents/Folder/';
opendir(DIR, $dir) or die $!;
my @files = grep (/.fa$/, readdir(DIR));
for my $list(@files){ ##try to get the last number from file name##
my @lines = split /\./, $list}
открыть и прочитать мой справочный файл
open my $POS, '<', 'CanFam3_SNP_POS.txt' or die $!;
Я положил все файлы вмассив и сортировать их.
my @sorted = @files;
foreach my $i (0..$#sorted)
Затем я пытаюсь использовать элемент управления цикла, чтобы открыть и прочитать файл в зависимости от значений столбца справочного файла 1.Например, chr1, AAAAA_AAAAA.CCCCC3.1.bbb.DDDDD.1.fa необходимо прочитать и обработать.Если вы читаете chr2 из ссылочного файла, прервите цикл, а затем откройте и прочитайте AAAAA_AAAAA.CCCCC3.1.bbb.DDDDD.2.fa, обработайте файл с помощью chr2.
open my $fh, '<', "/home/Documents/Folder/$sorted[$i]" or die $!;
while (my $line = <$POS>){
chomp($line);
if ($line =~ /chr$lines[5]/g){
my @positions = split (/\t/, $line);
print "$positions[0]","\t","$positions[1]","\t", substr($so->seq(),
$positions[1], $positions[2] - $positions[1]),"\n";
last if ($line !~ /chr$lines[5]/g)
}
}
Я думаю, что яесть некоторые проблемы с этими кодами.Могу ли я использовать Perl для этого процесса?Я неправильно понимаю некоторые моменты?