def calculate_everything(button, array_codes, band, data_rate, source, starttime, duration): if duration == '0.0' or float(duration) <= 0.0: return 'Set a duration and press "Calculate"' duration = float(duration) antennas = stationList.get_stations_with_codes(array_codes) # If source and/or start of observation are not set, then regular sensitivity calc. if source == 'hh:mm:ss dd:mm:ss' or starttime == 'DD/MM/YYYY HH:MM': obs_times = uf.get_obs_times(uf.get_time('01/01/1993 03:14'), duration, duration) ant_times = [obs_times] * len(antennas) # Dummy elevation (40 deg) for all stations elevations = np.ones((len(antennas), len(obs_times))) * 40 else: # NOTE: Check for source and startime format!!!! obs_times = uf.get_obs_times(uf.get_time(starttime), duration, 0.3) ant_times, elevations = uf.times_elev_with_source_above( uf.get_coordinates(source), antennas, obs_times) # Remove all stations that do not observe the source antennas = [a for a, t in zip(antennas, ant_times) if len(t) > 0] if len(antennas) > 0: ant_times = [t for t in ant_times if len(t) > 0] elevations = [e for e in elevations if len(e) > 0] rms = uf.get_thermal_noise(antennas, ant_times, data_rate * 1e6, band) return formatted_text(rms, uf.get_bandwidth_smearing(), uf.get_time_smearing())
def update_plot_visibility(button, antenna_codes, bands, source, starttime, duration): if (source == 'hh:mm:ss dd:mm:ss' or starttime == 'DD/MM/YYYY HH:MM' or float(duration) <= 0.0): return None obs_times = uf.get_obs_times(uf.get_time(starttime), float(duration), time_interval) antennas = stationList.get_stations_with_codes(antenna_codes) ant_times, elevations = uf.times_elev_with_source_above( uf.get_coordinates(source), antennas, obs_times) antennas = [a for a, t in zip(antennas, ant_times) if len(t) > 0] if len(antennas) > 0: ant_times = [t for t in ant_times if len(t) > 0] elevations = [e for e in elevations if len(e) > 0] return pf.time_visibility(ant_times, elevations, [s.name for s in antennas], xlim=(obs_times[0].datetime, obs_times[-1].datetime))