task Haplotyper { | |||||
File ref_dir | |||||
String fasta | |||||
File dbsnp_dir | |||||
String SENTIEON_LICENSE | |||||
File recaled_bam | |||||
File recaled_bam_index | |||||
String dbsnp | |||||
String sample | |||||
String docker | |||||
String cluster_config | |||||
String disk_size | |||||
File? regions | |||||
Int? interval_padding | |||||
command <<< | |||||
set -o pipefail | |||||
set -e | |||||
export SENTIEON_LICENSE=${SENTIEON_LICENSE} | |||||
nt=$(nproc) | |||||
if [ ${regions} ]; then | |||||
INTERVAL="--interval ${regions} --interval_padding ${interval_padding}" | |||||
else | |||||
INTERVAL="" | |||||
fi | |||||
sentieon driver -t $nt \ | |||||
$INTERVAL -r ${ref_dir}/${fasta} \ | |||||
-i ${recaled_bam} \ | |||||
--algo Haplotyper -d ${dbsnp_dir}/${dbsnp} \ | |||||
${sample}.Haplotyper.vcf | |||||
>>> | |||||
runtime { | |||||
docker: docker | |||||
cluster: cluster_config | |||||
systemDisk: "cloud_ssd 40" | |||||
dataDisk: "cloud_ssd " + disk_size + " /cromwell_root/" | |||||
} | |||||
output { | |||||
File vcf = "${sample}.Haplotyper.vcf" | |||||
File vcf_idx = "${sample}.Haplotyper.vcf.idx" | |||||
} | |||||
} |
task MSIsensor { | |||||
String sample | |||||
File ref_dir | |||||
String fasta | |||||
File tumor_bam | |||||
File tumor_bam_index | |||||
File? normal_bam | |||||
File? normal_bam_index | |||||
File baseline | |||||
String docker | |||||
String cluster_config | |||||
String disk_size | |||||
command <<< | |||||
set -o pipefail | |||||
set -e | |||||
nt=$(nproc) | |||||
# MSI | |||||
mkdir -p /cromwell_root/tmp/ | |||||
msisensor-pro scan -d ${ref_dir}/${fasta} -o reference.list | |||||
if [ ${normal_bam} ]; then | |||||
msisensor-pro msi -d reference.list -n ${normal_bam} -t ${tumor_bam} -o /cromwell_root/tmp/${sample} | |||||
else | |||||
msisensor-pro pro -d ${baseline} -t ${tumor_bam} -o /cromwell_root/tmp/${sample} | |||||
fi | |||||
cp /cromwell_root/tmp/${sample} ${sample}.MSI.txt | |||||
>>> | |||||
runtime { | |||||
docker: docker | |||||
cluster: cluster_config | |||||
systemDisk: "cloud_ssd 40" | |||||
dataDisk: "cloud_ssd " + disk_size + " /cromwell_root/" | |||||
} | |||||
output { | |||||
File msi = "${sample}.MSI.txt" | |||||
} | |||||
} |
task SentieonFastqToBam { | |||||
# 工具输入文件和参数 | |||||
File fastq1 | |||||
File fastq2 | |||||
String sample_id | |||||
String Seq_platform | |||||
String ref_fasta | |||||
File ref_fasta_dir | |||||
String SENTIEON_LICENSE | |||||
String docker | |||||
String cluster_config | |||||
String disk_size | |||||
## Extra driver parameters | |||||
String qc_driver_args = "" | |||||
String lc_driver_args = "--traverse_param=200000/10000" | |||||
String dedup_driver_args = "--traverse_param=200000/10000" | |||||
## Extra algo parameters | |||||
String bwa_args = "-Y -M" | |||||
String bwa_chunk_size = "100000000" | |||||
String lc_args = "" | |||||
String bam_option = "--bam_compression 1" | |||||
String out_bam = sample_id + ".dedup.bam" | |||||
String out_bai = sample_id + ".dedup.bam.bai" | |||||
# 工具运行命令 | |||||
command <<< | |||||
set -exo pipefail | |||||
export SENTIEON_LICENSE=${SENTIEON_LICENSE} | |||||
nt=$(nproc) | |||||
sentieon bwa mem -R "@RG\tID:${sample_id}\tSM:${sample_id}\tPL:${Seq_platform}" ${bwa_args} -K ${bwa_chunk_size} -t $nt ${ref_fasta_dir}/${ref_fasta} ${fastq1} ${fastq2} \ | |||||
| sentieon util sort ${bam_option} -i - -r ${ref_fasta_dir}/${ref_fasta} -t $nt -o ${sample_id}.sorted.bam --sam2bam | |||||
ls ./ | |||||
sentieon driver -r ${ref_fasta_dir}/${ref_fasta} -t $nt -i ${sample_id}.sorted.bam ${qc_driver_args} \ | |||||
--algo MeanQualityByCycle ${sample_id}.mq_metrics.txt \ | |||||
--algo QualDistribution ${sample_id}.qd_metrics.txt \ | |||||
--algo GCBias --summary ${sample_id}.gc_summary_metrics.txt ${sample_id}.gc_metrics.txt \ | |||||
--algo AlignmentStat ${sample_id}.aln_metrics.txt \ | |||||
--algo InsertSizeMetricAlgo ${sample_id}.is_metrics.txt | |||||
ls ./ | |||||
sentieon driver -r ${ref_fasta_dir}/${ref_fasta} -t $nt -i ${sample_id}.sorted.bam ${lc_driver_args} \ | |||||
--algo LocusCollector \ | |||||
${lc_args} \ | |||||
${sample_id}.score.txt.gz | |||||
ls ./ | |||||
sentieon driver -r ${ref_fasta_dir}/${ref_fasta} -t $nt -i ${sample_id}.sorted.bam ${dedup_driver_args} \ | |||||
--algo Dedup \ | |||||
--score_info ${sample_id}.score.txt.gz \ | |||||
--metrics ${sample_id}.dedup_metrics.txt \ | |||||
${bam_option} ${out_bam} | |||||
ls ./ | |||||
>>> | |||||
runtime { | |||||
docker:docker | |||||
cluster:cluster_config | |||||
systemDisk:"cloud_ssd 40" | |||||
dataDisk:"cloud_ssd " + disk_size + " /cromwell_root/" | |||||
} | |||||
# 工具运行输出结果 | |||||
output { | |||||
File deduped_bam = out_bam | |||||
File deduped_bam_bai = out_bai | |||||
Array[File] qc_metrics = glob("*_metrics.txt") | |||||
} | |||||
} |
task manta_calling{ | |||||
File tumor_bam | |||||
File tumor_bam_bai | |||||
File normal_bam | |||||
File normal_bam_bai | |||||
String ref_fasta | |||||
File ref_dir | |||||
String sample_id | |||||
String docker | |||||
String cluster_config | |||||
String disk_size | |||||
String out_dir = "${sample_id}_result" | |||||
command <<< | |||||
set -exo pipefail | |||||
nt=$(nproc) | |||||
/home/biosoft/manta-1.6.0.centos6_x86_64/bin/configManta.py \ | |||||
--normalBam ${normal_bam} \ | |||||
--tumorBam ${tumor_bam} \ | |||||
--referenceFasta ${ref_dir}/${ref_fasta} \ | |||||
--runDir ${out_dir} | |||||
ls ${out_dir} | |||||
python2.7 ${out_dir}/runWorkflow.py -m local -j $nt | |||||
ls ${out_dir} | |||||
tar cvf ${out_dir}.tar ${out_dir} | |||||
>>> | |||||
runtime{ | |||||
docker:docker | |||||
cluster:cluster_config | |||||
systemDisk:"cloud_ssd 40" | |||||
dataDisk:"cloud_ssd " + disk_size + " /cromwell_root/" | |||||
} | |||||
output{ | |||||
File out_file = "${out_dir}.tar" | |||||
File manta_indel_vcf = "${out_dir}/results/variants/candidateSmallIndels.vcf.gz" | |||||
File manta_indel_vcf_index = "${out_dir}/results/variants/candidateSmallIndels.vcf.gz.tbi" | |||||
} | |||||
} |
task qualimap{ | |||||
String sample_id | |||||
File bam_file | |||||
File bam_bai | |||||
File annot_gff | |||||
String docker | |||||
String cluster_config | |||||
String disk_size | |||||
String out_dir = sample_id+'_BamQC' | |||||
command <<< | |||||
set -o pipefail | |||||
set -exo | |||||
nt=$(nproc) | |||||
/opt/qualimap/qualimap bamqc -bam ${bam_file} -gff ${annot_gff} -outformat PDF:HTML -nt $nt -outdir ${out_dir} --java-mem-size=32G | |||||
tar -zcvf ${out_dir}.tar ${out_dir} | |||||
>>> | |||||
runtime{ | |||||
docker:docker | |||||
cluster:cluster_config | |||||
systemDisk:"cloud_ssd 40" | |||||
dataDisk:"cloud_ssd " + disk_size + " /cromwell_root/" | |||||
} | |||||
output{ | |||||
File out_file = "${out_dir}.tar" | |||||
} | |||||
} |