def xval_global_parameters()

in vihds/plotting.py [0:0]


def xval_global_parameters(res, ncols=6):
    ndata = len(res.ids)
    nfolds = len(res.chunk_sizes)
    qs = dict(zip(res.q_names, res.q_values))

    indexes = np.unique([n.split(".")[0] for n in res.q_names], return_index=True)[1]
    all_ps = [[n.split(".")[0] for n in res.q_names][index] for index in sorted(indexes)]

    ps = []
    for i, p in enumerate(all_ps):
        if p + ".mu" in qs:
            if np.shape(qs[p + ".mu"])[0] < ndata:
                ps.append(p)
    print("- ", ps)
    if utils.is_empty(ps):
        print("- No global parameters: not producing plot")
        return

    # Define geometry and figures
    n = len(ps)
    if n < ncols:
        ncols = n
    nrows = np.ceil(n / ncols).astype(int)
    f, axs = pp.subplots(nrows, ncols, figsize=(2 * ncols, 2 * nrows))
    f.suptitle("Global parameters", fontsize=14)
    for i in range(nrows):
        for j in range(ncols):
            if nrows > 1:
                ax = axs[i, j]
            else:
                ax = axs[j]
            if (j + i * ncols) < len(ps):
                name = ps[j + i * ncols]
                ax.errorbar(
                    np.linspace(1, nfolds, nfolds), qs["%s.mu" % name], 1 / qs["%s.prec" % name], fmt=".",
                )
                ax.set_title(name)
                ax.set_xlim([0.5, nfolds + 0.5])
                ax.set_xticks(range(1, nfolds + 1))
                if i == (nrows - 1):
                    ax.set_xlabel("Fold")
            else:
                if i > 0:
                    axs[i - 1, j].set_xlabel("Fold")
                ax.set_visible(False)
        if nrows > 1:
            axs[i, 0].set_ylabel("Parameter value")
        else:
            axs[0].set_ylabel("Parameter value")
    f.tight_layout(rect=(0, 0, 1, 0.96))
    sns.despine()

    return f