submit_biosample
pipes/WDL/workflows/submit_biosample.wdl

WORKFLOW submit_biosample

File Path pipes/WDL/workflows/submit_biosample.wdl
WDL Version 1.0
Type workflow

Imports

Namespace Path
ncbi_tools ../tasks/tasks_ncbi_tools.wdl
utils ../tasks/tasks_utils.wdl

Workflow: submit_biosample

Register samples with NCBI BioSample. Return attributes table.

Author: Broad Viral Genomics
viral-ngs@broadinstitute.org

Inputs

Name Type Description Default
biosample_submit_tsv File - -
ftp_config_js File - -
6 optional inputs with default values

Outputs

Name Type Expression
biosample_attributes File select_first([tsv_join.out_tsv, attributes_tsvs[0]])

Calls

This workflow calls the following tasks or subworkflows:

CALL TASKS md5sum

Input Mappings (1)
Input Value
in_file biosample_submit_tsv

CALL TASKS biosample_tsv_filter_preexisting

Input Mappings (2)
Input Value
meta_submit_tsv biosample_submit_tsv
out_basename basename(biosample_submit_tsv,'.tsv')

CALL TASKS biosample_submit_tsv_ftp_upload

Input Mappings (3)
Input Value
meta_submit_tsv biosample_tsv_filter_preexisting.meta_unsubmitted_tsv
config_js ftp_config_js
target_path "/~{prod_test}/biosample/~{basename(biosample_submit_tsv,'.tsv')}/~{md5sum.md5}"

CALL TASKS tsv_join

Input Mappings (3)
Input Value
input_tsvs attributes_tsvs
id_col "isolate"
out_basename basename(biosample_submit_tsv,'.tsv') + "-attributes"

Images

Container images used by tasks in this workflow:

🐳 ubuntu

ubuntu

Used by 1 task:
  • md5sum
🐳 Parameterized Image
⚙️ Parameterized

Configured via input:
docker

Used by 2 tasks:
  • biosample_tsv_filter_preexisting
  • biosample_submit_tsv_ftp_upload
🐳 viral-core

quay.io/broadinstitute/viral-core:2.5.1

Used by 1 task:
  • tsv_join
← Back to Index

submit_biosample - Workflow Graph

🖱️ Scroll to zoom • Drag to pan • Double-click to reset • ESC to close

submit_biosample - WDL Source Code

version 1.0

import "../tasks/tasks_ncbi_tools.wdl" as ncbi_tools
import "../tasks/tasks_utils.wdl" as utils

workflow submit_biosample {
    meta {
        description: "Register samples with NCBI BioSample. Return attributes table."
        author: "Broad Viral Genomics"
        email:  "viral-ngs@broadinstitute.org"
        allowNestedInputs: true
    }

    input {
        File   biosample_submit_tsv
        File   ftp_config_js
        String prod_test = "Production" # Production or Test
    }

    # TO DO: md5sum not necessary if ncbi_sftp_upload becomes more friendly to resubmissions / corrections of existing subs
    call utils.md5sum {
        input:
            in_file = biosample_submit_tsv
    }

    # see if anything already exists in NCBI
    call ncbi_tools.biosample_tsv_filter_preexisting {
        input:
            meta_submit_tsv = biosample_submit_tsv,
            out_basename = basename(biosample_submit_tsv, '.tsv')
    }

    # register anything that isn't already in NCBI
    if (biosample_tsv_filter_preexisting.num_not_found > 0) {
        call ncbi_tools.biosample_submit_tsv_ftp_upload {
            input:
                meta_submit_tsv = biosample_tsv_filter_preexisting.meta_unsubmitted_tsv,
                config_js = ftp_config_js,
                target_path = "/~{prod_test}/biosample/~{basename(biosample_submit_tsv, '.tsv')}/~{md5sum.md5}"
        }
    }

    # merge all results and attributes
    Array[File] attributes_tsvs = select_all([
                biosample_tsv_filter_preexisting.biosample_attributes_tsv,
                biosample_submit_tsv_ftp_upload.attributes_tsv,
                biosample_submit_tsv
            ])
    if(length(attributes_tsvs) > 1) {
        call utils.tsv_join {
            input:
                input_tsvs = attributes_tsvs,
                id_col = "isolate",
                out_basename = basename(biosample_submit_tsv, '.tsv') + "-attributes"
        }
    }

    output {
        File  biosample_attributes = select_first([tsv_join.out_tsv, attributes_tsvs[0]])
    }
}