diff --git a/modules/msk/generatemutfasta/main.nf b/modules/msk/generatemutfasta/main.nf index 7d4588aa..b6e3c155 100644 --- a/modules/msk/generatemutfasta/main.nf +++ b/modules/msk/generatemutfasta/main.nf @@ -37,10 +37,10 @@ process GENERATEMUTFASTA { --maf_file ${inputMaf} cat <<-END_VERSIONS > versions.yml - "${task.process}": - generateMutFasta: \$(echo \$(generateMutFasta.py -v)) - mutalyzer: \$(echo \$(mutalyzer_normalizer -v | tr '\n' ' ' | awk '{print \$3}')) - END_VERSIONS + "${task.process}": + generateMutFasta: \$(echo \$(generateMutFasta.py -v)) + mutalyzer: \$(echo \$(mutalyzer_normalizer -v | tr '\n' ' ' | awk '{print \$3}')) + END_VERSIONS """ stub: @@ -53,9 +53,9 @@ process GENERATEMUTFASTA { touch ${prefix}_out/${prefix}.WT.sequences.fa touch ${prefix}_out/${prefix}_generate_mut_fasta.log cat <<-END_VERSIONS > versions.yml - "${task.process}": - generateMutFasta: \$(echo \$(generateMutFasta.py -v)) - mutalyzer: \$(echo \$(mutalyzer_normalizer -v | tr '\n' ' ' | awk '{print \$3}')) - END_VERSIONS + "${task.process}": + generateMutFasta: \$(echo \$(generateMutFasta.py -v)) + mutalyzer: \$(echo \$(mutalyzer_normalizer -v | tr '\n' ' ' | awk '{print \$3}')) + END_VERSIONS """ } diff --git a/modules/msk/generatemutfasta/resources/usr/bin/generateMutFasta.py b/modules/msk/generatemutfasta/resources/usr/bin/generateMutFasta.py index 1afc95ce..b15a5a86 100755 --- a/modules/msk/generatemutfasta/resources/usr/bin/generateMutFasta.py +++ b/modules/msk/generatemutfasta/resources/usr/bin/generateMutFasta.py @@ -131,6 +131,7 @@ def main(): mutations.append(mut) out_fa.close() + out_WT_fa.close() debug_out_fa.close() logger.info("\tMAF mutations summary") @@ -208,11 +209,11 @@ def __init__(self, maf_row): variant_type_map = { "missense_mutation": "M", - "nonsense_nutation": "X", + "nonsense_mutation": "X", "silent_mutation": "S", "silent": "S", - "frame_shift_ins": "I+", - "frame_shift_del": "I-", + "frame_shift_ins": "Fi", + "frame_shift_del": "Fd", "in_frame_ins": "If", "in_frame_del": "Id", "splice_site": "Sp", diff --git a/modules/msk/generatemutfasta/tests/main.nf.test.snap b/modules/msk/generatemutfasta/tests/main.nf.test.snap index 6d43b972..4614aa3a 100644 --- a/modules/msk/generatemutfasta/tests/main.nf.test.snap +++ b/modules/msk/generatemutfasta/tests/main.nf.test.snap @@ -2,7 +2,7 @@ "generatemutfasta - maf - fasta": { "content": [ [ - "versions.yml:md5,825989b899b3a496c7a3e3560389a424" + "versions.yml:md5,4fa5b9a30fd2979e399cd78fc2c8d9b9" ], [ [ @@ -26,9 +26,9 @@ ], "meta": { "nf-test": "0.9.2", - "nextflow": "24.10.5" + "nextflow": "25.10.3" }, - "timestamp": "2026-02-09T15:03:37.884362" + "timestamp": "2026-04-30T16:46:35.278842" }, "generatemutfasta - maf - fasta - stub": { "content": [ @@ -61,7 +61,7 @@ ] ], "3": [ - "versions.yml:md5,e653e8a2e136536d683b73afd3e0d00d" + "versions.yml:md5,4fa5b9a30fd2979e399cd78fc2c8d9b9" ], "mut_fasta": [ [ @@ -82,7 +82,7 @@ ] ], "versions": [ - "versions.yml:md5,e653e8a2e136536d683b73afd3e0d00d" + "versions.yml:md5,4fa5b9a30fd2979e399cd78fc2c8d9b9" ], "wt_fasta": [ [ @@ -97,8 +97,8 @@ ], "meta": { "nf-test": "0.9.2", - "nextflow": "24.10.5" + "nextflow": "25.10.3" }, - "timestamp": "2026-02-09T15:03:51.569621" + "timestamp": "2026-04-30T16:46:48.069748" } -} +} \ No newline at end of file diff --git a/modules/msk/mutalyzer/retriever/main.nf b/modules/msk/mutalyzer/retriever/main.nf index 41dd212d..33cb7199 100644 --- a/modules/msk/mutalyzer/retriever/main.nf +++ b/modules/msk/mutalyzer/retriever/main.nf @@ -18,14 +18,35 @@ process MUTALYZER_RETRIEVER { def prefix = task.ext.prefix ?: "${meta.id}" """ - if ! bgzip --reindex ${fasta} > /dev/null 2>&1 - then - # Re-compress fasta with bgzip - mv ${fasta} ${fasta.baseName}.tmp.gzip - gunzip -c ${fasta.baseName}.tmp.gzip | bgzip -c > ${fasta} + + # Read first 3 bytes and route by magic: bgzip=1f8b08,gzip=1f8b08, bzip2=425a68. + # Plain-text FASTA/FASTQ commonly starts with '>' (3e) or '@' (40). + MAGIC=\$(head -c 3 "${fasta}" | od -An -tx1 | tr -d ' \n') + + case "\$MAGIC" in + 1f8b08) + if ! bgzip --reindex ${fasta} > /dev/null 2>&1; then + mv ${fasta} ${fasta.baseName}.tmp.gzip + gunzip -c ${fasta.baseName}.tmp.gzip | bgzip -c > ${fasta} + fi + ;; + 425a68) + mv ${fasta} ${fasta.baseName}.tmp.bzip2 + bunzip2 -c "${fasta.baseName}.tmp.bzip2" | bgzip -c > ${fasta} + ;; + 3e*|40*) + mv ${fasta} ${fasta.baseName}.tmp + bgzip -c "${fasta.baseName}.tmp" > "${fasta}" + ;; + *) + echo "ERROR: Unsupported input format for ${fasta}." >&2 + echo " Expected: bgzip/gzip, bzip2, or plain-text FASTA/FASTQ." >&2 + exit 1 + ;; + esac + bgzip --reindex ${fasta} - fi # Build cache @@ -44,9 +65,9 @@ process MUTALYZER_RETRIEVER { tar -zcf ${prefix}.tar.gz cache/ cat <<-END_VERSIONS > versions.yml - "${task.process}": - mutalyzer: \$(echo \$(mutalyzer_normalizer -v | tr '\n' ' ' | awk '{print \$3}')) - END_VERSIONS + "${task.process}": + mutalyzer: \$(echo \$(mutalyzer_normalizer -v | tr '\n' ' ' | awk '{print \$3}')) + END_VERSIONS """ stub: @@ -56,8 +77,8 @@ process MUTALYZER_RETRIEVER { """ touch ${prefix}.tar.gz cat <<-END_VERSIONS > versions.yml - "${task.process}": - mutalyzer: \$(echo \$(mutalyzer_normalizer -v | tr '\n' ' ' | awk '{print \$3}')) - END_VERSIONS + "${task.process}": + mutalyzer: \$(echo \$(mutalyzer_normalizer -v | tr '\n' ' ' | awk '{print \$3}')) + END_VERSIONS """ } diff --git a/modules/msk/mutalyzer/retriever/tests/main.nf.test b/modules/msk/mutalyzer/retriever/tests/main.nf.test index 82bc2f03..7ffd0e1a 100644 --- a/modules/msk/mutalyzer/retriever/tests/main.nf.test +++ b/modules/msk/mutalyzer/retriever/tests/main.nf.test @@ -63,6 +63,76 @@ nextflow_process { } + test("MUTALYZER_RETRIEVER - bzip2 fasta - tar") { + + when { + + process { + """ + + input[0] = [ + [ id:'test' ], // meta map + file(params.test_data_mskcc['neoantigen']['small_test_chr2and16']['fa_bz2'], checkIfExists: true), + file(params.test_data_mskcc['neoantigen']['small_test_chr2and16']['gff3'], checkIfExists: true) + ] + + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out.versions, file(process.out.mutalyzer_cache[0]).name).match() } + ) + } + + } + + test("MUTALYZER_RETRIEVER - unzipped fasta - tar") { + + setup { + run("GUNZIP_FASTA") { + script "./setup.nf" + process { + """ + + input = [ + file(params.test_data_mskcc['neoantigen']['small_test_chr2and16']['fa_gzip'], checkIfExists: true) + ] + + """ + } + + } + } + + when { + + process { + """ + + input[0] = GUNZIP_FASTA.out.fasta.map { fa -> + [ + [ id:'test' ], // meta map + fa, + file(params.test_data_mskcc['neoantigen']['small_test_chr2and16']['gff3'], checkIfExists: true) + ] + } + + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out.versions, file(process.out.mutalyzer_cache[0]).name).match() } + ) + } + + } + test("MUTALYZER_RETRIEVER - fasta - tar - stub") { diff --git a/modules/msk/mutalyzer/retriever/tests/main.nf.test.snap b/modules/msk/mutalyzer/retriever/tests/main.nf.test.snap index d851969c..dc140147 100644 --- a/modules/msk/mutalyzer/retriever/tests/main.nf.test.snap +++ b/modules/msk/mutalyzer/retriever/tests/main.nf.test.snap @@ -2,40 +2,66 @@ "MUTALYZER_RETRIEVER - bgzip fasta - tar": { "content": [ [ - "versions.yml:md5,03f8b4f0a527f3d4eb0f93aebf41774c" + "versions.yml:md5,4ab2d845297c3e2b5da08dcdfb597219" ], "test.tar.gz" ], "meta": { "nf-test": "0.9.3", - "nextflow": "25.10.0" + "nextflow": "25.10.4" }, - "timestamp": "2025-11-19T15:47:30.148934" + "timestamp": "2026-04-22T17:24:36.805516" }, "MUTALYZER_RETRIEVER - gzip fasta - tar": { "content": [ [ - "versions.yml:md5,03f8b4f0a527f3d4eb0f93aebf41774c" + "versions.yml:md5,4ab2d845297c3e2b5da08dcdfb597219" ], "test.tar.gz" ], "meta": { "nf-test": "0.9.3", - "nextflow": "25.10.0" + "nextflow": "25.10.4" }, - "timestamp": "2025-11-19T15:48:41.373661" + "timestamp": "2026-04-22T17:26:20.666263" + }, + "MUTALYZER_RETRIEVER - bzip2 fasta - tar": { + "content": [ + [ + "versions.yml:md5,4ab2d845297c3e2b5da08dcdfb597219" + ], + "test.tar.gz" + ], + "meta": { + "nf-test": "0.9.3", + "nextflow": "25.10.4" + }, + "timestamp": "2026-04-23T10:36:15.363805" + }, + "MUTALYZER_RETRIEVER - unzipped fasta - tar": { + "content": [ + [ + "versions.yml:md5,4ab2d845297c3e2b5da08dcdfb597219" + ], + "test.tar.gz" + ], + "meta": { + "nf-test": "0.9.3", + "nextflow": "25.10.4" + }, + "timestamp": "2026-04-22T18:05:42.309498" }, "MUTALYZER_RETRIEVER - fasta - tar - stub": { "content": [ [ - "versions.yml:md5,03f8b4f0a527f3d4eb0f93aebf41774c" + "versions.yml:md5,4ab2d845297c3e2b5da08dcdfb597219" ], "test.tar.gz" ], "meta": { "nf-test": "0.9.3", - "nextflow": "25.10.0" + "nextflow": "25.10.4" }, - "timestamp": "2025-11-19T15:48:45.850408" + "timestamp": "2026-04-22T17:26:43.924997" } } \ No newline at end of file diff --git a/modules/msk/mutalyzer/retriever/tests/setup.nf b/modules/msk/mutalyzer/retriever/tests/setup.nf new file mode 100644 index 00000000..4610861a --- /dev/null +++ b/modules/msk/mutalyzer/retriever/tests/setup.nf @@ -0,0 +1,14 @@ +process GUNZIP_FASTA { + container "ghcr.io/mskcc-omics-workflows/neoantigen-utils-base:1.4.0" + + input: + path fasta_gzip + + output: + path "unzipped.fa", emit: fasta + + script: + """ + gunzip -c ${fasta_gzip} > unzipped.fa + """ +} diff --git a/modules/msk/neoantigenediting/aligntoiedb/main.nf b/modules/msk/neoantigenediting/aligntoiedb/main.nf index 7d385443..c61b8f44 100644 --- a/modules/msk/neoantigenediting/aligntoiedb/main.nf +++ b/modules/msk/neoantigenediting/aligntoiedb/main.nf @@ -29,9 +29,9 @@ process NEOANTIGENEDITING_ALIGNTOIEDB { cat <<-END_VERSIONS > versions.yml - "${task.process}": - neoantigenEditing: \$NEOANTIGEN_EDITING_TAG - END_VERSIONS + "${task.process}": + neoantigenEditing: \$NEOANTIGEN_EDITING_TAG + END_VERSIONS """ stub: @@ -42,8 +42,8 @@ process NEOANTIGENEDITING_ALIGNTOIEDB { touch iedb_alignments_example.txt cat <<-END_VERSIONS > versions.yml - "${task.process}": - neoantigenEditing: \$NEOANTIGEN_EDITING_TAG - END_VERSIONS + "${task.process}": + neoantigenEditing: \$NEOANTIGEN_EDITING_TAG + END_VERSIONS """ } diff --git a/modules/msk/neoantigenediting/aligntoiedb/resources/usr/bin/align_neoantigens_to_IEDB.py b/modules/msk/neoantigenediting/aligntoiedb/resources/usr/bin/align_neoantigens_to_IEDB.py index 9ff645a1..69d8d224 100755 --- a/modules/msk/neoantigenediting/aligntoiedb/resources/usr/bin/align_neoantigens_to_IEDB.py +++ b/modules/msk/neoantigenediting/aligntoiedb/resources/usr/bin/align_neoantigens_to_IEDB.py @@ -15,7 +15,13 @@ import pandas as pd from Bio import SeqIO -from Bio.pairwise2 import align + +try: + from Bio.Align import PairwiseAligner, substitution_matrices + _USE_PAIRWISE_ALIGNER = True +except ImportError: + from Bio.pairwise2 import align as _pairwise2_align + _USE_PAIRWISE_ALIGNER = False def load_blosum62_mat(): @@ -65,11 +71,33 @@ def load_blosum62_mat(): return blosum62 +class _AlignmentResult: + """Minimal alignment result with a score attribute.""" + def __init__(self, score=0.0): + self.score = score + + def align_peptides(seq1, seq2, matrix): gap_open = -11 gap_extend = -1 - aln = align.localds(seq1.upper(), seq2.upper(), matrix, gap_open, gap_extend) - return aln[0] + s1 = seq1.upper() + s2 = seq2.upper() + if _USE_PAIRWISE_ALIGNER: + blosum62 = substitution_matrices.load("BLOSUM62") + aligner = PairwiseAligner() + aligner.mode = "local" + aligner.substitution_matrix = blosum62 + aligner.open_gap_score = gap_open + aligner.extend_gap_score = gap_extend + alignments = aligner.align(s1, s2) + if not alignments: + return _AlignmentResult(0.0) + return alignments[0] + else: + aln = _pairwise2_align.localds(s1, s2, matrix, gap_open, gap_extend) + if not aln: + return _AlignmentResult(0.0) + return aln[0] def run_blastp_n(pep_list, blastdb): diff --git a/modules/msk/neoantigenediting/computefitness/main.nf b/modules/msk/neoantigenediting/computefitness/main.nf index 00e2675b..62bf35a1 100644 --- a/modules/msk/neoantigenediting/computefitness/main.nf +++ b/modules/msk/neoantigenediting/computefitness/main.nf @@ -27,9 +27,9 @@ process NEOANTIGENEDITING_COMPUTEFITNESS { ${args} cat <<-END_VERSIONS > versions.yml - "${task.process}": - neoantigenEditing: \$NEOANTIGEN_EDITING_TAG - END_VERSIONS + "${task.process}": + neoantigenEditing: \$NEOANTIGEN_EDITING_TAG + END_VERSIONS """ stub: @@ -40,8 +40,8 @@ process NEOANTIGENEDITING_COMPUTEFITNESS { touch patient_data_annotated.json cat <<-END_VERSIONS > versions.yml - "${task.process}": - neoantigenEditing: \$NEOANTIGEN_EDITING_TAG - END_VERSIONS + "${task.process}": + neoantigenEditing: \$NEOANTIGEN_EDITING_TAG + END_VERSIONS """ } diff --git a/modules/msk/neoantigenediting/computefitness/resources/usr/bin/compute_fitness.py b/modules/msk/neoantigenediting/computefitness/resources/usr/bin/compute_fitness.py index f3a52a1e..77ce239f 100755 --- a/modules/msk/neoantigenediting/computefitness/resources/usr/bin/compute_fitness.py +++ b/modules/msk/neoantigenediting/computefitness/resources/usr/bin/compute_fitness.py @@ -294,7 +294,7 @@ def clean_data(tree): parser.add_argument("--a_param", help="weight corresponding to a", default = 22.897590714815188) parser.add_argument("--k_param", help="weight corresponding to k", default = 1) parser.add_argument("--w_param", help="weight corresponding to w", default = 0.22402192838740312) - + args = parser.parse_args() alignment_file = args.alignment @@ -303,8 +303,8 @@ def clean_data(tree): a = float(args.a_param) k = float(args.k_param) w = float(args.w_param) - - + + epidist = EpitopeDistance() sample_file = patient_file @@ -326,10 +326,13 @@ def clean_data(tree): mut2neo = defaultdict(list) for neo in neoantigens: score_list = naseq2scores[neo["sequence"]] - neo["R"] = compute_R(score_list, a, k) - neo["logC"] = epidist.epitope_dist(neo["sequence"], neo["WT_sequence"]) - neo["logA"] = np.log(neo["KdWT"] / neo["Kd"]) - neo["quality"] = (w * neo["logC"] + (1 - w) * neo["logA"]) * neo["R"] + neo["R"] = compute_R(score_list, a, k) if score_list else 0.0 + if neo["Kd"] == 0 or neo["KdWT"] == 0: + neo["logC"] = neo["logA"] = neo["quality"] = 0.0 + else: + neo["logC"] = epidist.epitope_dist(neo["sequence"], neo["WT_sequence"]) + neo["logA"] = np.log(neo["KdWT"] / neo["Kd"]) + neo["quality"] = (w * neo["logC"] + (1 - w) * neo["logA"]) * neo["R"] mut2neo[neo["mutation_id"]].append(neo) mut2dg = mark_driver_gene_mutations(sjson) diff --git a/modules/msk/neoantigenediting/computefitness/tests/main.nf.test b/modules/msk/neoantigenediting/computefitness/tests/main.nf.test index b0d14c70..9d0df1e0 100644 --- a/modules/msk/neoantigenediting/computefitness/tests/main.nf.test +++ b/modules/msk/neoantigenediting/computefitness/tests/main.nf.test @@ -26,7 +26,7 @@ nextflow_process { file(params.test_data_mskcc['neoantigen']['patient_data'], checkIfExists: true), file(params.test_data_mskcc['neoantigen']['iedb_alignments'], checkIfExists: true) ] - + """ } diff --git a/modules/msk/neoantigenutils/convertannotjson/main.nf b/modules/msk/neoantigenutils/convertannotjson/main.nf index ee40d50d..981e6a85 100644 --- a/modules/msk/neoantigenutils/convertannotjson/main.nf +++ b/modules/msk/neoantigenutils/convertannotjson/main.nf @@ -24,9 +24,9 @@ process NEOANTIGENUTILS_CONVERTANNOTJSON { --output_file ${prefix}_neoantigens.tsv cat <<-END_VERSIONS > versions.yml - "${task.process}": - convertannotjson: \$(echo \$(convertannotjson.py -v)) - END_VERSIONS + "${task.process}": + convertannotjson: \$(echo \$(convertannotjson.py -v)) + END_VERSIONS """ stub: @@ -37,8 +37,8 @@ process NEOANTIGENUTILS_CONVERTANNOTJSON { touch ${prefix}_neoantigens.tsv cat <<-END_VERSIONS > versions.yml - "${task.process}": - convertannotjson: \$(echo \$(convertannotjson.py -v)) - END_VERSIONS + "${task.process}": + convertannotjson: \$(echo \$(convertannotjson.py -v)) + END_VERSIONS """ } diff --git a/modules/msk/neoantigenutils/formatnetmhcpan/main.nf b/modules/msk/neoantigenutils/formatnetmhcpan/main.nf index 5e3418d0..58efeeaa 100644 --- a/modules/msk/neoantigenutils/formatnetmhcpan/main.nf +++ b/modules/msk/neoantigenutils/formatnetmhcpan/main.nf @@ -31,9 +31,9 @@ process NEOANTIGENUTILS_FORMATNETMHCPAN { ${netmhcOutputFrom} cat <<-END_VERSIONS > versions.yml - "${task.process}": - formatNetmhcpanOutput: \$(echo \$(format_netmhcpan_output.py -v)) - END_VERSIONS + "${task.process}": + formatNetmhcpanOutput: \$(echo \$(format_netmhcpan_output.py -v)) + END_VERSIONS """ stub: @@ -44,8 +44,8 @@ process NEOANTIGENUTILS_FORMATNETMHCPAN { """ touch ${prefix}.${netmhcOutputType}.${netmhcOutputFrom}.tsv cat <<-END_VERSIONS > versions.yml - "${task.process}": - formatNetmhcpanOutput: \$(echo \$(format_netmhcpan_output.py -v)) - END_VERSIONS + "${task.process}": + formatNetmhcpanOutput: \$(echo \$(format_netmhcpan_output.py -v)) + END_VERSIONS """ } diff --git a/modules/msk/neoantigenutils/generatehlastring/main.nf b/modules/msk/neoantigenutils/generatehlastring/main.nf index 30389cca..e1c7ad2a 100644 --- a/modules/msk/neoantigenutils/generatehlastring/main.nf +++ b/modules/msk/neoantigenutils/generatehlastring/main.nf @@ -24,9 +24,9 @@ process NEOANTIGENUTILS_GENERATEHLASTRING { cat <<-END_VERSIONS > versions.yml - "${task.process}": - generateHLAstring: \$(echo \$(generateHLAString.sh -v)) - END_VERSIONS + "${task.process}": + generateHLAstring: \$(echo \$(generateHLAString.sh -v)) + END_VERSIONS """ stub: @@ -36,8 +36,8 @@ process NEOANTIGENUTILS_GENERATEHLASTRING { """ echo "HLA-test:01,HLA-test2:02" cat <<-END_VERSIONS > versions.yml - "${task.process}": - generateHLAstring: \$(echo \$(generateHLAString.sh -v)) - END_VERSIONS + "${task.process}": + generateHLAstring: \$(echo \$(generateHLAString.sh -v)) + END_VERSIONS """ } diff --git a/modules/msk/neoantigenutils/neoantigeninput/main.nf b/modules/msk/neoantigenutils/neoantigeninput/main.nf index 316170e0..08454756 100644 --- a/modules/msk/neoantigenutils/neoantigeninput/main.nf +++ b/modules/msk/neoantigenutils/neoantigeninput/main.nf @@ -1,6 +1,6 @@ process NEOANTIGENUTILS_NEOANTIGENINPUT { tag "$meta.id" - label 'process_single' + label 'process_medium' container "ghcr.io/mskcc-omics-workflows/neoantigen-utils-base:1.4.0" input: @@ -46,9 +46,9 @@ process NEOANTIGENUTILS_NEOANTIGENINPUT { ${args} cat <<-END_VERSIONS > versions.yml - "${task.process}": - neoantigeninput: \$(echo \$(generate_input.py -v)) - END_VERSIONS + "${task.process}": + neoantigeninput: \$(echo \$(generate_input.py -v)) + END_VERSIONS """ stub: @@ -61,8 +61,8 @@ process NEOANTIGENUTILS_NEOANTIGENINPUT { touch ${patientid}_${id}_input.json cat <<-END_VERSIONS > versions.yml - "${task.process}": - neoantigeninput: \$(echo \$(generate_input.py -v)) - END_VERSIONS + "${task.process}": + neoantigeninput: \$(echo \$(generate_input.py -v)) + END_VERSIONS """ } diff --git a/modules/msk/neoantigenutils/neoantigeninput/resources/usr/bin/generate_input.py b/modules/msk/neoantigenutils/neoantigeninput/resources/usr/bin/generate_input.py index 56c93367..35323413 100755 --- a/modules/msk/neoantigenutils/neoantigeninput/resources/usr/bin/generate_input.py +++ b/modules/msk/neoantigenutils/neoantigeninput/resources/usr/bin/generate_input.py @@ -527,7 +527,7 @@ def find_most_similar_string(target, strings): # match if ( (WTid in WTdict) - and IDsplit[1][0] != "I" + and IDsplit[1][0] not in ("I", "F") ): #This block takes care of Missense mutations caused by polymorphisims matchfound = True @@ -536,7 +536,7 @@ def find_most_similar_string(target, strings): else: # Here we take care of INDELS and everything else - if ("-" in IDsplit[1] or "+" in IDsplit[1]): + if IDsplit[1].startswith("Fi") or IDsplit[1].startswith("Fd"): frameshift = True ( best_pepmatch, @@ -555,12 +555,14 @@ def find_most_similar_string(target, strings): # In this case we don't want to report the peptide as a neoantigen, its not neo continue - elif ( - best_pepmatch[0] != row_mut["peptide"][0] - and best_pepmatch2[0] == row_mut["peptide"][0] - ) or ( - best_pepmatch[-1] != row_mut["peptide"][-1] - and best_pepmatch2[-1] == row_mut["peptide"][-1] + elif best_pepmatch2 is not None and ( + ( + best_pepmatch[0] != row_mut["peptide"][0] + and best_pepmatch2[0] == row_mut["peptide"][0] + ) or ( + best_pepmatch[-1] != row_mut["peptide"][-1] + and best_pepmatch2[-1] == row_mut["peptide"][-1] + ) ): # We should preferentially match the first AA if we can. Sometimes the pairwise alignment isnt the best at this so we do a little check here. # It will also do this when the last AA of the best match doesnt match but the last A of the second best match does @@ -694,11 +696,11 @@ def makeID(maf_row): variant_type_map = { "missense_mutation": "M", - "nonsense_nutation": "X", + "nonsense_mutation": "X", "silent_mutation": "S", "silent": "S", - "frame_shift_ins": "I+", - "frame_shift_del": "I-", + "frame_shift_ins": "Fi", + "frame_shift_del": "Fd", "in_frame_ins": "If", "in_frame_del": "Id", "splice_site": "Sp", @@ -1036,6 +1038,7 @@ def determine_NMD(chrom, pos,num_windows,len_indel, ensembl, transcriptID=None): NMD = "False" + PTC_exon = None pos = int(pos) + 1 for i in range(0,len(exon_ranges)): if pos>=exon_ranges[i][0] and pos<=exon_ranges[i][1]: @@ -1058,7 +1061,7 @@ def determine_NMD(chrom, pos,num_windows,len_indel, ensembl, transcriptID=None): else: mut_to_stop_dist = mut_to_stop_dist - dist - if PTC_exon == exon_ranges[-1]: + if PTC_exon is not None and PTC_exon == exon_ranges[-1]: # "on the last exon" NMD = "Last Exon" else: @@ -1155,4 +1158,3 @@ def parse_args(): print("patient_data_file File:", args.patient_data_file) main(args) - diff --git a/modules/msk/neoantigenutils/neoantigeninput/tests/main.nf.test b/modules/msk/neoantigenutils/neoantigeninput/tests/main.nf.test index 6582671d..2234f781 100644 --- a/modules/msk/neoantigenutils/neoantigeninput/tests/main.nf.test +++ b/modules/msk/neoantigenutils/neoantigeninput/tests/main.nf.test @@ -157,4 +157,4 @@ nextflow_process { } -} \ No newline at end of file +} diff --git a/modules/msk/neoantigenutils/neoantigeninput/tests/main.nf.test.snap b/modules/msk/neoantigenutils/neoantigeninput/tests/main.nf.test.snap index 40127660..2fd69f11 100644 --- a/modules/msk/neoantigenutils/neoantigeninput/tests/main.nf.test.snap +++ b/modules/msk/neoantigenutils/neoantigeninput/tests/main.nf.test.snap @@ -78,7 +78,7 @@ "id": "test", "single_end": false }, - "test_patient_test_input.json:md5,0c9e3ec012d543da7c2655ee6665cff3" + "test_patient_test_input.json:md5,8b26c4e2d6da8a5c5d73c9a26e295fc8" ] ], "1": [ @@ -90,7 +90,7 @@ "id": "test", "single_end": false }, - "test_patient_test_input.json:md5,0c9e3ec012d543da7c2655ee6665cff3" + "test_patient_test_input.json:md5,8b26c4e2d6da8a5c5d73c9a26e295fc8" ] ], "versions": [ diff --git a/modules/msk/neosv/main.nf b/modules/msk/neosv/main.nf index a6bd5f4e..89746364 100644 --- a/modules/msk/neosv/main.nf +++ b/modules/msk/neosv/main.nf @@ -41,9 +41,9 @@ process NEOSV { cat <<-END_VERSIONS > versions.yml - "${task.process}": - NEOSV: \$NEOSV_TAG - END_VERSIONS + "${task.process}": + NEOSV: \$NEOSV_TAG + END_VERSIONS """ @@ -55,8 +55,8 @@ process NEOSV { touch ${prefix}.SV.MUT.fa cat <<-END_VERSIONS > versions.yml - "${task.process}": - NEOSV: \$NEOSV_TAG - END_VERSIONS + "${task.process}": + NEOSV: \$NEOSV_TAG + END_VERSIONS """ } diff --git a/modules/msk/neosv/meta.yml b/modules/msk/neosv/meta.yml index addf1986..2be2b0fe 100644 --- a/modules/msk/neosv/meta.yml +++ b/modules/msk/neosv/meta.yml @@ -48,20 +48,20 @@ output: description: | Groovy Map containing sample information e.g. `[ id:'sample1', single_end:false ]` - - "*.net.in.txt": + - "*.SV.MUT.fa": type: file description: Mutated SV sequences in a multifasta - pattern: "*.net.in.txt" + pattern: "*.SV.MUT.fa" - wtOut: - meta: type: map description: | Groovy Map containing sample information e.g. `[ id:'sample1', single_end:false ]` - - "*.WT.net.in.txt": + - "*.SV.WT.fa": type: file description: WT sequences in a multifasta - pattern: "*.WT.net.in.txt" + pattern: "*.SV.WT.fa" - versions: - versions.yml: type: file diff --git a/modules/msk/neosv/tests/main.nf.test.snap b/modules/msk/neosv/tests/main.nf.test.snap index 34b7fb5c..fb6db447 100644 --- a/modules/msk/neosv/tests/main.nf.test.snap +++ b/modules/msk/neosv/tests/main.nf.test.snap @@ -10,7 +10,7 @@ "id": "test", "single_end": false }, - "test.SV.MUT.fa:md5,646a1666817d924b926c0b3bd6f58af3" + "test.SV.MUT.fa:md5,6bf4a5a800bbc6e5786d9eea37d54d1e" ] ], [ @@ -19,15 +19,15 @@ "id": "test", "single_end": false }, - "test.SV.WT.fa:md5,dc236f5aa955bb6087c8e713d2c8d2f4" + "test.SV.WT.fa:md5,5387c207180152a8fff2edfa13cb1094" ] ] ], "meta": { "nf-test": "0.9.2", - "nextflow": "25.10.2" + "nextflow": "25.10.4" }, - "timestamp": "2025-12-17T16:42:38.342052753" + "timestamp": "2026-05-07T10:57:14.677491077" }, "neosv - fa - stub": { "content": [ diff --git a/modules/msk/netmhc3/main.nf b/modules/msk/netmhc3/main.nf index 5fea72f2..d6f83076 100644 --- a/modules/msk/netmhc3/main.nf +++ b/modules/msk/netmhc3/main.nf @@ -51,9 +51,9 @@ process NETMHC3 { mv hla_rejected.txt ${prefix}.hla_rejected.txt cat <<-END_VERSIONS > versions.yml - "${task.process}": - netmhc: v${NETMHC_VERSION} - END_VERSIONS + "${task.process}": + netmhc: v${NETMHC_VERSION} + END_VERSIONS """ @@ -72,8 +72,8 @@ process NETMHC3 { touch ${prefix}.hla_rejected.txt cat <<-END_VERSIONS > versions.yml - "${task.process}": - netmhc: v${NETMHC_VERSION} - END_VERSIONS + "${task.process}": + netmhc: v${NETMHC_VERSION} + END_VERSIONS """ } diff --git a/modules/msk/netmhcpan4/main.nf b/modules/msk/netmhcpan4/main.nf index 3ecc2a28..22ffc291 100644 --- a/modules/msk/netmhcpan4/main.nf +++ b/modules/msk/netmhcpan4/main.nf @@ -36,11 +36,11 @@ process NETMHCPAN4 { chmod 777 ${tmpDir} - cat ${inputSVFasta} >> ${inputFasta} + cat ${inputFasta} ${inputSVFasta} > combined_input.fa /usr/local/bin/netMHCpan-${NETMHCPAN_VERSION}/netMHCpan \ -s 0 \ -BA 1 \ - -f ${inputFasta} \ + -f combined_input.fa \ -a ${hla} \ -l 9,10 \ -inptype 0 \ @@ -51,9 +51,9 @@ process NETMHCPAN4 { cat <<-END_VERSIONS > versions.yml - "${task.process}": - netmhcpan: v${NETMHCPAN_VERSION} - END_VERSIONS + "${task.process}": + netmhcpan: v${NETMHCPAN_VERSION} + END_VERSIONS """ @@ -70,8 +70,8 @@ process NETMHCPAN4 { touch ${prefix}.${inputType}.netmhcpan.output cat <<-END_VERSIONS > versions.yml - "${task.process}": - netmhcpan: v${NETMHCPAN_VERSION} - END_VERSIONS + "${task.process}": + netmhcpan: v${NETMHCPAN_VERSION} + END_VERSIONS """ } diff --git a/modules/msk/netmhcstabpan/main.nf b/modules/msk/netmhcstabpan/main.nf index 976f693a..76ccbee0 100644 --- a/modules/msk/netmhcstabpan/main.nf +++ b/modules/msk/netmhcstabpan/main.nf @@ -38,20 +38,20 @@ process NETMHCSTABPAN { mkdir -p ${tmpDir} chmod 777 ${tmpDir} - cat ${inputSVFasta} >> ${inputFasta} + cat ${inputFasta} ${inputSVFasta} > combined_input.fa /usr/local/bin/netMHCstabpan-${NETMHCSTABPAN_VERSION}/netMHCstabpan \ -s -1 \ - -f ${inputFasta} \ + -f combined_input.fa \ -a ${hla} \ -l 9,10 \ -inptype 0 > ${prefix}.${inputType}.netmhcstabpan.output cat <<-END_VERSIONS > versions.yml - "${task.process}": - netmhcpan: v${NETMHCPAN_VERSION} - netmhcstabpan: v${NETMHCSTABPAN_VERSION} - END_VERSIONS + "${task.process}": + netmhcpan: v${NETMHCPAN_VERSION} + netmhcstabpan: v${NETMHCSTABPAN_VERSION} + END_VERSIONS """ @@ -70,9 +70,9 @@ process NETMHCSTABPAN { cat <<-END_VERSIONS > versions.yml - "${task.process}": - netmhcpan: v${NETMHCPAN_VERSION} - netmhcstabpan: v${NETMHCSTABPAN_VERSION} - END_VERSIONS + "${task.process}": + netmhcpan: v${NETMHCPAN_VERSION} + netmhcstabpan: v${NETMHCSTABPAN_VERSION} + END_VERSIONS """ } diff --git a/modules/msk/phylowgs/createinput/main.nf b/modules/msk/phylowgs/createinput/main.nf index 35885256..e00629da 100644 --- a/modules/msk/phylowgs/createinput/main.nf +++ b/modules/msk/phylowgs/createinput/main.nf @@ -26,9 +26,9 @@ process PHYLOWGS_CREATEINPUT { cat <<-END_VERSIONS > versions.yml - "${task.process}": - phylowgs: \$PHYLOWGS_TAG - END_VERSIONS + "${task.process}": + phylowgs: \$PHYLOWGS_TAG + END_VERSIONS """ stub: @@ -39,8 +39,8 @@ process PHYLOWGS_CREATEINPUT { touch ssm_data.txt cat <<-END_VERSIONS > versions.yml - "${task.process}": - phylowgs: \$PHYLOWGS_TAG - END_VERSIONS + "${task.process}": + phylowgs: \$PHYLOWGS_TAG + END_VERSIONS """ } diff --git a/modules/msk/phylowgs/multievolve/main.nf b/modules/msk/phylowgs/multievolve/main.nf index 8bf2044b..a821b664 100644 --- a/modules/msk/phylowgs/multievolve/main.nf +++ b/modules/msk/phylowgs/multievolve/main.nf @@ -27,9 +27,9 @@ process PHYLOWGS_MULTIEVOLVE { --cnvs ${cnv_data} cat <<-END_VERSIONS > versions.yml - "${task.process}": - phylowgs: \$PHYLOWGS_TAG - END_VERSIONS + "${task.process}": + phylowgs: \$PHYLOWGS_TAG + END_VERSIONS """ stub: @@ -40,8 +40,8 @@ process PHYLOWGS_MULTIEVOLVE { touch chains/trees.zip cat <<-END_VERSIONS > versions.yml - "${task.process}": - phylowgs: \$PHYLOWGS_TAG - END_VERSIONS + "${task.process}": + phylowgs: \$PHYLOWGS_TAG + END_VERSIONS """ } diff --git a/modules/msk/phylowgs/parsecnvs/main.nf b/modules/msk/phylowgs/parsecnvs/main.nf index f3f4e593..d1198d9f 100644 --- a/modules/msk/phylowgs/parsecnvs/main.nf +++ b/modules/msk/phylowgs/parsecnvs/main.nf @@ -25,9 +25,9 @@ process PHYLOWGS_PARSECNVS { ${facetsgenelevel} cat <<-END_VERSIONS > versions.yml - "${task.process}": - phylowgs: \$PHYLOWGS_TAG - END_VERSIONS + "${task.process}": + phylowgs: \$PHYLOWGS_TAG + END_VERSIONS """ stub: @@ -37,8 +37,8 @@ process PHYLOWGS_PARSECNVS { touch cnvs.txt cat <<-END_VERSIONS > versions.yml - "${task.process}": - phylowgs: \$PHYLOWGS_TAG - END_VERSIONS + "${task.process}": + phylowgs: \$PHYLOWGS_TAG + END_VERSIONS """ } diff --git a/modules/msk/phylowgs/writeresults/main.nf b/modules/msk/phylowgs/writeresults/main.nf index 868c9e9f..13c3ad50 100644 --- a/modules/msk/phylowgs/writeresults/main.nf +++ b/modules/msk/phylowgs/writeresults/main.nf @@ -32,9 +32,9 @@ process PHYLOWGS_WRITERESULTS { ${prefix}.muts.json.gz \\ ${prefix}.mutass.zip cat <<-END_VERSIONS > versions.yml - "${task.process}": - phylowgs: \$PHYLOWGS_TAG - END_VERSIONS + "${task.process}": + phylowgs: \$PHYLOWGS_TAG + END_VERSIONS """ stub: @@ -46,8 +46,8 @@ process PHYLOWGS_WRITERESULTS { touch ${prefix}.mutass.zip cat <<-END_VERSIONS > versions.yml - "${task.process}": - phylowgs: \$PHYLOWGS_TAG - END_VERSIONS + "${task.process}": + phylowgs: \$PHYLOWGS_TAG + END_VERSIONS """ } diff --git a/subworkflows/msk/generate_mutated_peptides/main.nf b/subworkflows/msk/generate_mutated_peptides/main.nf index 610ee13b..ed9cf6f1 100644 --- a/subworkflows/msk/generate_mutated_peptides/main.nf +++ b/subworkflows/msk/generate_mutated_peptides/main.nf @@ -19,29 +19,29 @@ workflow GENERATE_MUTATED_PEPTIDES { ch_maf = ch_maf_hla_sv .map{ - new Tuple(it[0],it[1]) + [it[0],it[1]] } ch_hla = ch_maf_hla_sv .map{ - new Tuple(it[0],it[2]) + [it[0],it[2]] } ch_sv = ch_maf_hla_sv .map{ - new Tuple(it[0],it[3]) + [it[0],it[3]] } ch_fasta_and_gff3 = ref_fasta .merge(gff3) .map{ - new Tuple([ id:"mutalyzer_retriever_"+file(it[0]).name +"_"+ file(it[1]).name], it[0], it[1]) + [[ id:"mutalyzer_retriever_"+file(it[0]).name +"_"+ file(it[1]).name], it[0], it[1]] } ch_gtf_and_cdna = gtf .merge(cdna) .map{ - new Tuple(it[0], it[1]) + [it[0], it[1]] } NEOANTIGENUTILS_GENERATEHLASTRING( ch_hla ) @@ -52,7 +52,7 @@ workflow GENERATE_MUTATED_PEPTIDES { ch_versions = ch_versions.mix(MUTALYZER_RETRIEVER.out.versions) - GENERATEMUTFASTA( ch_maf, MUTALYZER_RETRIEVER.out.mutalyzer_cache ) + GENERATEMUTFASTA( ch_maf, MUTALYZER_RETRIEVER.out.mutalyzer_cache.collect() ) ch_versions = ch_versions.mix(GENERATEMUTFASTA.out.versions) @@ -68,7 +68,7 @@ workflow GENERATE_MUTATED_PEPTIDES { wt_fasta = GENERATEMUTFASTA.out.wt_fasta // channel: [ val(meta), [ *.WT_sequences.fa ] ] mut_fasta_log = GENERATEMUTFASTA.out.mut_fasta_log // channel: [ val(meta), [ *_generate_mut_fasta.log ] ] sv_mut_fasta = NEOSV.out.mutOut // channel: [ val(meta), [ *.SV.MUT.fa ] ] - sv_wt_fasta = NEOSV.out.wtOut // channel: [ val(meta), [ *.SV.WT.fa ] ] + sv_wt_fasta = NEOSV.out.wtOut // channel: [ val(meta), [ *.SV.WT.fa ] ] hla_string = NEOANTIGENUTILS_GENERATEHLASTRING.out.hlastring // channel: [ val(meta), [ hla_string ] ] versions = ch_versions // channel: [ versions.yml ] } @@ -76,18 +76,18 @@ workflow GENERATE_MUTATED_PEPTIDES { def createNEOSVInput(sv_bedpe, hla_str) { def sv_bedpe_channel = sv_bedpe .map{ - new Tuple(it[0],it) + [it[0],it] } def hla_str_channel = hla_str .map{ - new Tuple(it[0],it) + [it[0],it] } def merged_sv_hla = sv_bedpe_channel .join(hla_str_channel, by:0) .map{ - new Tuple(it[1][0], it[1][1], it[2][1]) + [it[1][0], it[1][1], it[2][1]] } .filter{ it[1] != null && it[2] != null } return merged_sv_hla diff --git a/subworkflows/msk/generate_mutated_peptides/tests/main.nf.test.snap b/subworkflows/msk/generate_mutated_peptides/tests/main.nf.test.snap index c683921c..957c13a7 100644 --- a/subworkflows/msk/generate_mutated_peptides/tests/main.nf.test.snap +++ b/subworkflows/msk/generate_mutated_peptides/tests/main.nf.test.snap @@ -4,15 +4,15 @@ "test.MUT.sequences.fa:md5,3d2ff66590a4329f9a24e03bdf84e0ab", "test.WT.sequences.fa:md5,4bfcfc4d29d01ddc4108f39350936228", "test_generate_mut_fasta.log", - "test.SV.MUT.fa:md5,90028760eba0ca5e408eb44462741b6c", - "test.SV.WT.fa:md5,aec81221b1945efa816e1fe30665b1af", + "test.SV.MUT.fa:md5,d740aaf8844d5e9c9395dfc91c759016", + "test.SV.WT.fa:md5,c5accb51d0fe87782e3b3152df46e586", "HLA-A24:02,HLA-A24:02,HLA-B39:01,HLA-B39:01,HLA-C07:01,HLA-C06:02\n" ], "meta": { "nf-test": "0.9.2", - "nextflow": "25.10.2" + "nextflow": "25.10.4" }, - "timestamp": "2026-02-12T15:50:12.51494062" + "timestamp": "2026-05-07T11:02:13.954831462" }, "generate_mutated_peptides - maf,hla,fa,gff3,gtf - fa,str,log": { "content": [ @@ -86,9 +86,9 @@ ], "6": [ "versions.yml:md5,1fa6d346cee06ebfc0cf4a371024ff06", - "versions.yml:md5,2935160fac5bdce0d8ddee95ebff942b", - "versions.yml:md5,f03045db4d7a08c24b8dbf110a74fa7d", - "versions.yml:md5,fac6d8a78c437014495196ba202ee85a" + "versions.yml:md5,299918bbdd0cdf65249ca8a59e89a463", + "versions.yml:md5,2df764f07b1e77cc872f988761b019d2", + "versions.yml:md5,f03045db4d7a08c24b8dbf110a74fa7d" ], "hla_string": [ [ @@ -137,9 +137,9 @@ ], "versions": [ "versions.yml:md5,1fa6d346cee06ebfc0cf4a371024ff06", - "versions.yml:md5,2935160fac5bdce0d8ddee95ebff942b", - "versions.yml:md5,f03045db4d7a08c24b8dbf110a74fa7d", - "versions.yml:md5,fac6d8a78c437014495196ba202ee85a" + "versions.yml:md5,299918bbdd0cdf65249ca8a59e89a463", + "versions.yml:md5,2df764f07b1e77cc872f988761b019d2", + "versions.yml:md5,f03045db4d7a08c24b8dbf110a74fa7d" ], "wt_fasta": [ [ @@ -156,6 +156,6 @@ "nf-test": "0.9.2", "nextflow": "25.10.2" }, - "timestamp": "2025-12-17T16:47:09.052571093" + "timestamp": "2026-04-23T11:52:29.11760895" } } \ No newline at end of file diff --git a/subworkflows/msk/netmhcstabandpan/main.nf b/subworkflows/msk/netmhcstabandpan/main.nf index b82fdfcf..144c0afc 100644 --- a/subworkflows/msk/netmhcstabandpan/main.nf +++ b/subworkflows/msk/netmhcstabandpan/main.nf @@ -50,24 +50,24 @@ workflow NETMHCSTABANDPAN { def createNETMHCInput(fastas_and_hla, sv_fastas) { def fastas_and_hla_channel = fastas_and_hla .map{ - new Tuple(it[0],it) + [it[0],it] } def sv_fastas_channel = sv_fastas .map{ - new Tuple(it[0],it) + [it[0],it] } def merged_mut = fastas_and_hla_channel .join(sv_fastas_channel, by:0) .map({ - new Tuple(it[1][0], it[1][1], it[2][1], it[1][3], "MUT") + [it[1][0], it[1][1], it[2][1], it[1][3], "MUT"] }) def merged_wt = fastas_and_hla_channel .join(sv_fastas_channel, by:0) .map({ - new Tuple(it[1][0], it[1][2], it[2][2], it[1][3], "WT") + [it[1][0], it[1][2], it[2][2], it[1][3], "WT"] }) def merged = merged_mut.mix(merged_wt) return merged diff --git a/subworkflows/msk/phylowgs/main.nf b/subworkflows/msk/phylowgs/main.nf index bbf502b5..2ce0b375 100644 --- a/subworkflows/msk/phylowgs/main.nf +++ b/subworkflows/msk/phylowgs/main.nf @@ -14,12 +14,12 @@ workflow PHYLOWGS { ch_genelevel = ch_input_maf_and_genelevel .map{ - new Tuple(it[0],it[2]) + [it[0],it[2]] } ch_maf = ch_input_maf_and_genelevel .map{ - new Tuple(it[0],it[1]) + [it[0],it[1]] } PHYLOWGS_PARSECNVS(ch_genelevel) @@ -52,17 +52,17 @@ workflow PHYLOWGS { def join_maf_with_cnv(maf,cnv) { def maf_channel = maf .map{ - new Tuple(it[0].id,it) + [it[0].id,it] } def cnv_channel = cnv .map{ - new Tuple(it[0].id,it) + [it[0].id,it] } def mergedWithKey = maf_channel .join(cnv_channel) def merged = mergedWithKey .map{ - new Tuple(it[1][0],it[1][1],it[2][1]) + [it[1][0],it[1][1],it[2][1]] } return merged diff --git a/tests/config/test_data.config b/tests/config/test_data.config index bdfd151f..963b084c 100644 --- a/tests/config/test_data.config +++ b/tests/config/test_data.config @@ -771,6 +771,7 @@ params { gff3 = "${params.test_data_base_msk}/neoantigen/neoantigen/small_test_chr2and16/Homo_sapiens.GRCh37.87.chr2_16.gff3" fa_bgzip = "${params.test_data_base_msk}/neoantigen/neoantigen/small_test_chr2and16/Homo_sapiens.GRCh37.dna_rm.chromosome.chr2_16.fa.bgzip.gz" fa_gzip = "${params.test_data_base_msk}/neoantigen/neoantigen/small_test_chr2and16/Homo_sapiens.GRCh37.dna_rm.chromosome.chr2_16.fa.gzip.gz" + fa_bz2 = "${params.test_data_base_msk}/neoantigen/neoantigen/small_test_chr2and16/Homo_sapiens.GRCh37.dna_rm.chromosome.chr2_16.fa.bz2.gz" facets_gene_level = "${params.test_data_base_msk}/neoantigen/neoantigen/small_test_chr2and16/facets_gene_level.chr2_16.txt" facets_hisens_cncf = "${params.test_data_base_msk}/neoantigen/neoantigen/small_test_chr2and16/facets_hisens.cncf.chr2_16.txt" somatic_filtered_maf = "${params.test_data_base_msk}/neoantigen/neoantigen/small_test_chr2and16/somatic_filtered.chr2_16.maf"