Exemplo n.º 1
0
def write_scan(fname, scan):
    with h5py.File(fname, "w") as hfile:
        for k in ["boresight", "offsets", "comps", "sys", "mjd0", "dets"]:
            hfile[k] = getattr(scan, k)
        n, neach, flat = scan.cut.flatten()
        # h5py has problems with zero size arrays
        if flat.size == 0: flat = np.zeros([1, 2], dtype=np.int32)
        hfile["cut/neach"] = neach
        hfile["cut/flat"] = flat
        nmat.write_nmat(hfile.create_group("noise"), scan.noise)
        for k in scan.site:
            hfile["site/" + k] = scan.site[k]
        hfile["tod"] = scan.get_samples()
Exemplo n.º 2
0
    if os.path.isfile(ofile) and args.resume: continue
    t = []
    t.append(time.time())
    try:
        d = data.read(entry, ["gain", "tconst", "cut", "tod", "boresight"])
        t.append(time.time())
        d = data.calibrate(d)
        t.append(time.time())
    except errors.DataMissing as e:
        print "%3d/%d %25s skip (%s)" % (i + 1, n, id, e.message)
        continue
    except zipfile.BadZipfile:
        print "%d/%d %25s bad zip" % (i + 1, n, id)
        continue
    ft = fft.rfft(d.tod) * d.tod.shape[1]**-0.5
    t.append(time.time())
    if model == "old":
        noise = nmat_measure.detvecs_old(ft, d.srate, d.dets)
    elif model == "jon":
        di = np.where(d.dets == 20)[0]
        noise = nmat_measure.detvecs_jon(ft, d.srate, d.dets, shared)
    elif model == "simple":
        noise = nmat_measure.detvecs_simple(ft, d.srate, d.dets)
    t.append(time.time())
    nmat.write_nmat("%s/%s.hdf" % (args.odir, id), noise)
    t.append(time.time())
    t = np.array(t)
    dt = t[1:] - t[:-1]
    print("%3d/%d %25s" + " %6.3f" * len(dt)) % tuple([i + 1, n, id] +
                                                      list(dt))
Exemplo n.º 3
0
 elif model == "jon":
     noise = nmat_measure.detvecs_jon(ft,
                                      d.srate,
                                      d.dets,
                                      shared,
                                      cut_bins=spikes)
 elif model == "simple":
     noise = nmat_measure.detvecs_simple(ft, d.srate, d.dets)
 elif model == "joint":
     noise = nmat_measure.detvecs_joint(ft,
                                        d.srate,
                                        d.dets,
                                        cut_bins=spikes)
 t.append(time.time())
 with h5py.File("%s/%s.hdf" % (args.odir, id), "w") as hfile:
     nmat.write_nmat(hfile, noise)
     t.append(time.time())
     if args.covtest:
         # Measure full cov per bin
         ndet = ft.shape[0]
         bins = np.minimum(
             (noise.bins * ft.shape[1] / noise.bins[-1, 1]).astype(int),
             ft.shape[1] - 1)
         nbin = len(bins)
         cov_full = np.zeros([nbin, ndet, ndet])
         for bi, b in enumerate(bins):
             print "A", bi, b, np.mean(np.abs(ft[0, b[0]:b[1]])**
                                       2)**0.5 / 20
             cov_full[bi] = nmat_measure.measure_cov(ft[:, b[0]:b[1]])
         cov_model = noise.covs
         # Compute total noise and correlated noise per detector for the two
Exemplo n.º 4
0
			# Subtract input map from tod inplace
			pmap.forward(d.tod, imap.map, tmul=1, mmul=-1)
			utils.deslope(d.tod, w=8, inplace=True)
		ft = fft.rfft(d.tod) * d.tod.shape[1]**-0.5  ; t.append(time.time())
		spikes = d.spikes[:2].T if args.spikecut else None
		if model == "old":
			noise = nmat_measure.detvecs_old(ft, d.srate, d.dets)
		elif model == "jon":
			noise = nmat_measure.detvecs_jon(ft, d.srate, d.dets, shared, cut_bins=spikes)
		elif model == "simple":
			noise = nmat_measure.detvecs_simple(ft, d.srate, d.dets)
		elif model == "joint":
			noise = nmat_measure.detvecs_joint(ft, d.srate, d.dets, cut_bins=spikes)
		t.append(time.time())
		with h5py.File("%s/%s.hdf" % (args.odir, id),"w") as hfile:
			nmat.write_nmat(hfile, noise)                ; t.append(time.time())
			if args.covtest:
				# Measure full cov per bin
				ndet = ft.shape[0]
				bins = np.minimum((noise.bins*ft.shape[1]/noise.bins[-1,1]).astype(int),ft.shape[1]-1)
				nbin = len(bins)
				cov_full = np.zeros([nbin,ndet,ndet])
				for bi, b in enumerate(bins):
					print "A", bi, b, np.mean(np.abs(ft[0,b[0]:b[1]])**2)**0.5/20
					cov_full[bi]  = nmat_measure.measure_cov(ft[:,b[0]:b[1]])
				cov_model= noise.covs
				# Compute total noise and correlated noise per detector for the two
				pow_full_tot  = np.einsum("bii->bi",cov_full)
				pow_model_tot = np.einsum("bii->bi",cov_model)
				pow_full_ucorr = 1/np.einsum("bii->bi",array_ops.eigpow(cov_full,-1))
				pow_model_ucorr = 1/np.einsum("bii->bi",array_ops.eigpow(cov_model,-1))