Example #1
0
 def __init__(self, root=None, ignore_rows=0, jobItem=None):
     self.jobItem = jobItem
     self.precision = '%.8e'
     self.ignore_lines = ignore_rows
     self.root = root
     self.chains = []
     self.samples = None
     self.hasNames = os.path.exists(root + '.paramnames')
     self.needs_update = True
     if self.hasNames:
         self.paramNames = paramNames.paramNames(root + '.paramnames')
         self.getParamIndices()
Example #2
0
        def parseForBatch(self):
            if self.importanceParameter:
                self.parser.add_argument('--noimportance', action='store_true', help='original chains only, no importance sampled')
                self.parser.add_argument('--importance', nargs='*', default=None, help='data names for importance sampling runs to include')
                self.parser.add_argument('--importancetag', nargs='*', default=None, help='importance tags for importance sampling runs to include')

            self.parser.add_argument('--name', default=None, nargs='+', help='specific chain full name only (base_paramx_data1_data2)')
            self.parser.add_argument('--param', default=None, nargs='+', help='runs including specific parameter only (paramx)')
            self.parser.add_argument('--paramtag', default=None, nargs='+', help='runs with specific parameter tag only (base_paramx)')
            self.parser.add_argument('--data', nargs='+', default=None, help='runs including specific data only (data1)')
            self.parser.add_argument('--datatag', nargs='+', default=None, help='runs with specific data tag only (data1_data2)')
            self.parser.add_argument('--musthave_data', nargs='+', default=None, help='include only runs that include specific data (data1)')
            self.parser.add_argument('--skip_data', nargs='+', default=None, help='skip runs containing specific data (data1)')
            self.parser.add_argument('--skip_param', nargs='+', default=None, help='skip runs containing specific parameter (paramx)')
            self.parser.add_argument('--group', default=None, nargs='+', help='include only runs with given group names')
            self.parser.add_argument('--skip_group', default=None, nargs='+', help='exclude runs with given group names')

            if self.notExist:
                self.parser.add_argument('--notexist', action='store_true', help='only include chains that don\'t already exist on disk')
            if self.notall:
                self.parser.add_argument('--notall', type=int, default=None, help='only include chains where all N chains don\'t already exist on disk')
            if self.doplots:
                self.parser.add_argument('--plot_data', nargs='*', default=None, help='directory/ies containing getdist output plot_data')
                self.parser.add_argument('--paramNameFile', default='clik_latex.paramnames', help=".paramnames file for custom labels for parameters")
                self.parser.add_argument('--paramList', default=None, help=".paramnames file listing specific parameters to include (only)")
                self.parser.add_argument('--size_inch', type=float, default=None, help='output subplot size in inches')
                self.parser.add_argument('--nx', default=None, help='number of plots per row')
                self.parser.add_argument('--outputs', nargs='+', default=['pdf'], help='output file type (default: pdf)')

            args = self.parser.parse_args()
            self.args = args
            if args.batchPath:
                self.batch = batchJob.readobject(args.batchPath)
                if self.batch is None: raise Exception('batchPath does not exist or it not initialized with makeGrid.py')
                if self.doplots:
                    import GetDistPlots
                    from getdist import paramNames
                    if args.paramList is not None: args.paramList = paramNames.paramNames(args.paramList)
                    if args.plot_data is not None:
                        g = GetDistPlots.GetDistPlotter(plot_data=args.plot_data)
                    else:
                        g = GetDistPlots.GetDistPlotter(chain_dir=self.batch.batchPath)
                    if args.size_inch is not None: g.settings.setWithSubplotSize(args.size_inch)
                    return (self.batch, self.args, g)
                else:
                    return (self.batch, self.args)
            else: return None, self.args
Example #3
0
    def loadWMAPChain(self, chainPath, namesFile, thinfac=1):
        params = paramNames.paramNames(namesFile)
        cols = []
        self.weights = np.loadtxt(chainPath + 'weight', usecols=(1,))
        self.loglikes = np.loadtxt(chainPath + 'neglnlike', usecols=(1,))
        if thinfac <> 1:
            thin_ix = self.thin_indices(thinfac)
            self.weights = np.ones(len(thin_ix))
            self.loglikes = self.loglikes[thin_ix]
        else: thin_ix = None

        usednames = []
        for param in params.names:
            if os.path.exists(chainPath + param.name):
                col = np.loadtxt(chainPath + param.name, usecols=(1,))
                if thin_ix is not None: col = col[thin_ix]
                cols.append(col)
                usednames.append(param)
        params.names = usednames
        self.paramNames = params
        self.samples = np.vstack(cols).transpose()
        self.numrows = self.samples.shape[0]
Example #4
0
Opts.parser.add_argument('--chain_name_params', nargs='+')

