4.4.8
O2pdT9LxApmvveWwJNLhaCrQ5UKoE8T0vK5fPqJFOuiKIUWdsRPb+rsVWH3+cAJ09ZSUY+lIK6LLDZN+USXWb6jzoyUk7YmEKqXRM4svu5l2tKPBThiGTCMp+PcxUc2QxPk9yalqnYRvzvVBD+1ObgZ0mwZTJpCFcnPIQJ9+/16Ov2qc2q3XOSAWUvmvWD7axPlk5QlCB4QTpzeIA7vNE1dOfD2HtKw9ua7U/OXmchFiiovY9z17AZd6gid4mmQ/wpTMupmbzUfM1X+UOv/74d9+FChUqVcaqY0Mg0ClSxk0jy0254xeyXWGW/o0OMmDUSri5feKzXcesGOOvGPMFA==
# vim: set ts=2 sw=2 sts=2 et:
class: Workflow
cwlVersion: v1.0
requirements:
# - class: DockerRequirement
# dockerPull: parseq/stepik-variant-calling-tools-cwl
- class: InlineJavascriptRequirement
- class: StepInputExpressionRequirement
- class: SubworkflowFeatureRequirement
inputs:
input_bam:
type: File
reference_genome:
type: File
outputs:
out_fb:
type: File
outputSource: vc_freebayes_index/out_gz
out_hp:
type: File
outputSource: vc_haplotypecaller_index/out_gz
out_st:
type: File
outputSource: vc_samtools_index/out_gz
out_int:
type: File
outputSource: intersect_variants/out
out_count:
type: File
outputSource: count_variants/out
steps:
reference_dict:
run:
class: CommandLineTool
requirements:
- class: InlineJavascriptRequirement
- class: InitialWorkDirRequirement
listing:
- $(inputs.ref)
inputs:
ref:
type: File
outputs:
out:
type: File
outputBinding:
glob: 22.dict
arguments:
- java
- -jar
- /opt/picard/picard.jar
- CreateSequenceDictionary
- prefix: R=
valueFrom: $(inputs.ref)
- O=22.dict
in:
ref: reference_genome
out:
[out]
reference_index:
run:
class: CommandLineTool
requirements:
- class: InlineJavascriptRequirement
- class: InitialWorkDirRequirement
listing:
- $(inputs.ref)
inputs:
ref:
type: File
inputBinding:
position: 2
valueFrom: $(self.basename)
outputs:
out:
type: File
outputBinding:
glob: $(inputs.ref.basename).fai
arguments: [samtools, faidx]
in:
ref: reference_genome
out:
[out]
index_bam:
run:
class: CommandLineTool
inputs:
bam:
type: File
outputs:
out:
type: File
outputBinding:
glob: $(inputs.bam.basename).bai
arguments: [samtools, index, $(inputs.bam), $(inputs.bam.basename).bai]
in:
bam: input_bam
out:
[out]
vc_freebayes:
run:
class: CommandLineTool
requirements:
- class: InitialWorkDirRequirement
listing:
- $(inputs.ref)
- $(inputs.ref_fai)
inputs:
ref:
type: File
inputBinding:
position: 2
valueFrom: $(self.basename)
ref_fai:
type: File
bam:
type: File
outputs:
out:
type: File
outputBinding:
glob: fb$(inputs.bam.basename).vcf
arguments:
- freebayes
- -f
- position: 3
valueFrom: $(inputs.bam)
stdout: fb$(inputs.bam.basename).vcf
in:
ref: reference_genome
ref_fai: reference_index/out
bam: input_bam
out:
[out]
vc_freebayes_index:
run: vc_index.cwl
in:
vcf: vc_freebayes/out
out:
[out_gz, out_tbi]
vc_haplotypecaller:
run:
class: CommandLineTool
requirements:
- class: InitialWorkDirRequirement
listing:
- $(inputs.ref)
- $(inputs.ref_fai)
- $(inputs.ref_dict)
- $(inputs.bam)
- $(inputs.bam_index)
inputs:
ref:
type: File
inputBinding:
position: 4
valueFrom: $(self.basename)
ref_fai:
type: File
ref_dict:
type: File
bam:
type: File
inputBinding:
position: 8
valueFrom: $(self.basename)
bam_index:
type: File
outputs:
out:
type: File
outputBinding:
glob: hp$(inputs.bam.basename).vcf
arguments:
- java
- -jar
- /opt/gatk/GenomeAnalysisTK.jar
- -R
- position: 5
valueFrom: -T
- position: 6
valueFrom: HaplotypeCaller
- position: 7
valueFrom: -I
- position: 9
valueFrom: -o
- position: 9
valueFrom: hp$(inputs.bam.basename).vcf
in:
ref: reference_genome
ref_fai: reference_index/out
ref_dict: reference_dict/out
bam: input_bam
bam_index: index_bam/out
out:
[out]
vc_haplotypecaller_index:
run:
vc_index.cwl
in:
vcf: vc_haplotypecaller/out
out:
[out_gz, out_tbi]
vc_samtools:
run:
class: CommandLineTool
requirements:
- class: InitialWorkDirRequirement
listing:
- $(inputs.ref)
- $(inputs.ref_fai)
- $(inputs.ref_dict)
- $(inputs.bam)
- $(inputs.bam_index)
inputs:
ref:
type: File
inputBinding:
position: 3
valueFrom: $(self.basename)
ref_fai:
type: File
ref_dict:
type: File
bam:
type: File
inputBinding:
position: 4
valueFrom: $(self.basename)
bam_index:
type: File
outputs:
out:
type: File
outputBinding:
glob: st$(inputs.bam.basename).vc
arguments:
- samtools
- mpileup
- -uf
stdout: st$(inputs.bam.basename).vc
in:
ref: reference_genome
ref_fai: reference_index/out
ref_dict: reference_dict/out
bam: input_bam
bam_index: index_bam/out
out:
[out]
vc_samtools2:
run:
class: CommandLineTool
inputs:
inp:
type: File
outputs:
out:
type: File
outputBinding:
glob: st$(inputs.inp.basename)f
arguments: [bcftools, view, -vcg, $(inputs.inp)]
stdout: st$(inputs.inp.basename)f
in:
inp: vc_samtools/out
out:
[out]
vc_samtools_index:
run: vc_index.cwl
in:
vcf: vc_samtools2/out
out:
[out_gz, out_tbi]
intersect_variants:
run:
class: CommandLineTool
requirements:
- class: InitialWorkDirRequirement
listing:
- $(inputs.inp1)
- $(inputs.inp2)
- $(inputs.inp3)
- $(inputs.inp1_tbi)
- $(inputs.inp2_tbi)
- $(inputs.inp3_tbi)
inputs:
inp1:
type: File
inputBinding:
position: 4
valueFrom: $(self.basename)
inp1_tbi:
type: File
inp2:
type: File
inputBinding:
position: 5
valueFrom: $(self.basename)
inp2_tbi:
type: File
inp3:
type: File
inputBinding:
position: 6
valueFrom: $(self.basename)
inp3_tbi:
type: File
outputs:
out:
type: File
outputBinding:
glob: $(inputs.inp1.basename)_common.vcf
arguments:
- vcf-isec
- -f
- -n
- '+2'
stdout: $(inputs.inp1.basename)_common.vcf
in:
inp1: vc_freebayes_index/out_gz
inp1_tbi: vc_freebayes_index/out_tbi
inp2: vc_haplotypecaller_index/out_gz
inp2_tbi: vc_haplotypecaller_index/out_tbi
inp3: vc_samtools_index/out_gz
inp3_tbi: vc_samtools_index/out_tbi
out:
[out]
count_variants:
run:
class: CommandLineTool
inputs:
inp:
type: File
bam:
type: File
outputs:
out:
type: File
outputBinding:
glob: $(inputs.bam.nameroot)_count.txt
arguments: [grep, -v, '^\s*\(#\|$\)', -c, $(inputs.inp)]
stdout: $(inputs.bam.nameroot)_count.txt
in:
inp: intersect_variants/out
bam: input_bam
out:
[out]
# vim: set ts=2 sw=2 sts=2 et:
# vc_index.cwl
class: Workflow
cwlVersion: v1.0
#requirements:
# - class: DockerRequirement
# dockerPull: parseq/stepik-variant-calling-tools-cwl
inputs:
vcf:
type: File
outputs:
out_gz:
type: File
outputSource: vc_bgzip/out
out_tbi:
type: File
outputSource: vc_index/out
steps:
vc_bgzip:
run:
class: CommandLineTool
requirements:
- class: InitialWorkDirRequirement
listing:
- $(inputs.inp)
inputs:
inp:
type: File
inputBinding:
position: 1
valueFrom: $(self.basename)
outputs:
out:
type: File
outputBinding:
glob: $(inputs.inp.basename).gz
baseCommand: bgzip
in:
inp: vcf
out:
[out]
vc_index:
run:
class: CommandLineTool
requirements:
- class: InitialWorkDirRequirement
listing:
- $(inputs.inp)
inputs:
inp:
type: File
inputBinding:
position: 3
valueFrom: $(self.basename)
outputs:
out:
type: File
outputBinding:
glob: $(inputs.inp.basename).tbi
arguments: [tabix, -p, vcf]
in:
inp: vc_bgzip/out
out:
[out]
# vim: set ts=2 sw=2 sts=2 et:
# count_variants.cwl
class: CommandLineTool
cwlVersion: v1.0
inputs:
bam:
type: File
vcf:
type: File
script:
type: string
default: |
import sys
with open(sys.argv[2], "w") as fout, open(sys.argv[1], "r") as fin:
c = 0
for line in fin:
if not line.strip().startswith("#"):
c += 1
fout.write(str(c))
arguments: [python, -c, $(inputs.script), $(inputs.vcf),
$(inputs.bam.nameroot)_count.txt]
outputs:
out:
type: File
outputBinding:
glob: $(inputs.bam.nameroot)_count.txt