def main(argv): if len(sys.argv) != 2: print("usage : %s lkl_file") sys.exit(1) lkls = hpy.File(sys.argv[1])["clik"] print("found %d likelihoods" % lkls.attrs["n_lkl_object"]) f0 = sys.argv[1] f_tmpl = f0.split(".") f_tmpl = ".".join(f_tmpl[:-1] + ["%s"] + [f_tmpl[-1]]) for lkln in ("lkl_%d" % v for v in range(lkls.attrs["n_lkl_object"])): fname = f_tmpl % lkln lkl = lkls[lkln] print(" " + fname) hf = hpy.File(fname, "w", lkls) if "lmax" in lkl.attrs: lmax = lkl.attrs["lmax"] else: ell = lkl.attrs["ell"] lmax = nm.max(ell) lmaxs = nm.where(lkl.attrs["has_cl"], lmax, -nm.ones(6, dtype=nm.int)) chf = hf.create_group("clik") chf.attrs["lmax"] = lmaxs chf.attrs["n_lkl_object"] = 1 lkl.copy(lkl, chf, "lkl_0") hf.close()
def main_lensing(argv): lkl = clik.clik_lensing(sys.argv[1]) print("clik lensing file = %s"%sys.argv[1]) if hpy.cldf.is_cldf(argv[1]): ff = hpy.File(argv[1]) ty = ff["clik_lensing/itype"] if ty==0: renorm = 1 ren1 = 0 else: renorm = ff["clik_lensing/renorm"] ren1 = 0 if ty in [3,4]: ren1 = ff["clik_lensing/ren1"] else: rr = file(argv[1]).read() if ("# format: mono") in rr: renorm = 1 ren1 = 0 elif ("# format: qecl") in rr: renorm = 1 ren1 = 0 else: renorm = 1 ren1 = 1 print(" Renormalization: %s\n N1 computation: %s"%(["Off","On"][renorm],["Off","On"][ren1])) print(" lmax = %s (PP TT EE BB TE TB EB)"%lkl.lmax) print(" number of extra parameters %d"%len(lkl.extra_parameter_names)) for nn in lkl.extra_parameter_names: print(" %s"%nn)
def change_plik_cmbonly(inhf, lklfile, outfile, lmin, lmax): olmin = 30 olmax = 2508 if lmin == -1 or lmin > lmax or lmin < olmin: lmin = olmin if lmax == -1 or lmax > olmax: lmax = olmax nb = 215 blmin = nm.loadtxt(inhf._name + "/clik/lkl_0/_external/blmin.dat") blmax = nm.loadtxt(inhf._name + "/clik/lkl_0/_external/blmax.dat") bmin = nm.argmin((blmin + olmin - lmin)**2) bmax = nm.argmin((blmax + olmin - lmax)**2) lmin = blmin[bmin] + olmin lmax = blmax[bmax] + olmin print("restrict to %d %d [%d %d]" % (lmin, lmax, bmin, bmax)) hpy.copyfile(lklfile, outfile) outhf = hpy.File(outfile, "r+") outhf["clik/lkl_0/bin_min_tt"] = bmin + 1 outhf["clik/lkl_0/bin_max_tt"] = bmax + 1 outhf["clik/lkl_0/bin_min_te"] = 1 outhf["clik/lkl_0/bin_max_te"] = 199 outhf["clik/lkl_0/bin_min_ee"] = 1 outhf["clik/lkl_0/bin_max_ee"] = 199 php.remove_selfcheck(root_grp=outhf["clik"]) outhf.close()
def main(argv): if len(sys.argv)!=2: print "usage : %s parfile\n copy input_clik to output_clik, change lmin and lmax of output_clik.\n lmin and lmax can be set to -1 to keep the input_clik values.\n input_clik, must be a plik or commander file.\n if input_clik is a binned plik file, the effective lmin and lmax will be the set to the closest bins.\n Here is an example parfile\n #input and output clik files\n input_clik = plik_dx11dr2_HM_v18_TT.clik\n\n output_clik = plik_dx11dr2_HM_v18_TT_no143x143.clik\n\n #set to -1 to use default value\n #set to anything else to change lmin\n lmin = -1 -1 -1 &\n -1 -1 -1 &\n -1 -1 -1 \n\n \n #set to -1 to use default value\n #set to anything else to change lmax\n #set any non negative value inferior than lmin (0 is a good example) ro remove a cross spectra\n lmax = -1 -1 -1 &\n -1 0 -1 &\n -1 -1 -1 \n\n "%osp.basename(sys.argv[0]) sys.exit(0) pars = clik.miniparse(argv[1]) lklfile = pars.str.input_clik lmin = pars.int_array.lmin lmax = pars.int_array.lmax if "beg_notch" in pars: beg = pars.int_array.beg_notch nd = pars.int_array.end_notch else: beg = [-1]*len(lmin) nd = [-1]*len(lmin) outfile = pars.str.output_clik inhf = hpy.File(lklfile) ty = inhf["clik/lkl_0/lkl_type"] if ty not in ("smica"): print "can only change lmin and lmax for plik likelihoods" sys.exit(-1) assert ty in ["smica"],"Cannot change lrange for likelihood type %s"%ty fnc = globals()["change_%s"%ty] fnc(inhf,lklfile,outfile,lmin,lmax,beg,nd)
def change_simlow(inhf, lklfile, outfile, lmin, lmax): hpy.copyfile(lklfile, outfile) outhf = hpy.File(outfile, "r+") outhf["clik/lmax"] = [-1, lmax, -1, -1, -1, -1] outhf["clik/lkl_0/lmin"] = lmin outhf["clik/lkl_0/lmax"] = lmax php.remove_selfcheck(root_grp=outhf["clik"]) outhf.close()
def main(argv): lkl = hpy.File(sys.argv[1], "r") cls = lkl["clik/check_param"][:] if len(argv) == 2: clfile = argv[1] + ".cls" else: clfile = argv[2] cls.tofile(clfile, sep=" ")
def main(argv): pars = clik.miniparse(argv[1]) inhf = hpy.File(pars.input_object) if "external_dir" in inhf["clik/lkl_%d" % pars.int( default=0).lkl_id].attrs and inhf["clik/lkl_%d" % pars.int( default=0).lkl_id].attrs["external_dir"] == ".": import shutil shutil.copytree( pars.input_object + "/clik/lkl_%d/_external" % pars.int(default=0).lkl_id, pars.install_path) else: dts = inhf["clik/lkl_%d/external_data" % pars.int(default=0).lkl_id][:] inhf.close() if not osp.exists(pars.install_path): os.mkdir(pars.install_path) f = open(osp.join(pars.install_path, "data.tar"), "w") f.write(dts.tostring()) f.close() assert os.system("cd %s;tar xvf data.tar" % pars.install_path) == 0 assert os.system("cd %s;rm -f data.tar" % pars.install_path) == 0 if "res_object" in pars: hpy.copyfile(pars.input_object, pars.res_object) outhf = hpy.File(pars.res_object, "r+") try: del outhf["clik/lkl_%d/external_data" % pars.int(default=0).lkl_id] except Exception as e: pass try: rmtree(pars.input_object + "/clik/lkl_%d/_external" % pars.int(default=0).lkl_id) except Exception as e: pass outhf["clik/lkl_%d" % pars.int( default=0).lkl_id].attrs["external_dir"] = pars.install_path outhf.close()
def main(argv): if clik.lkl_lensing.try_lensing(argv[1]): return main_lensing(argv) lkl = hpy.File(sys.argv[1], "r") cls = lkl["clik/check_param"][:] if len(argv) == 2: clfile = argv[1] + ".cls" else: clfile = argv[2] cls.tofile(clfile, sep=" ")
def change_gibbs_gauss(inhf, lklfile, outfile, lmin, lmax): olmin = inhf["clik/lkl_0/lmin"] if lmin == -1 or lmin > lmax: lmin = inhf["clik/lkl_0/lmin"] if lmax == -1: lmax = inhf["clik/lkl_0/lmax"] if lmax > 249: print("not possible") sys.exit(-1) hpy.copyfile(lklfile, outfile) outhf = hpy.File(outfile, "r+") outhf["clik/lmax"] = [lmax, -1, -1, -1, -1, -1] outhf["clik/lkl_0/lmin"] = lmin outhf["clik/lkl_0/lmax"] = lmax outhf["clik/lkl_0/delta_l"] = lmax php.remove_selfcheck(root_grp=outhf["clik"]) outhf.close()
def main(argv): if len(sys.argv) != 5: print("usage : %s input_clik lmin lmax output_clik\n copy input_clik to output_clik, change lmin and lmax of output_clik.\n lmin and lmax can be set to -1 to keep the input_clik values.\n input_clik, must be a plik or commander file.\n if input_clik is a binned plik file, the effective lmin and lmax will be the set to the closest bins." % osp.basename(sys.argv[0])) sys.exit(0) lklfile = sys.argv[1] lmin = int(sys.argv[2]) lmax = int(sys.argv[3]) outfile = sys.argv[4] inhf = hpy.File(lklfile) ty = inhf["clik/lkl_0/lkl_type"] if ty not in ("smica", "gibbs_gauss"): print("can only change lmin and lmax for plik and commander TT likelihoods") sys.exit(-1) assert ty in [ "smica", "gibbs_gauss"], "Cannot change lrange for likelihood type %s" % ty fnc = globals()["change_%s" % ty] fnc(inhf, lklfile, outfile, lmin, lmax)
def main_CMB(argv): clikl = clik.clik(sys.argv[1]) extn = clikl.extra_parameter_names lkl = hpy.File(sys.argv[1],"r")["clik"] print("clik lkl file = %s"%sys.argv[1]) print(" number of likelihoods = %d"%lkl.attrs["n_lkl_object"]) print(" lmax ( "+ " ".join([nl+" = %d"%ll for nl,ll in zip(("TT","EE","BB","TE","TB","EB"),lkl.attrs["lmax"]) if ll >-1])+" )") print(" number of varying extra parameters %d"%(len(extn))) for n in extn: print(" %s"%n) if "prior" in lkl: names = lkl["prior"].attrs["name"] names = [names[i*256:(i+1)*256].strip() for i in range(len(names)/256)] print(" gaussian priors on %s"%", ".join(names)) loc = lkl["prior/loc"][:] print(" at \n %s"%" ".join([str(l) for l in loc])) var = lkl["prior/var"][:] if len(var)==len(loc): var = nm.diag(var) var.shape=(len(loc),-1) print(" with variance") print("\n".join([" "+" ".join([str(v) for v in vl]) for vl in var])) if "default" in lkl: loc = lkl["default/loc"][:] print(" number of fixed parameters = %d"%len(loc)) nms = lkl["default"].attrs["name"] nms = [nms[i*256:i*256+256].strip() for i in range(len(loc))] for n,l in zip(nms,loc): print(" %s = %g"%(n,l)) ilkl = 0 for lkli_n in ("lkl_%d"%v for v in range(lkl.attrs["n_lkl_object"])): lkli = lkl[lkli_n] print("\n %s"%lkli_n) print(" lkl_type = %s"%lkli.attrs["lkl_type"]) print(" unit = %g"%lkli.attrs["unit"]) if "lmax" in lkli.attrs: lmax = lkli.attrs["lmax"] lmin = 0 if "lmin" in lkli.attrs: lmin = lkli.attrs["lmin"] ellh = False else: ell = lkli.attrs["ell"] lmax = nm.max(ell) lmin = nm.min(ell) ellh = not nm.alltrue((ell[1:]-ell[:-1]) == 1) print(" "+" ".join([nl+" = [%d , %d]"%(lmin,lmax) for nl,hl in zip(("TT","EE","BB","TE","TB","EB"),lkli.attrs["has_cl"]) if hl ])+" (discontinous)"*ellh) if "wl" in lkli.attrs: print(" has window function") if "nbins" in lkli.attrs: print(" nbins = %d"%lkli.attrs["nbins"]) if lkli.attrs["lkl_type"]=="smica": print(" component 0 : CMB") for nc in range(1,lkli.attrs["n_component"]): if "component_name" in lkli["component_%d"%nc]: print(" component %d : %s"%(nc,lkli["component_%d"%nc].attrs["component_name"])) else: print(" component %d : %s"%(nc,lkli["component_%d"%nc].attrs["component_type"])) extn = clikl.get_extra_parameter_names_by_lkl(ilkl) print(" number of extra parameters = %d %s"%(len(extn),extn)) ilkl +=1
def change_smica(inhf, lklfile, outfile, lmin, lmax): olmin = inhf["clik/lkl_0/lmin"] olmax = inhf["clik/lkl_0/lmax"] if lmin == -1 or lmin > lmax or lmin < olmin: lmin = olmin if lmax == -1 or lmax > olmax: lmax = olmax nb = inhf["clik/lkl_0/nbins"] blmin = inhf["clik/lkl_0/bin_lmin"] blmax = inhf["clik/lkl_0/bin_lmax"] bmin = nm.argmin((blmin + olmin - lmin)**2) bmax = nm.argmin((blmax + olmin - lmax)**2) lmin = blmin[bmin] + olmin lmax = blmax[bmax] + olmin print("restrict to %d %d" % (lmin, lmax)) hascl = inhf["clik/lkl_0/has_cl"] assert hascl[1:].sum() == 0, "do not work yet on polar data" mT = inhf["clik/lkl_0/m_channel_T"] ord = inhf["clik/lkl_0/criterion_gauss_ordering"] ord.shape = (-1, 2) nmsk = inhf["clik/lkl_0/criterion_gauss_mask"] nmsk.shape = (nb, mT, mT) kp = [] mx = 0 for i, j in ord: cur = nm.arange(nb)[nmsk[:, i, j] == 1] kp += [nm.where((cur < bmax + 1) * (cur > bmin - 1))[0] + mx] mx += len(cur) kp = nm.concatenate(kp) siginv = inhf["clik/lkl_0/criterion_gauss_mat"] siginv.shape = (siginv.shape[0]**.5, -1) sig = nm.linalg.inv(siginv) del(siginv) nsig = ((sig[kp])[:, kp]) * 1. del(sig) nsiginv = nm.linalg.inv(nsig) del(nsig) hpy.copyfile(lklfile, outfile) outhf = hpy.File(outfile, "r+") outhf["clik/lmax"] = [lmax, -1, -1, -1, -1, -1] outhf["clik/lkl_0/lmin"] = lmin outhf["clik/lkl_0/lmax"] = lmax outhf["clik/lkl_0/nbins"] = bmax + 1 - bmin cutarr(inhf, outhf, 0, nb - 1, bmin, bmax, "clik/lkl_0/bin_lmin") outhf["clik/lkl_0/bin_lmin"] = outhf["clik/lkl_0/bin_lmin"] - \ (lmin - olmin) cutarr(inhf, outhf, 0, nb - 1, bmin, bmax, "clik/lkl_0/bin_lmax") outhf["clik/lkl_0/bin_lmax"] = outhf["clik/lkl_0/bin_lmax"] - \ (lmin - olmin) cutarr(inhf, outhf, olmin, olmax, lmin, lmax, "clik/lkl_0/bin_ws") cutarr(inhf, outhf, 0, nb - 1, bmin, bmax, "clik/lkl_0/Rq_hat") cutarr(inhf, outhf, 0, nb - 1, bmin, bmax, "clik/lkl_0/wq") cutarr(inhf, outhf, 0, nb - 1, bmin, bmax, "clik/lkl_0/criterion_gauss_mask") outhf["clik/lkl_0/criterion_gauss_mat"] = nsiginv.flat[:] for i in range(1, inhf["clik/lkl_0/n_component"]): if "lmin" not in inhf["clik/lkl_0/component_%d" % i]: continue outhf["clik/lkl_0/component_%d/lmin" % i] = lmin outhf["clik/lkl_0/component_%d/lmax" % i] = lmax php.remove_selfcheck(root_grp=outhf["clik"]) outhf.close()
def main(argv): if len(sys.argv) < 4: print( "usage : %s lkl_file_1 lkl_file_2 [lkl_file_3 ...] result_lkl_file" ) sys.exit(1) for fl in sys.argv[1:-1]: if clik.try_lensing(fl): print("clik_join doesn't work yet with lensing likelihood, sorry") sys.exit(1) lkls = [hpy.File(ll)["clik"] for ll in sys.argv[1:-1]] reslkl = hpy.File(sys.argv[-1], "w", ty=lkls[0]) nlkl = 0 lmax = -nm.ones(6, dtype=nm.int) resclik = reslkl.create_group("clik") name = [] loc = [] defn = [] defloc = [] var = nm.zeros((0, 0)) for lklin in lkls: if "prior" in lklin: prid = lklin["prior"] pname = [n.strip() for n in prid.attrs["name"].split('\0') if n] for n in name: if n in pname: raise Exception("already got a prior on %s" % n) ploc = prid["loc"][:] pvar = prid["var"][:] if len(pvar) == len(ploc): pvar = nm.diag(pvar) pvar.shape = (len(ploc), -1) nvar = nm.zeros((len(loc) + len(ploc), len(loc) + len(ploc))) nvar[:len(loc), :len(loc)] = var nvar[len(loc):, len(loc):] = pvar var = nvar name = list(name) + list(pname) loc = nm.concatenate((loc, ploc)) lmaxin = lklin.attrs["lmax"] lmax = nm.max((lmax, lmaxin), 0) nlklin = lklin.attrs["n_lkl_object"] for i in range(nlklin): grpin = "lkl_%d" % i grpout = "lkl_%d" % nlkl nlkl += 1 lklin.copy(lklin[grpin], resclik, grpout) if "default" in lklin: prid = lklin["default"] pname = [n.strip() for n in prid.attrs["name"].split('\0') if n] ploc = prid["loc"][:] for i, n in enumerate(pname): l = ploc[i] add = True for ii, nn in enumerate(defn): if n == nn: if l != defloc[ii]: raise Exception( "cannot fix the same parameter with different values" ) add = False break if add: defn += [n] defloc += [l] if len(name): prid = resclik.create_group("prior") prid.attrs["name"] = php.pack256(*name) prid.create_dataset("loc", data=loc.flat[:]) prid.create_dataset("var", data=var.flat[:]) if len(defn): prid = resclik.create_group("default") prid.attrs["name"] = php.pack256(*defn) prid.create_dataset("loc", data=nm.array(defloc).flat[:]) resclik.attrs["lmax"] = lmax.astype(nm.int) resclik.attrs["n_lkl_object"] = nlkl reslkl.close()
def __init__(self, clikfile, paramnames=None): # paramnames will be used to do the mapping to the extra parameters self.dffile = clikfile self.name = os.path.splitext(os.path.basename(clikfile))[0] if isinstance(paramnames, (list, tuple)): self.parnames = paramnames else: if paramnames is None: # match versions to the baseline .paramnames file for rem in ['_', 'a_', 'b_', 'c_', 'd_']: name = self.name.replace(rem, '_').replace('_bin1', '') paramnames = os.path.join( os.path.dirname(__file__), '../../data/' + name + '.paramnames') if os.path.exists(paramnames): break self.paramnamefile = paramnames self.paramnames = ParamNames(paramnames) self.parnames = self.paramnames.list() self.clik = clik.clik(clikfile) self._translate_parname(self.parnames) self.fi = hpy.File(self.dffile) # some metadata self.hascl = self.fi["clik/lkl_0/has_cl"] self.lmin = self.fi["clik/lkl_0/lmin"] self.lmax = self.fi["clik/lkl_0/lmax"] self.mt = self.fi["clik/lkl_0/m_channel_T"] * self.hascl[0] self.me = self.fi["clik/lkl_0/m_channel_P"] * self.hascl[1] self.mb = self.fi["clik/lkl_0/m_channel_P"] * self.hascl[2] self.m = self.mt + self.me + self.mb self.nb = self.fi["clik/lkl_0/nbins"] / self.hascl.sum() self.rq_shape = (self.nb, self.m, self.m) # binning details self.blmin = self.fi["clik/lkl_0/bin_lmin"] self.blmax = self.fi["clik/lkl_0/bin_lmax"] self.b_ws = self.fi["clik/lkl_0/bin_ws"] # the binning matrix is also simply obtained this way (but using it is slower than using the binning details, 'cause it's full of zeros) self.bns = php.read_bins(self.fi["clik/lkl_0"]) # compute the binned ells self.lm = np.dot(self.bns[:self.nb, :self.lmax - self.lmin + 1], np.arange(self.lmin, self.lmax + 1)) # get the calibration part (and beam for plik 2015) # cal and bal are functions that expect a vector of parameters whose name and ordering are given by cal.varpar and bal.varpar # overal calibration is given by cal(pars)*vec(pars)*outer(acmb,acmb)[nm.newaxis,:,:] self.cal = smh.calTP_from_smica(self.dffile) self.bal = smh.beamTP_from_smica(self.dffile) self.acmb = self.fi["clik/lkl_0/A_cmb"] # get the binned Cl data array self.rqh = self.fi["clik/lkl_0/Rq_hat"] self.rqh.shape = self.rq_shape # get the additive nuisance components self.prms = smh.parametric_from_smica(self.dffile) self.prms_name = [p.get_name() for p in self.prms] # get the selection vector self.oo, self.Jt = smh.ordering_from_smica(self.dffile) # get the inverse covariance self.siginv = self.fi["clik/lkl_0/criterion_gauss_mat"] self.siginv.shape = (len(self.oo), len(self.oo)) ls = np.arange(self.lmax + 1) self.llp1 = ls * (ls + 1) / (2 * np.pi) self.llp1[0] = 1 self.indices = [(0, 0), (1, 1), (2, 2), (0, 1), (0, 2), (1, 2)] self.spectra = ["tt", "ee", "bb", "te", "tb", "eb"]
def change_smica(inhf,lklfile,outfile,lmins,lmaxs,beg,nd): olmin = inhf["clik/lkl_0/lmin"] olmax = inhf["clik/lkl_0/lmax"] lmaxs = nm.array([olmax if (lm == -1 or lm>olmax) else lm for lm in lmaxs]) lmins = nm.array([olmin if (lm == -1 or lm<olmin) else lm for lm in lmins]) beg_notch = nm.array([lmx if (lm == -1 or lm>lmx) else lm for lm,lmx in zip(beg,lmaxs)]) end_notch = nm.array([lmx if (lm == -1 or lm<lmx) else lm for lm,lmx in zip(nd,lmins)]) kpp = lmaxs>lmins nb = inhf["clik/lkl_0/nbins"] hascl = inhf["clik/lkl_0/has_cl"] mT = inhf["clik/lkl_0/m_channel_T"] mP = inhf["clik/lkl_0/m_channel_P"] mE = mT*hascl[0] mB = mE + mP*hascl[1] m = mB + mP*hascl[2] blmin = inhf["clik/lkl_0/bin_lmin"][:nb/nm.sum(hascl)] blmax = inhf["clik/lkl_0/bin_lmax"][:nb/nm.sum(hascl)] bmins = nm.array([nm.argmin((blmin+olmin-lm)**2) for lm in lmins]) bmaxs = nm.array([nm.argmin((blmax+olmin-lm)**2) for lm in lmaxs]) bbeg_notch = nm.array([nm.argmin((blmin+olmin-lm)**2) for lm in beg_notch]) bend_notch = nm.array([nm.argmin((blmin+olmin-lm)**2) for lm in end_notch]) lmins = nm.array([blmin[bm]+olmin for bm in bmins]) lmaxs = nm.array([blmax[bm]+olmin for bm in bmaxs]) beg_notch = nm.array([blmin[bm]+olmin for bm in bbeg_notch]) end_notch = nm.array([blmax[bm]+olmin for bm in bend_notch]) dnames = inhf["clik/lkl_0/dnames"] dnames = [dnames[i*256:(i+1)*256].strip("\0") for i in range(len(dnames)/256)] print "restrict to" cc = 0 for a in range(3): aT = "TEB"[a] for ii in range(mT if a==0 else mP*hascl[a]): for b in range(3): bT = "TEB"[b] for jj in range(mT if b==0 else mP*hascl[b]): print " %s%s %s%s lmin = %d, lmax = %d"%(aT,dnames[mT*(a!=0)+ii][:-1],bT,dnames[mT*(b!=0)+jj][:-1],lmins[cc]*kpp[cc],lmaxs[cc]*kpp[cc]), if beg_notch[cc]*kpp[cc]<end_notch[cc]*kpp[cc]: print "[notch %d -> %d]"%(beg_notch[cc]*kpp[cc],end_notch[cc]*kpp[cc],), print "" cc+=1 lmin = min(lmins[kpp]) lmax = max(lmaxs[kpp]) bmin = min(bmins[kpp]) bmax = max(bmaxs[kpp]) #sys.exit(-1) ord = inhf["clik/lkl_0/criterion_gauss_ordering"] ord.shape=(-1,2) nmsk = inhf["clik/lkl_0/criterion_gauss_mask"] nmsk.shape=(nb/nm.sum(hascl),m,m) kp = [] mx = 0 bmins.shape=(m,m) bmaxs.shape=(m,m) bbeg_notch.shape=(m,m) bend_notch.shape=(m,m) kpp.shape=(m,m) nnmsk = nmsk*1 for i,j in ord: cur = nm.arange(nb/nm.sum(hascl))[nmsk[:,i,j]==1] nnmsk[:bmins[i,j],i,j] = 0 nnmsk[bmaxs[i,j]+1:,i,j] = 0 nnmsk[bbeg_notch[i,j]:bend_notch[i,j]+1,i,j]=0 if kpp[i,j]: kp += [nm.where((cur<bmaxs[i,j]+1) * (cur>bmins[i,j]-1) * (((cur>bbeg_notch[i,j]-1) * (cur<bend_notch[i,j]+1))==False))[0]+mx] #print "cur",cur+mx #print "kp",kp[-1] #print i,j,len(cur),len(kp[-1]) #print (cur<bmaxs[i,j]+1) #print (cur>bmins[i,j]-1) #print (cur<bbeg_notch[i,j]+1),bbeg_notch[i,j] #print (cur>bend_notch[i,j]-1),bend_notch[i,j] else: nnmsk[:,i,j] = 0 mx += len(cur) kp = nm.concatenate(kp) siginv = inhf["clik/lkl_0/criterion_gauss_mat"] siginv.shape=(siginv.shape[0]**.5,-1) sig = nm.linalg.inv(siginv) del(siginv) nsig = ((sig[kp])[:,kp])*1. del(sig) nsiginv = nm.linalg.inv(nsig) del(nsig) hpy.copyfile(lklfile,outfile) outhf = hpy.File(outfile,"r+") #outhf["clik/lmax"] = [lmax,-1,-1,-1,-1,-1] #outhf["clik/lkl_0/lmin"] = lmin #outhf["clik/lkl_0/lmax"] = lmax #outhf["clik/lkl_0/nbins"] = bmax + 1 - bmin #cutarr(inhf,outhf,0,nb-1,bmin,bmax,"clik/lkl_0/bin_lmin") #outhf["clik/lkl_0/bin_lmin"] = outhf["clik/lkl_0/bin_lmin"]-(lmin-olmin) #cutarr(inhf,outhf,0,nb-1,bmin,bmax,"clik/lkl_0/bin_lmax") #outhf["clik/lkl_0/bin_lmax"] = outhf["clik/lkl_0/bin_lmax"]-(lmin-olmin) #cutarr(inhf,outhf,olmin,olmax,lmin,lmax,"clik/lkl_0/bin_ws") #cutarr(inhf,outhf,0,nb-1,bmin,bmax,"clik/lkl_0/Rq_hat") #cutarr(inhf,outhf,0,nb-1,bmin,bmax,"clik/lkl_0/wq") #cutarr(inhf,outhf,0,nb-1,bmin,bmax,"clik/lkl_0/criterion_gauss_mask",nnmsk) outhf["clik/lkl_0/criterion_gauss_mask"] = nnmsk.flat[:] outhf["clik/lkl_0/criterion_gauss_mat"] = nsiginv.flat[:] #for i in range(1,inhf["clik/lkl_0/n_component"]): # if "lmin" not in inhf["clik/lkl_0/component_%d"%i]: # continue # outhf["clik/lkl_0/component_%d/lmin"%i]=lmin # outhf["clik/lkl_0/component_%d/lmax"%i]=lmax php.remove_selfcheck(root_grp=outhf["clik"]) outhf.close()