|
| 1 | +version 1.0 |
| 2 | + |
| 3 | +import "../tasks/tasks_ncbi_tools.wdl" as ncbi_tools |
| 4 | +import "../tasks/tasks_utils.wdl" as utils |
| 5 | + |
| 6 | +workflow submit_biosample { |
| 7 | + meta { |
| 8 | + description: "Register samples with NCBI BioSample. Return attributes table." |
| 9 | + author: "Broad Viral Genomics" |
| 10 | + email: "viral-ngs@broadinstitute.org" |
| 11 | + allowNestedInputs: true |
| 12 | + } |
| 13 | + |
| 14 | + input { |
| 15 | + File biosample_submit_tsv |
| 16 | + File ftp_config_js |
| 17 | + String prod_test = "Production" # Production or Test |
| 18 | + } |
| 19 | + |
| 20 | + call utils.md5sum { |
| 21 | + input: |
| 22 | + in_file = biosample_submit_tsv |
| 23 | + } |
| 24 | +
|
| 25 | + # see if anything already exists in NCBI |
| 26 | + call ncbi_tools.biosample_tsv_filter_preexisting { |
| 27 | + input: |
| 28 | + meta_submit_tsv = biosample_submit_tsv, |
| 29 | + out_basename = basename(biosample_submit_tsv, '.tsv') |
| 30 | + } |
| 31 | +
|
| 32 | + # register anything that isn't already in NCBI |
| 33 | + if (biosample_tsv_filter_preexisting.num_not_found > 0) { |
| 34 | + call ncbi_tools.biosample_submit_tsv_ftp_upload { |
| 35 | + input: |
| 36 | + meta_submit_tsv = biosample_tsv_filter_preexisting.meta_unsubmitted_tsv, |
| 37 | + config_js = ftp_config_js, |
| 38 | + target_path = "/~{prod_test}/biosample/~{basename(biosample_submit_tsv, '.tsv')}/~{md5sum.md5}" |
| 39 | + } |
| 40 | + } |
| 41 | +
|
| 42 | + # merge all results and attributes |
| 43 | + call utils.tsv_join { |
| 44 | + input: |
| 45 | + input_tsvs = select_all([ |
| 46 | + biosample_tsv_filter_preexisting.biosample_attributes_tsv, |
| 47 | + biosample_submit_tsv_ftp_upload.attributes_tsv, |
| 48 | + biosample_submit_tsv |
| 49 | + ]), |
| 50 | + id_col = "isolate", |
| 51 | + out_basename = basename(biosample_submit_tsv, '.tsv') + "-attributes" |
| 52 | + } |
| 53 | +
|
| 54 | + output { |
| 55 | + File biosample_attributes = tsv_join.out_tsv |
| 56 | + } |
| 57 | +} |
0 commit comments