From 577f47cdf6560bcaae8ef04f42f1b0aaafb13ce3 Mon Sep 17 00:00:00 2001 From: Nikos Karastathis <n.karastathis@kit.edu> Date: Sat, 14 Oct 2023 11:42:09 +0200 Subject: [PATCH] Radio produces a nice dataframe with all showers and all antennas for each radio process --- python/corsika/io/outputs/radio_process.py | 37 ++++++++++++---------- 1 file changed, 20 insertions(+), 17 deletions(-) diff --git a/python/corsika/io/outputs/radio_process.py b/python/corsika/io/outputs/radio_process.py index 0913eaa1f..9edc6baae 100644 --- a/python/corsika/io/outputs/radio_process.py +++ b/python/corsika/io/outputs/radio_process.py @@ -10,10 +10,8 @@ import logging import os.path as op from typing import Any - import pyarrow.parquet as pq import pandas as pd -import numpy as np from .output import Output @@ -60,11 +58,13 @@ class RadioProcess(Output): The path to the directory containing this output. """ - data = pq.read_table(op.join(path, "antennas.parquet")) nshowers = data.to_pandas()['shower'].iloc[-1] + 1 antennas = list(self.config["antennas"].keys()) - nr_antennas = len(antennas) + + # check that we got some events + if nshowers == 0: + logging.warn(f"Radio Process {self.config['name']} contains 0 showers.") # if there are no antennas, if len(antennas) == 0: @@ -72,19 +72,22 @@ class RadioProcess(Output): ant_nr = 0 dictionary = {} - # loop over each of the antennas - for name in antennas: - dictionary[ant_nr] = name - sampling_period = self.config["antennas"][name]["number of bins"] - antenna_data = data[ant_nr*sampling_period:(ant_nr+1)*sampling_period].to_pandas() - shower = antenna_data["shower"]#.to_numpy() - times = antenna_data["Time"]#.to_numpy() - Ex = antenna_data["Ex"]#.to_numpy() - Ey = antenna_data["Ey"]#.to_numpy() - Ez = antenna_data["Ez"]#.to_numpy() - dataset = pd.DataFrame({'shower': shower, 'time': times, 'Ex': Ex, 'Ey': Ey, 'Ez': Ez}) - - ant_nr = ant_nr+ 1 + dataset = {} + # loop over all showers + for i in range(nshowers): + # loop over each of the antennas + for name in antennas: + dictionary[ant_nr] = name + sampling_period = self.config["antennas"][name]["number of bins"] + antenna_data = data[ant_nr*sampling_period:(ant_nr+1)*sampling_period].to_pandas() + times = antenna_data["Time"] + Ex = antenna_data["Ex"] + Ey = antenna_data["Ey"] + Ez = antenna_data["Ez"] + dictionary[name] = pd.DataFrame({'time': times, 'Ex': Ex, 'Ey': Ey, 'Ez': Ez}) + ant_nr = ant_nr+ 1 + + dataset[str(i)] = dictionary return dataset -- GitLab