Ejemplo n.º 1
0
def main():
    args = get_args()
    pid = os.getpid()
    hostname = socket.gethostname()

    src['id'] = '{}/{}'.format(args.case_id, args.subcase_id)
    if not os.path.exists(files['src_dir'].abs):
        os.makedirs(files['src_dir'].abs)

    logfile = os.path.join(files['src_dir'].abs,
                           '{}-{}.log'.format(hostname, pid))
    logging.basicConfig(filename=logfile, level=logging.INFO)
    logging.info(str(args))

    aoc = AdjOpticsCase(case_id=args.case_id, subcase_id=args.subcase_id,
                        clip=args.clip, n_ss=args.ss,
                        piston_tilt=bool(args.piston_tilt),
                        displ_axes=['X'], corr_axes=['X'],
                        n_proc=None, n_strips=args.n_strips)

    outfile = os.path.join(files['src_dir'].abs,
                           'act_fail-{}-{}.dat'.format(hostname, pid))

    # Make an ordered list 0 .. n_acts-1 for shuffling later.
    ifuncs_x = aoc.ifuncs['X'].copy()
    ifuncs_ry = aoc.ifuncs['RY'].copy()
    n_acts = ifuncs_x.shape[0]
    i_acts = np.arange(n_acts)

    for i in range(args.max_sim):
        # Force some actuators to "fail" by taking them out of the optimization
        if args.max_fail > 0:
            n_fail = np.random.randint(args.max_fail) + 1
            np.random.shuffle(i_acts)
            ok = np.ones(n_acts, dtype=bool)
            i_fail = i_acts[:n_fail]
            ok[i_fail] = False
            aoc.ifuncs['X'] = ifuncs_x[ok]
            aoc.ifuncs['RY'] = ifuncs_ry[ok]
        else:
            n_fail = 0
            i_fail = [-1]

        aoc.calc_adj()
        aoc.calc_stats()
        aoc.calc_scatter(calc_input=False)

        hpd = aoc.scatter['corr']['X']['hpd']
        rmsd = aoc.scatter['corr']['X']['rmsd']
        resid_std = aoc.resid['X']['X']['std']['clip']
        displ_std = aoc.displ['X']['std']['clip']

        with open(outfile, 'a') as f:
            i_fail_str = ','.join(str(x) for x in i_fail)
            print >>f, ' '.join(str(x) for x in
                                (n_fail, hpd, rmsd, displ_std,
                                 resid_std, i_fail_str))
Ejemplo n.º 2
0
def main():
    args = get_args()
    pid = os.getpid()
    hostname = socket.gethostname()

    src['id'] = '{}/{}'.format(args.case_id, args.subcase_id)
    if not os.path.exists(files['src_dir'].abs):
        os.makedirs(files['src_dir'].abs)

    logfile = os.path.join(files['src_dir'].abs,
                           '{}-{}.log'.format(hostname, pid))
    logging.basicConfig(filename=logfile, level=logging.INFO)
    logging.info(str(args))

    aoc = AdjOpticsCase(case_id=args.case_id,
                        subcase_id=args.subcase_id,
                        clip=args.clip,
                        n_ss=args.ss,
                        piston_tilt=bool(args.piston_tilt),
                        displ_axes=['X'],
                        corr_axes=['X'],
                        n_proc=None,
                        n_strips=args.n_strips)

    outfile = os.path.join(files['src_dir'].abs,
                           'act_fail-{}-{}.dat'.format(hostname, pid))

    # Make an ordered list 0 .. n_acts-1 for shuffling later.
    ifuncs_x = aoc.ifuncs['X'].copy()
    ifuncs_ry = aoc.ifuncs['RY'].copy()
    n_acts = ifuncs_x.shape[0]
    i_acts = np.arange(n_acts)

    for i in range(args.max_sim):
        # Force some actuators to "fail" by taking them out of the optimization
        if args.max_fail > 0:
            n_fail = np.random.randint(args.max_fail) + 1
            np.random.shuffle(i_acts)
            ok = np.ones(n_acts, dtype=bool)
            i_fail = i_acts[:n_fail]
            ok[i_fail] = False
            aoc.ifuncs['X'] = ifuncs_x[ok]
            aoc.ifuncs['RY'] = ifuncs_ry[ok]
        else:
            n_fail = 0
            i_fail = [-1]

        aoc.calc_adj()
        aoc.calc_stats()
        aoc.calc_scatter(calc_input=False)

        hpd = aoc.scatter['corr']['X']['hpd']
        rmsd = aoc.scatter['corr']['X']['rmsd']
        resid_std = aoc.resid['X']['X']['std']['clip']
        displ_std = aoc.displ['X']['std']['clip']

        with open(outfile, 'a') as f:
            i_fail_str = ','.join(str(x) for x in i_fail)
            print >> f, ' '.join(
                str(x)
                for x in (n_fail, hpd, rmsd, displ_std, resid_std, i_fail_str))
