From c57adce46ef7edd77be8cbbb015249a164c3abb9 Mon Sep 17 00:00:00 2001 From: "Tristan F.-R." Date: Tue, 29 Jul 2025 14:05:01 -0700 Subject: [PATCH 1/7] test: all inputs --- .../allpairs/allpairs-directed_flag.txt | 1 + .../allpairs-network.txt} | 0 .../expected/allpairs/allpairs-nodetypes.txt | 3 ++ .../bowtiebuilder-edges.txt} | 0 .../bowtiebuilder/bowtiebuilder-sources.txt | 1 + .../bowtiebuilder/bowtiebuilder-targets.txt | 1 + .../expected/domino/domino-active_genes.txt | 2 + .../domino-network.txt} | 0 .../meo-edges.txt} | 0 .../expected/meo/meo-sources.txt | 1 + .../expected/meo/meo-targets.txt | 1 + .../mincostflow-edges.txt} | 0 .../mincostflow/mincostflow-sources.txt | 1 + .../mincostflow/mincostflow-targets.txt | 1 + .../omicsintegrator1-dummy_nodes.txt | 0 .../omicsintegrator1-edges.txt} | 0 .../omicsintegrator1-prizes.txt | 3 ++ .../omicsintegrator2-edges.txt} | 0 .../omicsintegrator2-prizes.txt | 3 ++ .../pathlinker-network.txt} | 0 .../pathlinker/pathlinker-nodetypes.txt | 3 ++ .../responsenet-edges.txt} | 0 .../responsenet/responsenet-sources.txt | 1 + .../responsenet/responsenet-targets.txt | 1 + .../rwr-network.txt} | 0 .../expected/rwr/rwr-nodes.txt | 2 + .../strwr-network.txt} | 0 .../expected/strwr/strwr-sources.txt | 1 + .../expected/strwr/strwr-targets.txt | 1 + test/generate-inputs/test_generate_inputs.py | 51 +++++++------------ 30 files changed, 46 insertions(+), 32 deletions(-) create mode 100644 test/generate-inputs/expected/allpairs/allpairs-directed_flag.txt rename test/generate-inputs/expected/{allpairs-network-expected.txt => allpairs/allpairs-network.txt} (100%) create mode 100644 test/generate-inputs/expected/allpairs/allpairs-nodetypes.txt rename test/generate-inputs/expected/{bowtiebuilder-edges-expected.txt => bowtiebuilder/bowtiebuilder-edges.txt} (100%) create mode 100644 test/generate-inputs/expected/bowtiebuilder/bowtiebuilder-sources.txt create mode 100644 test/generate-inputs/expected/bowtiebuilder/bowtiebuilder-targets.txt create mode 100644 test/generate-inputs/expected/domino/domino-active_genes.txt rename test/generate-inputs/expected/{domino-network-expected.txt => domino/domino-network.txt} (100%) rename test/generate-inputs/expected/{meo-edges-expected.txt => meo/meo-edges.txt} (100%) create mode 100644 test/generate-inputs/expected/meo/meo-sources.txt create mode 100644 test/generate-inputs/expected/meo/meo-targets.txt rename test/generate-inputs/expected/{mincostflow-edges-expected.txt => mincostflow/mincostflow-edges.txt} (100%) create mode 100644 test/generate-inputs/expected/mincostflow/mincostflow-sources.txt create mode 100644 test/generate-inputs/expected/mincostflow/mincostflow-targets.txt create mode 100644 test/generate-inputs/expected/omicsintegrator1/omicsintegrator1-dummy_nodes.txt rename test/generate-inputs/expected/{omicsintegrator1-edges-expected.txt => omicsintegrator1/omicsintegrator1-edges.txt} (100%) create mode 100644 test/generate-inputs/expected/omicsintegrator1/omicsintegrator1-prizes.txt rename test/generate-inputs/expected/{omicsintegrator2-edges-expected.txt => omicsintegrator2/omicsintegrator2-edges.txt} (100%) create mode 100644 test/generate-inputs/expected/omicsintegrator2/omicsintegrator2-prizes.txt rename test/generate-inputs/expected/{pathlinker-network-expected.txt => pathlinker/pathlinker-network.txt} (100%) create mode 100644 test/generate-inputs/expected/pathlinker/pathlinker-nodetypes.txt rename test/generate-inputs/expected/{responsenet-edges-expected.txt => responsenet/responsenet-edges.txt} (100%) create mode 100644 test/generate-inputs/expected/responsenet/responsenet-sources.txt create mode 100644 test/generate-inputs/expected/responsenet/responsenet-targets.txt rename test/generate-inputs/expected/{rwr-network-expected.txt => rwr/rwr-network.txt} (100%) create mode 100644 test/generate-inputs/expected/rwr/rwr-nodes.txt rename test/generate-inputs/expected/{strwr-network-expected.txt => strwr/strwr-network.txt} (100%) create mode 100644 test/generate-inputs/expected/strwr/strwr-sources.txt create mode 100644 test/generate-inputs/expected/strwr/strwr-targets.txt diff --git a/test/generate-inputs/expected/allpairs/allpairs-directed_flag.txt b/test/generate-inputs/expected/allpairs/allpairs-directed_flag.txt new file mode 100644 index 000000000..02e4a84d6 --- /dev/null +++ b/test/generate-inputs/expected/allpairs/allpairs-directed_flag.txt @@ -0,0 +1 @@ +false \ No newline at end of file diff --git a/test/generate-inputs/expected/allpairs-network-expected.txt b/test/generate-inputs/expected/allpairs/allpairs-network.txt similarity index 100% rename from test/generate-inputs/expected/allpairs-network-expected.txt rename to test/generate-inputs/expected/allpairs/allpairs-network.txt diff --git a/test/generate-inputs/expected/allpairs/allpairs-nodetypes.txt b/test/generate-inputs/expected/allpairs/allpairs-nodetypes.txt new file mode 100644 index 000000000..4595f96e2 --- /dev/null +++ b/test/generate-inputs/expected/allpairs/allpairs-nodetypes.txt @@ -0,0 +1,3 @@ +#Node Node type +test_A source +C target diff --git a/test/generate-inputs/expected/bowtiebuilder-edges-expected.txt b/test/generate-inputs/expected/bowtiebuilder/bowtiebuilder-edges.txt similarity index 100% rename from test/generate-inputs/expected/bowtiebuilder-edges-expected.txt rename to test/generate-inputs/expected/bowtiebuilder/bowtiebuilder-edges.txt diff --git a/test/generate-inputs/expected/bowtiebuilder/bowtiebuilder-sources.txt b/test/generate-inputs/expected/bowtiebuilder/bowtiebuilder-sources.txt new file mode 100644 index 000000000..050111aca --- /dev/null +++ b/test/generate-inputs/expected/bowtiebuilder/bowtiebuilder-sources.txt @@ -0,0 +1 @@ +test_A diff --git a/test/generate-inputs/expected/bowtiebuilder/bowtiebuilder-targets.txt b/test/generate-inputs/expected/bowtiebuilder/bowtiebuilder-targets.txt new file mode 100644 index 000000000..3cc58df83 --- /dev/null +++ b/test/generate-inputs/expected/bowtiebuilder/bowtiebuilder-targets.txt @@ -0,0 +1 @@ +C diff --git a/test/generate-inputs/expected/domino/domino-active_genes.txt b/test/generate-inputs/expected/domino/domino-active_genes.txt new file mode 100644 index 000000000..7094db71a --- /dev/null +++ b/test/generate-inputs/expected/domino/domino-active_genes.txt @@ -0,0 +1,2 @@ +ENSG0test_A +ENSG0C diff --git a/test/generate-inputs/expected/domino-network-expected.txt b/test/generate-inputs/expected/domino/domino-network.txt similarity index 100% rename from test/generate-inputs/expected/domino-network-expected.txt rename to test/generate-inputs/expected/domino/domino-network.txt diff --git a/test/generate-inputs/expected/meo-edges-expected.txt b/test/generate-inputs/expected/meo/meo-edges.txt similarity index 100% rename from test/generate-inputs/expected/meo-edges-expected.txt rename to test/generate-inputs/expected/meo/meo-edges.txt diff --git a/test/generate-inputs/expected/meo/meo-sources.txt b/test/generate-inputs/expected/meo/meo-sources.txt new file mode 100644 index 000000000..06cb3030f --- /dev/null +++ b/test/generate-inputs/expected/meo/meo-sources.txt @@ -0,0 +1 @@ +test꧁SEP꧂A diff --git a/test/generate-inputs/expected/meo/meo-targets.txt b/test/generate-inputs/expected/meo/meo-targets.txt new file mode 100644 index 000000000..3cc58df83 --- /dev/null +++ b/test/generate-inputs/expected/meo/meo-targets.txt @@ -0,0 +1 @@ +C diff --git a/test/generate-inputs/expected/mincostflow-edges-expected.txt b/test/generate-inputs/expected/mincostflow/mincostflow-edges.txt similarity index 100% rename from test/generate-inputs/expected/mincostflow-edges-expected.txt rename to test/generate-inputs/expected/mincostflow/mincostflow-edges.txt diff --git a/test/generate-inputs/expected/mincostflow/mincostflow-sources.txt b/test/generate-inputs/expected/mincostflow/mincostflow-sources.txt new file mode 100644 index 000000000..050111aca --- /dev/null +++ b/test/generate-inputs/expected/mincostflow/mincostflow-sources.txt @@ -0,0 +1 @@ +test_A diff --git a/test/generate-inputs/expected/mincostflow/mincostflow-targets.txt b/test/generate-inputs/expected/mincostflow/mincostflow-targets.txt new file mode 100644 index 000000000..3cc58df83 --- /dev/null +++ b/test/generate-inputs/expected/mincostflow/mincostflow-targets.txt @@ -0,0 +1 @@ +C diff --git a/test/generate-inputs/expected/omicsintegrator1/omicsintegrator1-dummy_nodes.txt b/test/generate-inputs/expected/omicsintegrator1/omicsintegrator1-dummy_nodes.txt new file mode 100644 index 000000000..e69de29bb diff --git a/test/generate-inputs/expected/omicsintegrator1-edges-expected.txt b/test/generate-inputs/expected/omicsintegrator1/omicsintegrator1-edges.txt similarity index 100% rename from test/generate-inputs/expected/omicsintegrator1-edges-expected.txt rename to test/generate-inputs/expected/omicsintegrator1/omicsintegrator1-edges.txt diff --git a/test/generate-inputs/expected/omicsintegrator1/omicsintegrator1-prizes.txt b/test/generate-inputs/expected/omicsintegrator1/omicsintegrator1-prizes.txt new file mode 100644 index 000000000..9bd069b92 --- /dev/null +++ b/test/generate-inputs/expected/omicsintegrator1/omicsintegrator1-prizes.txt @@ -0,0 +1,3 @@ +name prize +test_A 2.0 +C 5.7 diff --git a/test/generate-inputs/expected/omicsintegrator2-edges-expected.txt b/test/generate-inputs/expected/omicsintegrator2/omicsintegrator2-edges.txt similarity index 100% rename from test/generate-inputs/expected/omicsintegrator2-edges-expected.txt rename to test/generate-inputs/expected/omicsintegrator2/omicsintegrator2-edges.txt diff --git a/test/generate-inputs/expected/omicsintegrator2/omicsintegrator2-prizes.txt b/test/generate-inputs/expected/omicsintegrator2/omicsintegrator2-prizes.txt new file mode 100644 index 000000000..9bd069b92 --- /dev/null +++ b/test/generate-inputs/expected/omicsintegrator2/omicsintegrator2-prizes.txt @@ -0,0 +1,3 @@ +name prize +test_A 2.0 +C 5.7 diff --git a/test/generate-inputs/expected/pathlinker-network-expected.txt b/test/generate-inputs/expected/pathlinker/pathlinker-network.txt similarity index 100% rename from test/generate-inputs/expected/pathlinker-network-expected.txt rename to test/generate-inputs/expected/pathlinker/pathlinker-network.txt diff --git a/test/generate-inputs/expected/pathlinker/pathlinker-nodetypes.txt b/test/generate-inputs/expected/pathlinker/pathlinker-nodetypes.txt new file mode 100644 index 000000000..4595f96e2 --- /dev/null +++ b/test/generate-inputs/expected/pathlinker/pathlinker-nodetypes.txt @@ -0,0 +1,3 @@ +#Node Node type +test_A source +C target diff --git a/test/generate-inputs/expected/responsenet-edges-expected.txt b/test/generate-inputs/expected/responsenet/responsenet-edges.txt similarity index 100% rename from test/generate-inputs/expected/responsenet-edges-expected.txt rename to test/generate-inputs/expected/responsenet/responsenet-edges.txt diff --git a/test/generate-inputs/expected/responsenet/responsenet-sources.txt b/test/generate-inputs/expected/responsenet/responsenet-sources.txt new file mode 100644 index 000000000..050111aca --- /dev/null +++ b/test/generate-inputs/expected/responsenet/responsenet-sources.txt @@ -0,0 +1 @@ +test_A diff --git a/test/generate-inputs/expected/responsenet/responsenet-targets.txt b/test/generate-inputs/expected/responsenet/responsenet-targets.txt new file mode 100644 index 000000000..3cc58df83 --- /dev/null +++ b/test/generate-inputs/expected/responsenet/responsenet-targets.txt @@ -0,0 +1 @@ +C diff --git a/test/generate-inputs/expected/rwr-network-expected.txt b/test/generate-inputs/expected/rwr/rwr-network.txt similarity index 100% rename from test/generate-inputs/expected/rwr-network-expected.txt rename to test/generate-inputs/expected/rwr/rwr-network.txt diff --git a/test/generate-inputs/expected/rwr/rwr-nodes.txt b/test/generate-inputs/expected/rwr/rwr-nodes.txt new file mode 100644 index 000000000..5563e0ca3 --- /dev/null +++ b/test/generate-inputs/expected/rwr/rwr-nodes.txt @@ -0,0 +1,2 @@ +test_A +C diff --git a/test/generate-inputs/expected/strwr-network-expected.txt b/test/generate-inputs/expected/strwr/strwr-network.txt similarity index 100% rename from test/generate-inputs/expected/strwr-network-expected.txt rename to test/generate-inputs/expected/strwr/strwr-network.txt diff --git a/test/generate-inputs/expected/strwr/strwr-sources.txt b/test/generate-inputs/expected/strwr/strwr-sources.txt new file mode 100644 index 000000000..050111aca --- /dev/null +++ b/test/generate-inputs/expected/strwr/strwr-sources.txt @@ -0,0 +1 @@ +test_A diff --git a/test/generate-inputs/expected/strwr/strwr-targets.txt b/test/generate-inputs/expected/strwr/strwr-targets.txt new file mode 100644 index 000000000..3cc58df83 --- /dev/null +++ b/test/generate-inputs/expected/strwr/strwr-targets.txt @@ -0,0 +1 @@ +C diff --git a/test/generate-inputs/test_generate_inputs.py b/test/generate-inputs/test_generate_inputs.py index f79b673fc..472d568a6 100644 --- a/test/generate-inputs/test_generate_inputs.py +++ b/test/generate-inputs/test_generate_inputs.py @@ -1,28 +1,14 @@ import filecmp import os from pathlib import Path +import shutil import yaml -from spras import runner - -OUTDIR = "test/generate-inputs/output/" -EXPDIR = "test/generate-inputs/expected/" - -algo_exp_file = { - 'mincostflow': 'edges', - 'meo': 'edges', - 'omicsintegrator1': 'edges', - 'omicsintegrator2': 'edges', - 'domino': 'network', - 'pathlinker': 'network', - 'allpairs': 'network', - 'bowtiebuilder': 'edges', - 'strwr': 'network', - 'rwr': 'network', - 'responsenet': 'edges' -} +from spras.runner import algorithms, get_required_inputs, merge_input, prepare_inputs +OUTDIR = Path("test", "generate-inputs", "output") +EXPDIR = Path("test", "generate-inputs", "expected") class TestGenerateInputs: @classmethod @@ -30,7 +16,9 @@ def setup_class(cls): """ Create the expected output directory """ - Path(OUTDIR).mkdir(parents=True, exist_ok=True) + if OUTDIR.exists(): + shutil.rmtree(OUTDIR) + OUTDIR.mkdir(parents=True, exist_ok=True) def test_prepare_inputs_networks(self): config_loc = os.path.join("test", "generate-inputs", "inputs", "test_config.yaml") @@ -40,16 +28,15 @@ def test_prepare_inputs_networks(self): test_file = "test/generate-inputs/output/test_pickled_dataset.pkl" test_dataset = next((ds for ds in config["datasets"] if ds["label"] == "test_data"), None) - runner.merge_input(test_dataset, test_file) - - for algo in algo_exp_file.keys(): - inputs = runner.get_required_inputs(algo) - filename_map = {input_str: os.path.join("test", "generate-inputs", "output", f"{algo}-{input_str}.txt") - for input_str in inputs} - runner.prepare_inputs(algo, test_file, filename_map) - exp_file_name = algo_exp_file[algo] - assert filecmp.cmp(OUTDIR + f"{algo}-{exp_file_name}.txt", EXPDIR + f"{algo}-{exp_file_name}-expected.txt", - shallow=False) - - for file in filename_map.values(): - assert Path(file).exists() + merge_input(test_dataset, test_file) + + for algo in algorithms.keys(): + inputs = get_required_inputs(algo) + (OUTDIR / algo).mkdir(exist_ok=True) + filename_map = {input_str: str(OUTDIR / algo / f"{algo}-{input_str}.txt") for input_str in inputs} + prepare_inputs(algo, test_file, filename_map) + required_inputs = algorithms[algo].required_inputs + # for exp_file_name in required_inputs: + # assert filecmp.cmp(OUTDIR / algo / f"{algo}-{exp_file_name}.txt", EXPDIR / algo / f"{algo}-{exp_file_name}-expected.txt", + # shallow=False) + From b974ffd31a894c492f161ea9fde8a89e1fcf83cd Mon Sep 17 00:00:00 2001 From: "Tristan F.-R." Date: Tue, 29 Jul 2025 21:08:21 +0000 Subject: [PATCH 2/7] test: fix --- ...irected_flag.txt => allpairs-directed_flag-expected.txt} | 0 .../{allpairs-network.txt => allpairs-network-expected.txt} | 0 ...lpairs-nodetypes.txt => allpairs-nodetypes-expected.txt} | 0 ...iebuilder-edges.txt => bowtiebuilder-edges-expected.txt} | 0 ...ilder-sources.txt => bowtiebuilder-sources-expected.txt} | 0 ...ilder-targets.txt => bowtiebuilder-targets-expected.txt} | 0 ...no-active_genes.txt => domino-active_genes-expected.txt} | 0 .../{domino-network.txt => domino-network-expected.txt} | 0 .../expected/meo/{meo-edges.txt => meo-edges-expected.txt} | 0 .../meo/{meo-sources.txt => meo-sources-expected.txt} | 0 .../meo/{meo-targets.txt => meo-targets-expected.txt} | 0 ...mincostflow-edges.txt => mincostflow-edges-expected.txt} | 0 ...ostflow-sources.txt => mincostflow-sources-expected.txt} | 0 ...ostflow-targets.txt => mincostflow-targets-expected.txt} | 0 ..._nodes.txt => omicsintegrator1-dummy_nodes-expected.txt} | 0 ...rator1-edges.txt => omicsintegrator1-edges-expected.txt} | 0 ...tor1-prizes.txt => omicsintegrator1-prizes-expected.txt} | 0 ...rator2-edges.txt => omicsintegrator2-edges-expected.txt} | 0 ...tor2-prizes.txt => omicsintegrator2-prizes-expected.txt} | 0 ...thlinker-network.txt => pathlinker-network-expected.txt} | 0 ...nker-nodetypes.txt => pathlinker-nodetypes-expected.txt} | 0 ...responsenet-edges.txt => responsenet-edges-expected.txt} | 0 ...onsenet-sources.txt => responsenet-sources-expected.txt} | 0 ...onsenet-targets.txt => responsenet-targets-expected.txt} | 0 .../rwr/{rwr-network.txt => rwr-network-expected.txt} | 0 .../expected/rwr/{rwr-nodes.txt => rwr-nodes-expected.txt} | 0 .../strwr/{strwr-network.txt => strwr-network-expected.txt} | 0 .../strwr/{strwr-sources.txt => strwr-sources-expected.txt} | 0 .../strwr/{strwr-targets.txt => strwr-targets-expected.txt} | 0 test/generate-inputs/test_generate_inputs.py | 6 +++--- 30 files changed, 3 insertions(+), 3 deletions(-) rename test/generate-inputs/expected/allpairs/{allpairs-directed_flag.txt => allpairs-directed_flag-expected.txt} (100%) rename test/generate-inputs/expected/allpairs/{allpairs-network.txt => allpairs-network-expected.txt} (100%) rename test/generate-inputs/expected/allpairs/{allpairs-nodetypes.txt => allpairs-nodetypes-expected.txt} (100%) rename test/generate-inputs/expected/bowtiebuilder/{bowtiebuilder-edges.txt => bowtiebuilder-edges-expected.txt} (100%) rename test/generate-inputs/expected/bowtiebuilder/{bowtiebuilder-sources.txt => bowtiebuilder-sources-expected.txt} (100%) rename test/generate-inputs/expected/bowtiebuilder/{bowtiebuilder-targets.txt => bowtiebuilder-targets-expected.txt} (100%) rename test/generate-inputs/expected/domino/{domino-active_genes.txt => domino-active_genes-expected.txt} (100%) rename test/generate-inputs/expected/domino/{domino-network.txt => domino-network-expected.txt} (100%) rename test/generate-inputs/expected/meo/{meo-edges.txt => meo-edges-expected.txt} (100%) rename test/generate-inputs/expected/meo/{meo-sources.txt => meo-sources-expected.txt} (100%) rename test/generate-inputs/expected/meo/{meo-targets.txt => meo-targets-expected.txt} (100%) rename test/generate-inputs/expected/mincostflow/{mincostflow-edges.txt => mincostflow-edges-expected.txt} (100%) rename test/generate-inputs/expected/mincostflow/{mincostflow-sources.txt => mincostflow-sources-expected.txt} (100%) rename test/generate-inputs/expected/mincostflow/{mincostflow-targets.txt => mincostflow-targets-expected.txt} (100%) rename test/generate-inputs/expected/omicsintegrator1/{omicsintegrator1-dummy_nodes.txt => omicsintegrator1-dummy_nodes-expected.txt} (100%) rename test/generate-inputs/expected/omicsintegrator1/{omicsintegrator1-edges.txt => omicsintegrator1-edges-expected.txt} (100%) rename test/generate-inputs/expected/omicsintegrator1/{omicsintegrator1-prizes.txt => omicsintegrator1-prizes-expected.txt} (100%) rename test/generate-inputs/expected/omicsintegrator2/{omicsintegrator2-edges.txt => omicsintegrator2-edges-expected.txt} (100%) rename test/generate-inputs/expected/omicsintegrator2/{omicsintegrator2-prizes.txt => omicsintegrator2-prizes-expected.txt} (100%) rename test/generate-inputs/expected/pathlinker/{pathlinker-network.txt => pathlinker-network-expected.txt} (100%) rename test/generate-inputs/expected/pathlinker/{pathlinker-nodetypes.txt => pathlinker-nodetypes-expected.txt} (100%) rename test/generate-inputs/expected/responsenet/{responsenet-edges.txt => responsenet-edges-expected.txt} (100%) rename test/generate-inputs/expected/responsenet/{responsenet-sources.txt => responsenet-sources-expected.txt} (100%) rename test/generate-inputs/expected/responsenet/{responsenet-targets.txt => responsenet-targets-expected.txt} (100%) rename test/generate-inputs/expected/rwr/{rwr-network.txt => rwr-network-expected.txt} (100%) rename test/generate-inputs/expected/rwr/{rwr-nodes.txt => rwr-nodes-expected.txt} (100%) rename test/generate-inputs/expected/strwr/{strwr-network.txt => strwr-network-expected.txt} (100%) rename test/generate-inputs/expected/strwr/{strwr-sources.txt => strwr-sources-expected.txt} (100%) rename test/generate-inputs/expected/strwr/{strwr-targets.txt => strwr-targets-expected.txt} (100%) diff --git a/test/generate-inputs/expected/allpairs/allpairs-directed_flag.txt b/test/generate-inputs/expected/allpairs/allpairs-directed_flag-expected.txt similarity index 100% rename from test/generate-inputs/expected/allpairs/allpairs-directed_flag.txt rename to test/generate-inputs/expected/allpairs/allpairs-directed_flag-expected.txt diff --git a/test/generate-inputs/expected/allpairs/allpairs-network.txt b/test/generate-inputs/expected/allpairs/allpairs-network-expected.txt similarity index 100% rename from test/generate-inputs/expected/allpairs/allpairs-network.txt rename to test/generate-inputs/expected/allpairs/allpairs-network-expected.txt diff --git a/test/generate-inputs/expected/allpairs/allpairs-nodetypes.txt b/test/generate-inputs/expected/allpairs/allpairs-nodetypes-expected.txt similarity index 100% rename from test/generate-inputs/expected/allpairs/allpairs-nodetypes.txt rename to test/generate-inputs/expected/allpairs/allpairs-nodetypes-expected.txt diff --git a/test/generate-inputs/expected/bowtiebuilder/bowtiebuilder-edges.txt b/test/generate-inputs/expected/bowtiebuilder/bowtiebuilder-edges-expected.txt similarity index 100% rename from test/generate-inputs/expected/bowtiebuilder/bowtiebuilder-edges.txt rename to test/generate-inputs/expected/bowtiebuilder/bowtiebuilder-edges-expected.txt diff --git a/test/generate-inputs/expected/bowtiebuilder/bowtiebuilder-sources.txt b/test/generate-inputs/expected/bowtiebuilder/bowtiebuilder-sources-expected.txt similarity index 100% rename from test/generate-inputs/expected/bowtiebuilder/bowtiebuilder-sources.txt rename to test/generate-inputs/expected/bowtiebuilder/bowtiebuilder-sources-expected.txt diff --git a/test/generate-inputs/expected/bowtiebuilder/bowtiebuilder-targets.txt b/test/generate-inputs/expected/bowtiebuilder/bowtiebuilder-targets-expected.txt similarity index 100% rename from test/generate-inputs/expected/bowtiebuilder/bowtiebuilder-targets.txt rename to test/generate-inputs/expected/bowtiebuilder/bowtiebuilder-targets-expected.txt diff --git a/test/generate-inputs/expected/domino/domino-active_genes.txt b/test/generate-inputs/expected/domino/domino-active_genes-expected.txt similarity index 100% rename from test/generate-inputs/expected/domino/domino-active_genes.txt rename to test/generate-inputs/expected/domino/domino-active_genes-expected.txt diff --git a/test/generate-inputs/expected/domino/domino-network.txt b/test/generate-inputs/expected/domino/domino-network-expected.txt similarity index 100% rename from test/generate-inputs/expected/domino/domino-network.txt rename to test/generate-inputs/expected/domino/domino-network-expected.txt diff --git a/test/generate-inputs/expected/meo/meo-edges.txt b/test/generate-inputs/expected/meo/meo-edges-expected.txt similarity index 100% rename from test/generate-inputs/expected/meo/meo-edges.txt rename to test/generate-inputs/expected/meo/meo-edges-expected.txt diff --git a/test/generate-inputs/expected/meo/meo-sources.txt b/test/generate-inputs/expected/meo/meo-sources-expected.txt similarity index 100% rename from test/generate-inputs/expected/meo/meo-sources.txt rename to test/generate-inputs/expected/meo/meo-sources-expected.txt diff --git a/test/generate-inputs/expected/meo/meo-targets.txt b/test/generate-inputs/expected/meo/meo-targets-expected.txt similarity index 100% rename from test/generate-inputs/expected/meo/meo-targets.txt rename to test/generate-inputs/expected/meo/meo-targets-expected.txt diff --git a/test/generate-inputs/expected/mincostflow/mincostflow-edges.txt b/test/generate-inputs/expected/mincostflow/mincostflow-edges-expected.txt similarity index 100% rename from test/generate-inputs/expected/mincostflow/mincostflow-edges.txt rename to test/generate-inputs/expected/mincostflow/mincostflow-edges-expected.txt diff --git a/test/generate-inputs/expected/mincostflow/mincostflow-sources.txt b/test/generate-inputs/expected/mincostflow/mincostflow-sources-expected.txt similarity index 100% rename from test/generate-inputs/expected/mincostflow/mincostflow-sources.txt rename to test/generate-inputs/expected/mincostflow/mincostflow-sources-expected.txt diff --git a/test/generate-inputs/expected/mincostflow/mincostflow-targets.txt b/test/generate-inputs/expected/mincostflow/mincostflow-targets-expected.txt similarity index 100% rename from test/generate-inputs/expected/mincostflow/mincostflow-targets.txt rename to test/generate-inputs/expected/mincostflow/mincostflow-targets-expected.txt diff --git a/test/generate-inputs/expected/omicsintegrator1/omicsintegrator1-dummy_nodes.txt b/test/generate-inputs/expected/omicsintegrator1/omicsintegrator1-dummy_nodes-expected.txt similarity index 100% rename from test/generate-inputs/expected/omicsintegrator1/omicsintegrator1-dummy_nodes.txt rename to test/generate-inputs/expected/omicsintegrator1/omicsintegrator1-dummy_nodes-expected.txt diff --git a/test/generate-inputs/expected/omicsintegrator1/omicsintegrator1-edges.txt b/test/generate-inputs/expected/omicsintegrator1/omicsintegrator1-edges-expected.txt similarity index 100% rename from test/generate-inputs/expected/omicsintegrator1/omicsintegrator1-edges.txt rename to test/generate-inputs/expected/omicsintegrator1/omicsintegrator1-edges-expected.txt diff --git a/test/generate-inputs/expected/omicsintegrator1/omicsintegrator1-prizes.txt b/test/generate-inputs/expected/omicsintegrator1/omicsintegrator1-prizes-expected.txt similarity index 100% rename from test/generate-inputs/expected/omicsintegrator1/omicsintegrator1-prizes.txt rename to test/generate-inputs/expected/omicsintegrator1/omicsintegrator1-prizes-expected.txt diff --git a/test/generate-inputs/expected/omicsintegrator2/omicsintegrator2-edges.txt b/test/generate-inputs/expected/omicsintegrator2/omicsintegrator2-edges-expected.txt similarity index 100% rename from test/generate-inputs/expected/omicsintegrator2/omicsintegrator2-edges.txt rename to test/generate-inputs/expected/omicsintegrator2/omicsintegrator2-edges-expected.txt diff --git a/test/generate-inputs/expected/omicsintegrator2/omicsintegrator2-prizes.txt b/test/generate-inputs/expected/omicsintegrator2/omicsintegrator2-prizes-expected.txt similarity index 100% rename from test/generate-inputs/expected/omicsintegrator2/omicsintegrator2-prizes.txt rename to test/generate-inputs/expected/omicsintegrator2/omicsintegrator2-prizes-expected.txt diff --git a/test/generate-inputs/expected/pathlinker/pathlinker-network.txt b/test/generate-inputs/expected/pathlinker/pathlinker-network-expected.txt similarity index 100% rename from test/generate-inputs/expected/pathlinker/pathlinker-network.txt rename to test/generate-inputs/expected/pathlinker/pathlinker-network-expected.txt diff --git a/test/generate-inputs/expected/pathlinker/pathlinker-nodetypes.txt b/test/generate-inputs/expected/pathlinker/pathlinker-nodetypes-expected.txt similarity index 100% rename from test/generate-inputs/expected/pathlinker/pathlinker-nodetypes.txt rename to test/generate-inputs/expected/pathlinker/pathlinker-nodetypes-expected.txt diff --git a/test/generate-inputs/expected/responsenet/responsenet-edges.txt b/test/generate-inputs/expected/responsenet/responsenet-edges-expected.txt similarity index 100% rename from test/generate-inputs/expected/responsenet/responsenet-edges.txt rename to test/generate-inputs/expected/responsenet/responsenet-edges-expected.txt diff --git a/test/generate-inputs/expected/responsenet/responsenet-sources.txt b/test/generate-inputs/expected/responsenet/responsenet-sources-expected.txt similarity index 100% rename from test/generate-inputs/expected/responsenet/responsenet-sources.txt rename to test/generate-inputs/expected/responsenet/responsenet-sources-expected.txt diff --git a/test/generate-inputs/expected/responsenet/responsenet-targets.txt b/test/generate-inputs/expected/responsenet/responsenet-targets-expected.txt similarity index 100% rename from test/generate-inputs/expected/responsenet/responsenet-targets.txt rename to test/generate-inputs/expected/responsenet/responsenet-targets-expected.txt diff --git a/test/generate-inputs/expected/rwr/rwr-network.txt b/test/generate-inputs/expected/rwr/rwr-network-expected.txt similarity index 100% rename from test/generate-inputs/expected/rwr/rwr-network.txt rename to test/generate-inputs/expected/rwr/rwr-network-expected.txt diff --git a/test/generate-inputs/expected/rwr/rwr-nodes.txt b/test/generate-inputs/expected/rwr/rwr-nodes-expected.txt similarity index 100% rename from test/generate-inputs/expected/rwr/rwr-nodes.txt rename to test/generate-inputs/expected/rwr/rwr-nodes-expected.txt diff --git a/test/generate-inputs/expected/strwr/strwr-network.txt b/test/generate-inputs/expected/strwr/strwr-network-expected.txt similarity index 100% rename from test/generate-inputs/expected/strwr/strwr-network.txt rename to test/generate-inputs/expected/strwr/strwr-network-expected.txt diff --git a/test/generate-inputs/expected/strwr/strwr-sources.txt b/test/generate-inputs/expected/strwr/strwr-sources-expected.txt similarity index 100% rename from test/generate-inputs/expected/strwr/strwr-sources.txt rename to test/generate-inputs/expected/strwr/strwr-sources-expected.txt diff --git a/test/generate-inputs/expected/strwr/strwr-targets.txt b/test/generate-inputs/expected/strwr/strwr-targets-expected.txt similarity index 100% rename from test/generate-inputs/expected/strwr/strwr-targets.txt rename to test/generate-inputs/expected/strwr/strwr-targets-expected.txt diff --git a/test/generate-inputs/test_generate_inputs.py b/test/generate-inputs/test_generate_inputs.py index 472d568a6..4f94ab1d9 100644 --- a/test/generate-inputs/test_generate_inputs.py +++ b/test/generate-inputs/test_generate_inputs.py @@ -36,7 +36,7 @@ def test_prepare_inputs_networks(self): filename_map = {input_str: str(OUTDIR / algo / f"{algo}-{input_str}.txt") for input_str in inputs} prepare_inputs(algo, test_file, filename_map) required_inputs = algorithms[algo].required_inputs - # for exp_file_name in required_inputs: - # assert filecmp.cmp(OUTDIR / algo / f"{algo}-{exp_file_name}.txt", EXPDIR / algo / f"{algo}-{exp_file_name}-expected.txt", - # shallow=False) + for exp_file_name in required_inputs: + assert filecmp.cmp(OUTDIR / algo / f"{algo}-{exp_file_name}.txt", EXPDIR / algo / f"{algo}-{exp_file_name}-expected.txt", + shallow=False), f"{algo} for {exp_file_name}.txt does not match up!" From a61bfcea70c216150022064ff834296bf5b31bc7 Mon Sep 17 00:00:00 2001 From: "Tristan F.-R." Date: Tue, 29 Jul 2025 21:36:39 +0000 Subject: [PATCH 3/7] fix: nodes as the well-defined variable --- spras/dataset.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/spras/dataset.py b/spras/dataset.py index 4d41cd536..dfcd59594 100644 --- a/spras/dataset.py +++ b/spras/dataset.py @@ -104,11 +104,11 @@ def load_files_from_dict(self, dataset_dict): f"Edge file {interactome_loc} must have three or four columns but found {num_cols}" ) - node_set = set(self.interactome.Interactor1.unique()) - node_set = node_set.union(set(self.interactome.Interactor2.unique())) + # We get uniqueness afterwards to make `load_files_from_dict` have a well-defined node ordering + nodes = list(pd.concat([self.interactome.Interactor1, self.interactome.Interactor2]).unique()) # Load generic node tables - self.node_table = pd.DataFrame(node_set, columns=[self.NODE_ID]) + self.node_table = pd.DataFrame(nodes, columns=[self.NODE_ID]) for node_file in node_data_files: single_node_table = pd.read_table(os.path.join(data_loc, node_file)) # If we have only 1 column, assume this is an indicator variable From a4d7741784524116b3f9eb4ac5d359762c2d82b7 Mon Sep 17 00:00:00 2001 From: "Tristan F.-R." Date: Tue, 29 Jul 2025 21:39:07 +0000 Subject: [PATCH 4/7] docs: mention node ordering reaosn --- spras/dataset.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/spras/dataset.py b/spras/dataset.py index dfcd59594..636da3657 100644 --- a/spras/dataset.py +++ b/spras/dataset.py @@ -104,7 +104,8 @@ def load_files_from_dict(self, dataset_dict): f"Edge file {interactome_loc} must have three or four columns but found {num_cols}" ) - # We get uniqueness afterwards to make `load_files_from_dict` have a well-defined node ordering + # We get uniqueness afterwards to make `load_files_from_dict` have a well-defined node ordering, + # since algorithms may depend on the order of nodes passed. nodes = list(pd.concat([self.interactome.Interactor1, self.interactome.Interactor2]).unique()) # Load generic node tables From 4273e5f75e2e9d1b45114364dc76c17f7b0e6adb Mon Sep 17 00:00:00 2001 From: "Tristan F.-R." Date: Tue, 29 Jul 2025 21:39:19 +0000 Subject: [PATCH 5/7] style: fmt --- test/generate-inputs/test_generate_inputs.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/generate-inputs/test_generate_inputs.py b/test/generate-inputs/test_generate_inputs.py index 4f94ab1d9..fa6e9b364 100644 --- a/test/generate-inputs/test_generate_inputs.py +++ b/test/generate-inputs/test_generate_inputs.py @@ -1,7 +1,7 @@ import filecmp import os -from pathlib import Path import shutil +from pathlib import Path import yaml From fd6c341f661428208c5aa251be5d7a675e40d327 Mon Sep 17 00:00:00 2001 From: "Tristan F.-R." Date: Tue, 29 Jul 2025 21:41:11 +0000 Subject: [PATCH 6/7] docs: correct wording --- CONTRIBUTING.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index d3f1ec0e8..7dc5795ba 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -205,8 +205,7 @@ First pull the image `/local-neighborhood` from Docker Hub. Then build the Docker image using the `Dockerfile` that was completed in Step 2. Modify generate inputs: -1. Include a key-value pair in the algo_exp_file dictionary that links the specific algorithm to its expected network file. -2. Obtain the expected network file from the workflow, manually confirm it is correct, and save it to `test/generate-inputs/expected`. Name it as `{algorithm_name}-{network_file_name}-expected.txt`. +1. Obtain the expected network and nodes file from the workflow, manually confirm it is correct, and save it to `test/generate-inputs/expected`. Name it as `{algorithm_name}-{network_file_name}-expected.txt`. Modify parse outputs: 1. Obtain the raw-pathway output (e.g. from the run function in your wrapper by running the Snakemake workflow) and save it to `test/parse-outputs/input`. Name it as `{algorithm_name}-raw-pathway.txt`. From fd804a266913143b4ca8aa296a2bdb652578d624 Mon Sep 17 00:00:00 2001 From: "Tristan F." Date: Sun, 10 Aug 2025 14:44:04 -0700 Subject: [PATCH 7/7] apply to new contributing --- docs/contributing/index.rst | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/docs/contributing/index.rst b/docs/contributing/index.rst index 8427f9025..47d008838 100644 --- a/docs/contributing/index.rst +++ b/docs/contributing/index.rst @@ -338,11 +338,9 @@ image using the ``Dockerfile`` that was completed in Step 2. Modify generate inputs: -1. Include a key-value pair in the algo_exp_file dictionary that links - the specific algorithm to its expected network file. -2. Obtain the expected network file from the workflow, manually confirm - it is correct, and save it to ``test/generate-inputs/expected``. Name - it as ``{algorithm_name}-{network_file_name}-expected.txt``. +1. Obtain the expected network and nodes file from the workflow, + manually confirm it is correct, and save it to ``test/generate-inputs/expected``. + Name it as ``{algorithm_name}-{network_file_name}-expected.txt``. Modify parse outputs: