###### tags: `dib-lab` # AWS/GCP execution [issue_5](https://github.com/dib-lab/2020-nih-r03-ihmp/issues/5) ## CWL workflow ### Installation using conda ``` conda install -c conda-forge cwltool -y pip install cwlref-runner ``` ### Workflow files File name: `grist.cwl` ``` #!/usr/bin/env cwl-runner cwlVersion: v1.0 class: CommandLineTool baseCommand: [make, test] hints: DockerRequirement: dockerPull: "mlim13/ggrist:tag0" inputs: grist_directory: type: string inputBinding: position: 1 prefix: --directory outputs: example_out: type: stdout stdout: grist_stdout.txt ``` File name: `grist-job.yml` ``` grist_directory: /usr/genome-grist/ ``` ### Running Run with the command `cwltool --no-read-only grist.cwl grist-job.yml` > make sure `docker` is installed. There's another way to run with `singularity` but let's just test with docker for now. ### ~~Output~~ ~~[Error]~~ Resolved by running with `cwltool` instead of `cwl-runner` and passing the `--no-read-only` flag to allow writing in the container. ``` INFO /root/miniconda3/bin/cwl-runner 3.0.20201203173111 INFO Resolved 'grist.cwl' to 'file:///root/issue5/grist.cwl' INFO [job grist.cwl] /tmp/d6t7e7av$ docker \ run \ -i \ --mount=type=bind,source=/tmp/d6t7e7av,target=/PBVADA \ --mount=type=bind,source=/tmp/t3kth0_3,target=/tmp \ --workdir=/PBVADA \ --read-only=true \ --log-driver=none \ --user=0:0 \ --rm \ --env=TMPDIR=/tmp \ --env=HOME=/PBVADA \ --cidfile=/tmp/o6eqqoj7/20210102182328-261586.cid \ mlim13/ggrist:tag0 \ make \ test \ --directory \ /usr/genome-grist/ > /tmp/d6t7e7av/grist_stdout.txt Traceback (most recent call last): File "/root/miniconda3/bin/snakemake", line 8, in <module> sys.exit(main()) File "/root/miniconda3/lib/python3.8/site-packages/snakemake/__init__.py", line 2562, in main success = snakemake( File "/root/miniconda3/lib/python3.8/site-packages/snakemake/__init__.py", line 525, in snakemake logger.setup_logfile() File "/root/miniconda3/lib/python3.8/site-packages/snakemake/logging.py", line 137, in setup_logfile os.makedirs(os.path.join(".snakemake", "log"), exist_ok=True) File "/root/miniconda3/lib/python3.8/os.py", line 213, in makedirs makedirs(head, exist_ok=exist_ok) File "/root/miniconda3/lib/python3.8/os.py", line 223, in makedirs mkdir(name, mode) OSError: [Errno 30] Read-only file system: '.snakemake' Error in snakemake invocation: Command '['snakemake', '-s', '/usr/genome-grist/genome_grist/conf/Snakefile', '-j', '1', '--use-conda', 'summarize', 'make_sgc_conf', '-j', '8', '-p', '--configfile', '/usr/genome-grist/genome_grist/conf/defaults.conf', '/usr/genome-grist/genome_grist/conf/system.conf', 'tests/test-data/HSMA33MX.conf']' returned non-zero exit status 1. Traceback (most recent call last): File "/root/miniconda3/bin/snakemake", line 8, in <module> sys.exit(main()) File "/root/miniconda3/lib/python3.8/site-packages/snakemake/__init__.py", line 2562, in main success = snakemake( File "/root/miniconda3/lib/python3.8/site-packages/snakemake/__init__.py", line 525, in snakemake logger.setup_logfile() File "/root/miniconda3/lib/python3.8/site-packages/snakemake/logging.py", line 137, in setup_logfile os.makedirs(os.path.join(".snakemake", "log"), exist_ok=True) File "/root/miniconda3/lib/python3.8/os.py", line 213, in makedirs makedirs(head, exist_ok=exist_ok) File "/root/miniconda3/lib/python3.8/os.py", line 223, in makedirs mkdir(name, mode) OSError: [Errno 30] Read-only file system: '.snakemake' Error in snakemake invocation: Command '['snakemake', '-s', '/usr/genome-grist/genome_grist/conf/Snakefile', '-j', '1', '--use-conda', 'summarize', 'make_sgc_conf', '-j', '8', '-p', '--configfile', '/usr/genome-grist/genome_grist/conf/defaults.conf', '/usr/genome-grist/genome_grist/conf/system.conf', 'tests/test-data/HSMA33MX.conf']' returned non-zero exit status 1. INFO [job grist.cwl] Max memory used: 31MiB INFO [job grist.cwl] completed success { "example_out": { "location": "file:///root/issue5/grist_stdout.txt", "basename": "grist_stdout.txt", "class": "File", "checksum": "sha1$5ca595197b5384d01635196b13f2caa266080f4b", "size": 247, "path": "/root/issue5/grist_stdout.txt" } } INFO Final process status is success ```