Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
82 changes: 82 additions & 0 deletions config/params.new.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
input:
local_dir: null
remote_dir: null
ignore_dirs: null
pacbio_reads: false
bam_input_pattern: null
large_reference: null
remove_file_suffix: null
custom_fastq_file_suffixes: null
do_bam2fq_conversion: false

comms:
notify: null
mailer: "/usr/bin/mail"

output:
directory: "output"

profilers:
gffquant:
run: true
stream: true
db: null
aligner: "bwa"
mode: "gene"
ambig_mode: "1overN"
strand_specific: null
single_end_library: false
do_name_sort: null
min_seqlen: 45
min_identity: 0.97
restrict_metrics: ""
keep_alignments: false
reference_index: null
collate_columns: "uniq_scaled,combined_scaled"
collate_gene_counts: true
metaphlan3:
run: false
db: null
db_version: null
params: null
metaphlan4:
run: false
db: null
samestr_compatible_output: false
samestr:
run: false
marker_db: null
motus:
run: false
db: null
tax_level: "mOTU"
min_length: 75
n_marker_genes: 3

decon:
run: false
keep_chimeras: false
kraken2:
min_hit_groups: 10
db: "/scratch/schudoma/databases/kraken2/hg38_silva_genome"
fix_read_ids: false

align:
run: false
reference_index: null

qc:
run: true
keep_orphans: true
generate_reports: true
amplicon:
run: false
primers: null
minlen: 45
p5_primer_params: "cu=t qtrim=rl ktrim=l trimq=3 k=9 mink=1 hdist=1 restrictleft=50"
p3_primer_params: "cu=t ktrim=r k=9 mink=1 hdist=1 restrictright=50"
long_reads: false
single_end: false
shotgun:
params: "qtrim=rl trimq=3 maq=25 ktrim=r k=23 mink=11 hdist=1 ftm=5 entropy=0.5 entropywindow=50 entropyk=5 tpe tbo"
minlen: 45
46 changes: 8 additions & 38 deletions main.nf
Original file line number Diff line number Diff line change
Expand Up @@ -6,63 +6,33 @@ include { nevermore_main } from "./nevermore/workflows/nevermore"
include { gffquant_flow } from "./nevermore/workflows/gffquant"
include { fastq_input } from "./nevermore/workflows/input"

if (params.input_dir && params.remote_input_dir) {
log.info """
Cannot process both --input_dir and --remote_input_dir. Please check input parameters.
""".stripIndent()
exit 1
} else if (!params.input_dir && !params.remote_input_dir) {
log.info """
Neither --input_dir nor --remote_input_dir set.
""".stripIndent()
exit 1
}

def input_dir = (params.input_dir) ? params.input_dir : params.remote_input_dir
include { get_single_input_dir } from "./nevermore/modules/functions/validation"

params.ignore_dirs = ""
def input_dir = get_single_input_dir()

params.input.ignore_dirs = null


