首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >conda与snakemake工具中的python脚本混合shell命令

conda与snakemake工具中的python脚本混合shell命令
EN

Stack Overflow用户
提问于 2020-09-16 09:52:14
回答 2查看 169关注 0票数 1

我希望将conda环境中的shell命令与任何Python脚本混合使用,因此不可能使用“run”部分.

我试过:

代码语言:javascript
运行
复制
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错误。

reinit.py:

代码语言:javascript
运行
复制
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:

代码语言:javascript
运行
复制
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)

你对我有什么想法吗?

诚挚的问候,

Eva

EN

Stack Overflow用户

回答已采纳

发布于 2020-09-27 00:17:10

看起来您的python脚本正在更改工作流的配置yaml,而不是直接将其传递给nanofilt命令。那么你有无限循环吗?配置yaml在启动时读取snakemake进程,因此在规则中更改它不会产生任何效果。

您可以通过snakemake实现这一点,可以使用输入函数中的尝试对参数进行参数递减,当筛选失败时,作业会失败。

一个更干净的解决方案是编写一个python脚本,它将使用纳被膜作为库并包装它的执行。主要方法是笔直的。构建您的args并根据需要进行调整,那么所有的评估代码和循环都将在python中。

票数 0
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63917484

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档