sr_factories.py 文件源码

python
阅读 23 收藏 0 点赞 0 评论 0

项目:SoRa 作者: LLNL 项目源码 文件源码
def constantFactory(constants, pset):

    for const_block in constants:
        if(not const_block.has_key("type")):
            raise ValueError("Constant block in configuration missing type key.\n %s" % str(const_block));
        typename = const_block["type"].lower()

        if typename == "randint":
            if(not const_block.has_key("min") or not const_block.has_key("max")):
                raise ValueError("Constant randint in configuration must have min and max values.\n %s" % str(const_block));
            minn = int(const_block["min"])
            maxx = int(const_block["max"])
            pset.addEphemeralConstant("randint%d.%d" %(minn, maxx), lambda: random.randint(minn,maxx))
        elif typename == "uniform":
            if(not const_block.has_key("min") or not const_block.has_key("max")):
                raise ValueError("Constant uniform in configuration must have min and max values.\n %s" % str(const_block));
            minn = int(const_block["min"])
            maxx = int(const_block["max"])
            pset.addEphemeralConstant("uniform%d.%d" %(minn, maxx), lambda: random.uniform(minn,maxx))
        elif typename == "normal":
            if(not const_block.has_key("mu") or not const_block.has_key("sigma")):
                raise ValueError("Constant normal in configuration must have mu and sigma values.\n %s" % str(const_block));
            mu = int(const_block["mu"])
            sigma = int(const_block["sigma"])
            pset.addEphemeralConstant("normal%d.%d" %(mu, sigma), lambda: random.normalvariate(mu,sigma))
        elif typename == "gamma":
            if(not const_block.has_key("alpha") or not const_block.has_key("beta")):
                raise ValueError("Constant gamma in configuration must have alpha and beta values.\n %s" % str(const_block));
            alpha = int(const_block["alpha"])
            beta = int(const_block["beta"])
            pset.addEphemeralConstant("normal%d.%d" %(alpha, beta), lambda: random.gammavariate(alpha,beta))
        elif typename == "constant":
            if(not const_block.has_key("value")):
                raise ValueError("Constant constant in configuration must have value.\n %s" % str(const_block));
            value = int(const_block["value"])
            pset.addEphemeralConstant("const%d" %(value), lambda: value)
        else:
            raise ValueError("Unknown constant type %s\n" % typename)
评论列表


问题


面经


文章

微信
公众号

扫码关注公众号