mirror of
https://github.com/MillironX/nf-core_modules.git
synced 2024-12-22 11:08:17 +00:00
Merge pull request #9 from ewels/master
Added samtools, restructured directory structures
This commit is contained in:
commit
9fd356468d
23 changed files with 401 additions and 34 deletions
23
.github/workflows/fastqc.yml
vendored
Normal file
23
.github/workflows/fastqc.yml
vendored
Normal file
|
@ -0,0 +1,23 @@
|
|||
name: FastQC
|
||||
on:
|
||||
push: {}
|
||||
pull_request:
|
||||
paths: tools/fastqc/*
|
||||
|
||||
jobs:
|
||||
run_ci_test:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
|
||||
# Check out the repository
|
||||
- uses: actions/checkout@v1
|
||||
submodules: true
|
||||
|
||||
- name: Install Nextflow
|
||||
run: |
|
||||
wget -qO- get.nextflow.io | bash
|
||||
sudo mv nextflow /usr/local/bin/
|
||||
|
||||
# Test the module
|
||||
- run: nextflow run ./tools/fastqc/test/ -ansi-log false
|
23
.github/workflows/samtools_index.yml
vendored
Normal file
23
.github/workflows/samtools_index.yml
vendored
Normal file
|
@ -0,0 +1,23 @@
|
|||
name: samtools index
|
||||
on:
|
||||
push: {}
|
||||
pull_request:
|
||||
paths: tools/samtools/index*
|
||||
|
||||
jobs:
|
||||
run_ci_test:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
|
||||
# Check out the repository
|
||||
- uses: actions/checkout@v1
|
||||
submodules: true
|
||||
|
||||
- name: Install Nextflow
|
||||
run: |
|
||||
wget -qO- get.nextflow.io | bash
|
||||
sudo mv nextflow /usr/local/bin/
|
||||
|
||||
# Test the module
|
||||
- run: nextflow run ./tools/samtools/index/test/ -ansi-log false
|
23
.github/workflows/samtools_sort.yml
vendored
Normal file
23
.github/workflows/samtools_sort.yml
vendored
Normal file
|
@ -0,0 +1,23 @@
|
|||
name: samtools sort
|
||||
on:
|
||||
push: {}
|
||||
pull_request:
|
||||
paths: tools/samtools/sort*
|
||||
|
||||
jobs:
|
||||
run_ci_test:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
|
||||
# Check out the repository
|
||||
- uses: actions/checkout@v1
|
||||
submodules: true
|
||||
|
||||
- name: Install Nextflow
|
||||
run: |
|
||||
wget -qO- get.nextflow.io | bash
|
||||
sudo mv nextflow /usr/local/bin/
|
||||
|
||||
# Test the module
|
||||
- run: nextflow run ./tools/samtools/sort/test/ -ansi-log false
|
23
.github/workflows/trim_galore.yml
vendored
Normal file
23
.github/workflows/trim_galore.yml
vendored
Normal file
|
@ -0,0 +1,23 @@
|
|||
name: Trim Galore!
|
||||
on:
|
||||
push: {}
|
||||
pull_request:
|
||||
paths: tools/trim_galore/*
|
||||
|
||||
jobs:
|
||||
run_ci_test:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
|
||||
# Check out the repository
|
||||
- uses: actions/checkout@v1
|
||||
submodules: true
|
||||
|
||||
- name: Install Nextflow
|
||||
run: |
|
||||
wget -qO- get.nextflow.io | bash
|
||||
sudo mv nextflow /usr/local/bin/
|
||||
|
||||
# Test the module
|
||||
- run: nextflow run ./tools/trim_galore/test/ -ansi-log false
|
3
.gitmodules
vendored
Normal file
3
.gitmodules
vendored
Normal file
|
@ -0,0 +1,3 @@
|
|||
[submodule "test-datasets"]
|
||||
path = test-datasets
|
||||
url = https://github.com/nf-core/test-datasets.git
|
14
nf-core/module_testing/check_process_outputs.nf
Normal file
14
nf-core/module_testing/check_process_outputs.nf
Normal file
|
@ -0,0 +1,14 @@
|
|||
#!/usr/bin/env nextflow
|
||||
nextflow.preview.dsl = 2
|
||||
|
||||
cheers = Channel.from 'Bonjour', 'Ciao', 'Hello', 'Hola'
|
||||
|
||||
process check_output {
|
||||
input:
|
||||
val x from cheers
|
||||
|
||||
script:
|
||||
"""
|
||||
echo '$x world!'
|
||||
"""
|
||||
}
|
34
nf/fastqc.nf
34
nf/fastqc.nf
|
@ -1,34 +0,0 @@
|
|||
/*
|
||||
* Description:
|
||||
* Run FastQC on sequenced reads
|
||||
* Keywords:
|
||||
* read qc
|
||||
* adapter
|
||||
* Tools:
|
||||
* FastQC:
|
||||
* homepage: https://www.bioinformatics.babraham.ac.uk/projects/fastqc/
|
||||
* documentation: https://www.bioinformatics.babraham.ac.uk/projects/fastqc/Help/
|
||||
* 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.
|
||||
*/
|
||||
process fastqc {
|
||||
tag "$sample_id"
|
||||
publishDir "${params.outdir}/fastqc", mode: 'copy',
|
||||
saveAs: {filename -> filename.indexOf(".zip") > 0 ? "zips/$filename" : "$filename"}
|
||||
|
||||
input:
|
||||
set val(sample_id), file(reads)
|
||||
|
||||
output:
|
||||
file "*_fastqc.{zip,html}"
|
||||
|
||||
script:
|
||||
"""
|
||||
fastqc -q $reads
|
||||
|
||||
fastqc --version &> fastqc.version.txt
|
||||
"""
|
||||
}
|
1
test-datasets
Submodule
1
test-datasets
Submodule
|
@ -0,0 +1 @@
|
|||
Subproject commit e5fef88994b8d34c7bf4b07116e5f7a330d2ee3b
|
20
tools/fastqc/main.nf
Normal file
20
tools/fastqc/main.nf
Normal file
|
@ -0,0 +1,20 @@
|
|||
process fastqc {
|
||||
tag "FastQC - $sample_id"
|
||||
publishDir "${params.outdir}/fastqc", mode: 'copy',
|
||||
saveAs: {filename -> filename.indexOf(".zip") > 0 ? "zips/$filename" : "$filename"}
|
||||
|
||||
container 'quay.io/biocontainers/fastqc:0.11.8--2'
|
||||
|
||||
input:
|
||||
tuple sample_id, path(reads)
|
||||
|
||||
output:
|
||||
path "*_fastqc.{zip,html}"
|
||||
|
||||
script:
|
||||
"""
|
||||
fastqc -q $reads
|
||||
|
||||
fastqc --version &> fastqc.version.txt
|
||||
"""
|
||||
}
|
32
tools/fastqc/meta.yml
Normal file
32
tools/fastqc/meta.yml
Normal file
|
@ -0,0 +1,32 @@
|
|||
name: FastQC
|
||||
description: Run FastQC on sequenced reads
|
||||
keywords:
|
||||
- Quality Control
|
||||
- QC
|
||||
- Adapters
|
||||
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/
|
||||
input:
|
||||
-
|
||||
- sample_id:
|
||||
type: string
|
||||
description: Sample identifier
|
||||
- reads:
|
||||
type: file
|
||||
description: Input FastQ file, or pair of files
|
||||
output:
|
||||
-
|
||||
- report:
|
||||
type: file
|
||||
description: FastQC report
|
||||
pattern: *_fastqc.{zip,html}
|
||||
authors:
|
||||
- @ewels
|
22
tools/fastqc/test/main.nf
Normal file
22
tools/fastqc/test/main.nf
Normal file
|
@ -0,0 +1,22 @@
|
|||
#!/usr/bin/env nextflow
|
||||
nextflow.preview.dsl = 2
|
||||
include '../../../nf-core/module_testing/check_process_outputs.nf' params(params)
|
||||
include '../main.nf' params(params)
|
||||
|
||||
// Define input channels
|
||||
readPaths = [
|
||||
['SRR4238351', ['../../../test-datasets/tools/fastqc/input/SRR4238351_subsamp.fastq.gz']],
|
||||
['SRR4238355', ['../../../test-datasets/tools/fastqc/input/SRR4238355_subsamp.fastq.gz']],
|
||||
['SRR4238359', ['../../../test-datasets/tools/fastqc/input/SRR4238359_subsamp.fastq.gz']],
|
||||
['SRR4238379', ['../../../test-datasets/tools/fastqc/input/SRR4238379_subsamp.fastq.gz']]
|
||||
]
|
||||
Channel
|
||||
.from(readPaths)
|
||||
.map { row -> [ row[0], [ file(row[1][0]) ] ] }
|
||||
.set { ch_read_files }
|
||||
|
||||
// Run the workflow
|
||||
workflow {
|
||||
fastqc(ch_read_files)
|
||||
// .check_output()
|
||||
}
|
2
tools/fastqc/test/nextflow.config
Normal file
2
tools/fastqc/test/nextflow.config
Normal file
|
@ -0,0 +1,2 @@
|
|||
docker.enabled = true
|
||||
params.outdir = './results'
|
22
tools/samtools/index/main.nf
Normal file
22
tools/samtools/index/main.nf
Normal file
|
@ -0,0 +1,22 @@
|
|||
process samtools_index {
|
||||
tag "${bam.baseName}"
|
||||
|
||||
container 'quay.io/biocontainers/samtools:1.9--h10a08f8_12'
|
||||
|
||||
input:
|
||||
path(bam)
|
||||
|
||||
output:
|
||||
path "*.sorted.bam"
|
||||
|
||||
script:
|
||||
def suff_mem = ("${(task.memory.toBytes() - 6000000000) / task.cpus}" > 2000000000) ? 'true' : 'false'
|
||||
def avail_mem = (task.memory && suff_mem) ? "-m" + "${(task.memory.toBytes() - 6000000000) / task.cpus}" : ''
|
||||
"""
|
||||
samtools sort $bam \\
|
||||
-@ ${task.cpus} ${avail_mem} \\
|
||||
-o ${bam.baseName}.sorted.bam
|
||||
|
||||
samtools --version &> v_samtools.txt
|
||||
"""
|
||||
}
|
27
tools/samtools/index/meta.yml
Normal file
27
tools/samtools/index/meta.yml
Normal file
|
@ -0,0 +1,27 @@
|
|||
name: samtools sort
|
||||
description: Sort a BAM or CRAM file
|
||||
keywords:
|
||||
- sort
|
||||
tools:
|
||||
- samtools:
|
||||
description: |
|
||||
SAMtools is a set of utilities for interacting with and post-processing
|
||||
short DNA sequence read alignments in the SAM, BAM and CRAM formats, written by Heng Li.
|
||||
These files are generated as output by short read aligners like BWA.
|
||||
homepage: http://www.htslib.org/
|
||||
documentation: hhttp://www.htslib.org/doc/samtools.html
|
||||
doi: 10.1093/bioinformatics/btp352
|
||||
input:
|
||||
-
|
||||
- input:
|
||||
type: file
|
||||
description: Input BAM or CRAM file
|
||||
pattern: *.{bam,cram}
|
||||
output:
|
||||
-
|
||||
- index:
|
||||
type: file
|
||||
description: BAM or CRAM index file
|
||||
pattern: *.{bai}
|
||||
authors:
|
||||
- @ewels
|
13
tools/samtools/index/test/main.nf
Normal file
13
tools/samtools/index/test/main.nf
Normal file
|
@ -0,0 +1,13 @@
|
|||
#!/usr/bin/env nextflow
|
||||
echo true
|
||||
|
||||
cheers = Channel.from 'Bonjour', 'Ciao', 'Hello', 'Hola'
|
||||
|
||||
process sayHello {
|
||||
input:
|
||||
val x from cheers
|
||||
script:
|
||||
"""
|
||||
echo '$x world!'
|
||||
"""
|
||||
}
|
2
tools/samtools/index/test/nextflow.config
Normal file
2
tools/samtools/index/test/nextflow.config
Normal file
|
@ -0,0 +1,2 @@
|
|||
docker.enabled = true
|
||||
params.outdir = './results'
|
18
tools/samtools/sort/main.nf
Normal file
18
tools/samtools/sort/main.nf
Normal file
|
@ -0,0 +1,18 @@
|
|||
process samtools_index {
|
||||
tag "${bam.baseName}"
|
||||
|
||||
container 'quay.io/biocontainers/samtools:1.9--h10a08f8_12'
|
||||
|
||||
input:
|
||||
path(bam)
|
||||
|
||||
output:
|
||||
path "*.bam.bai"
|
||||
|
||||
script:
|
||||
"""
|
||||
samtools index $bam
|
||||
|
||||
samtools --version &> v_samtools.txt
|
||||
"""
|
||||
}
|
27
tools/samtools/sort/meta.yml
Normal file
27
tools/samtools/sort/meta.yml
Normal file
|
@ -0,0 +1,27 @@
|
|||
name: samtools sort
|
||||
description: Sort a BAM or CRAM file
|
||||
keywords:
|
||||
- sort
|
||||
tools:
|
||||
- samtools:
|
||||
description: |
|
||||
SAMtools is a set of utilities for interacting with and post-processing
|
||||
short DNA sequence read alignments in the SAM, BAM and CRAM formats, written by Heng Li.
|
||||
These files are generated as output by short read aligners like BWA.
|
||||
homepage: http://www.htslib.org/
|
||||
documentation: hhttp://www.htslib.org/doc/samtools.html
|
||||
doi: 10.1093/bioinformatics/btp352
|
||||
input:
|
||||
-
|
||||
- input:
|
||||
type: file
|
||||
description: Input BAM or CRAM file
|
||||
pattern: *.{bam,cram}
|
||||
output:
|
||||
-
|
||||
- sorted_file:
|
||||
type: file
|
||||
description: Sorted BAM or CRAM file
|
||||
pattern: *.{bam,cram}
|
||||
authors:
|
||||
- @ewels
|
13
tools/samtools/sort/test/main.nf
Normal file
13
tools/samtools/sort/test/main.nf
Normal file
|
@ -0,0 +1,13 @@
|
|||
#!/usr/bin/env nextflow
|
||||
echo true
|
||||
|
||||
cheers = Channel.from 'Bonjour', 'Ciao', 'Hello', 'Hola'
|
||||
|
||||
process sayHello {
|
||||
input:
|
||||
val x from cheers
|
||||
script:
|
||||
"""
|
||||
echo '$x world!'
|
||||
"""
|
||||
}
|
2
tools/samtools/sort/test/nextflow.config
Normal file
2
tools/samtools/sort/test/nextflow.config
Normal file
|
@ -0,0 +1,2 @@
|
|||
docker.enabled = true
|
||||
params.outdir = './results'
|
35
tools/trim_galore/main.nf
Normal file
35
tools/trim_galore/main.nf
Normal file
|
@ -0,0 +1,35 @@
|
|||
process fastqc {
|
||||
tag "$sample_id"
|
||||
publishDir "${params.outdir}/trim_galore", mode: 'copy',
|
||||
saveAs: {filename ->
|
||||
if (filename.indexOf("_fastqc") > 0) "FastQC/$filename"
|
||||
else if (filename.indexOf("trimming_report.txt") > 0) "logs/$filename"
|
||||
else filename
|
||||
}
|
||||
|
||||
container 'quay.io/biocontainers/trim-galore:0.6.5--0'
|
||||
|
||||
input:
|
||||
tuple sample_id, path(reads)
|
||||
|
||||
output:
|
||||
tuple name, path("*fq.gz")
|
||||
path "*trimming_report.txt"
|
||||
path "*_fastqc.{zip,html}"
|
||||
|
||||
script:
|
||||
c_r1 = clip_r1 > 0 ? "--clip_r1 ${clip_r1}" : ''
|
||||
c_r2 = clip_r2 > 0 ? "--clip_r2 ${clip_r2}" : ''
|
||||
tpc_r1 = three_prime_clip_r1 > 0 ? "--three_prime_clip_r1 ${three_prime_clip_r1}" : ''
|
||||
tpc_r2 = three_prime_clip_r2 > 0 ? "--three_prime_clip_r2 ${three_prime_clip_r2}" : ''
|
||||
nextseq = params.trim_nextseq > 0 ? "--nextseq ${params.trim_nextseq}" : ''
|
||||
if (params.singleEnd) {
|
||||
"""
|
||||
trim_galore --fastqc --gzip $c_r1 $tpc_r1 $nextseq $reads
|
||||
"""
|
||||
} else {
|
||||
"""
|
||||
trim_galore --paired --fastqc --gzip $c_r1 $c_r2 $tpc_r1 $tpc_r2 $nextseq $reads
|
||||
"""
|
||||
}
|
||||
}
|
43
tools/trim_galore/meta.yml
Normal file
43
tools/trim_galore/meta.yml
Normal file
|
@ -0,0 +1,43 @@
|
|||
name: Trim Galore!
|
||||
description: Trim FastQ files using Trim Galore!
|
||||
keywords:
|
||||
- trimming
|
||||
- adapters
|
||||
- sequencing adapters
|
||||
tools:
|
||||
- fastqc:
|
||||
description: |
|
||||
A wrapper tool around Cutadapt and FastQC to consistently apply quality
|
||||
and adapter trimming to FastQ files, with some extra functionality for
|
||||
MspI-digested RRBS-type (Reduced Representation Bisufite-Seq) libraries.
|
||||
homepage: https://www.bioinformatics.babraham.ac.uk/projects/trim_galore/
|
||||
documentation: https://github.com/FelixKrueger/TrimGalore/blob/master/Docs/Trim_Galore_User_Guide.md
|
||||
input:
|
||||
-
|
||||
- sample_id:
|
||||
type: string
|
||||
description: Sample identifier
|
||||
- reads:
|
||||
type: file
|
||||
description: Input FastQ file, or pair of files
|
||||
output:
|
||||
-
|
||||
- sample_id:
|
||||
type: string
|
||||
description: Sample identifier
|
||||
- trimmed_fastq:
|
||||
type: file
|
||||
description: Trimmed FastQ files
|
||||
pattern: *fq.gz
|
||||
-
|
||||
- report:
|
||||
type: file
|
||||
description: Trim Galore! trimming report
|
||||
pattern: *trimming_report.txt
|
||||
-
|
||||
- fastqc_report:
|
||||
type: file
|
||||
description: FastQC report
|
||||
pattern: *_fastqc.{zip,html}
|
||||
authors:
|
||||
- @ewels
|
13
tools/trim_galore/test/main.nf
Normal file
13
tools/trim_galore/test/main.nf
Normal file
|
@ -0,0 +1,13 @@
|
|||
#!/usr/bin/env nextflow
|
||||
echo true
|
||||
|
||||
cheers = Channel.from 'Bonjour', 'Ciao', 'Hello', 'Hola'
|
||||
|
||||
process sayHello {
|
||||
input:
|
||||
val x from cheers
|
||||
script:
|
||||
"""
|
||||
echo '$x world!'
|
||||
"""
|
||||
}
|
Loading…
Reference in a new issue