--- layout: default navsection: userguide title: "Using Crunch to run external programs" ... This tutorial demonstrates how to use Crunch to run an external program by writting a wrapper using the Python SDK. {% include 'tutorial_expectations' %} In this tutorial, you will use the external program @md5sum@ to compute hashes instead of the built-in Python library used in earlier tutorials. Start by entering the @crunch_scripts@ directory of your Git working tree:
~$ cd you/crunch_scripts
Next, using @nano@ or your favorite Unix text editor, create a new file called @run-md5sum.py@ in the @crunch_scripts@ directory. notextile.
~/you/crunch_scripts$ nano run-md5sum.py
Add the following code to use the @md5sum@ program to compute the hash of each file in a collection: {% code 'run_md5sum_py' as python %} Make the file executable: notextile.
~/you/crunch_scripts$ chmod +x run-md5sum.py
Next, use Git to stage the file, commit, and push:
~/you/crunch_scripts$ git add run-md5sum.py
~/you/crunch_scripts$ git commit -m"run external md5sum program"
~/you/crunch_scripts$ git push origin master
You should now be able to run your new script using Crunch, with @"script"@ referring to our new @run-md5sum.py@ script.
~/you/crunch_scripts$ cat >~/the_pipeline <<EOF
{
  "name":"Run external md5sum program",
  "components":{
    "do_hash":{
      "script":"run-md5sum.py",
      "script_parameters":{
        "input":{
          "required": true,
          "dataclass": "Collection"
        }
      },
      "repository":"$USER",
      "script_version":"master"
    }
  }
}
EOF
~/you/crunch_scripts$ arv pipeline_template create --pipeline-template "$(cat ~/the_pipeline)"
(Your shell should automatically fill in @$USER@ with your login name. The JSON that gets saved should have @"repository"@ pointed at your personal Git repository.) Your new pipeline template will appear on the Workbench "Pipeline templates":https://{{ site.arvados_workbench_host }}/pipeline_templates page. You can run the "pipeline using Workbench":tutorial-pipeline-workbench.html.