将环境 conda 中的 shell 命令与 python 脚本混合
Posted
技术标签:
【中文标题】将环境 conda 中的 shell 命令与 python 脚本混合【英文标题】:Mix shell command in environment conda with python scripts 【发布时间】:2020-12-28 15:40:21 【问题描述】:我想将环境 conda 中的 shell 命令与任何 Python 脚本混合使用,因此无法使用“运行”部分...
我试过了:
shell:"""
gunzip -c input.ech | NanoFilt -l params.min_length --maxlength params.max_length -s input.summary -q params.q --readtype params.rd | gzip > Working_space_ont/01_nanofilt/wildcards.sample_filt_params.q.fastq.gz
python3 reinit.py
while [[ -f Working_space_ont/01_nanofilt/wildcards.sample_filt_params.q.fastq.gz ]] && [[ grep -c '>' Working_space_ont/01_nanofilt/wildcards.sample_filt_params.q.fastq.gz < params.cov ]]; do
python3 quality_minor.py
gunzip -c input.ech | NanoFilt -l params.min_length --maxlength params.max_length -s input.summary -q params.q --readtype params.rd | gzip > Working_space_ont/01_nanofilt/wildcards.sample_filt_params.q.fastq.gz
done
mv Working_space_ont/01_nanofilt/wildcards.sample_filt_params.q.fastq.gz output
"""
我有非零退出状态 1 错误
重新初始化.py:
import yaml
with open("config_wf.yaml") as f:
old_yaml = yaml.load(f)
old_yaml["params"]["filtration"]["quality"] = old_yaml["params"]["filtration"]["quality_fix"]
with open("config_wf.yaml", 'w') as f:
yaml.dump(old_yaml, f, default_flow_style=False)
quality_minor.py:
import yaml
with open("config_wf.yaml") as f:
old_yaml = yaml.load(f)
old_yaml["params"]["filtration"]["quality"] -= 1
with open("config_wf.yaml", 'w') as f:
yaml.safe(old_yaml, f, default_flow_style=False)
你对我有什么想法吗? 最好的问候, 伊娃
【问题讨论】:
你能显示错误消息和导致它的整个规则吗? 【参考方案1】:(对于未来:您应该编辑您的问题以添加附加信息,而不是发布附加信息作为答案)
让我眼前一亮的主要问题是您将 shell 命令 (gunzip -c ...
) 与 python 代码 (old_yaml = open("config_wf.yaml", "r") ...
) 混合在一起。当 shell 读取 python 代码时,它会抛出一个错误。
如果你需要在同一个规则中执行 python 和 shell 代码,也许你想要这样的东西:
rule filtration:
input:
...
output:
...
params:
...
run:
shell('gunzip -c ...')
old_yaml = open("config_wf.yaml", "r")
...more python code here...
shell(...) # Other shell commands
但你的代码中可能还有其他问题,我不知道,也许还有更好的方法来做你需要的事情。
【讨论】:
没错,我混合了两种语言....非常感谢!以上是关于将环境 conda 中的 shell 命令与 python 脚本混合的主要内容,如果未能解决你的问题,请参考以下文章
Anaconda使用conda activate激活环境出错:CommandNotFoundError: Your shell has not been properly configured to