{ | |||||
"{{ project_name }}.D6_trio_raw_vcf": "{{ D6_trio_raw_vcf }}", | |||||
"{{ project_name }}.high_confidence_bed": "{{ high_confidence_bed }}", | |||||
"{{ project_name }}.family_name": "{{ family_name }}", | |||||
"{{ project_name }}.D5_trio_raw_vcf": "{{ D5_trio_raw_vcf }}", | |||||
"{{ project_name }}.BEDdocker": "registry-internal.cn-shanghai.aliyuncs.com/pgx-docker-registry/bedtools:v2.27.1", | |||||
"{{ project_name }}.disk_size": "200", | |||||
"{{ project_name }}.SMALLcluster_config": "OnDemand bcs.ps.g.xlarge img-ubuntu-vpc", | |||||
"{{ project_name }}.family_raw_vcf": "{{ family_raw_vcf }}", | |||||
"{{ project_name }}.DIYdocker": "registry-vpc.cn-shanghai.aliyuncs.com/pgx-docker-registry/high_confidence_call_manuscript:v1.4" | |||||
} |
task merge_mendelian { | |||||
File D5_in | |||||
File D6_in | |||||
File family_in | |||||
File D5_out | |||||
File D6_out | |||||
File family_out | |||||
String family_name | |||||
String docker | |||||
String cluster_config | |||||
String disk_size | |||||
command <<< | |||||
python /opt/merge_two_family_with_genotype.py -LCL5 ${D5_in} -LCL6 ${D6_in} -genotype ${family_in} -family ${family_name}.inside | |||||
python /opt/merge_two_family_with_genotype.py -LCL5 ${D5_out} -LCL6 ${D6_out} -genotype ${family_out} -family ${family_name}.outside | |||||
>>> | |||||
runtime { | |||||
docker:docker | |||||
cluster: cluster_config | |||||
systemDisk: "cloud_ssd 40" | |||||
dataDisk: "cloud_ssd " + disk_size + " /cromwell_root/" | |||||
} | |||||
output { | |||||
File mendelian_in = "${family_name}.inside.txt" | |||||
File mendelian_in_summary = "${family_name}.inside.summary.txt" | |||||
File mendelian_out = "${family_name}.outside.txt" | |||||
File mendelian_out_summary = "${family_name}.outside.summary.txt" | |||||
} | |||||
} |
task split_file { | |||||
File D5_trio_raw_vcf | |||||
File D6_trio_raw_vcf | |||||
File family_raw_vcf | |||||
File high_confidence_bed | |||||
String family_name | |||||
String docker | |||||
String cluster_config | |||||
String disk_size | |||||
command <<< | |||||
cat ${D5_trio_raw_vcf} | grep '#CHROM' > D5.header | |||||
cat ${D6_trio_raw_vcf} | grep '#CHROM' > D6.header | |||||
cat ${family_raw_vcf} | grep '#CHROM' > family.header | |||||
/opt/ccdg/bedtools-2.27.1/bin/bedtools intersect -a ${D5_trio_raw_vcf} -b ${high_confidence_bed} > D5.in | |||||
/opt/ccdg/bedtools-2.27.1/bin/bedtools intersect -a ${D6_trio_raw_vcf} -b ${high_confidence_bed} > D6.in | |||||
/opt/ccdg/bedtools-2.27.1/bin/bedtools intersect -a ${family_raw_vcf} -b ${high_confidence_bed} > family.in | |||||
/opt/ccdg/bedtools-2.27.1/bin/bedtools intersect -a ${D5_trio_raw_vcf} -b ${high_confidence_bed} -v > D5.out | |||||
/opt/ccdg/bedtools-2.27.1/bin/bedtools intersect -a ${D6_trio_raw_vcf} -b ${high_confidence_bed} -v > D6.out | |||||
/opt/ccdg/bedtools-2.27.1/bin/bedtools intersect -a ${family_raw_vcf} -b ${high_confidence_bed} -v > family.out | |||||
cat D5.header D5.in > ${family_name}.D5.in.txt | |||||
cat D6.header D6.in > ${family_name}.D6.in.txt | |||||
cat family.header family.in > ${family_name}.family.in.txt | |||||
cat D5.header D5.out > ${family_name}.D5.out.txt | |||||
cat D6.header D6.out > ${family_name}.D6.out.txt | |||||
cat family.header family.out > ${family_name}.family.out.txt | |||||
cat ${family_name}.family.in.txt | awk ' | |||||
BEGIN { OFS = "\t" } | |||||
NF > 2 && FNR > 1 { | |||||
for ( i=9; i<=NF; i++ ) { | |||||
split($i,a,":") ;$i = a[1]; | |||||
} | |||||
} | |||||
{ print } | |||||
' > ${family_name}.family.in.gt.txt | |||||
cat ${family_name}.family.out.txt | awk ' | |||||
BEGIN { OFS = "\t" } | |||||
NF > 2 && FNR > 1 { | |||||
for ( i=9; i<=NF; i++ ) { | |||||
split($i,a,":") ;$i = a[1]; | |||||
} | |||||
} | |||||
{ print } | |||||
' > ${family_name}.family.out.gt.txt | |||||
>>> | |||||
runtime { | |||||
docker:docker | |||||
cluster: cluster_config | |||||
systemDisk: "cloud_ssd 40" | |||||
dataDisk: "cloud_ssd " + disk_size + " /cromwell_root/" | |||||
} | |||||
output { | |||||
File D5_in = "${family_name}.D5.in.txt" | |||||
File D6_in = "${family_name}.D6.in.txt" | |||||
File family_in = "${family_name}.family.in.gt.txt" | |||||
File D5_out = "${family_name}.D5.out.txt" | |||||
File D6_out = "${family_name}.D6.out.txt" | |||||
File family_out = "${family_name}.family.out.gt.txt" | |||||
} | |||||
} |
import "./tasks/split_file.wdl" as split_file | |||||
import "./tasks/merge_mendelian.wdl" as merge_mendelian | |||||
workflow {{ project_name }} { | |||||
File D5_trio_raw_vcf | |||||
File D6_trio_raw_vcf | |||||
File family_raw_vcf | |||||
File high_confidence_bed | |||||
String BEDdocker | |||||
String DIYdocker | |||||
String family_name | |||||
String disk_size | |||||
String SMALLcluster_config | |||||
call split_file.split_file as split_file { | |||||
input: | |||||
D5_trio_raw_vcf=D5_trio_raw_vcf, | |||||
D6_trio_raw_vcf=D6_trio_raw_vcf, | |||||
family_raw_vcf=family_raw_vcf, | |||||
high_confidence_bed=high_confidence_bed, | |||||
family_name=family_name, | |||||
docker=BEDdocker, | |||||
cluster_config=SMALLcluster_config, | |||||
disk_size=disk_size | |||||
} | |||||
call merge_mendelian.merge_mendelian as merge_mendelian { | |||||
input: | |||||
D5_in=split_file.D5_in, | |||||
D6_in=split_file.D6_in, | |||||
family_in=split_file.family_in, | |||||
D5_out=split_file.D5_out, | |||||
D6_out=split_file.D6_out, | |||||
family_out=split_file.family_out, | |||||
family_name=family_name, | |||||
docker=DIYdocker, | |||||
cluster_config=SMALLcluster_config, | |||||
disk_size=disk_size | |||||
} | |||||
} | |||||