parser.add_argument('--d', type=str)
    parser.add_argument('--f_start', default=200e6, type=float)
    parser.add_argument('--f_stop', default=300e6, type=float)
    parser.add_argument('--array_geometry_file', default=None)
    args = parser.parse_args()

    directory = args.d

    correlator = FakeCorrelator()
    correlator.add_cable_length_calibrations('/home/jgowans/workspace/directionFinder_backend/config/cable_length_calibration_actual_array.json')
    correlator.add_time_domain_calibration('/home/jgowans/workspace/directionFinder_backend/config/time_domain_calibration_through_rf_chain.json')
    fs = correlator.fs

    array = AntennaArray.mk_from_config(args.array_geometry_file)

    df = DirectionFinder(correlator, array, args.f_start, logger.getChild('df'))
    df.set_time()

    contents = os.listdir(directory)
    contents.sort()
    for timestamp_str in contents:
        try:
            timestamp = float(timestamp_str)
        except ValueError:
            continue
        #fig = plt.figure()
        correlator.time_domain_signals = None
        num_channels = 4
        for channel in range(num_channels):
            filename = "{c}.npy".format(c = channel)
            with open("{d}/{t}/{f}".format(d = directory, t = timestamp, f = filename)) as f:
Example #2
0
            continue
        correlations = {}
        num_channels = 4
        cross_combinations = list(
            itertools.combinations(range(num_channels), 2))
        for comb in cross_combinations:
            filename = "{a}x{b}.npy".format(a=comb[0], b=comb[1])
            with open("{d}/{t}/{f}".format(d=directory,
                                           t=timestamp,
                                           f=filename)) as f:
                signal = np.load(f)
                correlations[comb] = signal
        correlator = FakeCorrelator(signals=correlations)
        correlator.add_cable_length_calibrations(
            '/home/jgowans/workspace/directionFinder_backend/config/cable_length_calibration_actual_array.json'
        )
        correlator.add_frequency_bin_calibrations(
            '/home/jgowans/workspace/directionFinder_backend/config/frequency_domain_calibration_through_chain.json'
        )
        correlator.apply_frequency_domain_calibrations()

        array = AntennaArray.mk_from_config(args.array_geometry_file)

        df = DirectionFinder(correlator, array, args.f_start,
                             logger.getChild('df'))

        df.df_strongest_signal(args.f_start,
                               args.f_stop,
                               directory,
                               t=timestamp)
    args = parser.parse_args()

    df_raw_dir = '/home/jgowans/Documents/df_raw/{c}/'.format(c=args.comment)
    if not os.path.exists(df_raw_dir):
        os.mkdir(df_raw_dir)

    array = AntennaArray.mk_from_config(args.array_geometry_file)
    correlator = Correlator(logger=logger.getChild('correlator'))
    correlator.set_accumulation_len(args.acc_len)
    correlator.add_cable_length_calibrations(
        '/home/jgowans/workspace/directionFinder_backend/config/cable_length_calibration_actual_array.json'
    )
    correlator.add_frequency_bin_calibrations(
        '/home/jgowans/workspace/directionFinder_backend/config/frequency_domain_calibration_through_chain.json'
    )
    df = DirectionFinder(correlator, array, args.f_start,
                         logger.getChild('df'))

    if args.impulse == True:
        df.set_time()  # go into time mode
        # 100 impulse filter len = 0.5 us
        correlator.set_impulse_filter_len(100)
        correlator.set_impulse_setpoint(args.impulse_setpoint)
        correlator.re_sync()
        time.sleep(0.1)
        correlator.impulse_arm()

    while True:
        if args.impulse == True:
            if df.fetch_impulse() == True:
                correlator.save_time_domain_snapshots(df_raw_dir)
                # not necessary to apply cal as it's done in the correlation routine
Example #4
0
    for elements in [3, 4]:
        array = AntennaArray.mk_circular(args.radius * (elements / 4.0),
                                         elements)
        named_antenna_arrays.append(NamedArray(str(elements), array))
    if args.array_geometry_file:
        array = AntennaArray.mk_from_config(args.array_geometry_file)
        named_antenna_arrays.append(NamedArray("4'", array))
    for elements in [5, 6, 7]:
        array = AntennaArray.mk_circular(args.radius * (elements / 4.0),
                                         elements)
        named_antenna_arrays.append(NamedArray(str(elements), array))

    for named_arr in named_antenna_arrays:
        name = named_arr.name
        arr = named_arr.array
        df = DirectionFinder(None, arr, args.freq, logger.getChild('df'))
        logging.info("Doing array: {arr}".format(arr=name))
        y = []
        for visibility_rms_err in visibility_rms_errs:
            logging.info("Doing rms visibility error: {er}".format(
                er=visibility_rms_err))
            df_errors = []
            for phi in phi_domain:
                array_response = arr.each_pair_phase_difference_at_angle(
                    phi, args.freq)
                visibility_errors = np.random.normal(0, visibility_rms_err,
                                                     array_response.shape)
                array_response += visibility_errors
                angle_out = df.find_closest_point(array_response)
                angular_error = np.arctan2(np.sin(phi - angle_out),
                                           np.cos(phi - angle_out))
