我有个规则。我试着使用case vs control。
CASE1,CONTROL1
CASE2,CONTROL2
CASE3,CONTROL3
rule macs2:
input: get_files
output: "ALIGN/result/macs2/{case}_vs_{control}/",
"ALIGN/result/macs2/{case}_vs_{control}/{case}_peaks.xls",
"ALIGN/result/macs2/{case}_vs_{control}/{case}_summits.bed"
log: "log/{case}_vs_{control}.macs2"
threads: 2
conda:
"envs/macs.yaml"
message: "macs2 comparison"
params:
size="hs",
name="{case}"
shell:
"""
macs2 callpeak -t {input[0]} -c {input[1]} -f BAM -g hs -n {params.name} --nomodel -B -q 0.01 --outdir {output[0]} -m 3 50 -g {params.size} --extsize 147 2>{log}
"""所以这就是函数:
def get_files(wildcards):
case = wildcards.case
control = aCondition[case][0]
return ["ALIGN/result/{}_filter_dup.bam".format(case), "ALIGN/result/{}_filter_dup.bam".format(control)]如果我有这个规则的话。我有一个样本与所有输入的所有比较。
expand("ALIGN/result/macs2/{case}_vs_{control}/",case=CASE,control=CONTROL),示例:
CASE1,CONTROL2
CASE1,CONTROL3
CASE1,CONTROL1
...我希望只有
CASE1,CONTROL1
CASE2,CONTROL2
CASE3,CONTROL3一般来说:当我在规则上使用输入函数时,如何编写规则all?
发布于 2018-03-13 01:43:43
我不知道你在问什么。你有没有试着制定一条规则,要求你提供你感兴趣的输出文件?
rule all:
input:
expand(
"ALIGN/result/macs2/{case}_vs_{control}/{case}_peaks.xls",
case=["case1", "case2", "case3"],
control=["control1", "control2", "control3"]
)https://stackoverflow.com/questions/48713720
复制相似问题