def _colspec_cols(colspec, parse_cache): try: return parse_cache[colspec] except KeyError: try: cols = query.parse_colspec(colspec).cols except query.ParseError as e: log.warning("error parsing %r: %s", colspec, e) cols = [] parse_cache[colspec] = cols return cols
def _init_objective(batch): negate, colspec = _objective_colspec(batch) try: cols = query.parse_colspec(colspec).cols except query.ParseError as e: raise batch_util.BatchError("cannot parse objective %r: %s" % (colspec, e)) else: if len(cols) > 1: raise batch_util.BatchError( "invalid objective %r: only one column may " "be specified" % colspec ) return negate, cols[0]
def _ipy_objective(minimize, maximize): colspec, negate = _ipy_objective_colspec(minimize, maximize) try: cols = qparse.parse_colspec(colspec).cols except qparse.ParseError as e: raise ValueError("cannot parse objective %r: %s" % (colspec, e)) else: if len(cols) > 1: raise ValueError("invalid objective %r: only one column may " "be specified" % colspec) scalar = cols[0] prefix, tag = scalar.split_key() return (prefix, tag, scalar.qualifier), negate
def _run_compare_metrics(run): compare_specs = run_util.latest_compare(run) if not compare_specs: return None metrics = set() for spec in compare_specs: try: select = query.parse_colspec(spec) except query.ParseError: pass else: metrics.update([col.key for col in select.cols if _is_last_scalar(col)]) return metrics
def _run_scalar_args_for_select(scalar_spec): from guild import query try: cols = query.parse_colspec(scalar_spec).cols except query.ParseError as e: cli.error("invalid scalar '%s': %s" % (scalar_spec, e)) else: assert cols, scalar_spec if len(cols) > 1: cli.error("invalid scalar '%s': multiple scalars not supported" % scalar_spec) col = cols[0] # 'header', 'key', 'named_as', 'qualifier', 'split_key', 'step' if col.named_as: log.warning("ignoring 'as %s' in scalar", col.named_as) prefix, tag = col.split_key() return prefix, tag, col.qualifier, col.step
def _objective_y_info(batch_run): objective = batch_run.get("objective") or DEFAULT_OBJECTIVE if objective[0] == "-": objective = objective[1:] y_negate = -1 else: y_negate = 1 try: colspec = qparse.parse_colspec(objective) except qparse.ParseError as e: raise InvalidObjective("invalid objective %r: %s" % (objective, e)) else: if len(colspec.cols) > 1: raise InvalidObjective("invalid objective %r: too many columns" % objective) col = colspec.cols[0] prefix, key = col.split_key() y_scalar_col = (prefix, key, col.qualifier) return y_scalar_col, y_negate