我有一个生成规则输出的文件夹。我跑步真的很困难
snakemake
用它。如果我没有在
rule all
neo4j
)一点也不跑。如果我试着用
snakemake neo4j
工作错误:
目标规则不能包含通配符。请指定具体的文件或不带通配符的规则。
-
使用
expand
:
expand('results/neo4j/{sample}/cells.csv', sample=samples),
expand('results/neo4j/{sample}/genes.csv', sample=samples),
expand('results/neo4j/{sample}/cl_nodes.csv', sample=samples),
expand('results/neo4j/{sample}/cl_contains.csv', sample=samples),
expand('results/neo4j/{sample}/cl_isin.csv', sample=samples),
expand('results/neo4j/{sample}/expr_by.csv', sample=samples),
expand('results/neo4j/{sample}/expr_ess.csv', sample=samples)
为完全不同的不相关规则(称为
umap
):
数据文件/标准化/减去2/cl_节点.csv.csv
路径生成完全搞砸了,即使文件夹除了
results
是所有输出的根文件夹。
-
dynamic
:
dynamic('results/neo4j/{sample}/cells.csv', sample=samples),
dynamic('results/neo4j/{sample}/genes.csv', sample=samples),
dynamic('results/neo4j/{sample}/cl_nodes.csv', sample=samples),
dynamic('results/neo4j/{sample}/cl_contains.csv', sample=samples),
dynamic('results/neo4j/{sample}/cl_isin.csv', sample=samples),
dynamic('results/neo4j/{sample}/expr_by.csv', sample=samples),
dynamic('results/neo4j/{sample}/expr_ess.csv', sample=samples)
给出一个错误:
dynamic()得到意外的关键字参数“sample”
好吧,我试着把
sample=samples
-
只是
directory
directory('results/neo4j/{sample}/', sample=samples)
给出错误:
directory()有一个意外的关键字参数'sample'
如果我忽略了
sample=样本
,也不起作用。如果我指定
目录
在下面
output
我遇到困难的规则如下:
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:
base_neo4j = 'results/neo4j/{sample}'
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} -base_neo4j {output.base_neo4j}"
版本为
5.2.2
更新
我修改了
Snakemake
文件使用建议
Mali Akmanalp
现在呢
统治一切
samples,=glob_wildcards('data_files/normalized/{sample}.csv')
rule all:
input:
expand('results/pca/img/{sample}_pca.png', sample=samples),
expand('results/pca/{sample}_pca.csv', sample=samples),
expand('results/tsne/{sample}_tsne.csv', sample=samples),
expand('results/umap/{sample}_umap.csv', sample=samples),
expand('results/umap/img/{sample}_umap.png', sample=samples),
expand('results/tsne/img/{sample}_tsne.png', sample=samples),
expand('results/clusters/umap/{sample}_umap_clusters.csv', sample=samples),
expand('results/clusters/tsne/{sample}_tsne_clusters.csv', sample=samples),
expand('results/neo4j/{sample}/{file}', sample=samples,
file=['cells.csv', 'genes.csv', 'cl_contains.csv', 'cl_isin.csv', 'cl_nodes.csv', 'expr_by.csv', 'expr_ess.csv'])
和
这样的规则:
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',
base_neo4j = 'results/neo4j/{sample}'
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}/expr_by.csv', 'results/neo4j/{sample}/expr_ess.csv',
'results/neo4j/{sample}/cl_isin.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} -base_neo4j {input.base_neo4j}"
缺少规则neo4j的输入文件:
更新
我把这句话从
尼欧4J
规则:
base_neo4j = 'results/neo4j/{sample}'
然后改变了主意
规则的作用是:
output:
cells = 'results/neo4j/{sample}/cells.csv',
genes = 'results/neo4j/{sample}/genes.csv',
cl_nodes = 'results/neo4j/{sample}/cl_nodes.csv',
cl_contains = 'results/neo4j/{sample}/cl_contains.csv',
cl_isin = 'results/neo4j/{sample}/cl_isin.csv',
expr_by = 'results/neo4j/{sample}/expr_by.csv',
expr_ess = 'results/neo4j/{sample}/expr_ess.csv'
以及
shell
命令:
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} -cells {output.cells} -genes {output.genes} -cl_nodes {output.cl_nodes} -cl_contains {output.cl_contains} -cl_isin {output.cl_isin} -expr_by {output.expr_by} -expr_ess {output.expr_ess}"
我不喜欢在每个参数中输入
输出
输出
但它只在第一个项目中的饲料
输出
,其他的由于某种原因被忽略。我问了另外一个问题:
Snakemake passes only the first path in the output to shell command
除此之外,它正在发挥作用。