Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Quicviz yg #56

Merged
merged 23 commits into from
Apr 26, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 6 additions & 1 deletion .dockstore.yml
Original file line number Diff line number Diff line change
Expand Up @@ -118,4 +118,9 @@ workflows:
subclass: WDL
primaryDescriptorPath: /CleanupFailedSubmissions/Cleanup_Failed_Submissions.wdl
testParameterFiles:
- /CleanupFailedSubmissions/Cleanup_Failed_Submissions.inputs.json
- /CleanupFailedSubmissions/Cleanup_Failed_Submissions.inputs.json
- name: QUICviz
subclass: WDL
primaryDescriptorPath: /PECGS-QUICviz/QUICviz.wdl
testParameterFiles:
- /PECGS-QUICviz/QUICviz.inputs.json
11 changes: 11 additions & 0 deletions PECGS-QUICviz/QUICviz.inputs.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
{
"QUICviz.calledCopyRatioSegTumor": "File",
"QUICviz.oncotatedCalledTumor": "File",
"QUICviz.allelicCountsNormal": "File",
"QUICviz.denoisedCopyRatiosTumor": "File",
"QUICviz.denoisedCopyRatiosNormal": "File",
"QUICviz.allelicCountsTumor": "File",
"QUICviz.tumorType": "String",
"QUICviz.sampleID": "String"
}

124 changes: 124 additions & 0 deletions PECGS-QUICviz/QUICviz.wdl
Original file line number Diff line number Diff line change
@@ -0,0 +1,124 @@
version 1.0

workflow QUICviz {
input {
String sampleID
String tumorType
String quicvizDocker = "us-central1-docker.pkg.dev/tag-team-160914/gptag-dockers/cmi_quicviz:0.3.1"
File allelicCountsNormal
File allelicCountsTumor
File denoisedCopyRatiosNormal
File denoisedCopyRatiosTumor
File calledCopyRatioSegTumor
File oncotatedCalledTumor
}
call QUICviz {
input:
sampleID = sampleID,
tumorType = tumorType,
quicvizDocker = quicvizDocker,
allelicCountsNormal = allelicCountsNormal,
allelicCountsTumor = allelicCountsTumor,
denoisedCopyRatiosNormal = denoisedCopyRatiosNormal,
denoisedCopyRatiosTumor = denoisedCopyRatiosTumor,
calledCopyRatioSegTumor = calledCopyRatioSegTumor,
oncotatedCalledTumor = oncotatedCalledTumor
}

Array[File] QUICvizPlots = QUICviz.plot
call mergeImages {
input:
SampleID = sampleID,
TumorType = tumorType,
plot = QUICvizPlots,
quicvizDocker = quicvizDocker
}
output {
File QUICvizPDF = mergeImages.chr_pdf
File AllChrPlot = mergeImages.allchr_plot
}
meta {
author: "Yueyao Gao"
email: "[email protected]"
description: "QUICviz.wdl is based on the QUICviz_v0.3 R script developed by Alex Neil, which is a tool for visualizing CNV data"
}
}

task QUICviz {
input {
String sampleID
String tumorType
String quicvizDocker
File allelicCountsNormal
File allelicCountsTumor
File denoisedCopyRatiosNormal
File denoisedCopyRatiosTumor
File calledCopyRatioSegTumor
File oncotatedCalledTumor
Int memory = 16
Int cpu = 4
}
command <<<
set -e
mkdir outputs

Rscript /BaseImage/CMI_QUICviz/scripts/CMI_QUICviz_v0.3.R \
--sample ~{sampleID} \
--tumor_type ~{tumorType} \
--normal_acf ~{allelicCountsNormal} \
--normal_cr ~{denoisedCopyRatiosNormal} \
--tumor_acf ~{allelicCountsTumor} \
--tumor_cr ~{denoisedCopyRatiosTumor} \
--tumor_cr_seg ~{calledCopyRatioSegTumor} \
--tumor_seg_oncotated ~{oncotatedCalledTumor} \
--output_dir outputs/

>>>
output {
Array[File] plot = glob("outputs/*.png")
}
runtime {
docker: quicvizDocker
memory: memory + " GB"
cpu: cpu
disks: "local-disk 100 HDD"
}
}
task mergeImages {
input {
String SampleID
String TumorType
Array[File] plot
String quicvizDocker
Int memory = 16
Int cpu = 4
}
command <<<
mkdir -p output/images
for i in `ls ~{sep=" " plot}`; do mv $i output/images/; done

python3 <<CODE
import img2pdf
import glob
import os

# Get list of PNG files sorted
png_files = sorted(glob.glob("output/images/*.png"))
numeric_png_files = [file for file in png_files if os.path.basename(file).split('.')[0].isdigit()]
png_files = sorted(numeric_png_files, key=lambda x: int(os.path.basename(x).split('.')[0]))

with open(f"output/~{SampleID}_~{TumorType}_QUICviz.pdf","wb") as f:
f.write(img2pdf.convert(png_files))
CODE
>>>
output {
File chr_pdf = "output/~{SampleID}_~{TumorType}_QUICviz.pdf"
File allchr_plot = "output/images/All_chr.png"
}
runtime {
docker: quicvizDocker
memory: memory + " GB"
cpu: cpu
disks: "local-disk 100 HDD"
}
}
Loading