package dr.app.oldbeauti; import java.text.NumberFormat; /** * @author Alexei Drummond */ public enum PriorType { NONE, UNIFORM_PRIOR, EXPONENTIAL_PRIOR, NORMAL_PRIOR, LOGNORMAL_PRIOR, GAMMA_PRIOR, JEFFREYS_PRIOR, POISSON_PRIOR, TRUNC_NORMAL_PRIOR; public String toString() { switch (this) { case NONE: return "none"; case UNIFORM_PRIOR: return "Uniform"; case EXPONENTIAL_PRIOR: return "Exponential"; case NORMAL_PRIOR: return "Normal"; case LOGNORMAL_PRIOR: return "Lognormal"; case GAMMA_PRIOR: return "Gamma"; case JEFFREYS_PRIOR: return "Jeffreys'"; case POISSON_PRIOR: return "Poisson"; case TRUNC_NORMAL_PRIOR: return "Truncated Normal"; default: return ""; } } public String getPriorString(BeastGenerator.Parameter param) { NumberFormat formatter = NumberFormat.getNumberInstance(); StringBuffer buffer = new StringBuffer(); if (!param.priorEdited) { buffer.append("* "); } switch (param.priorType) { case NONE: buffer.append("Using Tree Prior"); break; case UNIFORM_PRIOR: if (!param.isDiscrete && !param.isStatistic) { buffer.append("Uniform ["); buffer.append(formatter.format(param.uniformLower)); buffer.append(", "); buffer.append(formatter.format(param.uniformUpper)); buffer.append("]"); } else { buffer.append("Uniform"); } break; case EXPONENTIAL_PRIOR: buffer.append("Exponential ["); buffer.append(formatter.format(param.exponentialMean)); buffer.append("]"); break; case NORMAL_PRIOR: buffer.append("Normal ["); buffer.append(formatter.format(param.normalMean)); buffer.append(", "); buffer.append(formatter.format(param.normalStdev)); buffer.append("]"); break; case LOGNORMAL_PRIOR: buffer.append("LogNormal ["); buffer.append(formatter.format(param.logNormalMean)); buffer.append(", "); buffer.append(formatter.format(param.logNormalStdev)); buffer.append("]"); break; case GAMMA_PRIOR: buffer.append("Gamma ["); buffer.append(formatter.format(param.gammaAlpha)); buffer.append(", "); buffer.append(formatter.format(param.gammaBeta)); buffer.append("]"); break; case JEFFREYS_PRIOR: buffer.append("Jeffreys"); break; case POISSON_PRIOR: buffer.append("Poisson ["); buffer.append(formatter.format(param.poissonMean)); buffer.append("]"); break; case TRUNC_NORMAL_PRIOR: buffer.append("Truncated Normal ["); buffer.append(formatter.format(param.normalMean)); buffer.append(", "); buffer.append(formatter.format(param.normalStdev)); buffer.append("]"); buffer.append(" in ["); buffer.append(formatter.format(param.uniformLower)); buffer.append(", "); buffer.append(formatter.format(param.uniformUpper)); buffer.append("]"); break; default: throw new IllegalArgumentException("Unknown prior type"); } if (param.priorType != PriorType.NONE && !param.isStatistic) { buffer.append(", initial=").append(param.initial); } return buffer.toString(); } }