【发布时间】:2020-09-16 09:52:14
【问题描述】:
我想将环境 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)
你对我有什么想法吗?
最好的问候,
伊娃
【问题讨论】:
-
您是否有意重写文件
"Working_space_ont/01_nanofilt/{wildcards.sample}_filt_{params.q}.fastq.gz"? -
是的,因为,我想创建这个文件并在之后控制它:如果它的内容太差,我想用较低的阈值重新运行命令..
-
当它的内容可以接受时,我想把它移到一个目录 Working_space_ont/01_nanofilt/**PASS**/{wildcards.sample}_filt_{params.q}.fastq.gz
标签: python-3.x shell while-loop yaml snakemake