Запуск сценария 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;

Другие вопросы по тегам