# Chapter 7: Python Code for Displaying the pipeline visually with pipeline_printout_graph(...)

See also

- Manual Table of Contents
- pipeline_printout_graph(...) syntax
- Back to Chapter 7: Displaying the pipeline visually

## Code

>      1
>      2
>      3
>      4
>      5
>      6
>      7
>      8
>      9
>     10
>     11
>     12
>     13
>     14
>     15
>     16
>     17
>     18
>     19
>     20
>     21
>     22
>     23
>     24
>     25
>     26
>     27
>     28
>     29
>     30
>     31
>     32
>     33
>     34
>     35
>     36
>     37
>     38
>     39
>     40
>     41
>     42
>     43
>     44
>     45
>     46
>     47
>     48
>     49
>     50
>     51
>     52
>     53
>     54
>     55
>     56
>     57
>     58
>     59
>     60
>     61

>     from ruffus import *
>     import sys

>     #---------------------------------------------------------------
>     #   create initial files
>     #
>     @originate([   ['job1.a.start', 'job1.b.start'],
>                    ['job2.a.start', 'job2.b.start'],
>                    ['job3.a.start', 'job3.b.start']    ])
>     def create_initial_file_pairs(output_files):
>         # create both files as necessary
>         for output_file in output_files:
>             with open(output_file, "w") as oo: pass

>     #---------------------------------------------------------------
>     #   first task
>     @transform(create_initial_file_pairs, suffix(".start"), ".output.1")
>     def first_task(input_files, output_file):
>         with open(output_file, "w"): pass

>     #---------------------------------------------------------------
>     #   second task
>     @transform(first_task, suffix(".output.1"), ".output.2")
>     def second_task(input_files, output_file):
>         with open(output_file, "w"): pass

>     #  Print graph before running pipeline

>     #---------------------------------------------------------------
>     #
>     #       Show flow chart and tasks before running the pipeline
>     #
>     print "Show flow chart and tasks before running the pipeline"
>     pipeline_printout_graph ( open("simple_tutorial_stage5_before.png", "w"),
>                              "png",
>                              [second_task],
>                              minimal_key_legend=True)

>     #---------------------------------------------------------------
>     #
>     #       Run
>     #
>     pipeline_run([second_task])

>     # modify job1.stage1
>     open("job1.a.output.1", "w").close()

>     #  Print graph after everything apart from ``job1.a.output.1`` is update

>     #---------------------------------------------------------------
>     #
>     #       Show flow chart and tasks after running the pipeline
>     #
>     print "Show flow chart and tasks after running the pipeline"
>     pipeline_printout_graph ( open("simple_tutorial_stage5_after.png", "w"),
>                              "png",
>                              [second_task],
>                              no_key_legend=True)

## Resulting Flowcharts

> Before | After

> Legend