Slurm работа, производящая загадочную строку двоеточий при использовании более - PullRequest
0 голосов
/ 02 января 2019

Я пытаюсь запустить какое-то программное обеспечение для биоинформатики для набора файлов, но инструмент неожиданно завершает работу, когда я отправляю его с slurm, по-видимому, из-за неправильной доставки списков входных файлов. Если я запускаю его в командной строке, это, кажется, работает. Я заменил некоторые имена файлов игрушек ниже, потому что реальные имена очень длинные. Инструмент называется rMAT, но сам инструмент не имеет отношения к моей проблеме.

Я использую файл .sbatch для отправки задания в кластер из командной строки следующим образом:

sbatch job.sbatch group1.txt group2.txt

Где два текстовых файла содержат разделенный запятыми список файлов данных. В файле .sbatch я передаю переменные в инструмент биоинформатики следующим образом:

#!/bin/bash
#SBATCH --time=00:00:20
#SBATCH --nodes=1
#SBATCH --ntasks=1
#SBATCH -o ./o.%j
#SBATCH --err ./e.%j
#SBATCH --account=owner-guest
#SBATCH --partition=server-guest

bioinfotool.py -arg1 `more group1.txt` -arg2 `more group2.txt`

Я делаю это таким образом, потому что инструмент биоинформатики, по-видимому, не может непосредственно проанализировать текстовый файл.

Однако, это все еще не работает, и я думаю, что это из-за моего использования обратных галочек и команды more. Я пытаюсь отладить, добавив оператор echo

echo `more group1.txt`

Вывод должен быть

sample1.bam,sample2.bam,sample3.bam

однако фактический результат равен

:::::::::::::: group1.txt :::::::::::::: sample1.bam,sample2.bam,sample3.bam

Таким образом, мне кажется, что эта необъяснимая строка запятой + имя файла + строка запятой добавляется к моему списку файлов, прежде чем она передается в инструмент биоинформатики.

Гуглить такие вещи, как "цепочка запятых" + slurm ", было бесполезно, поэтому я прибегаю к публикации собственного вопроса.

Откуда эти запятые? Есть ли лучший способ извлечь строку имени файла из текстового файла?

Спасибо

Редактировать: Использование «кошка» вместо «больше» решает проблему.

1 Ответ

0 голосов
/ 02 января 2019

more - интерактивная программа, и двоеточия, которые вы видите, скорее всего, используются двоеточием more, чтобы показать, что он ожидает ввода от пользователя.

Если вы просто хотите сбросить содержимое файла, cat - это то, что вам нужно:.

bioinfotool.py -arg1 `cat group1.txt` -arg2 `cat group2.txt`

Вы также можете запустить это прямо из терминала, cat group1.txt, чтобы увидеть, что вы получите то, что ожидаете.

Обратите внимание, что в оболочках Bourne, таких как Bash, вы можете использовать `$ (cat group1.txt) вместо использования обратных кавычек, что допускает вложение и некоторые другие параметры, но это не должно иметь значения в вашем случае использования.

...