From 2e57ace28b533114094f7e5c9c9eefaa2a258485 Mon Sep 17 00:00:00 2001 From: Jacan Chaplais Date: Wed, 11 Jan 2023 15:36:04 +0000 Subject: [PATCH 01/15] added tests for generator and event lengths --- tests/test_generator.py | 63 ++++++++++++++++++++++++++++++++++++++++ tests/tt_bb_100.lhe.gz | Bin 0 -> 135055 bytes 2 files changed, 63 insertions(+) create mode 100644 tests/test_generator.py create mode 100644 tests/tt_bb_100.lhe.gz diff --git a/tests/test_generator.py b/tests/test_generator.py new file mode 100644 index 0000000..dcdb2fd --- /dev/null +++ b/tests/test_generator.py @@ -0,0 +1,63 @@ +import tempfile as tf +import contextlib as ctx +from pathlib import Path +import operator as op +import itertools as it +import typing as ty + +import showerpipe as shp + + +TEST_DIR = Path(__file__).parent.resolve() +DATA_PATH = TEST_DIR / "tt_bb_100.lhe.gz" + + +def all_equal(iterable: ty.Iterable[ty.Any]) -> bool: + """Returns True if all the elements are equal to each other.""" + g = it.groupby(iterable) + return next(g, True) and not next(g, False) + + +@ctx.contextmanager +def config_file( + isr: bool = True, fsr: bool = True, mpi: bool = False, hadron: bool = True +) -> ty.Generator[Path, None, None]: + f = tf.NamedTemporaryFile("w") + switch = {True: "on", False: "off"} + f.write(f"PartonLevel:ISR = {switch[isr]}\n") + f.write(f"PartonLevel:FSR = {switch[fsr]}\n") + f.write(f"PartonLevel:MPI = {switch[mpi]}\n") + if hadron is True: + f.write("HadronLevel:Hadronize = on\n") + else: + f.write("HadronLevel:all = off\n") + f.seek(0) + try: + yield Path(f.name) + finally: + f.close() + + +def test_gen_len() -> None: + with config_file() as conf_path: + gen = shp.generator.PythiaGenerator(conf_path, DATA_PATH, 1) + assert len(gen) == 100 + + +def test_event_len() -> None: + with config_file() as conf_path: + gen = shp.generator.PythiaGenerator(conf_path, DATA_PATH, 1) + event = next(gen) + event_len = len(event) + prop_names = ( + "edges", + "pmu", + "color", + "pdg", + "final", + "helicity", + "status", + ) + props = (prop(event) for prop in map(op.attrgetter, prop_names)) + lens = tuple(map(len, props)) + assert event_len != 0 and all_equal(lens) and lens[0] == event_len diff --git a/tests/tt_bb_100.lhe.gz b/tests/tt_bb_100.lhe.gz new file mode 100644 index 0000000000000000000000000000000000000000..1a375c70eb0135b2a28fd516508bfac7f6ff59ff GIT binary patch literal 135055 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 N5PHx~)=z!u{{Yz|R;2&{ literal 0 HcmV?d00001 From f18804d42ff245a6342620912b52182b4e1e45cd Mon Sep 17 00:00:00 2001 From: Jacan Chaplais Date: Thu, 12 Jan 2023 18:53:34 +0000 Subject: [PATCH 02/15] test repeat_hadronize and prevent failed data yielded --- .gitignore | 1 + setup.cfg | 1 + showerpipe/generator.py | 18 ++++++- tests/test_generator.py | 103 +++++++++++++++++++++++++++++++++++++--- 4 files changed, 114 insertions(+), 9 deletions(-) diff --git a/.gitignore b/.gitignore index 8ede8ca..eb8e81e 100644 --- a/.gitignore +++ b/.gitignore @@ -43,6 +43,7 @@ htmlcov/ nosetests.xml coverage.xml *.cover +.hypothesis/ # Translations *.mo diff --git a/setup.cfg b/setup.cfg index 3715c42..1efd455 100644 --- a/setup.cfg +++ b/setup.cfg @@ -31,6 +31,7 @@ dev = tox ==3.24.3 pytest ==6.2.5 pytest-cov ==2.12.1 + hypothesis ==6.62.0 mypy ==0.910 [options.package_data] diff --git a/showerpipe/generator.py b/showerpipe/generator.py index 3c806db..94ac730 100644 --- a/showerpipe/generator.py +++ b/showerpipe/generator.py @@ -20,6 +20,7 @@ import random from functools import cached_property from copy import deepcopy +import warnings import numpy as np import numpy.lib.recfunctions as rfn @@ -234,6 +235,9 @@ class PythiaGenerator(base.GeneratorAdapter): string, or bytes object. If file, may be compressed with gzip. rng_seed : int Seed passed to the random number generator used by Pythia. + quiet : bool + Whether to quieten ``pythia8`` during data generation. Default + is ``True``. Attributes ---------- @@ -263,6 +267,7 @@ def __init__( config_file: Union[str, Path], lhe_file: Optional[lhe._LHE_STORAGE] = None, rng_seed: Optional[int] = -1, + quiet: bool = True, ) -> None: if rng_seed is None: rng_seed = random.randint(1, 900_000_000) @@ -271,7 +276,7 @@ def __init__( xml_dir = os.environ["PYTHIA8DATA"] pythia = _pythia8.Pythia(xmlDir=xml_dir, printBanner=False) config: Dict[str, Dict[str, str]] = { - "Print": {"quiet": "on"}, + "Print": {"quiet": "on" if quiet else "off"}, "Random": {"setSeed": "on", "seed": str(rng_seed)}, "Beams": {"frameType": "4"}, } @@ -397,6 +402,9 @@ def repeat_hadronize( ValueError If the cmnd file used to initialise ``gen`` does not set 'HadronLevel:all = off'. See notes for more information. + UserWarning + If Pythia fails to perform the hadronization process for a given + event, this iterator will be empty. Notes ----- @@ -447,7 +455,13 @@ def repeat_hadronize( while (reps is None) or (i < reps): if gen._fresh_event is True: # stop if entirely new event generated break - gen._pythia.forceHadronLevel() + success: bool = gen._pythia.forceHadronLevel() + if success is False: + gen.overwrite_event(event_copy) + warnings.warn( + "Pythia cannot hadronize event. Iterator empty.", UserWarning + ) + break event_out = gen._event if copy is True: event_out = event_out.copy() diff --git a/tests/test_generator.py b/tests/test_generator.py index dcdb2fd..24f7ab4 100644 --- a/tests/test_generator.py +++ b/tests/test_generator.py @@ -5,6 +5,10 @@ import itertools as it import typing as ty +from hypothesis import given, settings, strategies as st +import numpy as np +import numpy.lib.recfunctions as rfn + import showerpipe as shp @@ -20,8 +24,22 @@ def all_equal(iterable: ty.Iterable[ty.Any]) -> bool: @ctx.contextmanager def config_file( - isr: bool = True, fsr: bool = True, mpi: bool = False, hadron: bool = True + isr: bool = True, fsr: bool = True, mpi: bool = True, hadron: bool = True ) -> ty.Generator[Path, None, None]: + """Context manager creates a temporary config file, and yields the + path, for the purpose of instantiating a new ``PythiaGenerator``. + + Parameters + ---------- + isr : bool + Initial state radiation. Default is ``True``. + fsr : bool + Final state radiation. Default is ``True``. + mpi : bool + Multi-parton interaction. Default is ``True``. + hadron : bool + Hadronization. Default is ``True``. + """ f = tf.NamedTemporaryFile("w") switch = {True: "on", False: "off"} f.write(f"PartonLevel:ISR = {switch[isr]}\n") @@ -38,15 +56,32 @@ def config_file( f.close() -def test_gen_len() -> None: - with config_file() as conf_path: - gen = shp.generator.PythiaGenerator(conf_path, DATA_PATH, 1) +@st.composite +def generators( + draw: st.DrawFn, + min_seed: int = 1, + max_seed: int = 10_000, + **config_kwargs: bool, +) -> shp.generator.PythiaGenerator: + """Custom strategy providing a ``PythiaGenerator`` with a random + seed. + """ + seed = draw(st.integers(min_seed, max_seed)) + with config_file(**config_kwargs) as conf_path: + return shp.generator.PythiaGenerator(conf_path, DATA_PATH, seed, False) + + +@given(generators()) +@settings(max_examples=5, deadline=None) +def test_gen_len(gen: shp.generator.PythiaGenerator) -> None: + """Tests that the generator length matches the number of events.""" assert len(gen) == 100 -def test_event_len() -> None: - with config_file() as conf_path: - gen = shp.generator.PythiaGenerator(conf_path, DATA_PATH, 1) +@given(generators()) +@settings(max_examples=5, deadline=None) +def test_event_len(gen: shp.generator.PythiaGenerator) -> None: + """Tests that the event length and data lengths match.""" event = next(gen) event_len = len(event) prop_names = ( @@ -61,3 +96,57 @@ def test_event_len() -> None: props = (prop(event) for prop in map(op.attrgetter, prop_names)) lens = tuple(map(len, props)) assert event_len != 0 and all_equal(lens) and lens[0] == event_len + + +@st.composite +def hadron_repeater( + draw: st.DrawFn, + min_seed: int = 1, + max_seed: int = 10_000, + reps: int = 100, +) -> ty.Iterable[shp.generator.PythiaEvent]: + """Custom strategy, providing a repeated hadronization generator + with a random seed, and a user-defined number of repetitions. + """ + gen = draw(generators(min_seed, max_seed, hadron=False)) + _ = next(gen) + return shp.generator.repeat_hadronize(gen, reps=reps) + + +@given(gen=hadron_repeater()) +@settings(max_examples=20, deadline=None) +def test_rep_hadron_uniq(gen: ty.Iterable[shp.generator.PythiaEvent]) -> None: + """Tests if the events following repeated hadronization are unique.""" + duplicate = False + data = sorted(map(op.attrgetter("pdg"), gen), key=len) + for _, data_arrays in it.groupby(data, len): + data_pairs = it.combinations(data_arrays, 2) + if any(map(lambda p: np.array_equal(*p), data_pairs)): + duplicate = True + assert duplicate is False + + +def rep_hadron_colorless(gen: ty.Iterable[shp.generator.PythiaEvent]) -> bool: + """Given a rehadronization generator, return ``False`` if colored + particles make it to the final state. + """ + all_colorless = True + for event in gen: + final_colors = rfn.structured_to_unstructured(event.color[event.final]) + if not np.all(final_colors == 0): + all_colorless = False + return all_colorless + + +@given(gen=generators(hadron=False)) +@settings(max_examples=5, deadline=None) +def test_rep_hadron_colorless(gen: shp.generator.PythiaGenerator) -> None: + """Tests if colored particles make it to final state after + rehadronization. Repeats for successive hard events. + """ + all_colorless = True + for _ in it.islice(gen, 50): + hadron_gen = shp.generator.repeat_hadronize(gen, 10, False) + if not rep_hadron_colorless(hadron_gen): + all_colorless = False + assert all_colorless is True From 74e19765731d62a1a18ab22284c3d0a41e2dde48 Mon Sep 17 00:00:00 2001 From: Jacan Chaplais <31956735+jacanchaplais@users.noreply.github.com> Date: Thu, 12 Jan 2023 22:09:01 +0000 Subject: [PATCH 03/15] added test ci worflow --- .github/workflows/tests.yml | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 .github/workflows/tests.yml diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml new file mode 100644 index 0000000..43e0679 --- /dev/null +++ b/.github/workflows/tests.yml @@ -0,0 +1,31 @@ +name: Tests + +on: + - push + - pull_request + +jobs: + test: + runs-on: ${{ matrix.os }} + strategy: + matrix: + os: [ubuntu-latest, macos-latest] + steps: + - uses: actions/checkout@v3 + + - name: Install Conda environment from environment.yml + uses: mamba-org/provision-with-micromamba@main + with: + micromamba-version: "1.1.0" + cache-env: true + extra-specs: | + python=3.10 + tox=3.24.3 + pytest=6.2.5 + pytest-cov=2.12.1 + hypothesis=6.62.0 + + # Linux and macOS + - name: Run tests + shell: bash -l {0} + run: pytest From a185988795d4e7d648a88a6d255f9f5831ffe7bc Mon Sep 17 00:00:00 2001 From: Jacan Chaplais <31956735+jacanchaplais@users.noreply.github.com> Date: Thu, 12 Jan 2023 22:11:48 +0000 Subject: [PATCH 04/15] Update tests.yml --- .github/workflows/tests.yml | 4 ---- 1 file changed, 4 deletions(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 43e0679..7681d80 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -16,13 +16,9 @@ jobs: - name: Install Conda environment from environment.yml uses: mamba-org/provision-with-micromamba@main with: - micromamba-version: "1.1.0" - cache-env: true extra-specs: | python=3.10 - tox=3.24.3 pytest=6.2.5 - pytest-cov=2.12.1 hypothesis=6.62.0 # Linux and macOS From 84dec7fa99210d1255a972d53befee397daceb2e Mon Sep 17 00:00:00 2001 From: Jacan Chaplais <31956735+jacanchaplais@users.noreply.github.com> Date: Thu, 12 Jan 2023 22:18:20 +0000 Subject: [PATCH 05/15] Update tests.yml --- .github/workflows/tests.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 7681d80..b2297fa 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -23,5 +23,6 @@ jobs: # Linux and macOS - name: Run tests - shell: bash -l {0} - run: pytest + run: | + pip install . + pytest From 2d903edcf9984fad5f5b4f289d7b29d1ba50c3fb Mon Sep 17 00:00:00 2001 From: Jacan Chaplais <31956735+jacanchaplais@users.noreply.github.com> Date: Thu, 12 Jan 2023 22:21:00 +0000 Subject: [PATCH 06/15] Update tests.yml --- .github/workflows/tests.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index b2297fa..e4c43ec 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -23,6 +23,7 @@ jobs: # Linux and macOS - name: Run tests + shell: bash -l {0} run: | pip install . pytest From b4d2f88a73422b119e08dc14b26de6ade925e378 Mon Sep 17 00:00:00 2001 From: Jacan Chaplais <31956735+jacanchaplais@users.noreply.github.com> Date: Thu, 12 Jan 2023 22:26:42 +0000 Subject: [PATCH 07/15] added tests badge to README --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 448ebe2..a44f9d0 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,6 @@ # showerpipe +![Tests](https://github.com/jacanchaplais/showerpipe/actions/workflows/tests.yml/badge.svg) [![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black) Provides a Pythonic data pipeline for showering and hadronisation programs in From 95461dbcc0b09b384808455f73334489af13c74e Mon Sep 17 00:00:00 2001 From: Jacan Chaplais Date: Fri, 13 Jan 2023 11:00:02 +0000 Subject: [PATCH 08/15] minor improvements to tests --- tests/test_generator.py | 15 ++++----------- 1 file changed, 4 insertions(+), 11 deletions(-) diff --git a/tests/test_generator.py b/tests/test_generator.py index 24f7ab4..6ffad3e 100644 --- a/tests/test_generator.py +++ b/tests/test_generator.py @@ -117,25 +117,21 @@ def hadron_repeater( @settings(max_examples=20, deadline=None) def test_rep_hadron_uniq(gen: ty.Iterable[shp.generator.PythiaEvent]) -> None: """Tests if the events following repeated hadronization are unique.""" - duplicate = False data = sorted(map(op.attrgetter("pdg"), gen), key=len) for _, data_arrays in it.groupby(data, len): data_pairs = it.combinations(data_arrays, 2) - if any(map(lambda p: np.array_equal(*p), data_pairs)): - duplicate = True - assert duplicate is False + assert any(it.starmap(np.array_equal, data_pairs)) is False def rep_hadron_colorless(gen: ty.Iterable[shp.generator.PythiaEvent]) -> bool: """Given a rehadronization generator, return ``False`` if colored particles make it to the final state. """ - all_colorless = True for event in gen: final_colors = rfn.structured_to_unstructured(event.color[event.final]) if not np.all(final_colors == 0): - all_colorless = False - return all_colorless + return False + return True @given(gen=generators(hadron=False)) @@ -144,9 +140,6 @@ def test_rep_hadron_colorless(gen: shp.generator.PythiaGenerator) -> None: """Tests if colored particles make it to final state after rehadronization. Repeats for successive hard events. """ - all_colorless = True for _ in it.islice(gen, 50): hadron_gen = shp.generator.repeat_hadronize(gen, 10, False) - if not rep_hadron_colorless(hadron_gen): - all_colorless = False - assert all_colorless is True + assert rep_hadron_colorless(hadron_gen) is True From 8589b59a4876295b15ed6cbd7114da414150991a Mon Sep 17 00:00:00 2001 From: Jacan Chaplais Date: Fri, 13 Jan 2023 11:08:47 +0000 Subject: [PATCH 09/15] cosmetic changes to test badge --- .github/workflows/tests.yml | 2 +- README.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index e4c43ec..2ecf627 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -1,4 +1,4 @@ -name: Tests +name: tests on: - push diff --git a/README.md b/README.md index e8952f4..2fd0d7f 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,8 @@ # showerpipe [![PyPI version](https://img.shields.io/pypi/v/showerpipe.svg)](https://pypi.org/project/showerpipe/) -[![Documentation](https://readthedocs.org/projects/showerpipe/badge/?version=latest)](https://showerpipe.readthedocs.io) ![Tests](https://github.com/jacanchaplais/showerpipe/actions/workflows/tests.yml/badge.svg) +[![Documentation](https://readthedocs.org/projects/showerpipe/badge/?version=latest)](https://showerpipe.readthedocs.io) [![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black) Provides a Pythonic data pipeline for showering and hadronisation programs in From 06efbd4fa4392568bf4bfc84c94da1adbc4db858 Mon Sep 17 00:00:00 2001 From: Jacan Chaplais Date: Fri, 13 Jan 2023 11:30:41 +0000 Subject: [PATCH 10/15] cache test env and split install from run --- .github/workflows/tests.yml | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 2ecf627..1640d88 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -16,14 +16,16 @@ jobs: - name: Install Conda environment from environment.yml uses: mamba-org/provision-with-micromamba@main with: + cache-env: true extra-specs: | python=3.10 pytest=6.2.5 hypothesis=6.62.0 - # Linux and macOS + - name: Install showerpipe + shell: bash -l {0} + run: pip install . + - name: Run tests shell: bash -l {0} - run: | - pip install . - pytest + run: pytest From 0efc3b30cf27ce823e2c9b1d183b36eebbcfd60f Mon Sep 17 00:00:00 2001 From: Jacan Chaplais Date: Fri, 13 Jan 2023 11:44:22 +0000 Subject: [PATCH 11/15] matrix job for multiple python versions --- .github/workflows/tests.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 1640d88..0768eff 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -10,6 +10,7 @@ jobs: strategy: matrix: os: [ubuntu-latest, macos-latest] + pyver: [3.8, 3.9, 3.10] steps: - uses: actions/checkout@v3 @@ -18,7 +19,7 @@ jobs: with: cache-env: true extra-specs: | - python=3.10 + python=${{ matrix.pyver }} pytest=6.2.5 hypothesis=6.62.0 From 5882a113de031fd5d0e6d820267618d506b2f229 Mon Sep 17 00:00:00 2001 From: Jacan Chaplais Date: Fri, 13 Jan 2023 11:45:26 +0000 Subject: [PATCH 12/15] pyver changed to strings --- .github/workflows/tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 0768eff..39f1c8b 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -10,7 +10,7 @@ jobs: strategy: matrix: os: [ubuntu-latest, macos-latest] - pyver: [3.8, 3.9, 3.10] + pyver: ["3.8", "3.9", "3.10"] steps: - uses: actions/checkout@v3 From 60374bae6a46feb4b1679aad158fe388b6fe1bef Mon Sep 17 00:00:00 2001 From: Jacan Chaplais Date: Fri, 13 Jan 2023 11:57:28 +0000 Subject: [PATCH 13/15] replaced abc iterator with typing version for 3.8 compat --- showerpipe/base.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/showerpipe/base.py b/showerpipe/base.py index 4bece7f..4d6cf84 100644 --- a/showerpipe/base.py +++ b/showerpipe/base.py @@ -5,8 +5,8 @@ Provides types and abstract base classes to define the showerpipe API. """ from abc import ABC, abstractmethod -from typing import TypeVar, Generic, Iterable, Any -from collections.abc import Sized, Iterator +from typing import TypeVar, Generic, Iterable, Any, Iterator +from collections.abc import Sized import numpy.typing as npt import numpy as np From e9a36a5f9bce6fa46256d3010cb87e8d93a04e18 Mon Sep 17 00:00:00 2001 From: Jacan Chaplais Date: Fri, 13 Jan 2023 12:04:36 +0000 Subject: [PATCH 14/15] replaced collections abc OrderedDict with typing for 3.8 compat --- showerpipe/generator.py | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/showerpipe/generator.py b/showerpipe/generator.py index 94ac730..9e75402 100644 --- a/showerpipe/generator.py +++ b/showerpipe/generator.py @@ -10,10 +10,10 @@ arrays. """ import os -import tempfile +import tempfile as tf import shutil from pathlib import Path -from typing import Optional, Any, Iterable, Dict, Tuple, Union +import typing as ty from collections import OrderedDict from dataclasses import dataclass import operator as op @@ -125,7 +125,7 @@ class PythiaEvent(base.EventAdapter): _event: _pythia8.Event @cached_property - def _pcls(self) -> Tuple[Any, ...]: + def _pcls(self) -> ty.Tuple[ty.Any, ...]: return tuple(filter(lambda pcl: pcl.id() != 90, self._event)) def __len__(self) -> int: @@ -142,11 +142,11 @@ def __str__(self) -> str: def __rich__(self) -> str: return str(self) - def _prop_map(self, prp: str) -> Iterable[Tuple[Any, ...]]: + def _prop_map(self, prp: str) -> ty.Iterable[ty.Tuple[ty.Any, ...]]: return map(op.methodcaller(prp), self._pcls) def _extract_struc( - self, schema: OrderedDict[str, Tuple[str, npt.DTypeLike]] + self, schema: ty.OrderedDict[str, ty.Tuple[str, npt.DTypeLike]] ) -> base.AnyVector: dtype = np.dtype(list(schema.values())) return np.fromiter(zip(*map(self._prop_map, schema.keys())), dtype) @@ -264,9 +264,9 @@ class PythiaGenerator(base.GeneratorAdapter): def __init__( self, - config_file: Union[str, Path], - lhe_file: Optional[lhe._LHE_STORAGE] = None, - rng_seed: Optional[int] = -1, + config_file: ty.Union[str, Path], + lhe_file: ty.Optional[lhe._LHE_STORAGE] = None, + rng_seed: ty.Optional[int] = -1, quiet: bool = True, ) -> None: if rng_seed is None: @@ -275,7 +275,7 @@ def __init__( raise ValueError("rng_seed must be between -1 and 900_000_000.") xml_dir = os.environ["PYTHIA8DATA"] pythia = _pythia8.Pythia(xmlDir=xml_dir, printBanner=False) - config: Dict[str, Dict[str, str]] = { + config: ty.Dict[str, ty.Dict[str, str]] = { "Print": {"quiet": "on" if quiet else "off"}, "Random": {"setSeed": "on", "seed": str(rng_seed)}, "Beams": {"frameType": "4"}, @@ -291,7 +291,7 @@ def __init__( if lhe_file is not None: self._num_events = lhe.count_events(lhe_file) with lhe.source_adapter(lhe_file) as f: - self.temp_lhe_file = tempfile.NamedTemporaryFile() + self.temp_lhe_file = tf.NamedTemporaryFile() shutil.copyfileobj(f, self.temp_lhe_file) self.temp_lhe_file.seek(0) me_path = self.temp_lhe_file.name @@ -358,8 +358,8 @@ def overwrite_event(self, new_event: PythiaEvent) -> None: def repeat_hadronize( - gen: PythiaGenerator, reps: Optional[int] = None, copy: bool = True -) -> Iterable[PythiaEvent]: + gen: PythiaGenerator, reps: ty.Optional[int] = None, copy: bool = True +) -> ty.Iterable[PythiaEvent]: """Takes a PythiaGenerator instance with an unhadronised event already generated, and repeatedly hadronises the current event. From ef116525a78b8e6495ce702fef191406232f9d10 Mon Sep 17 00:00:00 2001 From: Jacan Chaplais Date: Fri, 13 Jan 2023 13:22:55 +0000 Subject: [PATCH 15/15] updated repeat_hadronize so KeyError raised properly --- showerpipe/generator.py | 6 +++-- tests/test_generator.py | 52 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 56 insertions(+), 2 deletions(-) diff --git a/showerpipe/generator.py b/showerpipe/generator.py index 9e75402..0fb4216 100644 --- a/showerpipe/generator.py +++ b/showerpipe/generator.py @@ -359,7 +359,7 @@ def overwrite_event(self, new_event: PythiaEvent) -> None: def repeat_hadronize( gen: PythiaGenerator, reps: ty.Optional[int] = None, copy: bool = True -) -> ty.Iterable[PythiaEvent]: +) -> ty.Generator[PythiaEvent, None, None]: """Takes a PythiaGenerator instance with an unhadronised event already generated, and repeatedly hadronises the current event. @@ -433,7 +433,9 @@ def repeat_hadronize( if hadron_key not in conf_copy: hadron_level = "on" else: - hadron_level = conf_copy[hadron_key].pop("all", "on") + hadron_level = conf_copy[hadron_key].pop("all", None) + if hadron_level is None: + hadron_level = conf_copy[hadron_key].pop("Hadronize", "on") if len(conf_copy[hadron_key]) > 0: raise KeyError( f"Conflicting settings for {hadron_key} provided, " diff --git a/tests/test_generator.py b/tests/test_generator.py index 6ffad3e..24e01af 100644 --- a/tests/test_generator.py +++ b/tests/test_generator.py @@ -4,7 +4,9 @@ import operator as op import itertools as it import typing as ty +import shutil +import pytest from hypothesis import given, settings, strategies as st import numpy as np import numpy.lib.recfunctions as rfn @@ -113,6 +115,56 @@ def hadron_repeater( return shp.generator.repeat_hadronize(gen, reps=reps) +@given(gen=generators(hadron=True)) +@settings(max_examples=1, deadline=None) +def test_rep_hadron_conf_valerr(gen: shp.generator.PythiaGenerator) -> None: + """Tests if ``ValueError`` is raised for incorrect config.""" + _ = next(gen) + with pytest.raises(ValueError): + hadron_gen = shp.generator.repeat_hadronize(gen, 10, False) + _ = next(hadron_gen) + + +def test_rep_hadron_conf_keyerr() -> None: + """Tests if ``KeyError`` is raised for incorrect config.""" + with ctx.ExitStack() as stack: + stack.enter_context(pytest.raises(KeyError)) + conf = stack.enter_context(tf.NamedTemporaryFile("wb")) + prelim_path = stack.enter_context(config_file()) + prelim_conf = stack.enter_context(open(prelim_path, "rb")) + shutil.copyfileobj(prelim_conf, conf) + conf.write(b"HadronLevel:all = off") + conf.seek(0) + gen = shp.generator.PythiaGenerator(conf.name, DATA_PATH) + _ = next(gen) + hadron_gen = shp.generator.repeat_hadronize(gen, 10, False) + _ = next(hadron_gen) + + +@given(gen=generators(hadron=False)) +@settings(max_examples=1, deadline=None) +def test_rep_hadron_conf_runerr(gen: shp.generator.PythiaGenerator) -> None: + """Tests if ``RuntimeError`` is raised for instantiating without + existing event.""" + with pytest.raises(RuntimeError): + hadron_gen = shp.generator.repeat_hadronize(gen, 10, False) + _ = next(hadron_gen) + + +@given(gen=generators(hadron=False)) +@settings(max_examples=1, deadline=None) +def test_rep_hadron_conf_stopit(gen: shp.generator.PythiaGenerator) -> None: + """Tests if ``StopIteration`` is raised for iterating the + ``PythiaGenerator`` before between iterations of the repeat + hadronization.""" + _ = next(gen) + with pytest.raises(StopIteration): + hadron_gen = shp.generator.repeat_hadronize(gen, 10, False) + _ = next(hadron_gen) + _ = next(gen) + _ = next(hadron_gen) + + @given(gen=hadron_repeater()) @settings(max_examples=20, deadline=None) def test_rep_hadron_uniq(gen: ty.Iterable[shp.generator.PythiaEvent]) -> None: