我正试图制作一个脚本文件,在多个文件上运行python脚本(来自QIME管道),而无需每次都键入脚本(我有大约150个文件,还有更多)。
我使用virtualbox来运行ubuntu环境。
我首先使用gedit 创建了一个文件"splitvm3.sh"
此文件包含:
#!/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/QIME的工作,并自学了所有内容。每一点点帮助都将不胜感激!
Seb
我不知道'split_libraries.py'怎么办
这个脚本似乎写了错误消息。
复制这个"第4行"并直接在终端中调用它。会发生什么?你从哪里得到的。。。txt'文件?
其中一个输入文件的格式或编码是否错误?
问题是您正试图使用python解释器运行shell脚本。尽管split_libraries.py
是一个python脚本,但您尝试使用的脚本实际上是一个shell脚本。
你几乎是对的,你只需要执行这样的脚本:
sh splitvm3.sh
或者,如果你有一个shebang,你也可以只是:
./splitvm3.sh
我知道这是一个老问题,现在可能已经对问题进行了排序,但错误来自文件中的多行。
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
这是一个老问题,但我有实验室成员问过我这件事,所以我想补充一点,我在使用的多个文件上运行QIME脚本时运气很好
find . -name "*.fastq" -exec qiimescriptname.py {} ;
或者,我在bash中运行do循环,例如:
for file in data/*; do usearch32 -fastq_filter "${file}" -fastq_maxee 0.5 -fastq_truncqual 19 -fastq_qmax 45 -fastaout "${file}.fasta"; done;