modified: tasks/fgi.wdl
[GalaxyCodeBases.git] / etc / gatk-wdl / fm2 / tasks / fgi.wdl
blob536c313a96f25241017559c18d3b45b4d73bf8a3
1 version 1.0
3 task FilterSamReads {
4         input {
5                 File inputBam
6                 File inputBamIndex
7                 String outputBamPath
8                 Boolean? createMd5File = false
10                 Int? compressionLevel
12                 Int? javaXmxMb = 1024
13                 Int? memoryMb = javaXmxMb + 512
14                 # One minute per input gigabyte.
15                 Int? timeMinutes = 1 + ceil(size(inputBam, "G") * 1)
16                 String? dockerImage = "quay.io/biocontainers/picard:2.23.8--0"
17         }
18         Array[String] FilterScriptContents = [
19                 'function accept(rec) {'
20                 '  if (rec.getReadUnmappedFlag()) return false;'
21                 '  var cigar = rec.getCigar();'
22                 '  if (cigar == null) return false;'
23                 '  var readMatch = 0;'
24                 '  for (var i=0;i < cigar.numCigarElements();++i) {'
25                 '    var ce = cigar.getCigarElement(i);'
26                 '    if (ce.getOperator().name() == "M") readMatch += ce.length;'
27                 '  }'
28                 '  if (readMatch > 200) return true;'
29                 '}'
30                 'accept(record);'
31         ]
33         command {
34                 set -e
35                 mkdir -p "$(dirname ~{outputBamPath})"
36                 JAVA_OPTS="-Xmx~{javaXmxMb}M -XX:ParallelGCThreads=1" picard \
37                 FilterSamReads \
38                 INPUT=~{sep=' INPUT=' inputBam} \
39                 OUTPUT=~{outputBamPath} \
40                 ~{"COMPRESSION_LEVEL=" + compressionLevel} \
41                 JAVASCRIPT_FILE=${write_lines(FilterScriptContents)} \
42                 FILTER=includeJavascript \
43                 CREATE_INDEX=true \
44                 CREATE_MD5_FILE=~{true="true" false="false" createMd5File}
45         }
47         output {
48                 File outputBam = outputBamPath
49                 File outputBamIndex = sub(outputBamPath, "\.bam$", ".bai")
50                 File? outputBamMd5 = outputBamPath + ".md5"
51         }
53         runtime {
54                 memory: "~{memoryMb}M"
55                 time_minutes: timeMinutes
56                 #docker: dockerImage
57         }