Merge branch 'master' into 2257-inequality-conditions
[arvados.git] / doc / user / topics / running-pipeline-command-line.html.textile.liquid
1 ---
2 layout: default
3 navsection: userguide
4 title: "Running a pipeline on the command line"
5 ...
6
7 In "Writing a pipeline":{{ site.baseurl }}/user/tutorials/tutorial-firstscript.html, we learned how to create a pipeline template on the command-line.  Let's create one that doesn't require any user input to start:
8
9 <notextile>
10 <pre><code>~$ <span class="userinput">cat &gt;the_pipeline &lt;&lt;EOF
11 {
12   "name":"Filter md5 hash values",
13   "components":{
14     "do_hash":{
15       "script":"hash.py",
16       "script_parameters":{
17         "input": "887cd41e9c613463eab2f0d885c6dd96+83"
18       },
19       "script_version":"<b>you</b>:master"
20     },
21     "filter":{
22       "script":"0-filter.py",
23       "script_parameters":{
24         "input":{
25           "output_of":"do_hash"
26         }
27       },
28       "script_version":"<b>you</b>:master"
29     }
30   }
31 }
32 EOF</span>
33 ~$ <span class="userinput">arv pipeline_template create --pipeline-template "$(cat the_pipeline)"</span></code></pre>
34 </notextile>
35
36 You can run this pipeline from the command line using @arv pipeline run@, filling in the UUID that you received from @arv pipeline_template create@:
37
38 <notextile>
39 <pre><code>~$ <span class="userinput">arv pipeline run --template qr1hi-p5p6p-xxxxxxxxxxxxxxx</span>
40 2013-12-16 14:08:40 +0000 -- pipeline_instance qr1hi-d1hrv-vxzkp38nlde9yyr
41 do_hash qr1hi-8i9sb-hoyc2u964ecv1s6 queued 2013-12-16T14:08:40Z
42 filter  -                           -
43
44 2013-12-16 14:08:51 +0000 -- pipeline_instance qr1hi-d1hrv-vxzkp38nlde9yyr
45 do_hash qr1hi-8i9sb-hoyc2u964ecv1s6 8e1b6acdd3f2f1da722538127c5c6202+56
46 filter  qr1hi-8i9sb-w5k40fztqgg9i2x queued 2013-12-16T14:08:50Z
47
48 2013-12-16 14:09:01 +0000 -- pipeline_instance qr1hi-d1hrv-vxzkp38nlde9yyr
49 do_hash qr1hi-8i9sb-hoyc2u964ecv1s6 8e1b6acdd3f2f1da722538127c5c6202+56
50 filter  qr1hi-8i9sb-w5k40fztqgg9i2x 735ac35adf430126cf836547731f3af6+56
51 </code></pre>
52 </notextile>
53
54 This instantiates your pipeline and displays a live feed of its status.  The new pipeline instance will also show up on the Workbench %(rarr)&rarr;% Compute %(rarr)&rarr;% Pipeline&nbsp;instances page.
55
56 Arvados adds each pipeline component to the job queue as its dependencies are satisfied (or immediately if it has no dependencies) and finishes when all components are completed or failed and there is no more work left to do.
57
58 The Keep locators of the output of each of @"do_hash"@ and @"filter"@ component are available from the output log shown above.  The output is also available on the Workbench by navigating to %(rarr)&rarr;% Compute %(rarr)&rarr;% Pipeline&nbsp;instances %(rarr)&rarr;% pipeline uuid under the *id* column %(rarr)&rarr;% components.
59
60 <notextile>
61 <pre><code>~$ <span class="userinput">arv keep get 8e1b6acdd3f2f1da722538127c5c6202+56/md5sum.txt</span>
62 0f1d6bcf55c34bed7f92a805d2d89bbf alice.txt
63 504938460ef369cd275e4ef58994cffe bob.txt
64 8f3b36aff310e06f3c5b9e95678ff77a carol.txt
65 ~$ <span class="userinput">arv keep get 735ac35adf430126cf836547731f3af6+56/0-filter.txt</span>
66 0f1d6bcf55c34bed7f92a805d2d89bbf alice.txt
67 </code></pre>
68 </notextile>
69
70 Indeed, the filter has picked out just the "alice" file as having a hash that starts with 0.
71
72 h3. Running a pipeline with different parameters
73
74 Notice that the pipeline template explicitly specifies the Keep locator for the input:
75
76 <notextile>
77 <pre><code>...
78     "do_hash":{
79       "script_parameters":{
80         "input": "887cd41e9c613463eab2f0d885c6dd96+83"
81       },
82     }
83 ...
84 </code></pre>
85 </notextile>
86
87 You can specify values for pipeline component script_parameters like this:
88
89 <notextile>
90 <pre><code>~$ <span class="userinput">arv pipeline run --template qr1hi-p5p6p-xxxxxxxxxxxxxxx do_hash::input=c1bad4b39ca5a924e481008009d94e32+210</span>
91 2013-12-17 20:31:24 +0000 -- pipeline_instance qr1hi-d1hrv-tlkq20687akys8e
92 do_hash qr1hi-8i9sb-rffhuay4jryl2n2 queued 2013-12-17T20:31:24Z
93 filter  -                           -
94
95 2013-12-17 20:31:34 +0000 -- pipeline_instance qr1hi-d1hrv-tlkq20687akys8e
96 do_hash qr1hi-8i9sb-rffhuay4jryl2n2 {:done=>1, :running=>1, :failed=>0, :todo=>0}
97 filter  -                           -
98
99 2013-12-17 20:31:55 +0000 -- pipeline_instance qr1hi-d1hrv-tlkq20687akys8e
100 do_hash qr1hi-8i9sb-rffhuay4jryl2n2 880b55fb4470b148a447ff38cacdd952+54
101 filter  qr1hi-8i9sb-j347g1sqovdh0op queued 2013-12-17T20:31:55Z
102
103 2013-12-17 20:32:05 +0000 -- pipeline_instance qr1hi-d1hrv-tlkq20687akys8e
104 do_hash qr1hi-8i9sb-rffhuay4jryl2n2 880b55fb4470b148a447ff38cacdd952+54
105 filter  qr1hi-8i9sb-j347g1sqovdh0op 490cd451c8108824b8a17e3723e1f236+19
106 </code></pre>
107 </notextile>
108
109 Now check the output:
110
111 <notextile>
112 <pre><code>~$ <span class="userinput">arv keep get 880b55fb4470b148a447ff38cacdd952+54/md5sum.txt</span>
113 44b8ae3fde7a8a88d2f7ebd237625b4f var-GS000016015-ASM.tsv.bz2
114 ~$ <span class="userinput">arv keep get 490cd451c8108824b8a17e3723e1f236+19/0-filter.txt</span>
115 ~$
116 </code></pre>
117 </notextile>
118
119 Since none of the files in the collection have hash code that start with 0, output of the filter component is empty.