pass global seed onto fluence and background

This commit is contained in:
Pim Nelissen
2026-05-03 17:29:53 +02:00
parent 372082f19b
commit 40b09971ff
7 changed files with 23 additions and 8 deletions

View File

@ -11,7 +11,8 @@ def generate_background(
cps_array: np.ndarray, cps_array: np.ndarray,
detector: Detector, detector: Detector,
energy_keV: float, energy_keV: float,
lam_inp: int | None = None lam_inp: int | None = None,
seed: int | None = None
) -> np.ndarray: ) -> np.ndarray:
""" """
@ -23,7 +24,7 @@ def generate_background(
else: else:
lam = lam_inp lam = lam_inp
rng = np.random.default_rng() rng = np.random.default_rng(seed=seed)
return rng.poisson(lam=lam, size=cps_array.shape) return rng.poisson(lam=lam, size=cps_array.shape)

View File

@ -125,7 +125,7 @@ class ConfigParser:
) )
if ( if (
seed is not None or seed is not None and
(isinstance(seed, int) and seed <= 0) (isinstance(seed, int) and seed <= 0)
): ):
raise InvalidConfigValueError( raise InvalidConfigValueError(

View File

@ -2,6 +2,7 @@ import argparse
import logging import logging
import sys import sys
from numpy.random import SeedSequence
from pandas.errors import ParserError from pandas.errors import ParserError
from pg_rad.exceptions.exceptions import ( from pg_rad.exceptions.exceptions import (
@ -77,12 +78,18 @@ def main():
gamma_energy_keV: 661 gamma_energy_keV: 661
detector: LU_NaI_3inch detector: LU_NaI_3inch
options:
seed: 1234
""" """
elif args.config: elif args.config:
input_config = args.config input_config = args.config
try: try:
cp = ConfigParser(input_config).parse() cp = ConfigParser(input_config).parse()
if cp.options.seed is None:
entr = SeedSequence().entropy
cp.options.seed = int(str(entr)[:6])
landscape = LandscapeDirector.build_from_config(cp) landscape = LandscapeDirector.build_from_config(cp)
output = SimulationEngine( output = SimulationEngine(
landscape=landscape, landscape=landscape,

View File

@ -109,7 +109,8 @@ def calculate_counts_along_path(
detector: "Detector", detector: "Detector",
velocity: float, velocity: float,
points_per_segment: int = 10, points_per_segment: int = 10,
bkg_cps_input: int | None = None bkg_cps_input: int | None = None,
seed: int | None = None
) -> Tuple[np.ndarray, np.ndarray]: ) -> Tuple[np.ndarray, np.ndarray]:
"""Compute the counts recorded in each acquisition period in the landscape. """Compute the counts recorded in each acquisition period in the landscape.
@ -152,14 +153,16 @@ def calculate_counts_along_path(
if bkg_cps_input is None: if bkg_cps_input is None:
bkg = generate_background( bkg = generate_background(
cps, detector, landscape.point_sources[0].isotope.E cps, detector, landscape.point_sources[0].isotope.E,
seed=seed
) )
elif bkg_cps_input == 0: elif bkg_cps_input == 0:
bkg = bkg_cps_input bkg = bkg_cps_input
else: else:
bkg = generate_background( bkg = generate_background(
cps, detector, landscape.point_sources[0].isotope.E, cps, detector, landscape.point_sources[0].isotope.E,
lam_inp=bkg_cps_input lam_inp=bkg_cps_input,
seed=seed
) )
cps_with_bg = cps + bkg cps_with_bg = cps + bkg

View File

@ -116,6 +116,7 @@ class ResultPlotter:
["Air density (kg/m^3)", round(self.landscape.air_density, 3)], ["Air density (kg/m^3)", round(self.landscape.air_density, 3)],
["Total path length (m)", round(self.landscape.path.length, 3)], ["Total path length (m)", round(self.landscape.path.length, 3)],
["Readout points", len(self.count_rate_res.integrated_counts)], ["Readout points", len(self.count_rate_res.integrated_counts)],
["Seed", self.count_rate_res.seed],
["Mean background cps", round(self.count_rate_res.mean_bkg_cps, 3)] ["Mean background cps", round(self.count_rate_res.mean_bkg_cps, 3)]
] ]

View File

@ -48,7 +48,8 @@ class SimulationEngine:
self.landscape, self.landscape,
self.detector, self.detector,
velocity=self.runtime_spec.speed, velocity=self.runtime_spec.speed,
bkg_cps_input=self.sim_spec.bkg_cps bkg_cps_input=self.sim_spec.bkg_cps,
seed=self.sim_spec.seed
) )
) )
@ -59,7 +60,8 @@ class SimulationEngine:
sub_points, sub_points,
cps, cps,
int_counts, int_counts,
mean_bkg_counts mean_bkg_counts,
self.sim_spec.seed
) )
def _calculate_point_source_distance_to_path(self) -> List[SourceOutput]: def _calculate_point_source_distance_to_path(self) -> List[SourceOutput]:

View File

@ -12,6 +12,7 @@ class CountRateOutput:
cps: List[float] cps: List[float]
integrated_counts: List[float] integrated_counts: List[float]
mean_bkg_cps: List[float] mean_bkg_cps: List[float]
seed: int
@dataclass @dataclass