首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用os.system和snakemake.shell的区别

使用os.system和snakemake.shell的区别
EN

Stack Overflow用户
提问于 2020-11-05 18:39:46
回答 1查看 98关注 0票数 0

我对snakemake还是个新手,所以我仍然很难将shell命令和python代码结合起来。

我的解决方案是生成脚本文件,然后在此脚本中执行shell命令。

调用snakemake.shellos.system来执行命令行有什么机械上的区别吗?

示例:

代码语言:javascript
复制
sample = ["SRR12845350"]
rule prefetch:
  input:
    "results/Metadata/{sample}.json"
  output:
    "results/SRA/{sample}.sra
  params:
    "prefetch %s -o %s"
  script:
    "scripts/prefetch.py"

prefetch.py是:

代码语言:javascript
复制
from json import load
from snakemake import shell
from os import system

json_file = snakemake.input[0]
prefetch  = snakemake.params[0]
sra_file  = snakemake.output[0]

json    = load(open(json_file))
sra_run = json["RUN_accession"]

shell(prefetch %(sra_run, sra_file))  # option 1
system(prefetch %(sra_run, sra_file))  # option 2
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-11-06 01:08:16

shell只是一个辅助函数,它使得从snakemake调用命令行参数变得更容易。学习snakemake可能会让人不知所措,而学习Python的os.systemsubprocess的复杂细节是不必要的。snakemake shell命令执行一些健全性检查,设置一些环境变量,例如命令可以使用的线程数和其他一些“小”东西,但under the hood只是对您的命令调用subprocess.Popen。这两个选项都应该有效,但由于您正在编写一个snakemake包装器,所以使用shell可能会稍好一些,因为它是为在snakemake中使用而设计的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64695477

复制
相关文章

相似问题

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