workflow {

fastq_input(
Channel.fromPath(input_dir + "/*", type: "dir")
.filter { !params.ignore_dirs.split(",").contains(it.name) }
.filter { params.input.ignore_dirs and !params.input.ignore_dirs.split(",").contains(it.name) }
)

fastq_ch = fastq_input.out.fastqs

nevermore_main(fastq_ch)

if (params.run_gffquant) {

if (params.gq_stream) {
gq_input_ch = nevermore_main.out.fastqs
.map { sample, fastqs ->
sample_id = sample.id.replaceAll(/.(orphans|singles|chimeras)$/, "")
return tuple(sample_id, [fastqs].flatten())
}
.groupTuple()
.map { sample_id, fastqs -> return tuple(sample_id, fastqs.flatten()) }
gq_input_ch.view()
//.groupTuple(sort: true)

} else {

gq_input_ch = nevermore_main.out.alignments

}
if (params.profilers.gffquant.run) {

// gq_input_ch = ((params.gq_stream) ? nevermore_main.out.fastqs : never_main.out.alignments)
// .map { sample, files -> return tuple(sample.id, files) }
gffquant_flow(gq_input_ch)
gffquant_flow((params.profilers.gffquant.stream) ? nevermore_main.out.fastqs : nevermore_main.out.alignments)

}

if (params.run_motus) {
if (params.profilers.motus.run) {

motus(nevermore_main.out.fastqs, params.motus_db)
motus(nevermore_main.out.fastqs, params.profilers.motus.db)

}

Expand Down
1 change: 0 additions & 1 deletion nevermore/modules/collate.nf
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
process collate_stats {
// publishDir params.output_dir, mode: params.publish_mode

input:
path(stats_files)
Expand Down
3 changes: 1 addition & 2 deletions nevermore/modules/converters/bam2fq.nf
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
process bam2fq {
// publishDir params.output_dir, mode: params.publish_mode


input:
tuple val(sample), path(bam)

Expand Down
4 changes: 3 additions & 1 deletion nevermore/modules/converters/fq2bam.nf
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
params.input.pacbio_reads = false

process fq2bam {
input:
tuple val(sample), path(fq)
Expand All @@ -9,7 +11,7 @@ process fq2bam {
def maxmem = task.memory.toGiga()
def r2 = (sample.is_paired) ? "in2=${sample.id}_R2.fastq.gz" : ""
def qual_modifier = ""
if (params.pb_reads) {
if (params.input.pacbio_reads) {
qual_modifier = "qin=33"
}

Expand Down
4 changes: 3 additions & 1 deletion nevermore/modules/converters/fq2fa.nf
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
params.input.pacbio_reads = false

process fq2fa {
input:
tuple val(sample), path(fq)
Expand All @@ -9,7 +11,7 @@ process fq2fa {
def maxmem = task.memory.toGiga()
def r2 = (sample.is_paired) ? "in2=${sample.id}_R2.fastq.gz out2=out/${sample.id}_R2.fasta" : ""
def qual_modifier = ""
if (params.pb_reads) {
if (params.input.pacbio_reads) {
qual_modifier = "qin=33"
}

Expand Down
1 change: 0 additions & 1 deletion nevermore/modules/converters/prepare_fastqs.nf
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
process prepare_fastqs {
// publishDir params.output_dir, mode: params.publish_mode

input:
tuple val(sample), path(fq)
Expand Down
57 changes: 0 additions & 57 deletions nevermore/modules/decon/dehumanise.nf

This file was deleted.

9 changes: 6 additions & 3 deletions nevermore/modules/decon/kraken2.nf
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
params.decon.kraken2.min_hit_groups = 10


process remove_host_kraken2 {
label 'kraken2'

Expand All @@ -12,7 +15,7 @@ process remove_host_kraken2 {
def out_options = (sample.is_paired) ? "--paired --unclassified-out ${sample.id}#.fastq" : "--unclassified-out ${sample.id}_1.fastq"
def move_r2 = (sample.is_paired) ? "gzip -c ${sample.id}_2.fastq > no_host/${sample.id}/${sample.id}_R2.fastq.gz" : ""

def kraken2_call = "kraken2 --threads $task.cpus --db ${kraken_db} --report-minimizer-data --gzip-compressed --minimum-hit-groups ${params.kraken2_min_hit_groups}"
def kraken2_call = "kraken2 --threads $task.cpus --db ${kraken_db} --report-minimizer-data --gzip-compressed --minimum-hit-groups ${params.decon.kraken2.min_hit_groups}"

"""
mkdir -p no_host/${sample.id}
Expand Down Expand Up @@ -40,10 +43,10 @@ process remove_host_kraken2_individual {
tuple val(sample), path("no_host/${sample.id}/KRAKEN_FINISHED"), emit: sentinel

script:
def kraken2_call = "kraken2 --threads $task.cpus --db ${kraken_db} --report-minimizer-data --gzip-compressed --minimum-hit-groups ${params.kraken2_min_hit_groups}"
def kraken2_call = "kraken2 --threads $task.cpus --db ${kraken_db} --report-minimizer-data --gzip-compressed --minimum-hit-groups ${params.decon.kraken2.min_hit_groups}"

fix_read_id_str = ""
if (params.fix_read_ids) {
if (params.decon.fix_read_ids) {
fix_read_id_str += "seqtk rename ${sample.id}_1.fastq read | cut -f 1 -d ' ' > ${sample.id}_1.fastq.renamed && mv -v ${sample.id}_1.fastq.renamed ${sample.id}_1.fastq\n"
fix_read_id_str += "seqtk rename ${sample.id}_2.fastq read | cut -f 1 -d ' ' > ${sample.id}_2.fastq.renamed && mv -v ${sample.id}_2.fastq.renamed ${sample.id}_2.fastq\n"
}
Expand Down
Loading