Opts.parser.add_argument('--compare', nargs='+', default=None)
Opts.parser.add_argument('--nobestfits', action='store_true')
Opts.parser.add_argument('--single_extparam', action='store_true')
Opts.parser.add_argument('--limit', type=int, default=2)
Opts.parser.add_argument('--latex_filename', default=None)
Opts.parser.add_argument('--mathColumns', action='store_true')
Opts.parser.add_argument('--endline', default='\\cr')
Opts.parser.add_argument('--paramNameFile', default='clik_latex.paramnames')


(batch, args) = Opts.parseForBatch()
formatter = ResultObjs.tableFormatter()

names = paramNames.paramNames(args.paramNameFile)

if args.chain_name_params is None: args.chain_name_params = args.params

if args.compare: args.compare = [batch.normalizeDataTag(dat) for dat in args.compare]

table = dict()
paramtag_for_param = dict()
for par in args.params:
    paramtag_for_param[par] = []

for jobItem in Opts.filteredBatchItems():
    if (args.compare is None or jobItem.matchesDatatag(args.compare)) and (not args.single_extparam or
                                len(jobItem.param_set) == 1  and jobItem.hasParam(args.chain_name_params)):
        jobItem.loadJobItemResults(paramNameFile=None, bestfit=not args.nobestfits, noconverge=True, silent=True)
        if jobItem.result_marge is not None:
Example #5
0
# Just look at parameters being produced in single chain

import os, sys
from getdist import paramNames
import numpy as np


if len(sys.argv) < 3:
    print 'Usage: python/chainPeek.py chains/chainroot paramname [chain_index]'
    print 'e.g. python/makeGrid.py chains/test omegabh2 1'
    sys.exit()


chain = os.path.abspath(sys.argv[1])
param = sys.argv[2]
index = 1
if len(sys.argv) > 4: index = int(sys.argv[3])

d = np.loadtxt(chain + '_' + str(index) + '.txt')
names = paramNames.paramNames(chain + '.paramnames')

print d[:, names.numberOfName(param) + 2]
Example #6
0
import batchJobArgs
from getdist import paramNames

Opts = batchJobArgs.batchArgs('rename parameter in all .paramnames files in grid', importance=True)
Opts.parser.add_argument('--old_new', nargs='+', help="list of oldname newname oldname2 newname2...")
Opts.parser.add_argument('--labelNames', default=None, help=".paramnames file for new param labels")
Opts.parser.add_argument('--map_file', help="file with rows of oldname newname label")
Opts.parser.add_argument('--confirm', action='store_true', help="true to replace .paramnames files")


(batch, args) = Opts.parseForBatch()

if args.old_new and len(args.old_new) < 2: raise Exception('Must have at least one pair of parameters to rename')

if args.labelNames:
    labels = paramNames.paramNames(args.labelNames)
else:
    labels = None

mapper = dict()
if args.map_file:
    with open(args.map_file) as f:
        for line in f:
            if line.strip():
                old, new, label = [s.strip() for s in line.split(None, 2)]
                mapper[old] = (new, label)
if args.old_new:
    for old, new in zip(args.old_new[::2], args.old_new[1::2]):
        mapper[old] = (new, None)

Example #7
0
Opts.parser.add_argument('--blockEndParams', default=None)
Opts.parser.add_argument('--columns', type=int, nargs=1, default=3)
Opts.parser.add_argument('--compare', nargs='+', default=None)

Opts.parser.add_argument('--titles', default=None)  # for compare plots
Opts.parser.add_argument('--forpaper', action='store_true')
Opts.parser.add_argument('--separate_tex', action='store_true')
Opts.parser.add_argument('--header_tex', default=None)
Opts.parser.add_argument('--height', default="10in")
Opts.parser.add_argument('--width', default="12in")

(batch, args) = Opts.parseForBatch()

if args.blockEndParams is not None: args.blockEndParams = args.blockEndParams.split(';')

if args.paramList is not None: args.paramList = paramNames.paramNames(args.paramList)

if args.forpaper: formatter = planckStyle.planckStyleTableFormatter()
else: formatter = None

def texEscapeText(string):
    return string.replace('_', '{\\textunderscore}')

def getTableLines(content, referenceDataJobItem=None):
    if referenceDataJobItem is not None: refResults = referenceDataJobItem.result_marge
    else: refResults = None
    return ResultObjs.resultTable(args.columns, [content], blockEndParams=args.blockEndParams, formatter=formatter,
                                  paramList=args.paramList, limit=args.limit,
                                  refResults=refResults, shiftSigma_indep=args.shift_sigma_indep, shiftSigma_subset=args.shift_sigma_subset).lines

def paramResultTable(jobItem, deltaChisqJobItem=None, referenceDataJobItem=None):