diff --git a/my-wf-1/.gitignore b/my-wf-1/.gitignore new file mode 100644 index 0000000..a50828c --- /dev/null +++ b/my-wf-1/.gitignore @@ -0,0 +1,69 @@ +*.py[cod] + +# C extensions +*.so + +# Packages +*.egg +*.egg-info +dist +build +eggs +.eggs +parts +bin +var +sdist +develop-eggs +.installed.cfg +lib +lib64 +venv*/ +pyvenv*/ + +# Installer logs +pip-log.txt + +# Unit test / coverage reports +.coverage +.tox +.coverage.* +nosetests.xml +coverage.xml +htmlcov + +# Translations +*.mo + +# Mr Developer +.mr.developer.cfg +.project +.pydevproject +.idea +*.iml +*.komodoproject + +# Complexity +output/*.html +output/*/index.html + +# Sphinx +docs/_build + +.DS_Store +*~ +.*.sw[po] +.build +.ve +.env +.cache +.pytest +.bootstrap +.appveyor.token +*.bak +*.log +.vscode +.python-version +.nextflow* +work +outdir diff --git a/my-wf-1/my-wf-1.nf b/my-wf-1/my-wf-1.nf new file mode 100755 index 0000000..3a30859 --- /dev/null +++ b/my-wf-1/my-wf-1.nf @@ -0,0 +1,31 @@ +#!/usr/bin/env nextflow + +nextflow.enable.dsl = 2 +version = '0.1.0' // tool version + +// universal params go here, change default value as needed +params.container_version = "" +params.cpus = 1 +params.mem = 1 // GB +params.publish_dir = "" // set to empty string will disable publishDir + +// tool specific parmas go here, add / change as needed +params.input_file = "" +params.output_pattern = "*.html" // fastqc output html report + +include { fastqc } from "./wfpr_modules/github.com/icgc-tcga-pancancer/awesome-wfpkgs1/fastqc@0.1.0/fastqc" +include { cleanupWorkdir as cleanup } from "./wfpr_modules/github.com/icgc-argo/demo-wfpkgs/demo-utils@1.1.0/main" + + +workflow MyWf1 { + take: // input, make update as needed + input_file + + main: + fastqc(input_file) + + cleanup(fastqc.out, true) + + emit: + output_file = fastqc.out.output +} diff --git a/my-wf-1/nextflow.config b/my-wf-1/nextflow.config new file mode 100644 index 0000000..f2cd1e3 --- /dev/null +++ b/my-wf-1/nextflow.config @@ -0,0 +1,4 @@ +docker { + enabled = true + runOptions = '-u \$(id -u):\$(id -g)' +} diff --git a/my-wf-1/pkg.json b/my-wf-1/pkg.json new file mode 100644 index 0000000..16365d7 --- /dev/null +++ b/my-wf-1/pkg.json @@ -0,0 +1,33 @@ +{ + "name": "my-wf-1", + "version": "0.1.0", + "description": "FastQC workflow", + "main": "my-wf-1", + "scripts": { + "test": "wfpm test" + }, + "deprecated": false, + "keywords": [ + "bioinformatics", + "seq", + "qc metrics" + ], + "repository": { + "type": "git", + "url": "https://github.com/icgc-tcga-pancancer/demo-wfs.git" + }, + "dependencies": [ + "github.com/icgc-tcga-pancancer/awesome-wfpkgs1/fastqc@0.1.0", + "github.com/icgc-argo/demo-wfpkgs/demo-utils@1.1.0" + ], + "devDependencies": [], + "contributors": [ + { + "name": "Junjun Zhang", + "email": "junjun.zhang@oicr.on.ca" + } + ], + "license": "MIT", + "bugReport": "https://github.com/icgc-tcga-pancancer/demo-wfs/issues", + "homepage": "https://github.com/icgc-tcga-pancancer/demo-wfs#readme" +} \ No newline at end of file diff --git a/my-wf-1/tests/checker.nf b/my-wf-1/tests/checker.nf new file mode 100755 index 0000000..7cf1fb8 --- /dev/null +++ b/my-wf-1/tests/checker.nf @@ -0,0 +1,67 @@ +#!/usr/bin/env nextflow + +/* + This is an auto-generated checker workflow, please update as needed +*/ + +nextflow.enable.dsl = 2 +version = '0.1.0' // tool version + +// universal params +params.publish_dir = "" +params.container_version = "" + +// tool specific parmas go here, add / change as needed +params.input_file = "" +params.expected_output = "" + +include { MyWf1 } from '../my-wf-1' + +Channel + .fromPath(params.input_file, checkIfExists: true) + .set { input_file } + + +process file_diff { + input: + path output_file + path expected_gzip + + output: + stdout() + + script: + """ + # remove date field before comparison eg,
Tue 19 Jan 2021
test_rg_3.bam
+ # sed -e 's#"header_filename">.*
test_rg_3.bam#"header_filename">
test_rg_3.bam#' + + diff <( cat ${output_file} | sed -e 's#"header_filename">.*
test_rg_3.bam#"header_filename">
test_rg_3.bam#' ) \ + <( gunzip -c ${expected_gzip} | sed -e 's#"header_filename">.*
test_rg_3.bam#"header_filename">
test_rg_3.bam#' ) \ + && ( echo "Test PASSED" && exit 0 ) || ( echo "Test FAILED, output file mismatch." && exit 1 ) + """ +} + + +workflow checker { + take: + input_file + expected_output + + main: + MyWf1( + input_file + ) + + file_diff( + MyWf1.out.output_file, + expected_output + ) +} + + +workflow { + checker( + file(params.input_file), + file(params.expected_output) + ) +} diff --git a/my-wf-1/tests/expected/expected.input_file_name.txt b/my-wf-1/tests/expected/expected.input_file_name.txt new file mode 100644 index 0000000..d2a060a --- /dev/null +++ b/my-wf-1/tests/expected/expected.input_file_name.txt @@ -0,0 +1 @@ +The input file name is README.md diff --git a/my-wf-1/tests/expected/expected.test_rg_3_fastqc.out.gz b/my-wf-1/tests/expected/expected.test_rg_3_fastqc.out.gz new file mode 100644 index 0000000..663e51e Binary files /dev/null and b/my-wf-1/tests/expected/expected.test_rg_3_fastqc.out.gz differ diff --git a/my-wf-1/tests/input/README.md b/my-wf-1/tests/input/README.md new file mode 100644 index 0000000..9df14b7 --- /dev/null +++ b/my-wf-1/tests/input/README.md @@ -0,0 +1 @@ +This folder contains tiny data files for testing. diff --git a/my-wf-1/tests/input/test_rg_3.bam b/my-wf-1/tests/input/test_rg_3.bam new file mode 100644 index 0000000..ab8a214 Binary files /dev/null and b/my-wf-1/tests/input/test_rg_3.bam differ diff --git a/my-wf-1/tests/nextflow.config b/my-wf-1/tests/nextflow.config new file mode 100644 index 0000000..4e214a1 --- /dev/null +++ b/my-wf-1/tests/nextflow.config @@ -0,0 +1 @@ +includeConfig '../nextflow.config' diff --git a/my-wf-1/tests/test-job-1.json b/my-wf-1/tests/test-job-1.json new file mode 100644 index 0000000..e9bb82b --- /dev/null +++ b/my-wf-1/tests/test-job-1.json @@ -0,0 +1,7 @@ +{ + "input_file": "input/test_rg_3.bam", + "expected_output": "expected/expected.test_rg_3_fastqc.out.gz", + "publish_dir": "outdir", + "cpus": 1, + "mem": 0.5 +} diff --git a/my-wf-1/tests/wfpr_modules b/my-wf-1/tests/wfpr_modules new file mode 120000 index 0000000..de8975c --- /dev/null +++ b/my-wf-1/tests/wfpr_modules @@ -0,0 +1 @@ +../wfpr_modules \ No newline at end of file diff --git a/my-wf-1/wfpr_modules b/my-wf-1/wfpr_modules new file mode 120000 index 0000000..de8975c --- /dev/null +++ b/my-wf-1/wfpr_modules @@ -0,0 +1 @@ +../wfpr_modules \ No newline at end of file diff --git a/wfpr_modules/github.com/icgc-argo/demo-wfpkgs/demo-utils@1.1.0/.dockerignore b/wfpr_modules/github.com/icgc-argo/demo-wfpkgs/demo-utils@1.1.0/.dockerignore new file mode 100644 index 0000000..d5a3065 --- /dev/null +++ b/wfpr_modules/github.com/icgc-argo/demo-wfpkgs/demo-utils@1.1.0/.dockerignore @@ -0,0 +1,5 @@ +.nextflow* +.gitignore +work +outdir +tests \ No newline at end of file diff --git a/wfpr_modules/github.com/icgc-argo/demo-wfpkgs/demo-utils@1.1.0/Dockerfile b/wfpr_modules/github.com/icgc-argo/demo-wfpkgs/demo-utils@1.1.0/Dockerfile new file mode 100644 index 0000000..913b67a --- /dev/null +++ b/wfpr_modules/github.com/icgc-argo/demo-wfpkgs/demo-utils@1.1.0/Dockerfile @@ -0,0 +1,11 @@ +FROM ubuntu:20.04 + +LABEL org.opencontainers.image.source https://github.com/icgc-argo/demo-wfpkgs + +RUN groupadd -g 1000 ubuntu && \ + useradd -l -u 1000 -g ubuntu ubuntu && \ + install -d -m 0755 -o ubuntu -g ubuntu /home/ubuntu + +USER ubuntu + +CMD ["/bin/bash"] diff --git a/wfpr_modules/github.com/icgc-argo/demo-wfpkgs/demo-utils@1.1.0/local_modules/cleanup-workdir.nf b/wfpr_modules/github.com/icgc-argo/demo-wfpkgs/demo-utils@1.1.0/local_modules/cleanup-workdir.nf new file mode 100644 index 0000000..09c27c3 --- /dev/null +++ b/wfpr_modules/github.com/icgc-argo/demo-wfpkgs/demo-utils@1.1.0/local_modules/cleanup-workdir.nf @@ -0,0 +1,75 @@ +#!/usr/bin/env nextflow + +/* + * Copyright (c) 2019-2021, Ontario Institute for Cancer Research (OICR). + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published + * by the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ + +/* + * Contributors: + * Junjun Zhang + */ + +/********************************************************************/ +/* this block is auto-generated based on info from pkg.json where */ +/* changes can be made if needed, do NOT modify this block manually */ +nextflow.enable.dsl = 2 +version = '1.1.0' +container = [ + 'ghcr.io': 'ghcr.io/icgc-argo/demo-wfpkgs.demo-utils', + 'quay.io': 'quay.io/icgc-argo/demo-wfpkgs.demo-utils' +] +default_container_registry = 'quay.io' +/********************************************************************/ + +params.cpus = 1 +params.mem = 1 +params.files_to_delete = 'NO_FILE' +params.container_version = '' +params.container_registry = default_container_registry + + +process cleanupWorkdir { + container "${container[params.container_registry]}:${params.container_version ?: version}" + cpus params.cpus + memory "${params.mem} GB" + + input: + path files_to_delete // more accurately, other non-hidden files in the same folder will be deleted as well + val virtual_dep_flag // for specifying steps do not produce output files but produce values, set those values here + + output: + stdout + + script: + """ + set -euxo pipefail + + IFS=" " + read -a files <<< "${files_to_delete}" + for f in "\${files[@]}" + do + dir_to_rm=\$(dirname \$(readlink -f \$f)) + + if [[ \$dir_to_rm != ${workflow.workDir}/* ]]; then # skip dir not under workdir, like from input file dir + echo "Not delete: \$dir_to_rm/*\" + continue + fi + + rm -fr \$dir_to_rm/* # delete all files and subdirs but not hidden ones + echo "Deleted: \$dir_to_rm/*" + done + """ +} diff --git a/wfpr_modules/github.com/icgc-argo/demo-wfpkgs/demo-utils@1.1.0/main.nf b/wfpr_modules/github.com/icgc-argo/demo-wfpkgs/demo-utils@1.1.0/main.nf new file mode 100644 index 0000000..afa1cc8 --- /dev/null +++ b/wfpr_modules/github.com/icgc-argo/demo-wfpkgs/demo-utils@1.1.0/main.nf @@ -0,0 +1,66 @@ +#!/usr/bin/env nextflow + +/* + * Copyright (c) 2019-2021, Ontario Institute for Cancer Research (OICR). + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published + * by the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ + +/* + * Contributors: + * Junjun Zhang + */ + +/********************************************************************/ +/* this block is auto-generated based on info from pkg.json where */ +/* changes can be made if needed, do NOT modify this block manually */ +nextflow.enable.dsl = 2 +name = 'demo-utils' +version = '1.1.0' +/********************************************************************/ + + +// load local process (module) +include { cleanupWorkdir } from './local_modules/cleanup-workdir.nf' + + +// this is kind of like CWL's secondary files +def getSecondaryFiles(main_file, exts){ + if (!(main_file instanceof String)) { + exit 1, "[getSecondaryFiles] param: main_file must be a string" + } + + if (!(exts instanceof List)) { + exit 1, "[getSecondaryFiles] param: exts must be a list of strings" + } + + def secondaryFiles = [] + for (ext in exts) { + if (ext.startsWith("^")) { + ext = ext.replace("^", "") + parts = main_file.split("\\.").toList() + parts.removeLast() + secondaryFiles.add((parts + [ext]).join(".")) + } else { + secondaryFiles.add(main_file + '.' + ext) + } + } + return secondaryFiles +} + + +// get specific secondary files for BWA alignment, ensure none is missing +def getBwaSecondaryFiles(main_file){ + return getSecondaryFiles(main_file, ['fai', 'sa', 'bwt', 'ann', 'amb', 'pac', 'alt']) +} diff --git a/wfpr_modules/github.com/icgc-argo/demo-wfpkgs/demo-utils@1.1.0/nextflow.config b/wfpr_modules/github.com/icgc-argo/demo-wfpkgs/demo-utils@1.1.0/nextflow.config new file mode 100644 index 0000000..f2cd1e3 --- /dev/null +++ b/wfpr_modules/github.com/icgc-argo/demo-wfpkgs/demo-utils@1.1.0/nextflow.config @@ -0,0 +1,4 @@ +docker { + enabled = true + runOptions = '-u \$(id -u):\$(id -g)' +} diff --git a/wfpr_modules/github.com/icgc-argo/demo-wfpkgs/demo-utils@1.1.0/pkg.json b/wfpr_modules/github.com/icgc-argo/demo-wfpkgs/demo-utils@1.1.0/pkg.json new file mode 100644 index 0000000..1571f6b --- /dev/null +++ b/wfpr_modules/github.com/icgc-argo/demo-wfpkgs/demo-utils@1.1.0/pkg.json @@ -0,0 +1,46 @@ +{ + "name": "demo-utils", + "version": "1.1.0", + "description": "Package with helper utilities", + "main": "main.nf", + "scripts": { + "test": "pushd tests && ./run_tests.sh; popd" + }, + "repository": { + "type": "git", + "url": "https://github.com/icgc-argo/demo-wfpkgs.git" + }, + "deprecated": false, + "keywords": [ + "bioinformatics", + "utilities", + "secondary file", + "workdir cleanup" + ], + "contributors": [ + { + "name": "Junjun Zhang", + "email": "junjun.zhang@oicr.on.ca" + } + ], + "license": "AGPL-3.0", + "dependencies": [], + "container": { + "registries": [ + { + "registry": "quay.io", + "type": "docker", + "org": "icgc-argo", + "default": true + }, + { + "registry": "ghcr.io", + "type": "docker", + "org": "icgc-argo", + "default": false + } + ] + }, + "bugReport": "https://github.com/icgc-argo/demo-wfpkgs/issues", + "homepage": "https://github.com/icgc-argo/demo-wfpkgs#readme" +} diff --git a/wfpr_modules/github.com/icgc-argo/demo-wfpkgs/demo-utils@1.1.0/wfpr_modules b/wfpr_modules/github.com/icgc-argo/demo-wfpkgs/demo-utils@1.1.0/wfpr_modules new file mode 120000 index 0000000..1cc74ba --- /dev/null +++ b/wfpr_modules/github.com/icgc-argo/demo-wfpkgs/demo-utils@1.1.0/wfpr_modules @@ -0,0 +1 @@ +../../../../../wfpr_modules \ No newline at end of file diff --git a/wfpr_modules/github.com/icgc-tcga-pancancer/awesome-wfpkgs1/fastqc@0.1.0/.dockerignore b/wfpr_modules/github.com/icgc-tcga-pancancer/awesome-wfpkgs1/fastqc@0.1.0/.dockerignore new file mode 100644 index 0000000..71266ec --- /dev/null +++ b/wfpr_modules/github.com/icgc-tcga-pancancer/awesome-wfpkgs1/fastqc@0.1.0/.dockerignore @@ -0,0 +1,5 @@ +.gitignore +.nextflow* +tests +work +outdir diff --git a/wfpr_modules/github.com/icgc-tcga-pancancer/awesome-wfpkgs1/fastqc@0.1.0/.gitignore b/wfpr_modules/github.com/icgc-tcga-pancancer/awesome-wfpkgs1/fastqc@0.1.0/.gitignore new file mode 100644 index 0000000..a50828c --- /dev/null +++ b/wfpr_modules/github.com/icgc-tcga-pancancer/awesome-wfpkgs1/fastqc@0.1.0/.gitignore @@ -0,0 +1,69 @@ +*.py[cod] + +# C extensions +*.so + +# Packages +*.egg +*.egg-info +dist +build +eggs +.eggs +parts +bin +var +sdist +develop-eggs +.installed.cfg +lib +lib64 +venv*/ +pyvenv*/ + +# Installer logs +pip-log.txt + +# Unit test / coverage reports +.coverage +.tox +.coverage.* +nosetests.xml +coverage.xml +htmlcov + +# Translations +*.mo + +# Mr Developer +.mr.developer.cfg +.project +.pydevproject +.idea +*.iml +*.komodoproject + +# Complexity +output/*.html +output/*/index.html + +# Sphinx +docs/_build + +.DS_Store +*~ +.*.sw[po] +.build +.ve +.env +.cache +.pytest +.bootstrap +.appveyor.token +*.bak +*.log +.vscode +.python-version +.nextflow* +work +outdir diff --git a/wfpr_modules/github.com/icgc-tcga-pancancer/awesome-wfpkgs1/fastqc@0.1.0/Dockerfile b/wfpr_modules/github.com/icgc-tcga-pancancer/awesome-wfpkgs1/fastqc@0.1.0/Dockerfile new file mode 100644 index 0000000..7ddc24b --- /dev/null +++ b/wfpr_modules/github.com/icgc-tcga-pancancer/awesome-wfpkgs1/fastqc@0.1.0/Dockerfile @@ -0,0 +1,9 @@ +FROM pegi3s/fastqc:0.11.9 + +LABEL org.opencontainers.image.source https://github.com/ICGC-TCGA-PanCancer/awesome-wfpkgs1 + +ENV PATH="/tools:${PATH}" + +COPY *.py /tools/ + +CMD ["/bin/bash"] diff --git a/wfpr_modules/github.com/icgc-tcga-pancancer/awesome-wfpkgs1/fastqc@0.1.0/fastqc.nf b/wfpr_modules/github.com/icgc-tcga-pancancer/awesome-wfpkgs1/fastqc@0.1.0/fastqc.nf new file mode 100755 index 0000000..766fbdd --- /dev/null +++ b/wfpr_modules/github.com/icgc-tcga-pancancer/awesome-wfpkgs1/fastqc@0.1.0/fastqc.nf @@ -0,0 +1,41 @@ +#!/usr/bin/env nextflow + +nextflow.enable.dsl = 2 +version = '0.1.0' // tool version + +// universal params go here, change default value as needed +params.container_version = "" +params.cpus = 1 +params.mem = 1 // GB +params.publish_dir = "" // set to empty string will disable publishDir + +// tool specific parmas go here, add / change as needed +params.input_file = "" +params.output_pattern = "*.html" // fastqc output html report + + +process fastqc { + container "ghcr.io/icgc-tcga-pancancer/awesome-wfpkgs1.fastqc:${params.container_version ?: version}" + publishDir "${params.publish_dir}/${task.process.replaceAll(':', '_')}", mode: "copy", enabled: "${params.publish_dir ? true : ''}" + + cpus params.cpus + memory "${params.mem} GB" + + input: // input, make update as needed + path input_file + + output: // output, make update as needed + path "output_dir/${params.output_pattern}", emit: output + + script: + // add and initialize variables here as needed + + """ + mkdir -p output_dir + + fastqc.py \ + -i ${input_file} \ + -o output_dir + + """ +} diff --git a/wfpr_modules/github.com/icgc-tcga-pancancer/awesome-wfpkgs1/fastqc@0.1.0/fastqc.py b/wfpr_modules/github.com/icgc-tcga-pancancer/awesome-wfpkgs1/fastqc@0.1.0/fastqc.py new file mode 100755 index 0000000..99e181c --- /dev/null +++ b/wfpr_modules/github.com/icgc-tcga-pancancer/awesome-wfpkgs1/fastqc@0.1.0/fastqc.py @@ -0,0 +1,34 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- + +import os +import sys +import argparse +import subprocess + + +def main(): + """ + Python implementation of tool: fastqc + + This is auto-generated Python code, please update as needed! + """ + + parser = argparse.ArgumentParser(description='Tool: fastqc') + parser.add_argument('-i', '--input-file', dest='input_file', type=str, + help='Input file', required=True) + parser.add_argument('-o', '--output-dir', dest='output_dir', type=str, + help='Output directory', required=True) + args = parser.parse_args() + + if not os.path.isfile(args.input_file): + sys.exit('Error: specified input file %s does not exist or is not accessible!' % args.input_file) + + if not os.path.isdir(args.output_dir): + sys.exit('Error: specified output dir %s does not exist or is not accessible!' % args.output_dir) + + subprocess.run(f"fastqc -o {args.output_dir} {args.input_file}", shell=True, check=True) + + +if __name__ == "__main__": + main() diff --git a/wfpr_modules/github.com/icgc-tcga-pancancer/awesome-wfpkgs1/fastqc@0.1.0/nextflow.config b/wfpr_modules/github.com/icgc-tcga-pancancer/awesome-wfpkgs1/fastqc@0.1.0/nextflow.config new file mode 100644 index 0000000..f2cd1e3 --- /dev/null +++ b/wfpr_modules/github.com/icgc-tcga-pancancer/awesome-wfpkgs1/fastqc@0.1.0/nextflow.config @@ -0,0 +1,4 @@ +docker { + enabled = true + runOptions = '-u \$(id -u):\$(id -g)' +} diff --git a/wfpr_modules/github.com/icgc-tcga-pancancer/awesome-wfpkgs1/fastqc@0.1.0/pkg.json b/wfpr_modules/github.com/icgc-tcga-pancancer/awesome-wfpkgs1/fastqc@0.1.0/pkg.json new file mode 100644 index 0000000..389e210 --- /dev/null +++ b/wfpr_modules/github.com/icgc-tcga-pancancer/awesome-wfpkgs1/fastqc@0.1.0/pkg.json @@ -0,0 +1,38 @@ +{ + "name": "fastqc", + "version": "0.1.0", + "description": "FastQC tool", + "main": "fastqc", + "scripts": { + "test": "wfpm test" + }, + "deprecated": false, + "keywords": [ + "bioinformatics" + ], + "repository": { + "type": "git", + "url": "https://github.com/ICGC-TCGA-PanCancer/awesome-wfpkgs1.git" + }, + "container": { + "registries": [ + { + "registry": "ghcr.io", + "type": "docker", + "org": "icgc-tcga-pancancer", + "default": true + } + ] + }, + "dependencies": [], + "devDependencies": [], + "contributors": [ + { + "name": "Junjun Zhang", + "email": "junjun.zhang@oicr.on.ca" + } + ], + "license": "MIT", + "bugReport": "https://github.com/ICGC-TCGA-PanCancer/awesome-wfpkgs1/issues", + "homepage": "https://github.com/ICGC-TCGA-PanCancer/awesome-wfpkgs1#readme" +} diff --git a/wfpr_modules/github.com/icgc-tcga-pancancer/awesome-wfpkgs1/fastqc@0.1.0/wfpr_modules b/wfpr_modules/github.com/icgc-tcga-pancancer/awesome-wfpkgs1/fastqc@0.1.0/wfpr_modules new file mode 120000 index 0000000..1cc74ba --- /dev/null +++ b/wfpr_modules/github.com/icgc-tcga-pancancer/awesome-wfpkgs1/fastqc@0.1.0/wfpr_modules @@ -0,0 +1 @@ +../../../../../wfpr_modules \ No newline at end of file