File: mkdir_code.rst

package info (click to toggle)
python-ruffus 2.6.3%2Bdfsg-4
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 20,828 kB
  • ctags: 2,843
  • sloc: python: 15,745; makefile: 180; sh: 14
file content (113 lines) | stat: -rw-r--r-- 5,464 bytes parent folder | download | duplicates (2)
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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
.. include:: ../../global.inc
.. include:: manual_chapter_numbers.inc

.. _new_manual.mkdir.code:

############################################################################################################################################################################################################
|new_manual.mkdir.chapter_num|: Python Code for Preparing directories for output with :ref:`@mkdir() <decorators.mkdir>`
############################################################################################################################################################################################################

.. seealso::

    * :ref:`Manual Table of Contents <new_manual.table_of_contents>`
    * :ref:`mkdir() <decorators.mkdir>` syntax
    * :ref:`formatter() <decorators.formatter>` syntax
    * :ref:`regex() <decorators.regex>` syntax
    * Back to |new_manual.mkdir.chapter_num|: :ref:`Preparing directories for output with @mkdir() <new_manual.mkdir>`

****************************************************************************************************************
Code for :ref:`formatter() <decorators.formatter>` Zoo example
****************************************************************************************************************


    .. code-block:: python

        from ruffus import *

        #   Make directories
        @mkdir(["tiger", "lion", "dog", "crocodile", "rose"])
        @originate(
                    #   List of animals and plants
                    [    "tiger/mammals.wild.animals",
                        "lion/mammals.wild.animals",
                        "lion/mammals.handreared.animals",
                        "dog/mammals.tame.animals",
                        "dog/mammals.wild.animals",
                        "crocodile/reptiles.wild.animals",
                        "rose/flowering.handreared.plants"])
        def create_initial_files(output_file):
            with open(output_file, "w") as oo: pass


        # create directories for each clade
        @mkdir(    create_initial_files,                                       # Input

                   formatter(".+/(?P<clade>\w+).(?P<tame>\w+).animals"),       # Only animals: ignore plants!

                   "{subpath[0][1]}/{clade[0]}")                               # new_directory
        #   Put different animals in different directories depending on their clade
        @transform(create_initial_files,                                       # Input

                   formatter(".+/(?P<clade>\w+).(?P<tame>\w+).animals"),       # Only animals: ignore plants!

                   "{subpath[0][1]}/{clade[0]}/{tame[0]}.{subdir[0][0]}.food", # Replacement

                   "{subpath[0][1]}/{clade[0]}",                               # new_directory
                   "{subdir[0][0]}",                                           # animal_name
                   "{tame[0]}")                                                # tameness
        def feed(input_file, output_file, new_directory, animal_name, tameness):
                print "%40s -> %90s" % (input_file, output_file)
                # this works now
                open(output_file, "w")


        pipeline_run(verbose=0)


****************************************************************************************************************
Code for :ref:`regex() <decorators.regex>` Zoo example
****************************************************************************************************************


    .. code-block:: python

        from ruffus import *

        #   Make directories
        @mkdir(["tiger", "lion", "dog", "crocodile", "rose"])
        @originate(
                    #   List of animals and plants
                    [    "tiger/mammals.wild.animals",
                        "lion/mammals.wild.animals",
                        "lion/mammals.handreared.animals",
                        "dog/mammals.tame.animals",
                        "dog/mammals.wild.animals",
                        "crocodile/reptiles.wild.animals",
                        "rose/flowering.handreared.plants"])
        def create_initial_files(output_file):
            with open(output_file, "w") as oo: pass


        # create directories for each clade
        @mkdir(    create_initial_files,                                       # Input

                   regex(r"(.*?/?)(\w+)/(?P<clade>\w+).(?P<tame>\w+).animals"), # Only animals: ignore plants!
                   r"\g<clade>")                                             # new_directory
        #   Put different animals in different directories depending on their clade
        @transform(create_initial_files,                                        # Input

                   regex(r"(.*?/?)(\w+)/(?P<clade>\w+).(?P<tame>\w+).animals"), # Only animals: ignore plants!

                   r"\1\g<clade>/\g<tame>.\2.food",                            # Replacement

                   r"\1\g<clade>",                                             # new_directory
                   r"\2",                                                       # animal_name
                   "\g<tame>")                                                  # tameness
        def feed(input_file, output_file, new_directory, animal_name, tameness):
            print "%40s -> %90s" % (input_file, output_file)
            # this works now
            open(output_file, "w")


        pipeline_run(verbose=0)