Hello,
I am struggling to get my head around the collate syntax using formatters.
I've made an example where I try to collate
['data/aa_data', 'output/aa/analysis1/results.txt'] to ['output/aa/analysis2/results.txt'].I have tried a few variations, this is what I have at the moment:
from ruffus import *
def orig(output_files):
print("readfile = ", output_files)
with open(output_files, "w") as oo:
pass
def next_task(input_files, output_parameters):
print("input_parameters = ", input_files)
print("output_parameters = ", output_parameters)
for f in output_parameters:
with open(f, "w") as oo:
pass
def main():
main_pipeline = Pipeline.pipelines["main"]
data = main_pipeline.originate(name="data",
task_func=orig,
output="data/aa_data")
result = main_pipeline.originate(
name="result",
task_func=orig,
output="output/aa/analysis1/results.txt")
main_pipeline.collate(
name="next_task",
task_func=next_task,
input=[result, data],
filter=formatter(),
output=["output/{subdir[0][1]}/analysis2/results.txt",
"output/{basename[1][0:2]}/analysis2/results.txt"])
pipeline_printout_graph("flowchart.pdf", "pdf")
main_pipeline.run(verbose=5)
if __name__ == "__main__":
main()
According to my understanding of the Ruffus manual I expect both
{subdir[0][1]} and
{basename[1][0:2]} to reso
lve to "
aa", so this should collate the output. However I am getting the following message:
Task = 'next_task'
!!! No jobs for this task.
Are you sure there is not a error in your code / regular expression?
Job Warning: Input substitution failed:
Missing key = {} in 'output/{basename[1][0:2]}/analysis2/results.txt'.
input = '',
filter = formatter(['output/aa/analysis1/results.txt'])..
Job Warning: Input substitution failed:
Missing key = {} in 'output/{basename[1][0:2]}/analysis2/results.txt'.
input = '',
filter = formatter(['data/aa_data'])..
Can anyone tell me what I'm missing?
Thanks for reading,
Tom