java getbounds(),Java Parameter.getBounds方法代码示例

import dr.inference.model.Parameter; //导入方法依赖的package包/类

public Object parseXMLObject(XMLObject xo) throws XMLParseException {

CoercionMode mode = CoercionMode.parseMode(xo);

double weight = xo.getDoubleAttribute(MCMCOperator.WEIGHT);

double windowSize = xo.getDoubleAttribute(WINDOW_SIZE);

Parameter parameter = (Parameter) xo.getChild(Parameter.class);

if (xo.hasAttribute(LOWER) || xo.hasAttribute(UPPER)) {

throw new XMLParseException("Do not provide lower/upper bounds on for a RandomWalkOperator; set these values are parameter bounds");

}

RandomWalkOperator.BoundaryCondition condition = RandomWalkOperator.BoundaryCondition.valueOf(

xo.getAttribute(BOUNDARY_CONDITION, RandomWalkOperator.BoundaryCondition.reflecting.name()));

final Bounds bounds = parameter.getBounds();

final int dim = parameter.getDimension();

boolean lowerBoundsSet = true;

boolean upperBoundsSet = true;

for (int i = 0; i < dim; ++i) {

if (bounds.getLowerLimit(i) == null || Double.isInfinite(bounds.getLowerLimit(i))) {

lowerBoundsSet = false;

}

if (bounds.getUpperLimit(i) == null || Double.isInfinite(bounds.getUpperLimit(i))) {

upperBoundsSet = false;

}

}

if (condition == RandomWalkOperator.BoundaryCondition.logit) {

if (!lowerBoundsSet || !upperBoundsSet) {

throw new XMLParseException("The logit transformed RandomWalkOperator cannot be used on a parameter without bounds.");

}

}

if (condition == RandomWalkOperator.BoundaryCondition.log) {

if (!lowerBoundsSet) {

throw new XMLParseException("The log transformed RandomWalkOperator cannot be used on a parameter without lower bounds.");

}

}

if (xo.hasChildNamed(UPDATE_INDEX)) {

XMLObject cxo = xo.getChild(UPDATE_INDEX);

Parameter updateIndex = (Parameter) cxo.getChild(Parameter.class);

if (updateIndex.getDimension() != parameter.getDimension())

throw new RuntimeException("Parameter to update and missing indices must have the same dimension");

return new RandomWalkOperator(parameter, updateIndex, windowSize, condition,

weight, mode);

}

return new RandomWalkOperator(parameter, null, windowSize, condition, weight, mode);

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值