Запуск сценария Python QIIME для нескольких файлов
Я пытаюсь создать файл сценария для запуска сценария Python (из конвейера QIIME) для нескольких файлов, не вводя сценарий каждый раз (у меня примерно 150 и более файлов).
Я использую virtualbox для запуска среды Ubuntu.
Я начал с создания файла "splitvm3.sh" с помощью gedit
Этот файл содержит:
#!/bin/sh
# this is the script for the VM3 experiment ~/splitvm3.sh
split_libraries.py -m mappingVM3001.txt -b 0 -p -f DNA12115-001-L1-R1-ACGCTCGACA.fna -q DNA12115-001-L1-R1-ACGCTCGACA.qual -o split_library_output001
split_libraries.py -m mappingVM3002.txt -b 0 -p -f DNA12115-002-L1-R1-AGACGCACTC.fna -q DNA12115-002-L1-R1-AGACGCACTC.qual -o split_library_output002
Затем я использовал команду:
chmod +x ./splitvm3.sh
из каталога, где хранится мой файл.
и наконец я запускаю скрипт, набрав:
python splitvm3.sh
У меня есть сообщение об ошибке:
SyntaxError: invalid syntax
Видимо, он указывает на строку 4 моего файла.
Мне совершенно не хватает базовых знаний, чтобы понять, что происходит не так. Я начал все это с Ubuntu/ Python/QIIME 2 недели назад и изучил все сам. Каждая маленькая помощь будет принята с благодарностью!
Себ
4 ответа
Я не знаю, что насчет split_libraries.py
Кажется, что этот скрипт пишет сообщение об ошибке.
Управляйте этой "линией 4" и вызывайте ее прямо в своем терминале. Что просходит? Где вы взяли файл "...txt"?
Один из входных файлов имеет неправильный формат или неправильную кодировку?
Я знаю, что это старый вопрос, и проблема, вероятно, уже решена, но ошибка исходит из нескольких строк в вашем файле.
Скрипты Qiime могут работать с несколькими файлами, если они имеют правильный формат.
Попробуйте сохранить файл "splitvm3.sh" как:
split_libraries.py -m mappingVM3001.txt -b 0 -p -f DNA12115-001-L1-R1-ACGCTCGACA.fna,DNA12115-002-L1-R1-AGACGCACTC.fna -q DNA12115-001-L1-R1-ACGCTCGACA.qual,DNA12115-002-L1-R1-AGACGCACTC.qual -o split_library_output
Затем запустите из того же каталога, где хранятся файлы.fna и.qual:
python splitvm3.sh
Проблема в том, что вы пытаетесь запустить скрипт оболочки, используя интерпретатор python. Так же верно, как и это split_libraries.py
скрипт Python, скрипт, который вы пытаетесь использовать, на самом деле является скриптом оболочки.
Вы почти правы, вам просто нужно выполнить скрипт следующим образом:
sh splitvm3.sh
Или, учитывая, что у вас есть Шебанг, вы также можете просто:
./splitvm3.sh
Это старый вопрос, но у меня есть члены лаборатории, спрашивающие меня об этом, поэтому я хотел бы добавить, что мне повезло, что я запускаю сценарии QIIME для нескольких файлов с
find . -name "*.fastq" -exec qiimescriptname.py {} \;
В качестве альтернативы я запускаю циклы do в bash, например:
for file in data/*; do usearch32 -fastq_filter "${file}" -fastq_maxee 0.5 -fastq_truncqual 19 -fastq_qmax 45 -fastaout "${file}.fasta"; done;