diff --git a/scintillation/averaging.py b/scintillation/averaging.py index d2c783651f73aa39bb8583617f3fd4974b1a5141..1d6749aa54b08a0169cb0683678a0983fe482bd8 100644 --- a/scintillation/averaging.py +++ b/scintillation/averaging.py @@ -685,6 +685,11 @@ def round_up_datetime(datet, interval): def round_down_datetime(datet, interval): return datetime.utcfromtimestamp(numpy.floor(datet.timestamp() / interval) * interval).replace(tzinfo=timezone.utc) +def get_station_and_beam_names(dataset): + stations_list = dataset['/'].attrs['OBSERVATION_STATIONS_LIST'] + beam_name = list(dataset['/']['SUB_ARRAY_POINTING_000'].keys())[0] + station_name = stations_list[int(beam_name[-1])] + return station_name, beam_name def split_samples(dynspec_name, metadata, @@ -726,13 +731,12 @@ def split_samples(dynspec_name, station_name, *_ = metadata['BEAM_STATIONS_LIST'] station_name = decode_str(station_name) else: - station_name, *_ = metadata['OBSERVATION_STATIONS_LIST'] + station_name, beam_name = get_station_and_beam_names(dataset) if 'DATA' in dataset[dynspec_name]: data_array = dataset[dynspec_name]['DATA'] nofch = 1 #TODO check if this is always the case for DYNSPEC data else: - beam_name = [ibeam for ibeam in dataset[dynspec_name].keys() if "BEAM" in ibeam ][0] data_array = dataset[dynspec_name][beam_name]['STOKES_0'] #take median over channels for raw data nofch = dataset[dynspec_name][beam_name]['STOKES_0'].attrs['NOF_CHANNELS'][0]