Ejemplo n.º 3
0
                    'axis': axis,
                    'corr': corr,
                    'ratios': ratios[axis][corr],
                    'displ': aoc.displ[axis],
                    'resid': aoc.resid[axis][corr],
                })
    out = template.render(subcases=subcases, aoc=aoc)
    with open(files['index.html'].abs, 'w') as f:
        f.write(out)

    # Save version of aoc without ifuncs, which are not interesting and big
    delattr(aoc, 'ifuncs')
    pickle.dump(aoc, open(files['aoc.pkl'].rel, 'w'), protocol=-1)


if __name__ == '__main__':
    args = get_args()
    displ_axes = args.displ_axes.split(',')
    corr_axes = args.corr_axes.split(',')
    aoc = AdjOpticsCase(case_id=args.case_id,
                        subcase_id=args.subcase_id,
                        clip=args.clip,
                        n_ss=args.ss,
                        bias_mult=args.bias_mult,
                        piston_tilt=bool(args.piston_tilt),
                        n_strips=args.n_strips,
                        displ_axes=displ_axes,
                        corr_axes=corr_axes)

    make_report(aoc)
Ejemplo n.º 4
0
    parser.add_argument("--drive-ref", type=str, default="median", help="Drive reference (median|max)")
    args = parser.parse_args()
    return args


if __name__ == "__main__":
    corr = "X"
    args = get_args()
    displ_axes = args.displ_axes.split(",")
    corr_axes = args.corr_axes.split(",")
    aoc = AdjOpticsCase(
        case_id=args.case_id,
        subcase_id=args.subcase_id,
        clip=args.clip,
        n_ss=args.ss,
        piston_tilt=bool(args.piston_tilt),
        n_strips=args.n_strips,
        displ_axes=displ_axes,
        corr_axes=corr_axes,
        n_proc=0,
    )

    # Compute stats for zero-noise case
    aoc.calc_adj()
    aoc.calc_stats()
    aoc.calc_scatter()

    coeffs = aoc.coeffs["X"]
    drive_ref = getattr(np, args.drive_ref)(abs(coeffs))
    # noises = (0.00001, 0.001, 0.002, 0.005, 0.01, 0.02,
    #           0.05, 0.1, 0.15, 0.2)
Ejemplo n.º 5
0
                        default="median",
                        help='Drive reference (median|max)')
    args = parser.parse_args()
    return args


if __name__ == '__main__':
    corr = 'X'
    args = get_args()
    displ_axes = args.displ_axes.split(',')
    corr_axes = args.corr_axes.split(',')
    aoc = AdjOpticsCase(case_id=args.case_id,
                        subcase_id=args.subcase_id,
                        clip=args.clip,
                        n_ss=args.ss,
                        piston_tilt=bool(args.piston_tilt),
                        n_strips=args.n_strips,
                        displ_axes=displ_axes,
                        corr_axes=corr_axes,
                        n_proc=0)

    # Compute stats for zero-noise case
    aoc.calc_adj()
    aoc.calc_stats()
    aoc.calc_scatter()

    coeffs = aoc.coeffs['X']
    drive_ref = getattr(np, args.drive_ref)(abs(coeffs))
    # noises = (0.00001, 0.001, 0.002, 0.005, 0.01, 0.02,
    #           0.05, 0.1, 0.15, 0.2)
    noises = np.random.uniform(0, 0.2, args.n_sim)