Skip to content

Commit

Permalink
Merge branch 'develop' into feature/gbcms
Browse files Browse the repository at this point in the history
  • Loading branch information
buehlere authored Sep 27, 2023
2 parents 8707552 + e22f845 commit 14a1f83
Show file tree
Hide file tree
Showing 8 changed files with 356 additions and 0 deletions.
Empty file added modules/nf-core-test/.gitkeep
Empty file.
1 change: 1 addition & 0 deletions modules/nf-core-test/fakeqc/main.nf
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@

1 change: 1 addition & 0 deletions modules/nf-core-test/fakeqc/meta.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@

59 changes: 59 additions & 0 deletions modules/nf-core-test/fastqc/main.nf
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
process FASTQC {
tag "$meta.id"
label 'process_medium'

conda (params.enable_conda ? "bioconda::fastqc=0.11.9" : null)
container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ?
'https://depot.galaxyproject.org/singularity/fastqc:0.11.9--0' :
'biocontainers/fastqc:0.11.9--0' }"

input:
tuple val(meta), path(reads)

output:
tuple val(meta), path("*.html"), emit: html
tuple val(meta), path("*.zip") , emit: zip
path "versions.yml" , emit: versions

when:
task.ext.when == null || task.ext.when

script:
def args = task.ext.args ?: ''
// Add soft-links to original FastQs for consistent naming in pipeline
def prefix = task.ext.prefix ?: "${meta.id}"
if (meta.single_end) {
"""
[ ! -f ${prefix}.fastq.gz ] && ln -s $reads ${prefix}.fastq.gz
fastqc $args --threads $task.cpus ${prefix}.fastq.gz
cat <<-END_VERSIONS > versions.yml
"${task.process}":
fastqc: \$( fastqc --version | sed -e "s/FastQC v//g" )
END_VERSIONS
"""
} else {
"""
[ ! -f ${prefix}_1.fastq.gz ] && ln -s ${reads[0]} ${prefix}_1.fastq.gz
[ ! -f ${prefix}_2.fastq.gz ] && ln -s ${reads[1]} ${prefix}_2.fastq.gz
fastqc $args --threads $task.cpus ${prefix}_1.fastq.gz ${prefix}_2.fastq.gz
cat <<-END_VERSIONS > versions.yml
"${task.process}":
fastqc: \$( fastqc --version | sed -e "s/FastQC v//g" )
END_VERSIONS
"""
}

stub:
def prefix = task.ext.prefix ?: "${meta.id}"
"""
touch ${prefix}.html
touch ${prefix}.zip
cat <<-END_VERSIONS > versions.yml
"${task.process}":
fastqc: \$( fastqc --version | sed -e "s/FastQC v//g" )
END_VERSIONS
"""
}
52 changes: 52 additions & 0 deletions modules/nf-core-test/fastqc/meta.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
name: fastqc
description: Run FastQC on sequenced reads
keywords:
- quality control
- qc
- adapters
- fastq
tools:
- fastqc:
description: |
FastQC gives general quality metrics about your reads.
It provides information about the quality score distribution
across your reads, the per base sequence content (%A/C/G/T).
You get information about adapter contamination and other
overrepresented sequences.
homepage: https://www.bioinformatics.babraham.ac.uk/projects/fastqc/
documentation: https://www.bioinformatics.babraham.ac.uk/projects/fastqc/Help/
licence: ["GPL-2.0-only"]
input:
- meta:
type: map
description: |
Groovy Map containing sample information
e.g. [ id:'test', single_end:false ]
- reads:
type: file
description: |
List of input FastQ files of size 1 and 2 for single-end and paired-end data,
respectively.
output:
- meta:
type: map
description: |
Groovy Map containing sample information
e.g. [ id:'test', single_end:false ]
- html:
type: file
description: FastQC report
pattern: "*_{fastqc.html}"
- zip:
type: file
description: FastQC report archive
pattern: "*_{fastqc.zip}"
- versions:
type: file
description: File containing software versions
pattern: "versions.yml"
authors:
- "@drpatelh"
- "@grst"
- "@ewels"
- "@FelixKrueger"
49 changes: 49 additions & 0 deletions modules/nf-core-test/multiqc/main.nf
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
process MULTIQC {
label 'process_medium'

conda (params.enable_conda ? 'bioconda::multiqc=1.12' : null)
container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ?
'https://depot.galaxyproject.org/singularity/multiqc:1.12--pyhdfd78af_0' :
'biocontainers/multiqc:1.12--pyhdfd78af_0' }"

input:
path multiqc_files, stageAs: "?/*"
tuple path(multiqc_config), path(multiqc_logo)

output:
path "*multiqc_report.html", emit: report
path "*_data" , emit: data
path "*_plots" , optional:true, emit: plots
path "versions.yml" , emit: versions

when:
task.ext.when == null || task.ext.when

