Switch theme
docs / data_structures / read_group / validate_read_group

  • Search icon

Task

validate_read_group

Validate a ReadGroup struct's fields are defined and well-formed
WDL Version
1.1
data_structures/read_group.wdl
RUN WITH

sprocket run --target validate_read_group data_structures/read_group.wdldata_structures\read_group.wdl [INPUTS]...

Inputs

Required Inputs

Name
Type
Description
required_fields
Array[String]
Array of read group fields that must be defined. The ID field is always required and does not need to be specified.
Array of read group fields that must be defined. The ID field is always required and does not need to be specified.
read_group
ReadGroup struct to validate
ReadGroup struct to validate
restrictive
Boolean
If true, run a stricter validation of field values. Otherwise, check against SAM spec-defined values.
If true, run a stricter validation of field values. Otherwise, check against SAM spec-defined values.

Outputs

Name
Type
Default
Description

Default Runtime Attributes

Attribute
Value
container
"ghcr.io/stjudecloud/util:3.0.4"
maxRetries
1

Command

set -euo pipefail exit_code=0 if ~{restrictive}; then if [[ "~{read_group.ID}" =~ ~{restrictive_pattern} ]] then >&2 echo "ID must not contain spaces" exit_code=1 fi fi if [[ ! "~{read_group.ID}" =~ ^~{sam_spec_pattern}$ ]]; then >&2 echo "ID must match pattern ~{sam_spec_pattern}" exit_code=1 fi if [ "$(echo "~{sep(" ", required_fields)}" | grep -Ewc "SM")" -eq 1 ]; then if [ -z "~{read_group.SM}" ]; then >&2 echo "SM is required" exit_code=1 fi fi if ~{defined(read_group.SM)}; then if ~{restrictive}; then if [[ "~{read_group.SM}" =~ ~{restrictive_pattern} ]] then >&2 echo "SM must not contain spaces" exit_code=1 fi fi if [[ ! "~{read_group.SM}" =~ ^~{sam_spec_pattern}$ ]]; then >&2 echo "SM must match pattern ~{sam_spec_pattern}" exit_code=1 fi fi if [ "$(echo "~{sep(" ", required_fields)}" | grep -Ewc "BC")" -eq 1 ]; then if [ -z "~{read_group.BC}" ]; then >&2 echo "BC is required" exit_code=1 fi fi if ~{defined(read_group.BC)}; then if [[ ! "~{read_group.BC}" =~ ^~{sam_spec_pattern}$ ]]; then >&2 echo "BC must match pattern ~{sam_spec_pattern}" exit_code=1 fi fi if [ "$(echo "~{sep(" ", required_fields)}" | grep -Ewc "CN")" -eq 1 ]; then if [ -z "~{read_group.CN}" ]; then >&2 echo "CN is required" exit_code=1 fi fi if ~{defined(read_group.CN)}; then if [[ ! "~{read_group.CN}" =~ ^~{sam_spec_pattern}$ ]]; then >&2 echo "CN must match pattern ~{sam_spec_pattern}" exit_code=1 fi fi if [ "$(echo "~{sep(" ", required_fields)}" | grep -Ewc "DS")" -eq 1 ]; then if [ -z "~{read_group.DS}" ]; then >&2 echo "DS is required" exit_code=1 fi fi if ~{defined(read_group.DS)}; then if [[ ! "~{read_group.DS}" =~ ^~{sam_spec_pattern}$ ]]; then >&2 echo "DS must match pattern ~{sam_spec_pattern}" exit_code=1 fi fi if [ "$(echo "~{sep(" ", required_fields)}" | grep -Ewc "DT")" -eq 1 ]; then if [ -z "~{read_group.DT}" ]; then >&2 echo "DT is required" exit_code=1 fi fi if ~{defined(read_group.DT)}; then if [[ ! "~{read_group.DT}" =~ ^~{sam_spec_pattern}$ ]]; then >&2 echo "DT must match pattern ~{sam_spec_pattern}" exit_code=1 fi fi if [ "$(echo "~{sep(" ", required_fields)}" | grep -Ewc "FO")" -eq 1 ]; then if [ -z "~{read_group.FO}" ]; then >&2 echo "FO is required" exit_code=1 fi fi if ~{defined(read_group.FO)}; then if [[ ! "~{read_group.FO}" =~ ^\*|[ACMGRSVTWYHKDBN]+$ ]]; then >&2 echo "FO must match pattern \*|[ACMGRSVTWYHKDBN]+" exit_code=1 fi fi if [ "$(echo "~{sep(" ", required_fields)}" | grep -Ewc "KS")" -eq 1 ]; then if [ -z "~{if defined(read_group.KS) then read_group.KS else "" }" ]; then >&2 echo "KS is required" exit_code=1 fi fi if ~{defined(read_group.KS)}; then if [[ ! "~{read_group.KS}" =~ ^~{sam_spec_pattern}$ ]]; then >&2 echo "KS must match pattern ~{sam_spec_pattern}" exit_code=1 fi fi if [ "$(echo "~{sep(" ", required_fields)}" | grep -Ewc "LB")" -eq 1 ]; then if [ -z "~{read_group.LB}" ]; then >&2 echo "LB is required" exit_code=1 fi fi if ~{defined(read_group.LB)}; then if [[ ! "~{read_group.LB}" =~ ^~{sam_spec_pattern}$ ]]; then >&2 echo "LB must match pattern ~{sam_spec_pattern}" exit_code=1 fi fi if [ "$(echo "~{sep(" ", required_fields)}" | grep -Ewc "PG")" -eq 1 ]; then if [ -z "~{read_group.PG}" ]; then >&2 echo "PG is required" exit_code=1 fi fi if ~{defined(read_group.PG)}; then if [[ ! "~{read_group.PG}" =~ ^~{sam_spec_pattern}$ ]]; then >&2 echo "PG must match pattern ~{sam_spec_pattern}" exit_code=1 fi fi if [ "$(echo "~{sep(" ", required_fields)}" | grep -Ewc "PI")" -eq 1 ]; then if [ -z "~{read_group.PI}" ]; then >&2 echo "PI is required" exit_code=1 fi fi if ~{defined(read_group.PI)}; then if [[ ! "~{read_group.PI}" =~ ^[0-9]+$ ]]; then >&2 echo "PI must match pattern [0-9]+" exit_code=1 fi fi if [ "$(echo "~{sep(" ", required_fields)}" | grep -Ewc "PL")" -eq 1 ]; then if [ -z "~{read_group.PL}" ]; then >&2 echo "PL is required" exit_code=1 fi fi if ~{defined(read_group.PL)}; then if [[ ! "~{read_group.PL}" =~ ^~{sep("|", platforms)}$ ]]; then >&2 echo "PL must match pattern ~{sep("|", platforms)}" exit_code=1 fi fi if [ "$(echo "~{sep(" ", required_fields)}" | grep -Ewc "PM")" -eq 1 ]; then if [ -z "~{read_group.PM}" ]; then >&2 echo "PM is required" exit_code=1 fi fi if ~{defined(read_group.PM)}; then if [[ ! "~{read_group.PM}" =~ ^~{sam_spec_pattern}$ ]]; then >&2 echo "PM must match pattern ~{sam_spec_pattern}" exit_code=1 fi fi if [ "$(echo "~{sep(" ", required_fields)}" | grep -Ewc "PU")" -eq 1 ]; then if [ -z "~{read_group.PU}" ]; then >&2 echo "PU is required" exit_code=1 fi fi if ~{defined(read_group.PU)}; then if [[ ! "~{read_group.PU}" =~ ^~{sam_spec_pattern}$ ]]; then >&2 echo "PU must match pattern ~{sam_spec_pattern}" exit_code=1 fi fi exit $exit_code