def param_to_datasets_and_trainers(pid_iterator, filtered_data_f, diffcovs_iter, diffcovs_numchains, diffcovs_seed, perf_percentiles, perf_times, get_pops_f, summarize_f, cv_f, ys_f, hypers, x_abc_f, loss_f):
    get_posterior_f = ps.get_diffcovs_posterior_f(get_pops_f, hypers, diffcovs_iter, diffcovs_numchains, diffcovs_seed)
    diffcovs_trainer = ps.get_diffcovs_point_predictor_f(get_posterior_f, summarize_f)
    prior_trainer = ps.get_prior_predictor_f(get_pops_f)
    logreg_trainer = ps.get_logreg_predictor_f(perf_times)
    init_f = ps.set_hard_coded_key_dec(ps.s_f, 'init')(ys_f)
    data = ps.get_data_f(x_abc_f, init_f, ps.after_0_ys_f(ys_f))(pid_iterator)
    filtered_data = filtered_data_f(data)
    return ps.keyed_list([prior_trainer, logreg_trainer, diffcovs_trainer]), cv_f, loss_f, perf_percentiles, perf_times, filtered_data
def plot_model_performances(the_iterable):

    for (
        pid_iterator,
        filter_f,
        diffcovs_iter,
        diffcovs_numchains,
        diffcovs_seed,
        perf_percentiles,
        perf_times,
        get_pops_f,
        summarize_f,
        cv_f,
        ys_f,
        hypers,
        x_abc_f,
        loss_f,
        actual_ys_f_shift,
        post_process_f,
    ) in the_iterable:

        try:
            get_posterior_f = ps.get_pystan_diffcovs_posterior_f(
                get_pops_f, hypers, diffcovs_iter, diffcovs_numchains, diffcovs_seed
            )
            diffcovs_trainer = ps.get_diffcovs_point_predictor_f(get_posterior_f, summarize_f)
            prior_trainer = ps.get_prior_predictor_f(get_pops_f)
            shifted_perf_times = [t - actual_ys_f_shift for t in perf_times]
            logreg_trainer = ps.get_logreg_predictor_f(shifted_perf_times)
            trainers = ps.keyed_list([prior_trainer, logreg_trainer, diffcovs_trainer])
            init_f = ps.set_hard_coded_key_dec(ps.s_f, "init")(ys_f)
            actual_ys_f = ps.actual_ys_f(ys_f, actual_ys_f_shift)
            data = ps.get_data_f(x_abc_f, init_f, actual_ys_f)(pid_iterator)
            filtered_data = ps.generic_filtered_get_data_f(filter_f)(data)
            filtered_data = post_process_f(filtered_data)
            ps.model_comparer_f(trainers, cv_f, loss_f, perf_percentiles, shifted_perf_times)(filtered_data)
        except Exception, e:
            for frame in traceback.extract_tb(sys.exc_info()[2]):
                fname, lineno, fn, text = frame
                print "Error in %s on line %d" % (fname, lineno)
            print e
            pdb.set_trace()
            pass
def plot_predicted_patient_curves(the_iterable):

    for (
        pid_iterator,
        filtered_data_f,
        diffcovs_iter,
        diffcovs_numchains,
        diffcovs_seed,
        perf_percentiles,
        perf_times,
        get_pops_f,
        summarize_f,
        cv_f,
        ys_f,
        hypers,
        x_abc_f,
        loss_f,
        actual_ys_f_shift,
        post_process_f,
    ) in the_iterable:

        try:
            get_posterior_f = ps.get_pystan_diffcovs_posterior_f(
                get_pops_f, hypers, diffcovs_iter, diffcovs_numchains, diffcovs_seed
            )
            diffcovs_trainer = ps.get_diffcovs_point_predictor_f(get_posterior_f, summarize_f)
            prior_trainer = ps.get_prior_predictor_f(get_pops_f)
            shifted_perf_times = [t - actual_ys_f_shift for t in perf_times]
            logreg_trainer = ps.get_logreg_predictor_f(shifted_perf_times)
            init_f = ps.set_hard_coded_key_dec(ps.s_f, "init")(ys_f)
            actual_ys_f = ps.actual_ys_f(ys_f, actual_ys_f_shift)
            data = ps.get_data_f(x_abc_f, init_f, actual_ys_f)(pid_iterator)
            filtered_data = ps.generic_filtered_get_data_f(filter_f)(data)
            filtered_data = post_process_f(filtered_data)

            ps.plot_all_predictions_fig_f(
                ps.keyed_list([prior_trainer, logreg_trainer, diffcovs_trainer]), cv_f, shifted_perf_times
            )(filtered_data)
        except:
            pass