Я делаю многошаговый рабочий процесс, который вызывает независимое программное обеспечение с каждым шагом. Конечная цель состоит в том, чтобы каждый шаг сохранял соответствующие выходные файлы в уникальный каталог с добавленным именем. Выходные файлы предыдущих шагов часто являются входными файлами для последующих шагов. Обработка всех файлов в одном каталоге, а затем перемещение на основе уникальных идентификаторов неэффективно, поскольку файлы очень велики. Лучше направлять вывод каждого шага непосредственно в его конечное местоположение.
Этот сценарий будет использоваться со многими независимыми наборами данных, поэтому цель состоит в том, чтобы сохранить сценарий в общем расположении и вызвать / запустить сценарий из расположения, зависящего от набора данных. Поэтому пути, используемые в скрипте, должны использовать произвольный язык, например ./ или ../
В настоящее время я пытаюсь переименовать имена входных файлов в цикле for, используя подстановку параметров, одновременно меняя путь. Однако имена файлов не совсем правильные.
Структуры и местоположения имен файлов
1-й цикл:
1.fastq
2.fastq
...
Местоположение: текущий рабочий каталог
Выход 1-го контура:
1_Trimmed.fastq
2_Trimmed.fastq
...
Сохранено в: ../Trimmed
После завершения 1-го цикла:
cd ../Trimmed
2-й контурный вход:
1_Trimmed.fastq
2_Trimmed.fastq
...
Местоположение: текущий рабочий каталог
Выход 2-го контура:
1_Mapped.fastq
2_Mapped.Fastq
Расположение: ../Bowtie2
Код
for file in *fastq
do
java -jar /path/Trimmomatic-0.39/trimmomatic-0.39.jar $file ../Trimmed/${file%%.fastq}"_Trimmed.fastq"
done
cd ../Trimmed
for file in *_Trimmed.fastq
do
bowtie2 -x $file ../Bowtie2/${file%%_Trimmed.fastq}"_Mapped.sam"
done
выход
В настоящее время файлы попадают в правильный каталог, но называются «Trimmed1_Trimmed.fastq» и «Bowtie21_Mapped.sam». Эти шаги:
../Trimmed/${file%%.fastq}"_Trimmed.fastq"
../Bowtie2/${file%%_Trimmed.fastq}"_Mapped.sam"
сделать так, чтобы слово "Trimmed" или "Bowtie2" было добавлено в начало имени файла, но я намерен указать только путь. Есть ли способ сделать это в цикле?
Спасибо!