Perl: запуск скрипта для нескольких файлов в нескольких каталогах - PullRequest
0 голосов
/ 01 сентября 2018

У меня есть сценарий perl, который читает файлы .txt и .bam и создает вывод с именем output.txt.

У меня есть много файлов, которые находятся в разных папках, но только немного отличаются по имени файла и пути к каталогу.

Все мои текстовые файлы находятся в разных подпапках, называемых PointMutation, с полным путем

/Volumes/Lab/Data/Darwin/Patient/[Plate 1/P1H10]/PointMutation

Текст в скобках - это часть, которая изменяется, но подпапка Patient содержит все мои текстовые файлы.

Мой файл .bam находится в подпапке с именем DNA с полным путем

/Volumes/Lab/Data/Darwin/Patient/[Plate 1/P1H10]/SequencingData/DNA

В настоящее время я запускаю этот скрипт на терминале

cd /Volumes/Lab/Data/Darwin/Patient/[Plate 1/P1H10]/PointMutation
perl ~/Desktop/Scripts/Perl.pl "/Volumes/Lab/Data/Darwin/Patient/[Plate 
1/P1H10]/PointMutation/txtfile.txt" "/Volumes/Lab/Data/Darwin/Patient/[Plate 
1/P1H10]/SequencingData/DNA/bamfile.bam"

Это всего лишь один или два файла, это довольно просто, но я бы хотел автоматизировать их, как только файлы станут намного больше. Кроме того, как только я запустил их один раз, я не хочу делать это снова, но я получу больше информации от того же пациента, есть ли способ заблокировать чтение папки?

1 Ответ

0 голосов
/ 01 сентября 2018

Я бы сделал что-то вроде:

for my $dir (glob "/Volumes/Lab/Data/Darwin/Patient/*/"){
    # skip if not a directory
    if (! -d $dir) {
        next;
    }
    my $txt = "$dir/PointMutation/txtfile.txt";
    my $bam = "$dir/SequencingData/DNA/bamfile.bam";

    # ... you magical stuff here
}

Предполагается, что все каталоги в /Volumes/Lab/Data/Darwin/Patient/ соответствуют соглашению.

Тем не менее, более долгосрочный / надежный способ организации анализа с большим количеством различных файлов повсеместно: 1) организовать все файлы, необходимые для каждого анализа в одном каталоге, или 2) создать метафайлы (я бы используйте JSON / yaml), которые содержат необходимые имена файлов.

...