gpt4 book ai didi

python - 将具有多个函数的 python 脚本转换为 SnakeMake 工作流程

转载 作者:行者123 更新时间:2023-12-01 07:37:29 25 4
gpt4 key购买 nike

我有一个输入文件,每一行对应一个序列,我需要对每个序列进行多次检查(已经使用 python 脚本、多个函数进行了检查)。其中一些检查(功能)彼此不依赖并且可以同时运行。所以我想使用Snakemake。

问题是,大多数示例使用如此多的输入文件,而我只有一个文件,但需要在文件的每一行上运行不同的 shell。有人想出任何想法/例子吗?

我的第二个问题是,我的Python脚本中的一些函数不打印文件,而只是返回一些东西。虽然我见过大多数蛇形示例都有输出(这是一个文件)。我该如何处理 Snakemake 工作流程中的这些功能?我的意思是如何在不同的函数/规则/...等之间传递参数?我希望我的要求很清楚。谢谢

我确实在线浏览了教程和一些示例

我的 python 脚本如下所示:

def 函数1(arg1, arg2): ... 返回列表

def 函数2(arg1, arg2): .... [写入文件]

def 函数3(arg1, arg2): ... 打印('废话')

定义主函数(): 函数1(A,B) 函数2(A,B) 函数3(A,B)

如果名称== main: main()

我没有任何错误消息。但不知道如何将我的具有如此多功能的脚本转换为 Snakemake 工作流程。

最佳答案

如果您想出一个创建文件的系统(可能只是将函数的结果打印到文件中),您也许可以为您的函数定义单独的snakemake规则。事实上,snakemake 根据它必须生成的文件来决定运行哪个规则。

这样,相互不依赖的规则将能够并行运行。

from contextlib import redirect_stdout

def function1(arg1, arg2):
# ...

def function2(arg1, arg2):
# ...

def function3(arg1, arg2):
# ...

A = ...
B = ...

rule all:
input:
"function1_result.txt",
"function2_result.txt"
"function3_result.txt"

rule run_function1:
output:
"function1_result.txt",
run:
l = function1(A, B)
with open(input[0]) as fh:
print(*l, sep="\n", file=fh)

rule run_function2:
output:
"function2_result.txt",
run:
# Assuming this writes "function2_result.txt":
function2(A, B)

rule run_function3:
output:
"function3_result.txt",
run:
with open(input[0]) as fh:
# see https://stackoverflow.com/a/55833804/1878788
with redirect_stdout(fh):
function3(A, B)

请注意,这不会并行处理输入文件的行。

关于python - 将具有多个函数的 python 脚本转换为 SnakeMake 工作流程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56918619/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com