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

[New Utility] Workflow to rename FASTQ files (non-destructive) #267

Merged
merged 7 commits into from
Dec 20, 2023
Merged
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
5 changes: 5 additions & 0 deletions .dockstore.yml
Original file line number Diff line number Diff line change
@@ -246,5 +246,10 @@ workflows:
- name: CZGenEpi_Prep_PHB
subclass: WDL
primaryDescriptorPath: /workflows/utilities/wf_czgenepi_prep.wdl
testParameterFiles:
- empty.json
- name: Rename_FASTQ_PHB
subclass: WDL
primaryDescriptorPath: /workflows/utilities/file_handling/wf_rename_fastq_files.wdl
testParameterFiles:
- empty.json
84 changes: 84 additions & 0 deletions tasks/utilities/task_rename_files.wdl
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
version 1.0

task rename_PE_files {
meta {
description: "Rename a set of Paired-End FASTQ files"
}
input {
File read1
File read2
String new_filename
String docker = "us-docker.pkg.dev/general-theiagen/ubuntu/ubuntu:jammy-20230816"
Int disk_size = 100
Int cpu = 2
Int mem = 2
}
command <<<
cimendes marked this conversation as resolved.
Show resolved Hide resolved
# rename forward read
# check if compressed, if not rename and compress
if [[ "~{read1}" == *.gz ]]; then
cp ~{read1} ~{new_filename}_R1.fastq.gz
else
cp ~{read1} ~{new_filename}_R1.fastq
gzip ~{new_filename}_R1.fastq
fi

# check if reverse read exists
if [[ "~{read2}" == *.gz ]]; then
cp ~{read2} ~{new_filename}_R2.fastq.gz
else
cp ~{read2} ~{new_filename}_R2.fastq
gzip ~{new_filename}_R2.fastq
fi
>>>
output {
File read1_renamed = "~{new_filename}_R1.fastq.gz"
File read2_renamed = "~{new_filename}_R2.fastq.gz"
}
runtime {
docker: "~{docker}"
memory: mem + " GB"
cpu: cpu
disks: "local-disk " + disk_size + " SSD"
disk: disk_size + " GB"
maxRetries: 0
preemptible: 0
}
}

task rename_SE_files {
meta {
description: "Rename a set of Single-End FASTQ files"
}
input {
File read1
String new_filename
String docker = "us-docker.pkg.dev/general-theiagen/ubuntu/ubuntu:jammy-20230816"
Int disk_size = 100
Int cpu = 2
Int mem = 2
}
command <<<
# rename forward read
# check if compressed, if not rename and compress
if [[ "~{read1}" == *.gz ]]; then
cp ~{read1} ~{new_filename}.fastq.gz
else
cp ~{read1} ~{new_filename}.fastq
gzip ~{new_filename}.fastq
fi
>>>
output {
File read1_renamed = "~{new_filename}.fastq.gz"
}
runtime {
docker: "~{docker}"
memory: mem + " GB"
cpu: cpu
disks: "local-disk " + disk_size + " SSD"
disk: disk_size + " GB"
maxRetries: 0
preemptible: 0
}
}

37 changes: 37 additions & 0 deletions workflows/utilities/file_handling/wf_rename_fastq_files.wdl
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
version 1.0

import "../../../tasks/utilities/task_rename_files.wdl" as rename_files_task
import "../../../tasks/task_versioning.wdl" as versioning

workflow rename_fastq_files {
input {
File read1
File? read2
String new_filename
}
if (defined(read2)) {
call rename_files_task.rename_PE_files {
input:
read1 = read1,
read2 = select_first([read2]),
new_filename = new_filename
}
}
if (!defined(read2)) {
call rename_files_task.rename_SE_files {
input:
read1 = read1,
new_filename = new_filename
}
}

call versioning.version_capture {
input:
}
output {
String rename_fastq_files_version = version_capture.phb_version
String rename_fastq_files_analysis_date = version_capture.date
File read1_renamed = select_first([rename_PE_files.read1_renamed, rename_SE_files.read1_renamed])
File? read2_renamed = rename_PE_files.read2_renamed
}
}