human
Solve the following python programming problem given the following code:
@testing.requires_testing_data
def test_generate_stc_single_hemi():
assistant
#Here is the Python code you requested.

    """Test generation of source estimate, single hemi
    """
    fwd = read_forward_solution_meg(fname_fwd, force_fixed=True)
    labels_single_hemi = [read_label(op.join(data_path, 'MEG', 'sample', 'labels', ('%s.label' % label))) for label in label_names_single_hemi]
    mylabels = []
    for (i, label) in enumerate(labels_single_hemi):
        new_label = Label(vertices=label.vertices, pos=label.pos, values=((2 * i) * np.ones(len(label.values))), hemi=label.hemi, comment=label.comment)
        mylabels.append(new_label)
    n_times = 10
    tmin = 0
    tstep = 0.001
    stc_data = np.ones((len(labels_single_hemi), n_times))
    stc = simulate_stc(fwd['src'], mylabels, stc_data, tmin, tstep)
    for label in labels_single_hemi:
        if (label.hemi == 'lh'):
            hemi_idx = 0
        else:
            hemi_idx = 1
        idx = np.intersect1d(stc.vertices[hemi_idx], label.vertices)
        idx = np.searchsorted(stc.vertices[hemi_idx], idx)
        if (hemi_idx == 1):
            idx += len(stc.vertices[0])
        assert_true(np.all((stc.data[idx] == 1.0)))
        assert_true((stc.data[idx].shape[1] == n_times))
    def fun(x):
        return (x ** 2)
    stc = simulate_stc(fwd['src'], mylabels, stc_data, tmin, tstep, fun)
    for (i, label) in enumerate(labels_single_hemi):
        if (label.hemi == 'lh'):
            hemi_idx = 0
        else:
            hemi_idx = 1
        idx = np.intersect1d(stc.vertices[hemi_idx], label.vertices)
        idx = np.searchsorted(stc.vertices[hemi_idx], idx)
        if (hemi_idx == 1):
            idx += len(stc.vertices[0])
        res = (((2.0 * i) ** 2.0) * np.ones((len(idx), n_times)))
        assert_array_almost_equal(stc.data[idx], res)