"rmse_" + rate_type,
    "mae_" + rate_type,
    "mare_" + rate_type,
    "pc_" + rate_type,
    "time_" + rate_type,
]
output = pandas.DataFrame(pl.zeros((1, len(stats))), columns=stats)
output["seed"] = replicate
failure = []

# load new model
model = mu.load_new_model(model_num, area, data_type)
# replace invalid uncertainty with 10% of data set
model = mu.create_uncertainty(model, rate_type)
# withhold 25% of data
model.input_data, test_ix = mu.test_train(model.input_data, data_type, replicate)

try:
    # create pymc nodes for model and fit the model
    model.vars += dismod3.ism.age_specific_rate(model, data_type, area, "male", 2005, rate_type=rate_type)
    # fit the model, using a hill-climbing alg to find an initial value
    # and then sampling from the posterior with MCMC
    start = time.clock()
    dismod3.fit.fit_asr(model, data_type, iter=iter, thin=thin, burn=burn)
    elapsed = time.clock() - start
    # extract posterior predicted values for data
    pred = pandas.DataFrame(
        model.vars[data_type]["p_pred"].stats()["mean"], columns=["mean"], index=model.input_data.index
    )
    pred_ui = pandas.DataFrame(
        model.vars[data_type]["p_pred"].stats()["95% HPD interval"],
def test_load_datatype():
    data_types = list(pl.unique(model2.input_data['data_type']))
    assert data_types == [data_type]

def test_uncertainty_binom():
    assert pl.all(model2.input_data['effective_sample_size'] >= 0)

def test_uncertainty_binom_value():
    assert pl.all(pl.array(model2.input_data.ix[nan_ix,'effective_sample_size']).round(2) == round(ten_percent,2))

def test_uncertainty_normal():
    assert pl.all(model1.input_data['standard_error'] >= 0)

# now that uncertainty tests passed, can test test_train function and creation of vars
model.input_data, test_ix = mu.test_train(model.input_data, data_type, 23)
model1.input_data, test_ix1 = mu.test_train(model1.input_data, data_type, 23)
model.vars += dismod3.ism.age_specific_rate(model, data_type, test_area, 'male', 2005, rate_type=rate_type)

def test_test_train_se():
    assert pl.all(model1.input_data.ix[test_ix1,'standard_error'] == pl.inf)

def test_test_train_ess():
    assert pl.all(model1.input_data.ix[test_ix1,'effective_sample_size'] == 0)

def test_replicate():
    assert test_ix == test_ix1

def test_vars():
    assert model.vars[data_type] != {}