我试图将所有路径同时输入到snakemake
中的python
脚本中,如下所示:
rule neo4j:
input:
script = 'python/neo4j.py',
path_to_cl = 'results/clusters/umap/{sample}_umap_clusters.csv',
path_to_umap = 'results/umap/{sample}_umap.csv',
path_to_mtx = 'data_files/normalized/{sample}.csv'
output: 'results/neo4j/{sample}/cells.csv', 'results/neo4j/{sample}/genes.csv',
'results/neo4j/{sample}/cl_nodes.csv', 'results/neo4j/{sample}/cl_contains.csv',
'results/neo4j/{sample}/cl_isin.csv', 'results/neo4j/{sample}/expr_by.csv',
'results/neo4j/{sample}/expr_ess.csv'
shell:
"python {input.script} -path_to_cl {input.path_to_cl} -path_to_umap {input.path_to_umap} -path_to_mtx {input.path_to_mtx} -output {output}"
当我访问python
脚本中的output
参数时,它只看到第一个路径:'results/neo4j/{sample}/cells.csv'
。我也尝试过命名每一条路径,但它没有解决问题。如何将规则的output
中的所有路径作为数组或字典传递,以便以后在python
中访问它们?在
如果我正确地理解了您的问题,您的问题是
neo4j.py
脚本的-output
参数不接受多个文件:shell命令可能以文件的完整列表结尾(请检查-p
选项的snakemake
),但是脚本只考虑第一个文件。在如果确实是这样的话,一种可能更简洁的方法是修改
neo4j.py
脚本的接口,使其对每个输出文件使用一个参数。在然后按如下方式修改规则:
一些可能有用的python模块可用于设置脚本的接口:
编辑
如果您不想将每个输入文件作为一个单独的参数传递,您可以简单地传递输出目录,并让您的脚本从这个参数构建输出路径。给定所需的文件名,这似乎是可能的:
^{pr2}$打印“woot”,“hoot”,“hoot”。在
相关问题 更多 >
编程相关推荐