-
Notifications
You must be signed in to change notification settings - Fork 15
/
nf_umibam
executable file
·133 lines (93 loc) · 5.56 KB
/
nf_umibam
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
#!/usr/bin/env nextflow
nextflow.enable.dsl=2
// last modified 01 March 2021
params.outdir = "."
params.verbose = false
params.single_end = false
params.umibam_args = ''
params.dual = false // params are handed over automatically
params.help = false
// Show help message and exit
if (params.help){
helpMessage()
exit 0
}
if (params.verbose){
println ("[WORKFLOW] UMIBAM ARGS ARE: " + params.umibam_args)
}
//include { makeFilesChannel; getFileBaseNames } from './nf_modules/files_bam.mod.nf'
include { UMIBAM } from './nf_modules/umibam.mod.nf'
// file_ch = makeFilesChannel(args)
file_ch = Channel .fromPath(args) // UmiBam expects just the path to be passed in
//.bind( 'Hello world' )
.map{f-> [ f.baseName, f] } // transforming a channel with Paths from *.bam to a tuple with [basename,[basename.bam]]
//.view()
workflow {
// file_ch.view()
main:
UMIBAM (file_ch, params.outdir, params.umibam_args, params.verbose)
}
// Since workflows with very long command lines tend to fail to get rendered at all, I was experimenting with a
// minimal execution summary report so we at least know what the working directory was...
workflow.onComplete {
def msg = """\
Pipeline execution summary
---------------------------
Jobname : ${workflow.runName}
Completed at: ${workflow.complete}
Duration : ${workflow.duration}
Success : ${workflow.success}
workDir : ${workflow.workDir}
exit status : ${workflow.exitStatus}
"""
.stripIndent()
sendMail(to: "${workflow.userName}@babraham.ac.uk", subject: 'Minimal pipeline execution report', body: msg)
}
def helpMessage() {
log.info"""
>>
SYNOPSIS:
This single-tool workflow takes in a list of filenames in BAM format, and de-duplicates these files based on mapping position
as well as the UMI sequence (on the stone compute cluster at Babraham).
If you run UmiBam in this stand-alone workflow it is assumed that you know what you are doing, i.e. BAM files need to contain
a UMI sequence as the last entry of each read ID, separated by a colon, e.g. @HWUSI:...:CAGTTAGC. If called as is, UmiBam
is run in default mode (we are adding the option '--umi' unless the file is specified to contain dual UMIs (see option '--dual').
To add additional parameters, please consider tool-specific arguments that are compatible with UmiBam (see '--umibam_args' below).
==============================================================================================================
USAGE:
nf_umibam [options] <input BAM files>
Mandatory arguments:
====================
<input BAM files> List of input files in BAM format, e.g. '*bam'. The files are automatically processed as
single-end or paired end files (determined via the @PG line).
Tool-specific options:
======================
--umibam_args="[str]" This option can take any number of options that are compatible with UmiBam to modify its
default deduplication behaviour. For more detailed information on available options please refer
to the UmiBam User Guide, or run 'umibam --help' on the command line. As an example, to allow
up to 1 mismatch for the UMI sequence, use:
' --umibam_args="--mismatches 1" '. Please note that the format ="your options" needs to be
strictly adhered to in order to work correctly. [Default: None]
Other options:
==============
--dual This option can be used instead of the default option '--umi'. Please refer to the UmiBam.
[Default: OFF]
--outdir [str] Path to the output directory. [Default: current working directory]
--verbose More verbose status messages. [Default: OFF]
--help Displays this help message and exits.
Workflow options:
=================
Please note the single '-' hyphen for the following options!
-resume If a pipeline workflow has been interrupted or stopped (e.g. by accidentally closing a laptop),
this option will attempt to resume the workflow at the point it got interrupted by using
Nextflow's caching mechanism. This may save a lot of time.
-bg Sends the entire workflow into the background, thus disconnecting it from the terminal session.
This option launches a daemon process (which will keep running on the headnode) that watches over
your workflow, and submits new jobs to the SLURM queue as required. Use this option for big pipeline
jobs, or whenever you do not want to watch the status progress yourself. Upon completion, the
pipeline will send you an email with the job details. This option is HIGHLY RECOMMENDED!
-process.executor=local Temporarily changes where the workflow is executed to the 'local' machine. See also the nextflow.config
file for more details. [Default: slurm]
<<
""".stripIndent()
}