pipeline/wdl/qc.wdl

122 lines
3.2 KiB
Plaintext
Raw Normal View History

2023-12-28 09:14:58 +08:00
#qc
2023-12-25 14:06:30 +08:00
2023-12-19 13:37:52 +08:00
task runqc {
String name
String input_dir
String output_dir
command <<<
# echo "###### ${name} fastp beginning at: $(date) ######"
if [ ! -d ${output_dir}/qc ];then
mkdir ${output_dir}/qc
fi
fastp \
-i ${input_dir}/*_${name}_*1.fq.gz \
-o ${output_dir}/qc/${name}_clean_R1.fq.gz \
-I ${input_dir}/*_${name}_*2.fq.gz \
-O ${output_dir}/qc/${name}_clean_R2.fq.gz \
-w 10 \
-e 20 \
--correction \
--overlap_len_require 10 \
-j ${output_dir}/qc/${name}.json \
-h ${output_dir}/qc/${name}.html \
--report_title ${name}
>>>
output {
String r1 = "${output_dir}/qc/${name}_clean_R1.fq.gz "
String r2 = "${output_dir}/qc/${name}_clean_R2.fq.gz "
String json = "${output_dir}/qc/${name}.json"
}
}
task umiqc {
String name
String input_dir
String output_dir
command <<<
# echo "###### ${name} fastp beginning at: $(date) ######"
if [ ! -d ${output_dir}/qc ];then
mkdir ${output_dir}/qc
fi
fastp -i ${input_dir}/*_${name}_*1.fq.gz -o ${output_dir}/qc/${name}_clean_R1.fq.gz \
-I ${input_dir}/*_${name}_*2.fq.gz -O ${output_dir}/qc/${name}_clean_R2.fq.gz \
-w 10 \
-U --umi_loc=per_read --umi_len=4 --umi_prefix=UMI --umi_skip=3 \
--disable_trim_poly_g \
--disable_quality_filtering \
--adapter_sequence AGATCGGAAGAGCACACGTCTGAACTCCAGTCA \
--adapter_sequence_r2 AGATCGGAAGAGCGTCGTGTAGGGAAAGAGTGT \
--correction \
--overlap_len_require 10 \
-j ${output_dir}/qc/${name}.json \
-h ${output_dir}/qc/${name}.html \
--report_title ${name}
>>>
output {
String r1 = "${output_dir}/qc/${name}_clean_R1.fq.gz "
String r2 = "${output_dir}/qc/${name}_clean_R2.fq.gz "
String json = "${output_dir}/qc/${name}.json"
}
}
workflow qc {
Boolean run=true
String tumor
String? normal
Boolean umi
String input_dir
String output_dir
if (run) {
if (umi) {
call umiqc as run_umi_qc {
input:
name=tumor,
input_dir=input_dir,
output_dir=output_dir
}
}
if (!umi) {
call runqc as run_tumor_qc {
input:
name=tumor,
input_dir=input_dir,
output_dir=output_dir
}
}
if (defined(normal)) {
call runqc as run_normal_qc {
input:
name=normal,
input_dir=input_dir,
output_dir=output_dir
}
}
}
output {
String tumor_r1 = "${output_dir}/qc/${tumor}_clean_R1.fq.gz"
String tumor_r2 = "${output_dir}/qc/${tumor}_clean_R2.fq.gz"
String tumor_json = "${output_dir}/qc/${tumor}.json"
String normal_r1 = "${output_dir}/qc/${normal}_clean_R1.fq.gz"
String normal_r2 = "${output_dir}/qc/${normal}_clean_R2.fq.gz"
String normal_json = "${output_dir}/qc/${normal}.json"
}
}