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
                df.df_impulse(df_raw_dir)
        else:
            df.fetch_frequency_crosses()
            correlator.save_frequency_correlations(df_raw_dir)
            correlator.apply_frequency_domain_calibrations()
            df.df_strongest_signal(args.f_start, args.f_stop, df_raw_dir)
import itertools
import logging
from colorlog import ColoredFormatter

if __name__ == '__main__':
    logger = logging.getLogger('main')
    handler = logging.StreamHandler()
    colored_formatter = ColoredFormatter("%(log_color)s%(asctime)s%(levelname)s:%(name)s:%(message)s")
    handler.setFormatter(colored_formatter)
    logger.addHandler(handler)
    logger.setLevel(logging.DEBUG)

    correlator = Correlator(logger = logger.getChild('correlator'))
    time.sleep(1)
    correlator.set_impulse_filter_len(50)
    correlator.set_impulse_setpoint(3772)
    correlator.add_time_domain_calibration('/home/jgowans/workspace/directionFinder_backend/config/time_domain_calibration_long_sma_cables_only.json')
    correlator.add_cable_length_calibrations('/home/jgowans/workspace/directionFinder_backend/config/cable_length_calibration.json')
    correlator.re_sync()
    correlator.impulse_arm()

    fig = plt.figure()
    axes = [[], []]

    axes[0].append(fig.add_subplot(2, 4, 1))
    axes[0].append(fig.add_subplot(2, 4, 2, sharex=axes[0][0], sharey=axes[0][0]))
    axes[0].append(fig.add_subplot(2, 4, 3, sharex=axes[0][0], sharey=axes[0][0]))
    axes[0].append(fig.add_subplot(2, 4, 4, sharex=axes[0][0], sharey=axes[0][0]))
    axes[0][0].set_ylim([-130, 130])

    axes[1].append(fig.add_subplot(2, 1, 2))
import logging
from colorlog import ColoredFormatter

if __name__ == '__main__':
    logger = logging.getLogger('main')
    handler = logging.StreamHandler()
    colored_formatter = ColoredFormatter(
        "%(log_color)s%(asctime)s%(levelname)s:%(name)s:%(message)s")
    handler.setFormatter(colored_formatter)
    logger.addHandler(handler)
    logger.setLevel(logging.DEBUG)

    correlator = Correlator(logger=logger.getChild('correlator'))
    time.sleep(1)
    correlator.set_impulse_filter_len(50)
    correlator.set_impulse_setpoint(3772)
    correlator.add_time_domain_calibration(
        '/home/jgowans/workspace/directionFinder_backend/config/time_domain_calibration_long_sma_cables_only.json'
    )
    correlator.add_cable_length_calibrations(
        '/home/jgowans/workspace/directionFinder_backend/config/cable_length_calibration.json'
    )
    correlator.re_sync()
    correlator.impulse_arm()

    fig = plt.figure()
    axes = [[], []]

    axes[0].append(fig.add_subplot(2, 4, 1))
    axes[0].append(
        fig.add_subplot(2, 4, 2, sharex=axes[0][0], sharey=axes[0][0]))
    handler.setFormatter(colored_formatter)
    handler.setLevel(logging.DEBUG)

    root = logging.getLogger()
    root.addHandler(handler)
    root.setLevel(logging.INFO)

    logger = logging.getLogger('main')
    logger.propagate = False
    logger.addHandler(handler)
    logger.setLevel(logging.INFO)

    correlator = Correlator(logger = logger.getChild('correlator'))
    time.sleep(1)
    correlator.set_impulse_filter_len(100)
    correlator.set_impulse_setpoint(100)
    correlator.add_time_domain_calibration('/home/jgowans/workspace/directionFinder_backend/bin/time_domain_calibration.json')
    correlator.re_sync()
    correlator.impulse_arm()

    impulse_levels = []

    for _ in range(1000):
        impulse_levels.append(
            correlator.get_current_impulse_level())
        #time.sleep(0.01)

    logger.info("Mean: {}".format(np.mean(impulse_levels)))
    logger.info("Std dev: {}".format(np.std(impulse_levels)))
    logger.info("Max: {}".format(np.max(impulse_levels)))
    handler.setFormatter(colored_formatter)
    handler.setLevel(logging.DEBUG)

    root = logging.getLogger()
    root.addHandler(handler)
    root.setLevel(logging.INFO)

    logger = logging.getLogger('main')
    logger.propagate = False
    logger.addHandler(handler)
    logger.setLevel(logging.INFO)

    correlator = Correlator(logger=logger.getChild('correlator'))
    time.sleep(1)
    correlator.set_impulse_filter_len(100)
    correlator.set_impulse_setpoint(100)
    correlator.add_time_domain_calibration(
        '/home/jgowans/workspace/directionFinder_backend/bin/time_domain_calibration.json'
    )
    correlator.re_sync()
    correlator.impulse_arm()

    impulse_levels = []

    for _ in range(1000):
        impulse_levels.append(correlator.get_current_impulse_level())
        #time.sleep(0.01)

    logger.info("Mean: {}".format(np.mean(impulse_levels)))
    logger.info("Std dev: {}".format(np.std(impulse_levels)))
    logger.info("Max: {}".format(np.max(impulse_levels)))
    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
                df.df_impulse(df_raw_dir)
        else:
            df.fetch_frequency_crosses()
            correlator.save_frequency_correlations(df_raw_dir)
            correlator.apply_frequency_domain_calibrations()
            df.df_strongest_signal(args.f_start, args.f_stop, df_raw_dir)