Ejemplo n.º 1
0
def build_interpol(transform, box, id="none", posunit=1.0, sys=None):
    sys = config.get("map_sys", sys)
    # We widen the bounding box slightly to avoid samples falling outside it
    # due to rounding errors.
    box = utils.widen_box(np.array(box), 1e-3)
    box[:,
        1:] = utils.widen_box(box[:, 1:],
                              config.get("pmat_interpol_pad") * utils.arcmin,
                              relative=False)
    acc = config.get("pmat_accuracy")
    ip_size = config.get("pmat_interpol_max_size")
    ip_time = config.get("pmat_interpol_max_time")
    # Build pointing interpolator
    errlim = np.array(
        [1e-3 * posunit, 1e-3 * posunit, utils.arcmin, utils.arcmin]) * acc
    ipol, obox, ok, err = interpol.build(transform,
                                         interpol.ip_linear,
                                         box,
                                         errlim,
                                         maxsize=ip_size,
                                         maxtime=ip_time,
                                         return_obox=True,
                                         return_status=True)
    if not ok and np.any(err > errlim):
        print "Warning: Accuracy %g was specified, but only reached %g for tod %s" % (
            acc, np.max(err / errlim) * acc, id)
    return ipol, obox, err
Ejemplo n.º 2
0
	}[args.interpolator]

for iaz in range(naz):
	for iel in range(nel):
		az_mid = (args.az1 + args.daz*iaz)*utils.degree
		el_mid = (args.el1 + args.delta_el*iel)*utils.degree
		t_mid  = args.t
		# Bounds
		box = np.array([
			[-args.wt/2./60/24, args.wt/2./60/24],
			[az_mid-utils.degree*args.waz/2, az_mid+utils.degree*args.waz/2],
			[el_mid-utils.degree*args.wel/2, el_mid+utils.degree*args.wel/2]]).T
		# Build an interpolator
		wbox = utils.widen_box(box)
		errlim = np.array([utils.arcsec, utils.arcsec, utils.arcmin, utils.arcmin])*acc
		t1 = time.time()
		ipol, obox, ok, err = interpol.build(hor2cel, interpolator, wbox, errlim,
			maxsize=max_size, maxtime=max_time, return_obox=True, return_status=True)
		t2 = time.time()
		# Choose some points to evaluate the model at
		hor_test = box[0,:,None] + np.random.uniform(0,1,size=(3,args.ntest))*(box[1]-box[0])[:,None]
		cel_exact = hor2cel(hor_test)
		cel_interpol = ipol(hor_test)
		#cel_interpol2 = eval_ipol(ipol, hor_test)

		diff = np.max(np.abs(cel_interpol-cel_exact),1)
		print (" %9.4f"*(2+4+1) + " %d") % (
				(az_mid/utils.degree,el_mid/utils.degree) +
				tuple(diff/errlim) + (t2-t1,ok))
		sys.stdout.flush()
Ejemplo n.º 3
0
                            az_mid - utils.degree * args.waz / 2,
                            az_mid + utils.degree * args.waz / 2
                        ],
                        [
                            el_mid - utils.degree * args.wel / 2,
                            el_mid + utils.degree * args.wel / 2
                        ]]).T
        # Build an interpolator
        wbox = utils.widen_box(box)
        errlim = np.array(
            [utils.arcsec, utils.arcsec, utils.arcmin, utils.arcmin]) * acc
        t1 = time.time()
        ipol, obox, ok, err = interpol.build(hor2cel,
                                             interpolator,
                                             wbox,
                                             errlim,
                                             maxsize=max_size,
                                             maxtime=max_time,
                                             return_obox=True,
                                             return_status=True)
        t2 = time.time()
        # Choose some points to evaluate the model at
        hor_test = box[0, :, None] + np.random.uniform(
            0, 1, size=(3, args.ntest)) * (box[1] - box[0])[:, None]
        cel_exact = hor2cel(hor_test)
        cel_interpol = ipol(hor_test)
        #cel_interpol2 = eval_ipol(ipol, hor_test)

        diff = np.max(np.abs(cel_interpol - cel_exact), 1)
        print(" %9.4f" * (2 + 4 + 1) + " %d") % (
            (az_mid / utils.degree, el_mid / utils.degree) +
            tuple(diff / errlim) + (t2 - t1, ok))
Ejemplo n.º 4
0
else:
    ipnames = args.interpolator.split(",")
pix = None

for dir in dirs:
    for ipname in ipnames:
        # Precompute pointing
        if ipname.split("_")[0] in ["std"]:
            t1 = time.time()
            corners = utils.box2corners(wibox).T
            ocorners = transfun(corners)
            ipol, obox, ok, err = interpol.build(transfun,
                                                 ipfun,
                                                 wibox,
                                                 errlim,
                                                 maxsize=max_size,
                                                 maxtime=max_time,
                                                 return_obox=True,
                                                 return_status=True,
                                                 order=1)
            t2 = time.time()
            tbuild = t2 - t1
            # evaluate accuracy
            pos_exact = transfun(bore.T)
            pos_inter = ipol(bore.T)
            rbox, nbox, yvals = pmat.extract_interpol_params(ipol, ptype)
        else:
            t1 = time.time()
            poly = pmat.PolyInterpol(transfun, bore, det_pos)
            tbuild = time.time() - t1
            pos_exact = transfun((bore + det_pos[0]).T)
Ejemplo n.º 5
0
if args.interpolator == "all":
	ipnames = [
			#"fast",
			"std_bi_0","std_bi_1","std_bi_3"]
else:
	ipnames = args.interpolator.split(",")
pix = None

for dir in dirs:
	for ipname in ipnames:
		# Precompute pointing
		if ipname.split("_")[0] in ["std"]:
			t1 = time.time()
			corners = utils.box2corners(wibox).T
			ocorners = transfun(corners)
			ipol, obox, ok, err = interpol.build(transfun, ipfun, wibox, errlim,
					maxsize=max_size, maxtime=max_time, return_obox=True, return_status=True, order=1)
			t2 = time.time()
			tbuild = t2-t1
			# evaluate accuracy
			pos_exact = transfun(bore.T)
			pos_inter = ipol(bore.T)
			rbox, nbox, yvals = pmat.extract_interpol_params(ipol, ptype)
		else:
			t1 = time.time()
			poly = pmat.PolyInterpol(transfun, bore, det_pos)
			tbuild = time.time()-t1
			pos_exact = transfun((bore + det_pos[0]).T)
			pos_inter = poly(bore, [0])[0]
			ok   = True
			nbox = [ndet, 11]
		err  = np.max(np.abs(pos_exact-pos_inter)/errlim[:,None])*acc