コード例 #1
0
ファイル: clik_change_lrange.py プロジェクト: CosmoLike/cocoa
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()
コード例 #2
0
ファイル: clik_change_lrange.py プロジェクト: CosmoLike/cocoa
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()
コード例 #3
0
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()
コード例 #4
0
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()
コード例 #5
0
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()
コード例 #6
0
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()