

def _init_anim(ax, ax_line, ax_cbar, params, merge_grads):
    'Initialize animated topomap.'
    from matplotlib import pyplot as plt, patches
    logger.info('Initializing animation...')
    data = params['data']
    items = list()
    if params['butterfly']:
        all_times = params['all_times']
        for idx in range(len(data)):
            ax_line.plot(all_times, data[idx], color='k')
        (vmin, vmax) = _setup_vmin_vmax(data, None, None)
        ax_line.set_yticks(np.around(np.linspace(vmin, vmax, 5), (- 1)))
        (params['line'],) = ax_line.plot([all_times[0], all_times[0]], ax_line.get_ylim(), color='r')
        items.append(params['line'])
    if merge_grads:
        from mne.channels.layout import _merge_grad_data
        data = _merge_grad_data(data)
    norm = (True if (np.min(data) > 0) else False)
    cmap = ('Reds' if norm else 'RdBu_r')
    (vmin, vmax) = _setup_vmin_vmax(data, None, None, norm)
    (pos, outlines) = _check_outlines(params['pos'], 'head', None)
    pos_x = pos[:, 0]
    pos_y = pos[:, 1]
    _hide_frame(ax)
    xlim = (np.inf, (- np.inf))
    ylim = (np.inf, (- np.inf))
    mask_ = np.c_[outlines['mask_pos']]
    (xmin, xmax) = (np.min(np.r_[(xlim[0], mask_[:, 0])]), np.max(np.r_[(xlim[1], mask_[:, 0])]))
    (ymin, ymax) = (np.min(np.r_[(ylim[0], mask_[:, 1])]), np.max(np.r_[(ylim[1], mask_[:, 1])]))
    res = 64
    xi = np.linspace(xmin, xmax, res)
    yi = np.linspace(ymin, ymax, res)
    (Xi, Yi) = np.meshgrid(xi, yi)
    params['Zis'] = list()
    for frame in params['frames']:
        Zi = _griddata(pos_x, pos_y, data[:, frame], Xi, Yi)
        params['Zis'].append(Zi)
    Zi = params['Zis'][0]
    zi_min = np.min(params['Zis'])
    zi_max = np.max(params['Zis'])
    cont_lims = np.linspace(zi_min, zi_max, 7, endpoint=False)[1:]
    (_, pos) = _make_image_mask(outlines, pos, res)
    params.update({
        'vmin': vmin,
        'vmax': vmax,
        'Xi': Xi,
        'Yi': Yi,
        'Zi': Zi,
        'extent': (xmin, xmax, ymin, ymax),
        'cmap': cmap,
        'cont_lims': cont_lims,
    })
    im = ax.imshow(Zi, cmap=cmap, vmin=vmin, vmax=vmax, origin='lower', aspect='equal', extent=(xmin, xmax, ymin, ymax), interpolation='bilinear')
    plt.colorbar(im, cax=ax_cbar, cmap=cmap)
    cont = ax.contour(Xi, Yi, Zi, levels=cont_lims, colors='k', linewidths=1)
    patch_ = patches.Ellipse((0, 0), (2 * outlines['clip_radius'][0]), (2 * outlines['clip_radius'][1]), clip_on=True, transform=ax.transData)
    im.set_clip_path(patch_)
    text = ax.text(0.55, 0.95, '', transform=ax.transAxes, va='center', ha='right')
    params['text'] = text
    items.append(im)
    items.append(text)
    for col in cont.collections:
        col.set_clip_path(patch_)
    outlines_ = _draw_outlines(ax, outlines)
    params.update({
        'patch': patch_,
        'outlines': outlines_,
    })
    return (tuple(items) + tuple(cont.collections))

dataset/ETHPy150Open mne-tools/mne-python/mne/viz/topomap.py _init_anim/original