patch export to add also detector details

This commit is contained in:
Pim Nelissen
2026-04-16 13:40:47 +02:00
parent eadf14fd49
commit 8017159c5b
3 changed files with 28 additions and 2 deletions

View File

@ -3,6 +3,7 @@ from typing import List
from pg_rad.landscape.landscape import Landscape
from pg_rad.simulator.outputs import (
CountRateOutput,
DetectorOutput,
SimulationOutput,
SourceOutput
)
@ -31,11 +32,13 @@ class SimulationEngine:
count_rate_results = self._calculate_count_rate_along_path()
source_results = self._calculate_point_source_distance_to_path()
detector_results = self._generate_detector_output()
return SimulationOutput(
name=self.landscape.name,
size=self.landscape.size,
count_rate=count_rate_results,
detector=detector_results,
sources=source_results
)
@ -80,3 +83,13 @@ class SimulationEngine:
)
return source_output
def _generate_detector_output(self) -> DetectorOutput:
return DetectorOutput(
name=self.detector.name,
type=self.detector.type,
is_isotropic=self.detector.is_isotropic,
field_eff=self.detector.get_efficiency(
self.landscape.point_sources[0].isotope.E
)
)

View File

@ -24,9 +24,18 @@ class SourceOutput:
dist_from_path: float
@dataclass
class DetectorOutput:
name: str
type: str
is_isotropic: bool
field_eff: float
@dataclass
class SimulationOutput:
name: str
size: tuple
detector: DetectorOutput
count_rate: CountRateOutput
sources: List[SourceOutput]

View File

@ -5,7 +5,7 @@ import os
import logging
import re
from numpy import array, full_like, ndarray
from numpy import array, full_like, ndarray, bool_
from pandas import DataFrame
from pg_rad.simulator.outputs import SimulationOutput
@ -18,6 +18,8 @@ class NumpyEncoder(json.JSONEncoder):
def default(self, obj):
if isinstance(obj, ndarray):
return obj.tolist()
elif isinstance(obj, bool_):
return bool(obj)
return super().default(obj)
@ -44,8 +46,10 @@ def save_results(sim: SimulationOutput, folder_name: str) -> None:
df = generate_df(sim)
csv_name = generate_csv_name(sim)
df.to_csv(f"{folder_name}/{csv_name}.csv", index=False)
param_dict = generate_sim_param_dict(sim)
print(type(param_dict['detector']['is_isotropic']))
with open(f"{folder_name}/parameters.json", 'w') as f:
json.dump(generate_sim_param_dict(sim), f, cls=NumpyEncoder)
json.dump(param_dict, f, cls=NumpyEncoder)
logger.info(f"Simulation output saved to {folder_name}!")