From 608ac19b4933fed5f8e5a96ffb91fedae6743ba1 Mon Sep 17 00:00:00 2001 From: Stefan Reck <stefan.reck@fau.de> Date: Fri, 16 Apr 2021 14:59:17 +0200 Subject: [PATCH] add tests --- ...neturino_mc.toml => orcasong_example.toml} | 5 ++- orcasong/from_toml.py | 15 ++++---- tests/test_from_toml.py | 36 +++++++++++++++++++ 3 files changed, 48 insertions(+), 8 deletions(-) rename examples/{orcasong_neturino_mc.toml => orcasong_example.toml} (62%) create mode 100644 tests/test_from_toml.py diff --git a/examples/orcasong_neturino_mc.toml b/examples/orcasong_example.toml similarity index 62% rename from examples/orcasong_neturino_mc.toml rename to examples/orcasong_example.toml index 4f54ca0..5ab2719 100644 --- a/examples/orcasong_neturino_mc.toml +++ b/examples/orcasong_example.toml @@ -1,8 +1,11 @@ # the mode to run orcasong in; either 'graph' or 'image' mode="graph" -# arguments for running orcasong (see FileGraph or FileBinner in orcasong.core). +# arguments for FileGraph or FileBinner (see orcasong.core) max_n_hits = 2000 time_window = [-100, 5000] +# can also give the arguments of orcasong.core.BaseProcessor, +# which are shared between modes +chunksize=16 # built-in extractor function to use extractor = "neutrino_mc" diff --git a/orcasong/from_toml.py b/orcasong/from_toml.py index 9958fd1..09e0a8e 100644 --- a/orcasong/from_toml.py +++ b/orcasong/from_toml.py @@ -1,4 +1,3 @@ -import os import toml import orcasong.core import orcasong.extractors as extractors @@ -31,15 +30,17 @@ def add_parser_run(subparsers): def run_orcasong(infile, toml_file, detx_file=None, outfile=None): - if outfile is None: - outfile = f"{os.path.splitext(os.path.basename(infile))[0]}_dl.h5" + setup_processor(infile, toml_file, detx_file).run( + infile=infile, outfile=outfile) + +def setup_processor(infile, toml_file, detx_file=None): cfg = toml.load(toml_file) - processor = _get_verbose(cfg["mode"], MODES) + processor = _get_verbose(cfg.pop("mode"), MODES) if "detx_file" in cfg: if detx_file is not None: - raise ValueError("detx_file passed to function AND defined in toml") + raise ValueError("detx_file passed to run AND defined in toml") detx_file = cfg.pop("detx_file") if "extractor" in cfg: @@ -48,11 +49,11 @@ def run_orcasong(infile, toml_file, detx_file=None, outfile=None): else: extractor = None - processor( + return processor( det_file=detx_file, extractor=extractor, **cfg, - ).run(infile=infile, outfile=outfile) + ) def _get_verbose(key, d): diff --git a/tests/test_from_toml.py b/tests/test_from_toml.py new file mode 100644 index 0000000..5ee6fb6 --- /dev/null +++ b/tests/test_from_toml.py @@ -0,0 +1,36 @@ +from unittest import TestCase +import os +import orcasong +import orcasong.from_toml as from_toml + +EXAMPLES = os.path.join( + os.path.dirname(os.path.dirname(orcasong.__file__)), "examples" +) + + +def test_extr(infile): + return infile + "_extr" + + +orcasong.from_toml.EXTRACTORS["neutrino_mc"] = test_extr + + +class TestSetupProcessorExampleConfig(TestCase): + def setUp(self): + self.processor = from_toml.setup_processor( + infile="test_in", + toml_file=os.path.join(EXAMPLES, "orcasong_example.toml"), + detx_file="test_det", + ) + + def test_time_window(self): + self.assertEqual(self.processor.time_window, [-100, 5000]) + + def test_max_n_hits(self): + self.assertEqual(self.processor.max_n_hits, 2000) + + def test_chunksize(self): + self.assertEqual(self.processor.chunksize, 16) + + def test_extractor_is_dummy_extractor(self): + self.assertEqual(self.processor.extractor, "test_in_extr") -- GitLab