script:
def args = task.ext.args ?: ''
def config = multiqc_config ? "--config $multiqc_config" : ''
"""
multiqc \\
--force \\
$config \\
$args \\
.
cat <<-END_VERSIONS > versions.yml
"${task.process}":
multiqc: \$( multiqc --version | sed -e "s/multiqc, version //g" )
END_VERSIONS
"""

stub:
"""
touch multiqc_data
touch multiqc_plots
touch multiqc_report.html
cat <<-END_VERSIONS > versions.yml
"${task.process}":
multiqc: \$( multiqc --version | sed -e "s/multiqc, version //g" )
END_VERSIONS
"""
}
48 changes: 48 additions & 0 deletions modules/nf-core-test/multiqc/meta.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
name: MultiQC
description: Aggregate results from bioinformatics analyses across many samples into a single report
keywords:
- QC
- bioinformatics tools
- Beautiful stand-alone HTML report
tools:
- multiqc:
description: |
MultiQC searches a given directory for analysis logs and compiles a HTML report.
It's a general use tool, perfect for summarising the output from numerous bioinformatics tools.
homepage: https://multiqc.info/
documentation: https://multiqc.info/docs/
licence: ["GPL-3.0-or-later"]
input:
- multiqc_files:
type: file
description: |
List of reports / files recognised by MultiQC, for example the html and zip output of FastQC
- multiqc_config:
type: file
description: Config yml for MultiQC
pattern: "*.{yml,yaml}"
- multiqc_logo:
type: file
description: Logo file for MultiQC
pattern: "*.{png}"
output:
- report:
type: file
description: MultiQC report file
pattern: "multiqc_report.html"
- data:
type: directory
description: MultiQC data dir
pattern: "multiqc_data"
- plots:
type: file
description: Plots created by MultiQC
pattern: "*_data"
- versions:
type: file
description: File containing software versions
pattern: "versions.yml"
authors:
- "@abhi18av"
- "@bunop"
- "@drpatelh"
146 changes: 146 additions & 0 deletions modules/yaml-schema.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,146 @@
{
"$schema": "http://json-schema.org/draft-07/schema",
"title": "Meta yaml",
"description": "Validate the meta yaml file for an nf-core module",
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Name of the module"
},
"description": {
"type": "string",
"description": "Description of the module"
},
"keywords": {
"type": "array",
"description": "Keywords for the module",
"items": {
"type": "string"
},
"minItems": 3
},
"authors": {
"type": "array",
"description": "Authors of the module",
"items": {
"type": "string"
}
},
"input": {
"type": "array",
"description": "Input channels for the module",

"items": {
"type": "object",
"patternProperties": {
".*": {
"type": "object",
"properties": {
"type": {
"type": "string",
"description": "Type of the input channel",
"enum": ["map", "file", "directory", "string", "integer", "float"]
},
"description": {
"type": "string",
"description": "Description of the input channel"
},
"pattern": {
"type": "string",
"description": "Pattern of the input channel, given in Java glob syntax"
},
"default": {
"type": ["string", "number", "boolean", "array", "object"],
"description": "Default value for the input channel"
}
},
"required": ["type", "description"]
}
}
}
},
"output": {
"type": "array",
"description": "Output channels for the module",
"items": {
"type": "object",
"patternProperties": {
".*": {
"type": "object",
"properties": {
"type": {
"type": "string",
"description": "Type of the output channel",
"enum": ["map", "file", "directory", "string", "integer", "float"]
},
"description": {
"type": "string",
"description": "Description of the output channel"
},
"pattern": {
"type": "string",
"description": "Pattern of the input channel, given in Java glob syntax"
}
},
"required": ["type", "description"]
}
}
}
},
"tools": {
"type": "array",
"description": "Tools used by the module",
"items": {
"type": "object",
"patternProperties": {
".*": {
"type": "object",
"properties": {
"description": {
"type": "string",
"description": "Description of the output channel"
},
"homepage": {
"type": "string",
"description": "Homepage of the tool",
"pattern": "^(http|https)://.*$"
},
"documentation": {
"type": "string",
"description": "Documentation of the tool",
"pattern": "^(http|https)://.*$"
},
"tool_dev_url": {
"type": "string",
"description": "URL of the development version of the tool's documentation",
"pattern": "^(http|https)://.*$"
},
"doi": {
"type": "string",
"description": "DOI of the tool",
"pattern": "^10.\\d{4,9}\\/[^,]+$"
},
"licence": {
"type": ["array", "string"],
"description": "Licence of the tool",
"items": {
"type": "string"
},
"uniqueItems": true
}
},
"required": ["description"],
"anyOf": [
{ "required": ["homepage"] },
{ "required": ["documentation"] },
{ "required": ["tool_dev_url"] },
{ "required": ["doi"] }
]
}
}
}
}
},
"required": ["name", "description", "keywords", "authors", "output", "tools"]
}

0 comments on commit 14a1f83

Please sign in to comment.