Exemple #1
0
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?")
Exemple #2
0
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)
Exemple #3
0
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)
Exemple #4
0
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)
Exemple #5
0
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)
Exemple #6
0
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)
Exemple #7
0
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()
Exemple #8
0
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)
Exemple #9
0
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)
Exemple #10
0
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)
Exemple #11
0
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)
Exemple #12
0
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)
Exemple #13
0
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")
Exemple #14
0
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)
Exemple #15
0
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()
Exemple #16
0
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)
Exemple #17
0
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()
Exemple #18
0
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()
Exemple #19
0
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()
Exemple #20
0
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))