.. include:: ../../global.inc
.. _Simple_Tutorial:


############################################################
A simple tutorial: 8 steps to *Ruffus*
############################################################

***************************************
Table of Contents
***************************************

============
Features
============

The **Ruffus** provides automatic support for

        * Managing dependencies
        * Parallel jobs
        * Re-starting from arbitrary points, especially after errors
        * Display of the pipeline as a flowchart
        * Reporting


    | This tutorial has seven steps which cover all the core functionality of *Ruffus*.
    | Don't worry if steps 1 and 2 seem a bit slow: Once you get used to **Ruffus**
      steps 4-8 will be a breeze.

    You can click on "previous" and "next" at the top and bottom of each page to
    navigate through the tutorial.


============================
The first steps (1-4)
============================

    The first half of the tutorial will show you how to:

    1. :ref:`Chain tasks (functions) together into a pipeline <Simple_Tutorial_1st_step>`
    2. :ref:`Provide parameters to run jobs in parallel <Simple_Tutorial_2nd_step>`
    3. :ref:`Tracing through your new pipeline <Simple_Tutorial_3rd_step>`
    4. :ref:`Using flowcharts <Simple_Tutorial_4th_step_graphical>`

============================
A worked example (steps 5-8)
============================

    The second half of the tutorial is a worked example to calculate
    the sample variance of 10,000 random numbers. This shows you how to:

    5. :ref:`Split up a large problem into smaller chunks <Simple_Tutorial_5th_step>`
    6. :ref:`Calculate partial solutions in parallel <Simple_Tutorial_6th_step>`
    7. :ref:`Re-combine the partial solutions into the final result <Simple_Tutorial_7th_step>`
    8. :ref:`Automatically signal the completion of each step of our pipeline <Simple_Tutorial_8th_step>`


    This covers the core functionality of *Ruffus*.













