def main(): logger = logger_defaults.getProgramLogger("observe", loglevel=logging.INFO) ant_list = ['3c'] snap_if.setatten({ant + pol: 27 for ant in ant_list for pol in ["x", "y"]}) snap_dada.set_freq_auto([1600] * len(ant_list), ant_list) obs_time = 10 goes_az = 121.96 goes_el = 23.63 # point at goes16 ata_control.set_az_el(ant_list, goes_az, goes_el) utcs = [] while True: utc = snap_dada.start_recording(ant_list, obs_time, acclen=120 * 16, disable_rfi=True) utcs.append(utc) time.sleep(2) print("") print("=" * 79) for ant in ant_list: p = get_power(utc, ant) print(ant, p, 10 * np.log10(p), "dB") print("=" * 79) print("") _ = input("measure again?")
def main(): logger = logger_defaults.getProgramLogger("observe", loglevel=logging.INFO) # pulsar observation #ant_list = ["1a", "1f", "1c", "2a", "2h", "1k", "5c", "4g", "4j"] #freqs = [950, 950, 1600, 1600, 1600, 1600, 950, 950, 1600] #ant_list = ["1a", "1f", "1c", "2a", "2h", "1k", "5c", "4g", "4j", "1h"] #freqs = [950, 950, 1600, 1600, 1600, 1600, 950, 950, 1600, 1600] ant_list = ["1a", "1f", "5c", "1c", "2a", "4j", "2h", "1k", "1h"] freqs = [950]*3 + [1600]*3 + [2250]*3 ata_control.reserve_antennas(ant_list) atexit.register(ata_control.release_antennas,ant_list, True) source = "frb180916" snap_dada.set_freq_auto(freqs, ant_list) ata_control.make_and_track_ephems(source, ant_list) ata_control.autotune(ant_list) obs_time = 1200 nhours = 3 ncycles = 2 for icycle in range(ncycles): for i in range(nhours*3): snap_if.tune_if_ants(ant_list) utc = snap_dada.start_recording(ant_list, obs_time, npolout=1, acclen=120, disable_rfi=True) snap_dada.mark_obs_for_heimdall(utc) time.sleep(1200)
def main(): logger = logger_defaults.getProgramLogger("observe", loglevel=logging.INFO) # moon observation az_offset = 20 el_offset = 0 #freqs = np.arange(1000, 11000, 500) #freq = 1600 #+ 2*300 #freq = 1600 + 700 #+ 2*300 ant_list = ["2b", "2a"] ata_control.reserve_antennas(ant_list) atexit.register(ata_control.release_antennas, ant_list, True) obs_time = 30 source = "NCP" ata_control.set_az_el(ant_list, 0, 40.723) ata_control.autotune(ant_list) freqs = np.arange(1250, 11200, 450) snap_dada.set_freq_auto([freqs[0]] * len(ant_list), ant_list) time.sleep(30) for ifreq, freq in enumerate(freqs): snap_dada.set_freq_auto([freq] * len(ant_list), ant_list) snap_if.tune_if_ants(ant_list) utc = snap_dada.start_recording(ant_list, obs_time, npolout=2, acclen=120 * 2, source="NCP", disable_rfi=True)
def main(): logger = logger_defaults.getProgramLogger("observe", loglevel=logging.INFO) # pulsar observation ant_list = ["1f", "1h", "1c"] #, "1k", "5c"] freqs = [950, 1300, 1650] #, 1600, 950] ata_control.reserve_antennas(ant_list) atexit.register(ata_control.release_antennas, ant_list, False) source = "J0332+5434" ata_control.make_and_track_ephems(source, ant_list) #ata_control.set_freq(freqs, ant_list) snap_dada.set_freq_auto(freqs, ant_list) ata_control.autotune(ant_list) snap_if.tune_if_ants(ant_list) obs_time = 300 utc = snap_dada.start_recording(ant_list, obs_time, npolout=1, acclen=24, disable_rfi=True)
def main(): logger = logger_defaults.getProgramLogger("observe", loglevel=logging.INFO) # pulsar observation #ant_list = ["1f", "1h"]#, "1k", "5c"] #freqs = [950, 1600]#, 1600, 950] #ant_list = ["1a", "4j", "1k"] #freqs = [950] + [1600] + [2250] ant_list = ["1f", "5c", "1a", "1c", "2a", "4j", "2h", "1k", "1h"] #freqs = [950]*3 + [1600]*3 + [2250]*3 freqs = [1400] * len(ant_list) #ant_list = ["1f", "1k"] #freqs = [950, 1600] ata_control.reserve_antennas(ant_list) atexit.register(ata_control.release_antennas, ant_list, False) source = "j0534+2200" ata_control.make_and_track_ephems(source, ant_list) ata_control.autotune(ant_list) snap_dada.set_freq_auto(freqs, ant_list) snap_if.tune_if_ants(ant_list) obs_time = 1800 #for i in range(3): utc = snap_dada.start_recording(ant_list, obs_time, npolout=1, acclen=40, disable_rfi=True)
def main(): logger = logger_defaults.getProgramLogger("observe", loglevel=logging.INFO) #ant_list = ["3c", "2b"] #ant_list = ['1a', '1f', '1c', '2a', '2b', '2h', # '4g', '1k', '5c', '1h', '4j'] ant_list = ['3c'] #snap_if.setatten({'3cx': 27, '3cy': 27, '2bx': 27, '2by': 27}) snap_if.setatten({ant + pol: 27 for ant in ant_list for pol in ["x", "y"]}) snap_dada.set_freq_auto([1600] * len(ant_list), ant_list) #snap_if.tune_if_ants(ant_list) obs_time = 10 goes_az = 121.96 goes_el = 23.63 step = 0.1 az_list = np.arange(goes_az - 1, goes_az + 1, step) el_list = np.arange(goes_el - 1, goes_el + 1, step) for az in az_list: os.system("killall ata_udpdb") for el in el_list: print("az: %.2f, el: %.2f" % (az, el)) ata_control.set_az_el(ant_list, az, el) utc = snap_dada.start_recording(ant_list, obs_time, acclen=120 * 16, disable_rfi=True) time.sleep(10)
def main(): logger = logger_defaults.getProgramLogger("observe", loglevel=logging.INFO) ant_list = ["1a", "1f", "1c", "2a", "2b", "2h", "3c", "4g", "1k", "5c", "1h", "4j"] #ata_control.reserve_antennas(ant_list) atexit.register(ata_control.release_antennas,ant_list, False) ata_control.set_az_el(ant_list, 180, 75) ata_control.autotune(ant_list) freqs = np.arange(2250, 11200, 550) snap_dada.set_freq_auto([freqs[0]]*len(ant_list), ant_list) time.sleep(30) o = open("output_snap_if.txt","w") for ifreq, freq in enumerate(freqs): time.sleep(10) snap_dada.set_freq_auto([freq]*len(ant_list), ant_list) snap_if.tune_if_ants(ant_list) o.write(str(freq)) o.write(str(snap_if.getatten(ant_list))) o.close()
def main(): logger = logger_defaults.getProgramLogger("observe", loglevel=logging.INFO) # pulsar observation ant_list = ["1a","1f"] ata_control.reserve_antennas(ant_list) atexit.register(ata_control.release_antennas, ant_list, False) dump_thread = ata_coords.CoordDumpThread(ant_list, "/mnt/buf0/obs/coords_dump.txt") dump_thread.start() atexit.register(dump_thread.stop) #source = "GPS-BIIRM-3--PRN-12-" source = "GPS-BIIF-6---PRN-06-" ata_control.create_ephem(source, **{'duration': 2, 'interval': 0.1}) freqs = [1575]*len(ant_list) snap_dada.set_freq_auto(freqs, ant_list) antpols = ["%s%s" %(ant, pol) for ant in ant_list for pol in ["x", "y"]] if_atten = {antpol:10 for antpol in antpols} snap_if.setatten(if_atten) pbfwhm = (3.5 / freqs[0] * 1000.0); delta = pbfwhm / 2.0 obs_time = 30 offsets = [ [0., 4*delta], [0., delta], [0., 0.], [0., -delta], [0., -4*delta], [-4*delta, 0.], [-delta, 0.], [0., 0.], [delta, 0.], [4*delta, 0.] ] # offsets = az/el for offset in offsets: print(offset) ata_control.track_and_offset(source, ant_list, offset=offset) utc = snap_dada.start_recording(ant_list, obs_time, acclen=120*16, disable_rfi=True)
def main(): logger = logger_defaults.getProgramLogger("observe", loglevel=logging.INFO) # pulsar observation #ant_list = ["1a", "1k", "5c", "1h", "4j", "3d", "4g", "2h", "2a", "2b", "1c"] #ant_list = ["1a", "1f", "2a", "2h", "3d", "4g", "1k", "5c", "1h", "2b"] ant_list = ['1a', '1f', '1c', '1h', '2a', '4j', '2h', '3d', '4g', '5c', '2b'] #freqs = [2000]*len(ant_list) freqs = [1500]*len(ant_list) ata_control.reserve_antennas(ant_list) atexit.register(ata_control.release_antennas,ant_list, True) # observe a pulsar #source = "J1935+1616" #source = "J0332+5434" #ata_control.make_and_track_ephems(source, ant_list) #ata_control.autotune(ant_list, power_level=-15) #snap_dada.set_freq_auto(freqs, ant_list) #snap_if.tune_if_ants(ant_list) #utc = snap_dada.start_recording(ant_list, 600, # npolout=1, acclen=120, disable_rfi=True) # now to FRB source #source = "frb180916" source = "J1934+2153" ata_control.make_and_track_ephems(source, ant_list) ata_control.autotune(ant_list, power_level=-15) snap_dada.set_freq_auto(freqs, ant_list) snap_if.tune_if_ants(ant_list) obs_time = 1200 nhours = 3 ncycles = 3 for icycle in range(ncycles): for i in range(nhours*3): snap_if.tune_if_ants(ant_list) utc = snap_dada.start_recording(ant_list, obs_time, npolout=1, acclen=120, disable_rfi=True) Path('/mnt/buf0/obs/%s/obs.sumall' %utc).touch() snap_dada.mark_obs_for_heimdall(utc) time.sleep(300)
def main(): logger = logger_defaults.getProgramLogger("observe", loglevel=logging.INFO) # pulsar observation """ ant_list = ["1a","1f","5c"] freqs = [950]*3 ant_list += ["2h", "1k", "1h"] freqs += [1300]*3 ant_list += ["1c", "2a", "4j"] freqs += [1650]*3 """ #ant_list = ["1f", "2a", "1k", "5c"] #freqs = [950, 1600, 1600, 950] #ant_list = ["1a", "1f", "1c", "2a", "2b", "2h", "3c", # "1k", "5c", "4g", "4j", "1h"] #freqs = [1400]*len(ant_list) #ant_list = ["1f", "5c", "1a", "1c", "2a", "4j", "2h", "1k", "1h"] #freqs = [950]*3 + [1600]*3 + [2250]*3 ant_list = [ "1a", "1f", "1c", "2a", "2h", "3d", "5c", "2b", "1h", "4g", "4j" ] freqs = [1500] * len(ant_list) ata_control.reserve_antennas(ant_list) atexit.register(ata_control.release_antennas, ant_list, True) source = "J1935+1616" ata_control.make_and_track_ephems(source, ant_list) ata_control.autotune(ant_list) snap_dada.set_freq_auto(freqs, ant_list) time.sleep(30) snap_if.tune_if_ants(ant_list) obs_time = 300 utc = snap_dada.start_recording(ant_list, obs_time, npolout=1, acclen=120, disable_rfi=True)
def main(): logger = logger_defaults.getProgramLogger("observe", loglevel=logging.INFO) # pulsar observation ant_list = ["3c"] freqs = [1000] ata_control.reserve_antennas(ant_list) atexit.register(ata_control.release_antennas, ant_list, False) snap_dada.set_freq_auto(freqs, ant_list) snap_if.tune_if_ants(ant_list) obs_time = 30 utc = snap_dada.start_recording(ant_list, obs_time, npolout=1, acclen=120, disable_rfi=True)
def main(): logger = logger_defaults.getProgramLogger("observe", loglevel=logging.INFO) # pulsar observation #ant_list = ["1a", "1f", "5c", "1c", "2a", "4j", "2h", "1k", "1h"] #ant_list = ["3c", "2b"] #ant_list = ["1a", "1f", "1c", "2b", # "1k", "5c", "1h", "4j", "2a", "3d", "4g", "2h"] #ant_list = ["1a", "1f", "1k", "5c", "1h", "4j", "3d", "4g", "2h", "2a", "1c", "2b"] ant_list = [ "1a", "1f", "5c", "1h", "4j", "3d", "4g", "2h", "2a", "1c", "2b" ] #ant_list = ["1a", "1f", "5c", "4g"] #freqs = [950]*3 + [1600]*3 + [2250]*3 #ant_list = ["1f"] freqs = [1500] * len(ant_list) #freqs = [750]*len(ant_list) ata_control.reserve_antennas(ant_list) atexit.register(ata_control.release_antennas, ant_list, True) #ata_control.set_freq(freqs, ant_list) snap_dada.set_freq_auto(freqs, ant_list) print("Done") time.sleep(30) source = "J0332+5434" ata_control.make_and_track_ephems(source, ant_list) ata_control.autotune(ant_list, power_level=-15) snap_if.tune_if_ants(ant_list) obs_time = 1200 utc = snap_dada.start_recording(ant_list, obs_time, disable_rfi=True, npolout=1, acclen=120)
def main(): logger = logger_defaults.getProgramLogger("observe", loglevel=logging.INFO) # pulsar observation ant_list = ["1a", "1f"] ata_control.reserve_antennas(ant_list) atexit.register(ata_control.release_antennas, ant_list, False) source = "GPS-BIIRM-3--PRN-12-" source = "casa" ata_control.create_ephem(source) freqs = [1575] * len(ant_list) snap_dada.set_freq_auto(freqs, ant_list) antpols = ["%s%s" % (ant, pol) for ant in ant_list for pol in ["x", "y"]] if_atten = {antpol: 10 for antpol in antpols} snap_if.setatten(if_atten) pbfwhm = (3.5 / freqs[0] * 1000.0) delta = pbfwhm / 2.0 obs_time = 30 delta = 1. offsets = [[0., 4 * delta], [0., delta], [0., 0.], [0., -delta], [0., -4 * delta], [-4 * delta, 0.], [-delta, 0.], [0., 0.], [delta, 0.], [4 * delta, 0.]] # offsets = az/el for offset in offsets: print(offset) ata_control.track_and_offset(source, ant_list, offset=offset) #utc = snap_dada.start_recording(ant_list, obs_time, acclen=120*16, # disable_rfi=True) _ = input("Press enter for next pointing")
def main(): logger = logger_defaults.getProgramLogger("observe", loglevel=logging.INFO) ant_list = ["1a", "1f", "1h", "1c", "2a", "2h", "1k", "5c", "4j", "4g"] freqs = [950, 950, 1600, 1600, 1600, 1600, 1600, 950, 1600, 950] ata_control.reserve_antennas(ant_list) atexit.register(ata_control.release_antennas, ant_list, True) source = "J0008+6829" ata_control.make_and_track_ephems(source, ant_list) snap_dada.set_freq_auto(freqs, ant_list) ata_control.autotune(ant_list) os.system(ATTEMP_SCRIPT) obs_time = 1200 nhours = 3 for i in range(int(nhours * 3)): utc = snap_dada.start_recording(ant_list, obs_time, npolout=1, acclen=120, disable_rfi=True)
def main(): logger = logger_defaults.getProgramLogger("observe", loglevel=logging.INFO) ant_list = ['2b'] #pms = {ant:ata_pointing.PointingModel(ant) for ant in ant_list} #pm = ata_pointing.PointingModel('3c') ata_control.reserve_antennas(ant_list) atexit.register(ata_control.release_antennas, ant_list, False) pams = {ant + pol: 27 for ant in ant_list for pol in ["x", "y"]} ifs = {ant + pol: 20 for ant in ant_list for pol in ["x", "y"]} ata_control.set_pams(pams) snap_if.setatten(ifs) freq = 1575 snap_dada.set_freq_auto([freq] * len(ant_list), ant_list) # define how to grid the sky pbfwhm = (3.5 / freq * 1000.0) delta = pbfwhm / 2.0 obs_time = 30 # elevation then azimuth offsets = [[0., 4 * delta], [0., delta], [0., 0.], [0., -delta], [0., -4 * delta], [-4 * delta, 0.], [-delta, 0.], [0., 0.], [delta, 0.], [4 * delta, 0.]] obs_time = 20 utcs = [] sats_observed = [] time_obs = [] t = time.time() ofile = open("/home/obsuser/pointing/%i_atapointer.txt" % t, "w") tpoints = { ant: open("/home/obsuser/pointing/%i_%s_tpoint.txt" % (t, ant), "w") for ant in ant_list } atexit.register(ofile.close) for tpoint in tpoints.values(): atexit.register(tpoint.close) while True: #utc = snap_dada.start_recording(ant_list, obs_time, acclen=120*16, # disable_rfi=True) #utcs.append(utc) #for ant in ant_list: # p = get_power(utc, ant) # print(ant, p, 10*np.log10(p), "dB") sats = ata_sources.get_sats()['GPS'] setting_sats, rising_sats = select_group_sats(sats) to_observe = None # select a rising satellite from rising group first # then check if there's any setting satellite, and observe # that instead. The rising satellite will be selected in the # following iteration for sat_group in [rising_sats, setting_sats]: for sat in sat_group: name, az, el = sat['name'], float(sat['az']), float(sat['el']) # skip if satellite has been observed in the last 5 times if name in sats_observed[-5:]: continue to_observe = sat ofile.write("will observe: %s, state: %s\n" % (name, sat['state'])) break # if all the satellites have been observed if not to_observe: # chose a random satellite that is setting, in case there's one if len(setting_sats) != 0: to_observe = random.choice(setting_sats) # else chose one that is rising, if there's one if len(rising_sats) != 0: to_observe = random.choice(rising_sats) if to_observe: az, el = float(sat['az']), float(sat['el']) name = sat['name'] ofile.write("%s: Observing: %s\n" % (datetime.datetime.now(), to_observe['name'])) ofile.write("%s: Az, el, state: %.2f, %.2f, %s\n" % (datetime.datetime.now(), az, el, sat['state'])) ata_control.create_ephem(name, **{'duration': 2, 'interval': 1}) # offsets = az/el for i in range(nRepeats): azs = {ant: [] for ant in ant_list} els = {ant: [] for ant in ant_list} az_offs = {ant: [] for ant in ant_list} el_offs = {ant: [] for ant in ant_list} meas = {ant: [] for ant in ant_list} igrid = 0 # now do the cross pattern for offset in offsets: ofile.write("%s: %s" % (datetime.datetime.now(), offset)) ofile.write("\n") ata_control.track_and_offset(name, ant_list, xoffset=offset) for ant in ant_list: # XXX: what az/el are these? Encoder or astronomical? az_el = ata_control.get_az_el(ant_list)[ant] # Determine the true position of satellite x_el_off = offset[0] el_off = offset[1] az_off = x_el_off / np.cos(np.deg2rad(az_el[1])) azs[ant].append(az_el[0] - az_off) els[ant].append(az_el[1] - el_off) az_offs[ant].append(az_off) el_offs[ant].append(el_off) # record data utc = snap_dada.start_recording(ant_list, obs_time, acclen=120 * 16, disable_rfi=True) # get the measurement data for ant in ant_list: try: meas[ant].append(get_power(utc, ant)) except: meas[ant].append(np.nan) for ant in ant_list: ofile.write(ant + "\n") az_avg = np.array(azs[ant]).mean() el_avg = np.array(els[ant]).mean() ofile.write("%s: azimuths: " % (datetime.datetime.now()) + float_arr_to_str(azs[ant]) + "\n") ofile.write("%s: elevations: " % (datetime.datetime.now()) + float_arr_to_str(els[ant]) + "\n") ofile.write("%s: az_offsets: " % (datetime.datetime.now()) + float_arr_to_str(az_offs[ant]) + "\n") ofile.write("%s: el_offsets: " % (datetime.datetime.now()) + float_arr_to_str(el_offs[ant]) + "\n") ofile.write("%s: meas: " % (datetime.datetime.now()) + float_arr_to_str(meas[ant]) + "\n") ofile.write("%s: source az_avg: " % (datetime.datetime.now()) + str(az_avg) + "\n") ofile.write("%s: source el_avg: " % (datetime.datetime.now()) + str(el_avg) + "\n") try: peak_el = analyzeFivePoints(el_offs[ant][:5], meas[ant][:5]) peak_pos_el, peak_val_el, peak_width_el = peak_el peak_az = analyzeFivePoints(az_offs[ant][5:], meas[ant][5:]) peak_pos_az, peak_val_az, peak_width_az = peak_az peak_sbr = np.sqrt(peak_val_az**2 + peak_val_el**2) except: ofile.write( "%s: Something went wrong with measuring power with ant: %s\n" % (datetime.datetime.now(), ant)) continue ofile.write("%f %f %f\n" % (peak_pos_el, peak_val_el, peak_width_el)) ofile.write("%f %f %f\n" % (peak_pos_az, peak_val_az, peak_width_az)) meas_az = (az_avg + peak_pos_az) meas_el = (el_avg + peak_pos_el) #meas_az, meas_el, ir = pms[ant].applyTPOINTCorrections(meas_az, meas_el, 0) dt = datetime.datetime.now() hour = dt.hour + dt.minute / 60. tpoints[ant].write( "%.3f, %.3f, %.3f, %.3f, %.3f, %.3f\n" % (az_avg, el_avg, meas_az, meas_el, peak_sbr, hour)) tpoints[ant].flush() os.system("killall ata_udpdb") sats_observed.append(to_observe['name']) else: # wait for 20 minutes and see what other satellite pops up ofile.write("%s: nothing to observe, waiting\n" % (datetime.datetime.now())) #sats_observed = [] time.sleep(20 * 60) ofile.flush()
def main(): logger = logger_defaults.getProgramLogger("observe", loglevel=logging.INFO) # pulsar observation #ant_list = ["1a", "1c", "2a", # "2h", "4g", "1k", "5c"] # 4g and 1h for GNURADIO #ant_list = ["1a", "1f", "1c", "1h", "2a", "1k", "5c", "4g"] #freqs = [950, 950, 1600, 1600, 1600, 1600, 950, 950] # LO b #sub1 = ["1f", "5c"] #freq1 = [950] # LO c #sub2 = ["2h", "1k", "1h"] #freq2 = [1300] # LO a #sub3 = ["1c", "2a", "4j"] #freq3 = [1650] #ant_list = sub1 + sub2 + sub3 #freqs = freq1*len(sub1) + freq2*len(sub2) + freq3*len(sub3) #ant_list = ["1f", "5c", "1a", "1c", "2a", "4j", "2h", "1k", "1h"] #freqs = [950]*3 + [1600]*3 + [2250]*3 ant_list = ["1f", "5c", "1a", "1c", "2a", "4j", "2h", "1k", "1h"] freqs = [950] * 3 + [1600] * 3 + [2250] * 3 #ant_list = ["1f", "2a", "1k", "5c"] #freqs = [950, 1600, 1600, 950] snap_dada.set_freq_auto(freqs, ant_list) ata_control.reserve_antennas(ant_list) atexit.register(ata_control.release_antennas, ant_list, True) source = "J1935+1616" ata_control.make_and_track_ephems(source, ant_list) ata_control.autotune(ant_list) snap_if.tune_if_ants(ant_list) utc = snap_dada.start_recording(ant_list, 600, npolout=1, acclen=120, disable_rfi=True) source = "J1934+2153" ata_control.make_and_track_ephems(source, ant_list) obs_time = 1200 nhours = 3 for i in range(2): for i in range(int(nhours * 3)): snap_if.tune_if_ants(ant_list) utc = snap_dada.start_recording(ant_list, obs_time, npolout=1, acclen=120, disable_rfi=True) snap_dada.mark_obs_for_heimdall(utc) print("Now sleeping for 20 minutes") time.sleep(1200)
def main(): logger = logger_defaults.getProgramLogger("observe", loglevel=logging.INFO) # casa observation az_offset = 20. el_offset = 0. ant_list = [ "1a", "1f", "1c", "2a", "2b", "2h", "3c", "4g", "1k", "5c", "1h", "4j" ] ata_control.reserve_antennas(ant_list) atexit.register(ata_control.release_antennas, ant_list, False) obs_time = 30 n_on_off = 1 source = "casa" ata_control.create_ephems2(source, az_offset, el_offset) ata_control.point_ants2(source, "off", ant_list) ata_control.autotune(ant_list) #freqs = np.arange(1200, 9500, 350) #freqs = np.arange(1200, 11200, 350) #freqs = np.arange(1200, 1900, 350) #freqs = np.arange(2250, 11200, 550) freqs = [3500, 4500, 5500, 6500, 7500] snap_dada.set_freq_auto([freqs[0]] * len(ant_list), ant_list) time.sleep(30) snap_if.tune_if_ants(ant_list) utcs_all = [] for ifreq, freq in enumerate(freqs): utcs_this_freq = [] if ifreq != 0: snap_dada.set_freq_auto([freq] * len(ant_list), ant_list) snap_if.tune_if_ants(ant_list) for i in range(n_on_off): # record on ata_control.point_ants2(source, "on", ant_list) utc = snap_dada.start_recording(ant_list, obs_time, npolout=2, acclen=120 * 16, disable_rfi=True) utcs_this_freq.append(utc) os.system("killall ata_udpdb") #record off ata_control.point_ants2(source, "off", ant_list) utc = snap_dada.start_recording(ant_list, obs_time, npolout=2, acclen=120 * 16, disable_rfi=True) utcs_this_freq.append(utc) os.system("killall ata_udpdb") utcs_all.append(utcs_this_freq) initial_utc = utcs_all[0][0] os.system("mkdir /mnt/datax-netStorage-40G/calibration/" + initial_utc) for freq, utcs in zip(freqs, utcs_all): os.system("mkdir /mnt/datax-netStorage-40G/calibration/%s/freq_%i" % (initial_utc, freq)) for utc in utcs: os.system( "mv /mnt/buf0/obs/%s /mnt/datax-netStorage-40G/calibration/%s/freq_%i" % (utc, initial_utc, freq)) os.system( "/home/obsuser/scripts/fil2csv.py /mnt/datax-netStorage-40G/calibration/%s/*/*/*/*.fil" % (initial_utc)) o = open("/mnt/datax-netStorage-40G/calibration/obs.dat", "a") o.write("%s %s %i\n" % (initial_utc, source, n_on_off)) o.close()
def main(): logger = logger_defaults.getProgramLogger("observe", loglevel=logging.INFO) ant_list = ['3c'] #pms = {ant:ata_pointing.PointingModel(ant) for ant in ant_list} pm = ata_pointing.PointingModel('3c') ata_control.reserve_antennas(ant_list) atexit.register(ata_control.release_antennas, ant_list, False) pams = {ant+pol:27 for ant in ant_list for pol in ["x","y"]} ifs = {ant+pol:27 for ant in ant_list for pol in ["x","y"]} ata_control.set_pams(pams) snap_if.setatten(ifs) freq = 1575 snap_dada.set_freq_auto([freq]*len(ant_list), ant_list) obs_time = 10 utcs = [] sats_observed = [] time_obs = [] ofile = open("./atapointer.txt", "w") tpoint = open("./3c_tpoint.txt", "w") atexit.register(ofile.close) atexit.register(tpoint.close) while True: #utc = snap_dada.start_recording(ant_list, obs_time, acclen=120*16, # disable_rfi=True) #utcs.append(utc) #for ant in ant_list: # p = get_power(utc, ant) # print(ant, p, 10*np.log10(p), "dB") sats = ata_sources.get_sats()['GPS'] setting_sats, rising_sats = select_group_sats(sats) to_observe = None # select a rising satellite from rising group first # then check if there's any setting satellite, and observe # that instead. The rising satellite will be selected in the # following iteration for sat_group in [rising_sats, setting_sats]: for sat in sat_group: name, az, el = sat['name'], float(sat['az']), float(sat['el']) # skip if satellite has been observed in the last 5 times if name in sats_observed[-5:]: continue to_observe = sat #print("will observe: %s, state: %s" %(name, sat['state'])) break # if all the satellites have been observed if not to_observe: # chose a random satellite that is setting, in case there's one if len(setting_sats) != 0: to_observe = random.choice(setting_sats) # else chose one that is rising, if there's one if len(rising_sats) != 0: to_observe = random.choice(rising_sats) if to_observe: az, el = float(sat['az']), float(sat['el']) name = sat['name'] ofile.write("%s: Observing: %s\n" %( datetime.datetime.now(), to_observe['name'])) ofile.write("%s: Az, el, state: %.2f, %.2f, %s\n" %( datetime.datetime.now(),az, el, sat['state'])) ata_control.create_ephem(name, **{'duration': 2, 'interval': 1}) pbfwhm = (3.5 / freq * 1000.0); delta = pbfwhm / 2.0 obs_time = 30 # elevation then azimuth offsets = [ [0., 4*delta], [0., delta], [0., 0.], [0., -delta], [0., -4*delta], [-4*delta, 0.], [-delta, 0.], [0., 0.], [delta, 0.], [4*delta, 0.] ] # offsets = az/el for i in range(nRepeats): azs = [] els = [] az_offs = [] el_offs = [] meas = [] igrid = 0 for offset in offsets: ofile.write("%s %s" %(datetime.datetime.now(), offset)) ofile.write("\n") ata_control.track_and_offset(name, ant_list, xoffset=offset) az_el = ata_control.get_az_el(ant_list)['3c'] #XXX # Determine the true position of satellite x_el_off = offset[0] el_off = offset[1] az_off = x_el_off / np.cos(np.deg2rad(az_el[1])) azs.append(az_el[0] - az_off) els.append(az_el[1] - el_off) az_offs.append(az_off) el_offs.append(el_off) time.sleep(30) utc = snap_dada.start_recording(ant_list, obs_time, acclen=120*16, disable_rfi=True) meas.append(get_power(utc, "3c")) az_avg = np.array(azs).mean() el_avg = np.array(els).mean() print(azs) print(els) print(az_offs) print(el_offs) print(meas) print(az_avg) print(el_avg) peak_el = analyzeFivePoints(el_offs[:5], meas[:5]) peak_pos_el, peak_val_el, peak_width_el = peak_el peak_az = analyzeFivePoints(az_offs[5:], meas[5:]) peak_pos_az, peak_val_az, peak_width_az = peak_az peak_sbr = np.sqrt(peak_val_az**2 + peak_val_el**2) print(peak_pos_el, peak_val_el, peak_width_el) print(peak_pos_az, peak_val_az, peak_width_az) meas_az = (az_avg + peak_pos_az) meas_el = (el_avg + peak_pos_el) meas_az, meas_el, ir = pm.applyTPOINTCorrections(meas_az, meas_el, 0) dt = datetime.datetime.now() hour = dt.hour + dt.minute/60. tpoint.write("! %.3f, %.3f, %.3f, %.3f, %.3f, %.3f\n" %(az_avg, el_avg, meas_az, meas_el, peak_sbr, hour)) sats_observed.append(to_observe['name']) else: # wait for 20 minutes and see what other satellite pops up ofile.write("%s: nothing to observe, waiting\n" %( datetime.datetime.now())) #sats_observed = [] time.sleep(20*60) ofile.flush()
def main(): logger = logger_defaults.getProgramLogger("observe", loglevel=logging.INFO) # pulsar observation #ant_list = ["1a", "1c", "2a", # "2h", "4g", "1k", "5c"] # 4g and 1h for GNURADIO #ant_list = ["1a", "1f", "1c", "1h", "2a", "1k", "5c", "4g"] #freqs = [950, 950, 1600, 1600, 1600, 1600, 950, 950] # LO b #sub1 = ["1f", "5c"] #freq1 = [950] # LO c #sub2 = ["2h", "1k", "1h"] #freq2 = [1300] # LO a #sub3 = ["1c", "2a", "4j"] #freq3 = [1650] #ant_list = sub1 + sub2 + sub3 #freqs = freq1*len(sub1) + freq2*len(sub2) + freq3*len(sub3) #ant_list = ["1f", "5c", "1a", "1c", "2a", "4j", "2h", "1k", "1h"] #freqs = [950]*3 + [1600]*3 + [2250]*3 #ant_list = ["1a", "1k", "5c", "1h", "4j", "3d", "4g", "2h", "2a", "1c", "2b"] ant_list = [ "1a", "1f", "1c", "2a", "2h", "3d", "1k", "5c", "2b", "4g", "4j" ] freqs = [1500] * len(ant_list) #ant_list = ["1f", "2a", "1k", "5c"] #freqs = [950, 1600, 1600, 950] snap_dada.set_freq_auto(freqs, ant_list) ata_control.reserve_antennas(ant_list) atexit.register(ata_control.release_antennas, ant_list, True) #source = "J1935+1616" #ata_control.make_and_track_ephems(source, ant_list) #ata_control.autotune(ant_list) #snap_if.tune_if_ants(ant_list) #utc = snap_dada.start_recording(ant_list, 600, # npolout=1, acclen=120, disable_rfi=True) source = "J0534+2200" ata_control.make_and_track_ephems(source, ant_list) ata_control.autotune(ant_list, power_level=-15) obs_time = 1200 snap_if.tune_if_ants(ant_list) utc = snap_dada.start_recording(ant_list, obs_time, npolout=1, acclen=120, disable_rfi=True) snap_dada.mark_obs_for_heimdall(utc) Path('/mnt/buf0/obs/%s/obs.sumall' % utc).touch()
def main(): logger = logger_defaults.getProgramLogger("observe", loglevel=logging.INFO) # moon observation az_offset = 20 el_offset = 0 #ant_list = ["1a", "1f", "1c", "2a", "2b", "2h", # "3c", "4g", "1k", "5c", "1h", "4j"] ant_list = ["1c", "2a", "2b", "2h", "3c", "4g", "1k", "1h", "4j"] ata_control.reserve_antennas(ant_list) atexit.register(ata_control.release_antennas,ant_list, False) obs_time = 30 source = "virgo" ata_control.create_ephems2(source, az_offset, el_offset) ata_control.point_ants2(source, "on", ant_list) ata_control.autotune(ant_list) freqs = np.arange(1200, 10500, 350) #freqs = np.arange(1200, 1900, 350) utcs_all = [] for freq in freqs: utcs_this_freq = [] snap_dada.set_freq_auto([freq]*len(ant_list), ant_list) snap_if.tune_if_ants(ant_list) for i in range(3): # record on ata_control.point_ants2(source, "on", ant_list) i = 0 while i < 3: try: utc = snap_dada.start_recording(ant_list, obs_time, npolout=2, acclen=120*16, disable_rfi=True) break except: i += 1 utcs_this_freq.append(utc) #record off ata_control.point_ants2(source, "off", ant_list) i = 0 while i < 3: try: utc = snap_dada.start_recording(ant_list, obs_time, npolout=2, acclen=120*16, disable_rfi=True) break except: i += 1 utcs_this_freq.append(utc) utcs_all.append(utcs_this_freq) initial_utc = utcs_all[0][0] os.system("mkdir /mnt/datax-netStorage-40G/calibration/"+initial_utc) for freq, utcs in zip(freqs, utcs_all): os.system("mkdir /mnt/datax-netStorage-40G/calibration/%s/freq_%i" %(initial_utc, freq)) for utc in utcs: os.system("mv /mnt/buf0/obs/%s /mnt/datax-netStorage-40G/calibration/%s/freq_%i" %(utc, initial_utc, freq))