Example #5
0
    args = parser.parse_args()

    directory = args.d

    correlator = FakeCorrelator()
    correlator.add_cable_length_calibrations(
        '/home/jgowans/workspace/directionFinder_backend/config/cable_length_calibration_actual_array.json'
    )
    correlator.add_time_domain_calibration(
        '/home/jgowans/workspace/directionFinder_backend/config/time_domain_calibration_through_rf_chain.json'
    )
    fs = correlator.fs

    array = AntennaArray.mk_from_config(args.array_geometry_file)

    df = DirectionFinder(correlator, array, args.f_start,
                         logger.getChild('df'))
    df.set_time()

    contents = os.listdir(directory)
    contents.sort()
    for timestamp_str in contents:
        try:
            timestamp = float(timestamp_str)
        except ValueError:
            continue
        #fig = plt.figure()
        correlator.time_domain_signals = None
        num_channels = 4
        for channel in range(num_channels):
            filename = "{c}.npy".format(c=channel)
            with open("{d}/{t}/{f}".format(d=directory,
    parser.add_argument('--impulse', type=bool, default=False)
    parser.add_argument('--impulse_setpoint', type=int)
    parser.add_argument('--acc_len', type=int, default=40000)
    parser.add_argument('--comment', type=str)
    args = parser.parse_args()

    df_raw_dir = '/home/jgowans/Documents/df_raw/{c}/'.format(c = args.comment)
    if not os.path.exists(df_raw_dir):
        os.mkdir(df_raw_dir)

    array = AntennaArray.mk_from_config(args.array_geometry_file)
    correlator = Correlator(logger = logger.getChild('correlator'))
    correlator.set_accumulation_len(args.acc_len)
    correlator.add_cable_length_calibrations('/home/jgowans/workspace/directionFinder_backend/config/cable_length_calibration_actual_array.json')
    correlator.add_frequency_bin_calibrations('/home/jgowans/workspace/directionFinder_backend/config/frequency_domain_calibration_through_chain.json')
    df = DirectionFinder(correlator, array, args.f_start, logger.getChild('df'))

    if args.impulse == True:
        df.set_time()  # go into time mode
        # 100 impulse filter len = 0.5 us
        correlator.set_impulse_filter_len(100)
        correlator.set_impulse_setpoint(args.impulse_setpoint)
        correlator.re_sync()
        time.sleep(0.1)
        correlator.impulse_arm()

    while True:
        if args.impulse == True:
            if df.fetch_impulse() == True:
                correlator.save_time_domain_snapshots(df_raw_dir)
                # not necessary to apply cal as it's done in the correlation routine
    parser.add_argument('--array_geometry_file', default=None)
    args = parser.parse_args()

    directory = args.d

    contents = os.listdir(directory)
    contents.sort()
    for timestamp_str in contents:
        try:
            timestamp = float(timestamp_str)
        except ValueError:
            continue
        correlations = {}
        num_channels = 4
        cross_combinations = list(itertools.combinations(range(num_channels), 2))
        for comb in cross_combinations:
            filename = "{a}x{b}.npy".format(a = comb[0], b = comb[1])
            with open("{d}/{t}/{f}".format(d = directory, t = timestamp, f = filename)) as f:
                signal = np.load(f)
                correlations[comb] = signal
        correlator = FakeCorrelator(signals = correlations)
        correlator.add_cable_length_calibrations('/home/jgowans/workspace/directionFinder_backend/config/cable_length_calibration_actual_array.json')
        correlator.add_frequency_bin_calibrations('/home/jgowans/workspace/directionFinder_backend/config/frequency_domain_calibration_through_chain.json')
        correlator.apply_frequency_domain_calibrations()

        array = AntennaArray.mk_from_config(args.array_geometry_file)

        df = DirectionFinder(correlator, array, args.f_start, logger.getChild('df'))

        df.df_strongest_signal(args.f_start, args.f_stop, directory, t = timestamp)