diff --git a/.dockstore.yml b/.dockstore.yml index ab62ad0d..c0a6feb7 100644 --- a/.dockstore.yml +++ b/.dockstore.yml @@ -42,6 +42,7 @@ workflows: - dragen-transcriptome-pipeline/4.2.4 - dragen-transcriptome-pipeline/4.2.4__20240627052945 - dragen-transcriptome-pipeline/4.2.4__20240708054448 + - dragen-transcriptome-pipeline/4.2.4__20240801063424 - name: dragen-somatic-with-germline-pipeline_4_2_4 subclass: CWL primaryDescriptorPath: diff --git a/.dockstore/dragen-transcriptome-pipeline/4.2.4/dragen-transcriptome-pipeline__4.2.4.packed.cwl.json b/.dockstore/dragen-transcriptome-pipeline/4.2.4/dragen-transcriptome-pipeline__4.2.4.packed.cwl.json index fe904dd1..f3ec80b7 100644 --- a/.dockstore/dragen-transcriptome-pipeline/4.2.4/dragen-transcriptome-pipeline__4.2.4.packed.cwl.json +++ b/.dockstore/dragen-transcriptome-pipeline/4.2.4/dragen-transcriptome-pipeline__4.2.4.packed.cwl.json @@ -1033,13 +1033,13 @@ }, { "expressionLib": [ - "/* Author:Alexis Lucattini */\n/* For assistance on generation of typescript expressions */\n/* In CWL, please visit our wiki page at https://github.com/umccr/cwl-ica/wiki/TypeScript */\n/* Imports */\n/* Functions */\nfunction get_script_path() {\n /*\n Abstract script path, can then be referenced in baseCommand attribute too\n Makes things more readable.\n */\n return \"run-dragen-script.sh\";\n}\nfunction get_scratch_mount() {\n /*\n Return the path of the scratch directory space\n */\n return \"/scratch/\";\n}\nfunction get_intermediate_results_dir() {\n /*\n Get intermediate results directory as /scratch for dragen runs\n */\n return get_scratch_mount() + \"intermediate-results/\";\n}\nfunction get_name_root_from_tarball(basename) {\n var tar_ball_regex = /(\\S+)\\.tar\\.gz/g;\n var tar_ball_expression = tar_ball_regex.exec(basename);\n if (tar_ball_expression === null) {\n throw new Error(\"Could not get nameroot from \".concat(basename));\n }\n return tar_ball_expression[1];\n}\nfunction get_ref_path(reference_input_obj) {\n /*\n Get the reference path\n */\n return get_ref_mount() + get_name_root_from_tarball(reference_input_obj.basename) + \"/\";\n}\nfunction get_ref_mount() {\n /*\n Get the reference mount point\n */\n return get_scratch_mount() + \"ref/\";\n}\nfunction get_dragen_bin_path() {\n /*\n Get dragen bin path\n */\n return \"/opt/edico/bin/dragen\";\n}\nfunction get_dragen_eval_line() {\n /*\n Return string\n */\n return \"eval \\\"\" + get_dragen_bin_path() + \"\\\" '\\\"\\$@\\\"' \\n\";\n}\nfunction get_fastq_list_csv_path() {\n /*\n The fastq list path must be placed in working directory\n */\n return \"fastq_list.csv\";\n}\nfunction get_tumor_fastq_list_csv_path() {\n /*\n The tumor fastq list path must be placed in working directory\n */\n return \"tumor_fastq_list.csv\";\n}\nfunction get_normal_name_from_fastq_list_rows(fastq_list_rows) {\n /*\n Get the normal sample name from the fastq list rows object\n */\n /*\n Check fastq list rows is defined\n */\n if (fastq_list_rows === undefined || fastq_list_rows === null) {\n return null;\n }\n /*\n Get RGSM value and return\n */\n return fastq_list_rows[0].rgsm;\n}\nfunction get_normal_name_from_fastq_list_csv(fastq_list_csv) {\n /*\n Get the normal name from the fastq list csv...\n */\n /*\n Check file is defined\n */\n if (fastq_list_csv === undefined || fastq_list_csv === null) {\n return null;\n }\n /*\n Check contents are defined\n */\n if (fastq_list_csv.contents === null || fastq_list_csv.contents === undefined) {\n return null;\n }\n /*\n Confirm fastq list csv is of type File\n */\n if (fastq_list_csv.class !== \"File\") {\n throw new Error(\"Could not confirm input fastq_list_csv is of type File\");\n }\n /*\n Split contents by line\n */\n var contents_by_line = [];\n fastq_list_csv.contents.split(\"\\n\").forEach(function (line_content) {\n var stripped_line_content = line_content.replace(/(\\r\\n|\\n|\\r)/gm, \"\");\n if (stripped_line_content !== \"\") {\n contents_by_line.push(stripped_line_content);\n }\n });\n var column_names = contents_by_line[0].split(\",\");\n /*\n Get RGSM index value (which column is RGSM at?)\n */\n var rgsm_index = column_names.indexOf(\"RGSM\");\n /*\n RGSM is not in index. Return null\n */\n if (rgsm_index === -1) {\n return null;\n }\n /*\n Get RGSM value of first row and return\n */\n return contents_by_line[1].split(\",\")[rgsm_index];\n}\nfunction get_normal_output_prefix(inputs) {\n var _a;\n /*\n Get the normal RGSM value and then add _normal to it\n */\n var normal_name = null;\n var normal_re_replacement = /_normal$/;\n /*\n Check if bam_input is set\n */\n if (inputs.bam_input !== null && inputs.bam_input !== undefined) {\n /* Remove _normal from nameroot if it already exists */\n /* We dont want _normal_normal as a suffix */\n return \"\".concat((_a = inputs.bam_input.nameroot) === null || _a === void 0 ? void 0 :_a.replace(normal_re_replacement, \"\"), \"_normal\");\n }\n /*\n Check if fastq list file is set\n */\n if (inputs.fastq_list !== null && inputs.fastq_list !== undefined) {\n normal_name = get_normal_name_from_fastq_list_csv(inputs.fastq_list);\n if (normal_name !== null) {\n return \"\".concat(normal_name, \"_normal\");\n }\n }\n /*\n Otherwise collect and return from schema object\n */\n normal_name = get_normal_name_from_fastq_list_rows(inputs.fastq_list_rows);\n return \"\".concat(normal_name, \"_normal\");\n}\nfunction build_fastq_list_csv_header(header_names) {\n /*\n Convert lowercase labels to uppercase values\n i.e\n [ \"rgid\", \"rglb\", \"rgsm\", \"lane\", \"read_1\", \"read_2\" ]\n to\n \"RGID,RGLB,RGSM,Lane,Read1File,Read2File\"\n */\n var modified_header_names = [];\n for (var _i = 0, header_names_1 = header_names; _i < header_names_1.length; _i++) {\n var header_name = header_names_1[_i];\n if (header_name.indexOf(\"rg\") === 0) {\n /*\n rgid -> RGID\n */\n modified_header_names.push(header_name.toUpperCase());\n }\n else if (header_name.indexOf(\"read\") === 0) {\n /*\n read_1 -> Read1File\n */\n modified_header_names.push(\"Read\" + header_name.charAt(header_name.length - 1) + \"File\");\n }\n else {\n /*\n lane to Lane\n */\n modified_header_names.push(header_name[0].toUpperCase() + header_name.substr(1));\n }\n }\n /*\n Convert array to comma separated strings\n */\n return modified_header_names.join(\",\") + \"\\n\";\n}\nfunction get_fastq_list_row_as_csv_row(fastq_list_row, row_order) {\n var fastq_list_row_values_array = [];\n /* This for loop is here to ensure were assigning values in the same order as the header */\n for (var _i = 0, row_order_1 = row_order; _i < row_order_1.length; _i++) {\n var item_index = row_order_1[_i];\n var found_item = false;\n /* Find matching attribute in this row */\n for (var _a = 0, _b = Object.getOwnPropertyNames(fastq_list_row); _a < _b.length; _a++) {\n var fastq_list_row_field_name = _b[_a];\n var fastq_list_row_field_value = fastq_list_row[fastq_list_row_field_name];\n if (fastq_list_row_field_value === null) {\n /*\n Item not found, add an empty attribute for this cell in the csv\n */\n continue;\n }\n /* The header value matches the name in the item */\n if (fastq_list_row_field_name === item_index) {\n /*\n If the field value has a class attribute then it's either read_1 or read_2\n */\n if (fastq_list_row_field_value.hasOwnProperty(\"class\")) {\n var fastq_list_row_field_value_file = fastq_list_row_field_value;\n /*\n Assert that this is actually of class file\n */\n if (fastq_list_row_field_value_file.class !== \"File\") {\n continue;\n }\n if (fastq_list_row_field_value_file.path !== null && fastq_list_row_field_value_file.path !== undefined) {\n /*\n Push the path attribute to the fastq list csv row if it is not null\n */\n fastq_list_row_values_array.push(fastq_list_row_field_value_file.path);\n }\n else {\n /*\n Otherwise push the location attribute\n */\n fastq_list_row_values_array.push(fastq_list_row_field_value_file.location);\n }\n }\n else {\n /*\n Push the string attribute to the fastq list csv row\n */\n fastq_list_row_values_array.push(fastq_list_row_field_value.toString());\n }\n found_item = true;\n break;\n }\n }\n if (!found_item) {\n /*\n Push blank cell if no item found\n */\n fastq_list_row_values_array.push(\"\");\n }\n }\n /*\n Convert to string and return as string\n */\n return fastq_list_row_values_array.join(\",\") + \"\\n\";\n}\nfunction generate_fastq_list_csv(fastq_list_rows) {\n /*\n Fastq list rows generation\n */\n var fastq_csv_file = {\n class:\"File\",\n basename:get_fastq_list_csv_path()\n };\n /*\n Set the row order\n */\n var row_order = [];\n /*\n Set the array order\n Make sure we iterate through all rows of the array\n */\n for (var _i = 0, fastq_list_rows_1 = fastq_list_rows; _i < fastq_list_rows_1.length; _i++) {\n var fastq_list_row = fastq_list_rows_1[_i];\n for (var _a = 0, _b = Object.getOwnPropertyNames(fastq_list_row); _a < _b.length; _a++) {\n var fastq_list_row_field_name = _b[_a];\n if (row_order.indexOf(fastq_list_row_field_name) === -1) {\n row_order.push(fastq_list_row_field_name);\n }\n }\n }\n /*\n Make header\n */\n fastq_csv_file.contents = build_fastq_list_csv_header(row_order);\n /*\n For each fastq list row,\n collect the values of each attribute but in the order of the header\n */\n for (var _c = 0, fastq_list_rows_2 = fastq_list_rows; _c < fastq_list_rows_2.length; _c++) {\n var fastq_list_row = fastq_list_rows_2[_c];\n /* Add csv row to file contents */\n fastq_csv_file.contents += get_fastq_list_row_as_csv_row(fastq_list_row, row_order);\n }\n return fastq_csv_file;\n}\nfunction generate_germline_mount_points(inputs) {\n /*\n Create and add in the fastq list csv for the input fastqs\n */\n var e = [];\n if (inputs.fastq_list_rows !== null) {\n e.push({\n \"entryname\":get_fastq_list_csv_path(),\n \"entry\":generate_fastq_list_csv(inputs.fastq_list_rows)\n });\n }\n if (inputs.fastq_list !== null) {\n e.push({\n \"entryname\":get_fastq_list_csv_path(),\n \"entry\":inputs.fastq_list\n });\n }\n /*\n Return file paths\n */\n /* @ts-ignore Type '{ entryname:string; entry:FileProperties; }[]' is not assignable to type 'DirentProperties[]' */\n return e;\n}\nfunction generate_somatic_mount_points(inputs) {\n /*\n Create and add in the fastq list csv for the input fastqs\n */\n var e = [];\n if (inputs.fastq_list_rows !== null) {\n e.push({\n \"entryname\":get_fastq_list_csv_path(),\n \"entry\":generate_fastq_list_csv(inputs.fastq_list_rows)\n });\n }\n if (inputs.tumor_fastq_list_rows !== null) {\n e.push({\n \"entryname\":get_tumor_fastq_list_csv_path(),\n \"entry\":generate_fastq_list_csv(inputs.tumor_fastq_list_rows)\n });\n }\n if (inputs.fastq_list !== null) {\n e.push({\n \"entryname\":get_fastq_list_csv_path(),\n \"entry\":inputs.fastq_list\n });\n }\n if (inputs.tumor_fastq_list !== null) {\n e.push({\n \"entryname\":get_tumor_fastq_list_csv_path(),\n \"entry\":inputs.tumor_fastq_list\n });\n }\n /*\n Return file paths\n */\n /* @ts-ignore Type '{ entryname:string; entry:FileProperties; }[]' is not assignable to type 'DirentProperties[]' */\n return e;\n}\nfunction generate_transcriptome_mount_points(inputs) {\n /*\n Calls another function that generates mount points\n */\n return generate_germline_mount_points(inputs);\n}\n/* Custom functions for dragen reference tarball build */\nfunction get_liftover_dir() {\n /* Hardcoded liftover directory in dragen 4.2 */\n return \"/opt/edico/liftover/\";\n}\nfunction get_mask_dir() {\n /* Hardcoded mask directory in dragen 4.2 */\n return \"/opt/edico/fasta_mask/\";\n}\nfunction get_ref_scratch_dir(reference_name) {\n /* We get the reference scratch directory as a combination of */\n /* the dragen scratch mount and the reference name */\n return get_scratch_mount() + reference_name + \"/\";\n}\n", - "/* Author:Alexis Lucattini */\n/* For assistance on generation of typescript expressions */\n/* In CWL, please visit our wiki page at https://github.com/umccr/cwl-ica/wiki/TypeScript */\n/* Imports */\n/* Functions */\nfunction is_not_null(input_obj) {\n /*\n Determine if input object is defined and is not null\n */\n return !(input_obj === null || input_obj === undefined);\n}\nfunction get_attribute_from_optional_input(input_object, attribute) {\n /*\n Get attribute from optional input -\n If input is not defined, then return null\n */\n if (input_object === null || input_object === undefined) {\n return null;\n }\n else {\n return get_optional_attribute_from_object(input_object, attribute);\n }\n}\nfunction get_optional_attribute_from_object(input_object, attribute) {\n /*\n Get attribute from object, if attribute is not defined return null\n Assume the input object is an object of key value pairs where we know the key is of type string\n stackoverflow.com/questions/56833469/typescript-error-ts7053-element-implicitly-has-an-any-type\n */\n if (input_object.hasOwnProperty(attribute)) {\n return input_object[attribute];\n }\n else {\n return null;\n }\n}\nfunction get_bool_value_as_str(input_bool) {\n if (is_not_null(input_bool) && input_bool) {\n return \"true\";\n }\n else {\n return \"false\";\n }\n}\nfunction boolean_to_int(input_bool) {\n if (is_not_null(input_bool) && String(input_bool).toLowerCase() === \"true\") {\n return 1;\n }\n else {\n return 0;\n }\n}\nfunction get_optional_attribute_from_multi_type_input_object(object, attribute) {\n /*\n Get attribute from optional input\n */\n if (object === null || object === undefined) {\n return null;\n }\n else if (typeof object === \"object\") {\n /* Get attribute from optional input */\n return get_attribute_from_optional_input(object, attribute);\n }\n else {\n /* Object is likely actually a str */\n return object;\n }\n}\nfunction get_source_a_or_b(input_a, input_b) {\n /*\n Get the first input parameter if it is not null\n Otherwise return the second parameter\n Otherwise return null\n */\n if (is_not_null(input_a)) {\n return input_a;\n }\n else if (is_not_null(input_b)) {\n return input_b;\n }\n else {\n return null;\n }\n}\nfunction get_first_non_null_input(inputs) {\n /*\n Get first element of the array that is not null\n */\n for (var _i = 0, inputs_1 = inputs; _i < inputs_1.length; _i++) {\n var input_element = inputs_1[_i];\n if (is_not_null(input_element)) {\n return input_element;\n }\n }\n return null;\n}\n" + "/* Author:Alexis Lucattini */\n/* For assistance on generation of typescript expressions */\n/* In CWL, please visit our wiki page at https://github.com/umccr/cwl-ica/wiki/TypeScript */\n/* Imports */\n/* Functions */\nfunction get_script_path() {\n /*\n Abstract script path, can then be referenced in baseCommand attribute too\n Makes things more readable.\n */\n return \"run-dragen-script.sh\";\n}\nfunction get_scratch_mount() {\n /*\n Return the path of the scratch directory space\n */\n return \"/tmp/\";\n}\nfunction get_intermediate_results_dir() {\n /*\n Get intermediate results directory as /scratch for dragen runs\n */\n return get_scratch_mount() + \"intermediate-results/\";\n}\nfunction get_name_root_from_tarball(basename) {\n var tar_ball_regex = /(\\S+)\\.tar\\.gz/g;\n var tar_ball_expression = tar_ball_regex.exec(basename);\n if (tar_ball_expression === null) {\n throw new Error(\"Could not get nameroot from \".concat(basename));\n }\n return tar_ball_expression[1];\n}\nfunction get_ref_path(reference_input_obj) {\n /*\n Get the reference path\n */\n return get_ref_mount() + get_name_root_from_tarball(reference_input_obj.basename) + \"/\";\n}\nfunction get_ref_mount() {\n /*\n Get the reference mount point\n */\n return get_scratch_mount() + \"ref/\";\n}\nfunction get_dragen_bin_path() {\n /*\n Get dragen bin path\n */\n return \"/opt/edico/bin/dragen\";\n}\nfunction get_dragen_eval_line() {\n /*\n Return string\n */\n return \"eval \\\"\" + get_dragen_bin_path() + \"\\\" '\\\"\\$@\\\"' \\n\";\n}\nfunction get_fastq_list_csv_path() {\n /*\n The fastq list path must be placed in working directory\n */\n return \"fastq_list.csv\";\n}\nfunction get_tumor_fastq_list_csv_path() {\n /*\n The tumor fastq list path must be placed in working directory\n */\n return \"tumor_fastq_list.csv\";\n}\nfunction get_normal_name_from_fastq_list_rows(fastq_list_rows) {\n /*\n Get the normal sample name from the fastq list rows object\n */\n /*\n Check fastq list rows is defined\n */\n if (fastq_list_rows === undefined || fastq_list_rows === null) {\n return null;\n }\n /*\n Get RGSM value and return\n */\n return fastq_list_rows[0].rgsm;\n}\nfunction get_normal_name_from_fastq_list_csv(fastq_list_csv) {\n /*\n Get the normal name from the fastq list csv...\n */\n /*\n Check file is defined\n */\n if (fastq_list_csv === undefined || fastq_list_csv === null) {\n return null;\n }\n /*\n Check contents are defined\n */\n if (fastq_list_csv.contents === null || fastq_list_csv.contents === undefined) {\n return null;\n }\n /*\n Confirm fastq list csv is of type File\n */\n if (fastq_list_csv.class !== \"File\") {\n throw new Error(\"Could not confirm input fastq_list_csv is of type File\");\n }\n /*\n Split contents by line\n */\n var contents_by_line = [];\n fastq_list_csv.contents.split(\"\\n\").forEach(function (line_content) {\n var stripped_line_content = line_content.replace(/(\\r\\n|\\n|\\r)/gm, \"\");\n if (stripped_line_content !== \"\") {\n contents_by_line.push(stripped_line_content);\n }\n });\n var column_names = contents_by_line[0].split(\",\");\n /*\n Get RGSM index value (which column is RGSM at?)\n */\n var rgsm_index = column_names.indexOf(\"RGSM\");\n /*\n RGSM is not in index. Return null\n */\n if (rgsm_index === -1) {\n return null;\n }\n /*\n Get RGSM value of first row and return\n */\n return contents_by_line[1].split(\",\")[rgsm_index];\n}\nfunction get_normal_output_prefix(inputs) {\n var _a, _b;\n /*\n Get the normal RGSM value and then add _normal to it\n */\n var normal_name = null;\n var normal_re_replacement = /_normal$/;\n /*\n Check if bam_input is set\n */\n if (inputs.bam_input !== null && inputs.bam_input !== undefined) {\n /* Remove _normal from nameroot if it already exists */\n /* We dont want _normal_normal as a suffix */\n return \"\".concat((_a = inputs.bam_input.nameroot) === null || _a === void 0 ? void 0 :_a.replace(normal_re_replacement, \"\"), \"_normal\");\n }\n /*\n Check if cram_input is set\n */\n if (inputs.cram_input !== null && inputs.cram_input !== undefined) {\n /* Remove _normal from nameroot if it already exists */\n /* We dont want _normal_normal as a suffix */\n return \"\".concat((_b = inputs.cram_input.nameroot) === null || _b === void 0 ? void 0 :_b.replace(normal_re_replacement, \"\"), \"_normal\");\n }\n /*\n Check if fastq list file is set\n */\n if (inputs.fastq_list !== null && inputs.fastq_list !== undefined) {\n normal_name = get_normal_name_from_fastq_list_csv(inputs.fastq_list);\n if (normal_name !== null) {\n return \"\".concat(normal_name, \"_normal\");\n }\n }\n /*\n Otherwise collect and return from schema object\n */\n normal_name = get_normal_name_from_fastq_list_rows(inputs.fastq_list_rows);\n return \"\".concat(normal_name, \"_normal\");\n}\nfunction build_fastq_list_csv_header(header_names) {\n /*\n Convert lowercase labels to uppercase values\n i.e\n [ \"rgid\", \"rglb\", \"rgsm\", \"lane\", \"read_1\", \"read_2\" ]\n to\n \"RGID,RGLB,RGSM,Lane,Read1File,Read2File\"\n */\n var modified_header_names = [];\n for (var _i = 0, header_names_1 = header_names; _i < header_names_1.length; _i++) {\n var header_name = header_names_1[_i];\n if (header_name.indexOf(\"rg\") === 0) {\n /*\n rgid -> RGID\n */\n modified_header_names.push(header_name.toUpperCase());\n }\n else if (header_name.indexOf(\"read\") === 0) {\n /*\n read_1 -> Read1File\n */\n modified_header_names.push(\"Read\" + header_name.charAt(header_name.length - 1) + \"File\");\n }\n else {\n /*\n lane to Lane\n */\n modified_header_names.push(header_name[0].toUpperCase() + header_name.substr(1));\n }\n }\n /*\n Convert array to comma separated strings\n */\n return modified_header_names.join(\",\") + \"\\n\";\n}\nfunction get_fastq_list_row_as_csv_row(fastq_list_row, row_order) {\n var fastq_list_row_values_array = [];\n /* This for loop is here to ensure were assigning values in the same order as the header */\n for (var _i = 0, row_order_1 = row_order; _i < row_order_1.length; _i++) {\n var item_index = row_order_1[_i];\n var found_item = false;\n /* Find matching attribute in this row */\n for (var _a = 0, _b = Object.getOwnPropertyNames(fastq_list_row); _a < _b.length; _a++) {\n var fastq_list_row_field_name = _b[_a];\n var fastq_list_row_field_value = fastq_list_row[fastq_list_row_field_name];\n if (fastq_list_row_field_value === null) {\n /*\n Item not found, add an empty attribute for this cell in the csv\n */\n continue;\n }\n /* The header value matches the name in the item */\n if (fastq_list_row_field_name === item_index) {\n /*\n If the field value has a class attribute then it's either read_1 or read_2\n */\n if (fastq_list_row_field_value.hasOwnProperty(\"class\")) {\n var fastq_list_row_field_value_file = fastq_list_row_field_value;\n /*\n Assert that this is actually of class file\n */\n if (fastq_list_row_field_value_file.class !== \"File\") {\n continue;\n }\n if (fastq_list_row_field_value_file.path !== null && fastq_list_row_field_value_file.path !== undefined) {\n /*\n Push the path attribute to the fastq list csv row if it is not null\n */\n fastq_list_row_values_array.push(fastq_list_row_field_value_file.path);\n }\n else {\n /*\n Otherwise push the location attribute\n */\n fastq_list_row_values_array.push(fastq_list_row_field_value_file.location);\n }\n }\n else {\n /*\n Push the string attribute to the fastq list csv row\n */\n fastq_list_row_values_array.push(fastq_list_row_field_value.toString());\n }\n found_item = true;\n break;\n }\n }\n if (!found_item) {\n /*\n Push blank cell if no item found\n */\n fastq_list_row_values_array.push(\"\");\n }\n }\n /*\n Convert to string and return as string\n */\n return fastq_list_row_values_array.join(\",\") + \"\\n\";\n}\nfunction generate_fastq_list_csv(fastq_list_rows) {\n /*\n Fastq list rows generation\n */\n var fastq_csv_file = {\n class:\"File\",\n basename:get_fastq_list_csv_path()\n };\n /*\n Set the row order\n */\n var row_order = [];\n /*\n Set the array order\n Make sure we iterate through all rows of the array\n */\n for (var _i = 0, fastq_list_rows_1 = fastq_list_rows; _i < fastq_list_rows_1.length; _i++) {\n var fastq_list_row = fastq_list_rows_1[_i];\n for (var _a = 0, _b = Object.getOwnPropertyNames(fastq_list_row); _a < _b.length; _a++) {\n var fastq_list_row_field_name = _b[_a];\n if (row_order.indexOf(fastq_list_row_field_name) === -1) {\n row_order.push(fastq_list_row_field_name);\n }\n }\n }\n /*\n Make header\n */\n fastq_csv_file.contents = build_fastq_list_csv_header(row_order);\n /*\n For each fastq list row,\n collect the values of each attribute but in the order of the header\n */\n for (var _c = 0, fastq_list_rows_2 = fastq_list_rows; _c < fastq_list_rows_2.length; _c++) {\n var fastq_list_row = fastq_list_rows_2[_c];\n /* Add csv row to file contents */\n fastq_csv_file.contents += get_fastq_list_row_as_csv_row(fastq_list_row, row_order);\n }\n return fastq_csv_file;\n}\nfunction generate_germline_mount_points(inputs) {\n /*\n Create and add in the fastq list csv for the input fastqs\n */\n var e = [];\n if (inputs.fastq_list_rows !== null) {\n e.push({\n \"entryname\":get_fastq_list_csv_path(),\n \"entry\":generate_fastq_list_csv(inputs.fastq_list_rows)\n });\n }\n if (inputs.fastq_list !== null) {\n e.push({\n \"entryname\":get_fastq_list_csv_path(),\n \"entry\":inputs.fastq_list\n });\n }\n /*\n Return file paths\n */\n /* @ts-ignore Type '{ entryname:string; entry:FileProperties; }[]' is not assignable to type 'DirentProperties[]' */\n return e;\n}\nfunction generate_somatic_mount_points(inputs) {\n /*\n Create and add in the fastq list csv for the input fastqs\n */\n var e = [];\n if (inputs.fastq_list_rows !== null) {\n e.push({\n \"entryname\":get_fastq_list_csv_path(),\n \"entry\":generate_fastq_list_csv(inputs.fastq_list_rows)\n });\n }\n if (inputs.tumor_fastq_list_rows !== null) {\n e.push({\n \"entryname\":get_tumor_fastq_list_csv_path(),\n \"entry\":generate_fastq_list_csv(inputs.tumor_fastq_list_rows)\n });\n }\n if (inputs.fastq_list !== null) {\n e.push({\n \"entryname\":get_fastq_list_csv_path(),\n \"entry\":inputs.fastq_list\n });\n }\n if (inputs.tumor_fastq_list !== null) {\n e.push({\n \"entryname\":get_tumor_fastq_list_csv_path(),\n \"entry\":inputs.tumor_fastq_list\n });\n }\n /*\n Return file paths\n */\n /* @ts-ignore Type '{ entryname:string; entry:FileProperties; }[]' is not assignable to type 'DirentProperties[]' */\n return e;\n}\nfunction generate_transcriptome_mount_points(inputs) {\n /*\n Calls another function that generates mount points\n */\n return generate_germline_mount_points(inputs);\n}\n/* Custom functions for dragen reference tarball build */\nfunction get_liftover_dir() {\n /* Hardcoded liftover directory in dragen 4.2 */\n return \"/opt/edico/liftover/\";\n}\nfunction get_mask_dir() {\n /* Hardcoded mask directory in dragen 4.2 */\n return \"/opt/edico/fasta_mask/\";\n}\nfunction get_ref_scratch_dir(reference_name) {\n /* We get the reference scratch directory as a combination of */\n /* the dragen scratch mount and the reference name */\n return get_scratch_mount() + reference_name + \"/\";\n}\n", + "/* Author:Alexis Lucattini */\n/* For assistance on generation of typescript expressions */\n/* In CWL, please visit our wiki page at https://github.com/umccr/cwl-ica/wiki/TypeScript */\n/* Imports */\n/* Functions */\nfunction is_not_null(input_obj) {\n /*\n Determine if input object is defined and is not null\n */\n return !(input_obj === null || input_obj === undefined);\n}\nfunction get_attribute_from_optional_input(input_object, attribute) {\n /*\n Get attribute from optional input -\n If input is not defined, then return null\n */\n if (input_object === null || input_object === undefined) {\n return null;\n }\n else {\n return get_optional_attribute_from_object(input_object, attribute);\n }\n}\nfunction get_optional_attribute_from_object(input_object, attribute) {\n /*\n Get attribute from object, if attribute is not defined return null\n Assume the input object is an object of key value pairs where we know the key is of type string\n stackoverflow.com/questions/56833469/typescript-error-ts7053-element-implicitly-has-an-any-type\n */\n if (input_object.hasOwnProperty(attribute)) {\n return input_object[attribute];\n }\n else {\n return null;\n }\n}\nfunction get_bool_value_as_str(input_bool) {\n if (is_not_null(input_bool) && input_bool) {\n return \"true\";\n }\n else {\n return \"false\";\n }\n}\nfunction boolean_to_int(input_bool) {\n if (is_not_null(input_bool) && String(input_bool).toLowerCase() === \"true\") {\n return 1;\n }\n else {\n return 0;\n }\n}\nfunction get_optional_attribute_from_multi_type_input_object(object, attribute) {\n /*\n Get attribute from optional input\n */\n if (object === null || object === undefined) {\n return null;\n }\n else if (typeof object === \"object\") {\n /* Get attribute from optional input */\n return get_attribute_from_optional_input(object, attribute);\n }\n else {\n /* Object is likely actually a str */\n return object;\n }\n}\nfunction get_source_a_or_b(input_a, input_b) {\n /*\n Get the first input parameter if it is not null\n Otherwise return the second parameter\n Otherwise return null\n */\n if (is_not_null(input_a)) {\n return input_a;\n }\n else if (is_not_null(input_b)) {\n return input_b;\n }\n else {\n return null;\n }\n}\nfunction get_first_non_null_input(inputs) {\n /*\n Get first element of the array that is not null\n */\n for (var _i = 0, inputs_1 = inputs; _i < inputs_1.length; _i++) {\n var input_element = inputs_1[_i];\n if (is_not_null(input_element)) {\n return input_element;\n }\n }\n return null;\n}\nfunction get_attribute_list_from_object_list(obj_list, attribute) {\n /*\n Get attribute from list of objects\n If an object is null, it is not included in the return list\n */\n return obj_list.filter(function (x) { return x !== null; }).map(function (x) { return get_optional_attribute_from_object(x, attribute); });\n}\nfunction get_str_list_as_bash_array(input_list, item_wrap) {\n /*\n Convert a list of strings to a bash array, if the list is not defined return null\n */\n if (input_list === null) {\n return null;\n }\n if (item_wrap === null) {\n return \"( \".concat(input_list.map(function (x) { return \"'\".concat(item_wrap).concat(x).concat(item_wrap, \"'\"); }).join(' '), \" )\");\n }\n return \"( \".concat(input_list.map(function (x) { return \"'\".concat(x, \"'\"); }).join(' '), \" )\");\n}\nfunction get_object_attribute_list_as_bash_array(obj_list, attribute) {\n /*\n Get attribute from list of objects and convert to a bash array\n Do not include null values in the array\n */\n return get_str_list_as_bash_array(get_attribute_list_from_object_list(obj_list, attribute).filter(function (x) { return x !== null; }));\n}\n" ], "class": "InlineJavascriptRequirement" }, { - "tmpdirMin": "${\n /* 1 Tb */\n return 2 ** 20;\n}\n", + "tmpdirMin": "${\n /* 1 Tb */\n return Math.pow(2, 20);\n}\n", "class": "ResourceRequirement" }, { @@ -1666,7 +1666,7 @@ "class": "CommandLineTool", "id": "#qualimap__2.2.2.cwl", "label": "qualimap v(2.2.2)", - "doc": "It perform RNA-seq QC analysis on paired-end data http://qualimap.bioinfo.cipf.es/doc_html/command_line.html.\n", + "doc": "Qualimap perform RNA-seq QC analysis on paired-end data http://qualimap.bioinfo.cipf.es/doc_html/command_line.html.\n", "hints": [ { "dockerPull": "public.ecr.aws/biocontainers/qualimap:2.2.2d--hdfd78af_2", @@ -1686,13 +1686,17 @@ "listing": [ { "entryname": "run_qualimap.sh", - "entry": "#!/usr/bin/env bash\n\n# Set to fail\nset -euo pipefail\n\n# Set java opts\nif [[ ! -z \"$(inputs.tmp_dir)\" ]]\nthen\n export JAVA_OPTS=-Djava.io.tmpdir=\"$(inputs.tmp_dir)\"\nfi\n# Run qualimap\nqualimap rnaseq --paired \"\\${@}\"\n" + "entry": "#!/usr/bin/env bash\n\n# Set to fail\nset -euo pipefail\n\n# Set java opts\n# Note :- means if TMPDIR is set to \"\" or undefined use /tmp\nexport JAVA_OPTS=\"-Djava.io.tmpdir=\\${TMPDIR:-/tmp}\"\n\n# Run qualimap\nqualimap rnaseq --paired \"\\${@}\"\n" } ], "class": "InitialWorkDirRequirement" }, { "class": "InlineJavascriptRequirement" + }, + { + "tmpdirMin": "${\n /* 1 Tb */\n return Math.pow(2, 20);\n}\n", + "class": "ResourceRequirement" } ], "baseCommand": [ @@ -1767,15 +1771,6 @@ "prefix": "--sequencing-protocol" }, "id": "#qualimap__2.2.2.cwl/qualimap--2.2.2/seq_protocol" - }, - { - "label": "tmp dir", - "doc": "Qualimap creates temporary bam files when sorting by name, which takes up space in the system tmp dir (usually /tmp).\nThis can be avoided by sorting the bam file by name before running Qualimap.\n", - "type": [ - "null", - "string" - ], - "id": "#qualimap__2.2.2.cwl/qualimap--2.2.2/tmp_dir" } ], "outputs": [ @@ -2049,16 +2044,6 @@ "doc": "To enable trimming filters in soft-trimming mode, set to a comma-separated list of the trimmer tools\nyou would like to use. To disable soft trimming, set to none. During mapping, reads are aligned as if trimmed,\nand bases are not removed from the reads. Soft-trimming is enabled for the polyg filter by default.\n", "id": "#main/soft_read_trimmers" }, - { - "label": "tmp dir", - "type": [ - "null", - "string" - ], - "doc": "Qualimap creates temporary bam files when sorting by name, which takes up space in the system tmp dir (usually /tmp).\nThis can be avoided by sorting the bam file by name before running Qualimap.\n", - "default": "/scratch", - "id": "#main/tmp_dir" - }, { "label": "trim adapter r1 5prime", "type": [ @@ -2438,10 +2423,6 @@ "source": "#main/output_file_prefix", "valueFrom": "$(self)_qualimap", "id": "#main/run_qualimap_step/out_dir" - }, - { - "source": "#main/tmp_dir", - "id": "#main/run_qualimap_step/tmp_dir" } ], "out": [ diff --git a/.github/releases/dragen-transcriptome-pipeline__4.2.4__20240801063424/workflow.svg b/.github/releases/dragen-transcriptome-pipeline__4.2.4__20240801063424/workflow.svg new file mode 100644 index 00000000..34c2c294 --- /dev/null +++ b/.github/releases/dragen-transcriptome-pipeline__4.2.4__20240801063424/workflow.svg @@ -0,0 +1,641 @@ + + + + + + +G + + +cluster_inputs + +Workflow Inputs + + +cluster_outputs + +Workflow Outputs + + + +run_dragen_transcriptome_step + +dragen-transcriptome v(4.2.4) + + + +arriba_drawing_step + +arriba-drawing v(2.4.0) + + + +run_dragen_transcriptome_step->arriba_drawing_step + + + + + +arriba_fusion_step + +arriba-fusion-calling v(2.4.0) + + + +run_dragen_transcriptome_step->arriba_fusion_step + + + + + +run_qualimap_step + +qualimap v(2.2.2) + + + +run_dragen_transcriptome_step->run_qualimap_step + + + + + +dragen_qc_step + +multiqc v(1.15.0) + + + +run_dragen_transcriptome_step->dragen_qc_step + + + + + +dragen_transcriptome_output_directory + +dragen_transcriptome_output_directory + + + +run_dragen_transcriptome_step->dragen_transcriptome_output_directory + + + + + +create_arriba_output_directory + +custom-create-directory v(1.0.0) + + + +arriba_drawing_step->create_arriba_output_directory + + + + + +arriba_fusion_step->arriba_drawing_step + + + + + +arriba_fusion_step->create_arriba_output_directory + + + + + +arriba_fusion_step->create_arriba_output_directory + + + + + +arriba_output_directory + +arriba_output_directory + + + +create_arriba_output_directory->arriba_output_directory + + + + + +run_qualimap_step->dragen_qc_step + + + + + +qualimap_output_directory + +qualimap_output_directory + + + +run_qualimap_step->qualimap_output_directory + + + + + +multiqc_output_directory + +multiqc_output_directory + + + +dragen_qc_step->multiqc_output_directory + + + + + +create_dummy_file_step + +custom-create-dummy-file v(1.0.0) + + + +create_dummy_file_step->dragen_qc_step + + + + + +annotation_file + +annotation_file + + + +annotation_file->run_dragen_transcriptome_step + + + + + +annotation_file->arriba_drawing_step + + + + + +annotation_file->arriba_fusion_step + + + + + +annotation_file->run_qualimap_step + + + + + +cytobands + +cytobands + + + +cytobands->arriba_drawing_step + + + + + +protein_domains + +protein_domains + + + +protein_domains->arriba_drawing_step + + + + + +blacklist + +blacklist + + + +blacklist->arriba_fusion_step + + + + + +contigs + +contigs + + + +contigs->arriba_fusion_step + + + + + +reference_fasta + +reference_fasta + + + +reference_fasta->arriba_fusion_step + + + + + +output_directory_name_arriba + +output_directory_name_arriba + + + +output_directory_name_arriba->create_arriba_output_directory + + + + + +cl_config + +cl_config + + + +cl_config->dragen_qc_step + + + + + +output_file_prefix + +output_file_prefix + + + +output_file_prefix->run_dragen_transcriptome_step + + + + + +output_file_prefix->run_qualimap_step + + + + + +output_file_prefix->dragen_qc_step + + + + + +output_file_prefix->dragen_qc_step + + + + + +output_file_prefix->dragen_qc_step + + + + + +output_file_prefix->dragen_qc_step + + + + + +qc_reference_samples + +qc_reference_samples + + + +qc_reference_samples->dragen_qc_step + + + + + +bam_input + +bam_input + + + +bam_input->run_dragen_transcriptome_step + + + + + +enable_duplicate_marking + +enable_duplicate_marking + + + +enable_duplicate_marking->run_dragen_transcriptome_step + + + + + +enable_map_align + +enable_map_align + + + +enable_map_align->run_dragen_transcriptome_step + + + + + +enable_map_align_output + +enable_map_align_output + + + +enable_map_align_output->run_dragen_transcriptome_step + + + + + +enable_rna_gene_fusion + +enable_rna_gene_fusion + + + +enable_rna_gene_fusion->run_dragen_transcriptome_step + + + + + +enable_rna_quantification + +enable_rna_quantification + + + +enable_rna_quantification->run_dragen_transcriptome_step + + + + + +enable_sort + +enable_sort + + + +enable_sort->run_dragen_transcriptome_step + + + + + +fastq_list + +fastq_list + + + +fastq_list->run_dragen_transcriptome_step + + + + + +fastq_list_rows + +fastq_list_rows + + + +fastq_list_rows->run_dragen_transcriptome_step + + + + + +lic_instance_id_location + +lic_instance_id_location + + + +lic_instance_id_location->run_dragen_transcriptome_step + + + + + +output_directory + +output_directory + + + +output_directory->run_dragen_transcriptome_step + + + + + +read_trimmers + +read_trimmers + + + +read_trimmers->run_dragen_transcriptome_step + + + + + +reference_tar + +reference_tar + + + +reference_tar->run_dragen_transcriptome_step + + + + + +soft_read_trimmers + +soft_read_trimmers + + + +soft_read_trimmers->run_dragen_transcriptome_step + + + + + +trim_adapter_r1_5prime + +trim_adapter_r1_5prime + + + +trim_adapter_r1_5prime->run_dragen_transcriptome_step + + + + + +trim_dapter_r2_5prime + +trim_dapter_r2_5prime + + + +trim_dapter_r2_5prime->run_dragen_transcriptome_step + + + + + +trim_adapter_read1 + +trim_adapter_read1 + + + +trim_adapter_read1->run_dragen_transcriptome_step + + + + + +trim_adapter_read2 + +trim_adapter_read2 + + + +trim_adapter_read2->run_dragen_transcriptome_step + + + + + +trim_adapter_stringency + +trim_adapter_stringency + + + +trim_adapter_stringency->run_dragen_transcriptome_step + + + + + +trim_r1_3prime + +trim_r1_3prime + + + +trim_r1_3prime->run_dragen_transcriptome_step + + + + + +trim_r1_5prime + +trim_r1_5prime + + + +trim_r1_5prime->run_dragen_transcriptome_step + + + + + +trim_r2_3prime + +trim_r2_3prime + + + +trim_r2_3prime->run_dragen_transcriptome_step + + + + + +trim_r2_5prime + +trim_r2_5prime + + + +trim_r2_5prime->run_dragen_transcriptome_step + + + + + +algorithm + +algorithm + + + +algorithm->run_qualimap_step + + + + + +java_mem + +java_mem + + + +java_mem->run_qualimap_step + + + + + diff --git a/config/icav2.yaml b/config/icav2.yaml index ba900011..0bdd8113 100644 --- a/config/icav2.yaml +++ b/config/icav2.yaml @@ -2883,3 +2883,189 @@ bundles: - secondary-analysis projects: - production + - bundle_name: dragen_transcriptome_pipeline_with_validation_data__4_2_4__20240801063424 + bundle_description: 'This bundle has been generated by the release of workflows/dragen-transcriptome-pipeline/4.2.4/dragen-transcriptome-pipeline__4.2.4.cwl. + The pipeline can be found at https://github.com/umccr/cwl-ica/releases/tag/dragen-transcriptome-pipeline/4.2.4__20240801063424. ' + bundle_version: v9_r3__20240801063424 + bundle_version_description: Bundle version description is currently redundant + while we cannot append versions to bundles. Regardless - the bunch version is + v9_r3 + bundle_region_id: 1efd315d-6309-4d7e-826b-d3824b0b5acb + bundle_region_city_name: Sydney + tenant_name: umccr-prod + pipeline_path: + workflows/dragen-transcriptome-pipeline/4.2.4/dragen-transcriptome-pipeline__4.2.4.cwl + pipeline_name: dragen-transcriptome-pipeline + pipeline_version: 4.2.4 + pipeline_release_url: + https://github.com/umccr/cwl-ica/releases/tag/dragen-transcriptome-pipeline/4.2.4__20240801063424 + pipeline_commit_id: dragen-transcriptome-pipeline/4.2.4__20240801063424 + pipeline_checksum: b63aaf8d3b9fc4800cdd1fbd26a55772 + pipeline_project_id: 5844391a-69db-4b52-86b5-6a0d55c2386f + bundle_creation_time: '2024-08-01T06:36:35Z' + bundle_release_status: draft + bunch_name: dragen_transcriptome_pipeline_with_validation_data__4_2_4 + bunch_version: v9_r3 + bunch_datasets: + - dataset_name: dragen_hash_table_v9_r3_alt_masked_cnv_hla_rna + dataset_creation_time: '2024-06-21T09:21:42Z' + dataset_id_hash: a5fe1d2e2fe35737bdbc0871d46878e1 + - dataset_name: hg38_fasta + dataset_creation_time: '2024-06-21T11:31:50Z' + dataset_id_hash: 5f129b14aca5b4a7fda902590b15abc2 + - dataset_name: arriba_2_4_0 + dataset_creation_time: '2024-06-21T11:31:26Z' + dataset_id_hash: 8695cf0a98c5cda5726f67d4922da67f + - dataset_name: hg38_v39_gencode_annotation + dataset_creation_time: '2024-07-08T01:23:37Z' + dataset_id_hash: 7e88d10c15bfc88ee2e9527962c63984 + - dataset_name: wts_validation_fastq__SBJ00480 + dataset_creation_time: '2024-06-21T09:41:15Z' + dataset_id_hash: c8b8bdc7e384aaa470b12992ce196693 + - dataset_name: wts_validation_fastq__SBJ00028 + dataset_creation_time: '2024-06-21T09:42:31Z' + dataset_id_hash: fa76e6ca3a0fb0be2bf41840a7aeeb01 + - dataset_name: wts_validation_fastq__SBJ00061 + dataset_creation_time: '2024-06-21T09:42:54Z' + dataset_id_hash: 63ee438354c347b05218b9bddc53d936 + - dataset_name: wts_validation_fastq__SBJ00188 + dataset_creation_time: '2024-06-21T09:43:11Z' + dataset_id_hash: 401d12d90e00db19918e5c9ce13a3da0 + - dataset_name: wts_validation_fastq__SBJ00199 + dataset_creation_time: '2024-06-21T09:49:27Z' + dataset_id_hash: b95ac04c7e3c03a8b1868a4571d23d5f + - dataset_name: wts_validation_fastq__SBJ00236 + dataset_creation_time: '2024-06-21T09:49:54Z' + dataset_id_hash: f084081c52ddda14328294d7bb7f13f4 + - dataset_name: wts_validation_fastq__SBJ00238 + dataset_creation_time: '2024-06-21T09:50:29Z' + dataset_id_hash: ba04ff08acbfbd1c17f1aadc0e8b3cf5 + - dataset_name: wts_multiqc__2023_07_21__4_2_4__Ref_1_Good__SBJ01563 + dataset_creation_time: '2024-06-21T11:33:06Z' + dataset_id_hash: 8de637be95f6ded72f61103bc842da45 + - dataset_name: wts_multiqc__2023_07_21__4_2_4__Ref_2_Good__SBJ01147 + dataset_creation_time: '2024-06-21T11:34:05Z' + dataset_id_hash: e11d32cd8efced32065a52eea33b06d1 + - dataset_name: wts_multiqc__2023_07_21__4_2_4__Ref_3_Good__SBJ01620 + dataset_creation_time: '2024-06-21T11:34:29Z' + dataset_id_hash: 0f0fee1a6b1f7b46978643839ffc0e88 + - dataset_name: wts_multiqc__2023_07_21__4_2_4__Ref_4_Bad__SBJ01286 + dataset_creation_time: '2024-06-21T11:34:51Z' + dataset_id_hash: 3d9dae1be84d29848f24df81d1ab4219 + - dataset_name: wts_multiqc__2023_07_21__4_2_4__Ref_5_Bad__SBJ01673 + dataset_creation_time: '2024-06-21T11:35:25Z' + dataset_id_hash: 42a9396b3f5d7e919e30a0f59f2401b7 + bundle_id: bb512f5d-6e8c-4e1b-8124-520b4185469b + bundle_data_ids: + - fil.2082d35d90fb4b9e126a08dc7a0472f4 + - fil.33b0c303aa2a44efda7008dc8578d1bb + - fil.8ab696eccee945064fe608dc9159afed + - fil.8950646b2bcf4137dac908dc8578d1bb + - fil.361af4dcff7840b5dab808dc8578d1bb + - fil.e956bc1d6e124433503f08dc9159afed + - fil.962f7248f6bb4d4b9b1f08dc9833b59f + - fil.00db7f575e3c4741766608dc8682e79a + - fil.848678f252004cae726508dc8578d1b7 + - fil.e47895b2674b40cf727508dc8578d1b7 + - fil.f7b97fcf876b4409727608dc8578d1b7 + - fil.ad6640db600e44e1727a08dc8578d1b7 + - fil.6e3e68b7fc8b48ef76a908dc8682e79a + - fil.25ae81b4f33146b2769708dc8682e79a + - fil.dc806da29f02402076aa08dc8682e79a + - fil.8ed5724bce234ff276ad08dc8682e79a + - fil.2c3073bee29c47ea76ae08dc8682e79a + - fil.a191c268b58b414972ae08dc8578d1b7 + - fil.f4d61a69d418416a76af08dc8682e79a + - fil.554ab8b39c49488a76b208dc8682e79a + - fil.728b7d6332dd4d2e72af08dc8578d1b7 + - fol.4bfb05e08c2c46e7927908dc8578d1b7 + - fol.a3f65803908c4f29969508dc8682e79a + - fol.841783fe78e64b7e96cd08dc8682e79a + - fol.0dcfcd90b98d4b58925408dc8578d1b7 + - fol.7ff6b53c0f0148b7970c08dc8682e79a + bundle_pipeline_id: 54bf7b44-e783-4935-8db3-b5533afc92f4 + bundle_url: + https://ica.illumina.com/ica/bundles/bb512f5d-6e8c-4e1b-8124-520b4185469b/bundleDetails + bundle_categories: + - wts + - somatic + - validation + - secondary-analysis + projects: + - development + - staging + - bundle_name: dragen_transcriptome_pipeline_prod__4_2_4__20240801063424 + bundle_description: 'This bundle has been generated by the release of workflows/dragen-transcriptome-pipeline/4.2.4/dragen-transcriptome-pipeline__4.2.4.cwl. + The pipeline can be found at https://github.com/umccr/cwl-ica/releases/tag/dragen-transcriptome-pipeline/4.2.4__20240801063424. ' + bundle_version: v9_r3__20240801063424 + bundle_version_description: Bundle version description is currently redundant + while we cannot append versions to bundles. Regardless - the bunch version is + v9_r3 + bundle_region_id: 1efd315d-6309-4d7e-826b-d3824b0b5acb + bundle_region_city_name: Sydney + tenant_name: umccr-prod + pipeline_path: + workflows/dragen-transcriptome-pipeline/4.2.4/dragen-transcriptome-pipeline__4.2.4.cwl + pipeline_name: dragen-transcriptome-pipeline + pipeline_version: 4.2.4 + pipeline_release_url: + https://github.com/umccr/cwl-ica/releases/tag/dragen-transcriptome-pipeline/4.2.4__20240801063424 + pipeline_commit_id: dragen-transcriptome-pipeline/4.2.4__20240801063424 + pipeline_checksum: b63aaf8d3b9fc4800cdd1fbd26a55772 + pipeline_project_id: 5844391a-69db-4b52-86b5-6a0d55c2386f + bundle_creation_time: '2024-08-01T06:40:26Z' + bundle_release_status: draft + bunch_name: dragen_transcriptome_pipeline_prod__4_2_4 + bunch_version: v9_r3 + bunch_datasets: + - dataset_name: dragen_hash_table_v9_r3_alt_masked_cnv_hla_rna + dataset_creation_time: '2024-06-21T09:21:42Z' + dataset_id_hash: a5fe1d2e2fe35737bdbc0871d46878e1 + - dataset_name: hg38_fasta + dataset_creation_time: '2024-06-21T11:31:50Z' + dataset_id_hash: 5f129b14aca5b4a7fda902590b15abc2 + - dataset_name: arriba_2_4_0 + dataset_creation_time: '2024-06-21T11:31:26Z' + dataset_id_hash: 8695cf0a98c5cda5726f67d4922da67f + - dataset_name: hg38_v39_gencode_annotation + dataset_creation_time: '2024-07-08T01:23:37Z' + dataset_id_hash: 7e88d10c15bfc88ee2e9527962c63984 + - dataset_name: wts_multiqc__2023_07_21__4_2_4__Ref_1_Good__SBJ01563 + dataset_creation_time: '2024-06-21T11:33:06Z' + dataset_id_hash: 8de637be95f6ded72f61103bc842da45 + - dataset_name: wts_multiqc__2023_07_21__4_2_4__Ref_2_Good__SBJ01147 + dataset_creation_time: '2024-06-21T11:34:05Z' + dataset_id_hash: e11d32cd8efced32065a52eea33b06d1 + - dataset_name: wts_multiqc__2023_07_21__4_2_4__Ref_3_Good__SBJ01620 + dataset_creation_time: '2024-06-21T11:34:29Z' + dataset_id_hash: 0f0fee1a6b1f7b46978643839ffc0e88 + - dataset_name: wts_multiqc__2023_07_21__4_2_4__Ref_4_Bad__SBJ01286 + dataset_creation_time: '2024-06-21T11:34:51Z' + dataset_id_hash: 3d9dae1be84d29848f24df81d1ab4219 + - dataset_name: wts_multiqc__2023_07_21__4_2_4__Ref_5_Bad__SBJ01673 + dataset_creation_time: '2024-06-21T11:35:25Z' + dataset_id_hash: 42a9396b3f5d7e919e30a0f59f2401b7 + bundle_id: fd36c3be-15ff-445a-bbff-98d09aef69cd + bundle_data_ids: + - fil.2082d35d90fb4b9e126a08dc7a0472f4 + - fil.33b0c303aa2a44efda7008dc8578d1bb + - fil.8ab696eccee945064fe608dc9159afed + - fil.8950646b2bcf4137dac908dc8578d1bb + - fil.361af4dcff7840b5dab808dc8578d1bb + - fil.e956bc1d6e124433503f08dc9159afed + - fil.962f7248f6bb4d4b9b1f08dc9833b59f + - fol.4bfb05e08c2c46e7927908dc8578d1b7 + - fol.a3f65803908c4f29969508dc8682e79a + - fol.841783fe78e64b7e96cd08dc8682e79a + - fol.0dcfcd90b98d4b58925408dc8578d1b7 + - fol.7ff6b53c0f0148b7970c08dc8682e79a + bundle_pipeline_id: 54bf7b44-e783-4935-8db3-b5533afc92f4 + bundle_url: + https://ica.illumina.com/ica/bundles/fd36c3be-15ff-445a-bbff-98d09aef69cd/bundleDetails + bundle_categories: + - wts + - somatic + - production + - secondary-analysis + projects: + - production