def _readGridChains(self, batchPath): """ Setup of a grid chain. """ # Reset data self._resetPlotData() self._resetGridData() self.is_grid = True logging.debug("Read grid chain in %s" % batchPath) try: batch = batchJob.readobject(batchPath) except: batchJob.resetGrid(batchPath) batch = batchJob.readobject(batchPath) self.batch = batch items = dict() for jobItem in batch.items(True, True): if jobItem.chainExists(): if not jobItem.paramtag in items: items[jobItem.paramtag] = [] items[jobItem.paramtag].append(jobItem) logging.debug("Found %i names for grid" % len(items.keys())) self.grid_paramtag_jobItems = items self.getPlotter(chain_dir=self.rootdirname) self.comboBoxRootname.hide() self.listRoots.show() self.pushButtonRemove.show() self.comboBoxParamTag.clear() self.comboBoxParamTag.addItems(sorted(self.grid_paramtag_jobItems.keys())) self.setParamTag(self.comboBoxParamTag.itemText(0)) self.comboBoxParamTag.show() self.comboBoxDataTag.show()
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
def parseForBatch(self): if self.importanceParameter: self.parser.add_argument('--noimportance', action='store_true') self.parser.add_argument('--importance', nargs='*', default=None) self.parser.add_argument('--name', default=None, nargs='+') self.parser.add_argument('--param', default=None, nargs='+') self.parser.add_argument('--paramtag', default=None) self.parser.add_argument('--data', default=None) self.parser.add_argument('--datatag', default=None) self.parser.add_argument('--skip_data', default=None) self.parser.add_argument('--skip_param', default=None) self.parser.add_argument('--group', default=None, nargs='+') if self.notExist: self.parser.add_argument('--notexist', action='store_true') self.args = self.parser.parse_args() self.batch = batchJob.readobject(self.args.batchPath) return (self.batch, self.args)
import os, sys, batchJob if len(sys.argv) < 3: print "Usage: python/addGridBatch.py directory_with_outputs directory_with_output_to_add [and_another..]" sys.exit() batch = batchJob.readobject() for subBatch in sys.argv[2:]: batchPath2 = os.path.abspath(subBatch) + os.sep batch2 = batchJob.readobject(batchPath2) batch.subBatches.append(batch2) for jobItem in batch.items(): for x in [imp for imp in jobItem.importanceJobs()]: if batch.hasName(x.name.replace("_post", "")): print "replacing importance sampling run (not deleting files): " + x.name jobItem.importanceItems.remove(x) batch.save()
def getBatch(self): if not hasattr(self, 'batch'): self.batch = batchJob.readobject(rootdir) return self.batch