コード例 #1
0
ファイル: test_uv.py プロジェクト: mw1602/Eelbrain
def test_barplot():
    "Test plot.uv.barplot"
    plot.configure_backend(False, False)
    ds = datasets.get_uv()
    plot.uv.Barplot('fltvar', 'A%B', match='rm', ds=ds)
    plot.uv.Barplot('fltvar', 'A%B', match='rm', test=0, ds=ds)
    plt.close('all')
コード例 #2
0
ファイル: test_testnd.py プロジェクト: awjamison/Eelbrain
def test_corr():
    "Test testnd.corr()"
    plot.configure_backend(False, False)
    ds = datasets.get_uts(True)

    # add correlation
    Y = ds['Y']
    utsnd = ds['utsnd']
    utsnd.x.shape
    utsnd.x[:, 3:5, 50:65] += Y.x[:, None, None]

    res = testnd.corr('utsnd', 'Y', 'rm', ds=ds)
    repr(res)
    p = plot.Array(res)
    p.close()

    res = testnd.corr('utsnd', 'Y', 'rm', ds=ds, samples=10, pmin=0.05)
    p = plot.Array(res)
    p.close()

    # persistence
    string = pickle.dumps(res, protocol=pickle.HIGHEST_PROTOCOL)
    res_ = pickle.loads(string)
    assert_equal(repr(res_), repr(res))
    assert_dataobj_equal(res.p_uncorrected, res_.p_uncorrected)
    assert_dataobj_equal(res.p, res_.p)

    # NaN
    r = _testnd._corr(np.arange(10), np.zeros(10))
    assert_equal(r, 0)
コード例 #3
0
ファイル: test_uv.py プロジェクト: mw1602/Eelbrain
def test_timeplot():
    "Test plot.uv.timeplot"
    plot.configure_backend(False, False)
    ds = datasets.get_rand()
    ds['seq'] = Var(np.arange(2).repeat(30))
    plot.uv.Timeplot('Y', 'B', 'seq', match='rm', ds=ds)
    plt.close('all')
コード例 #4
0
ファイル: test_uts.py プロジェクト: mw1602/Eelbrain
def test_clusters():
    "test plot.uts cluster plotting functions"
    plot.configure_backend(False, False)
    ds = datasets.get_rand()

    A = ds['A']
    B = ds['B']
    Y = ds['uts']

    # fixed effects model
    res = testnd.anova(Y, A * B)
    p = plot.UTSClusters(res, title="Fixed Effects Model")
    p.close()

    # random effects model:
    subject = Factor(range(15), tile=4, random=True, name='subject')
    res = testnd.anova(Y, A * B * subject, samples=2)
    p = plot.UTSClusters(res, title="Random Effects Model")
    p.close()

    # plot UTSStat
    p = plot.UTSStat(Y, A % B, match=subject)
    p.set_clusters(res.clusters)
    p.close()
    p = plot.UTSStat(Y, A, Xax=B, match=subject)
    p.close()
コード例 #5
0
ファイル: test_uv.py プロジェクト: mw1602/Eelbrain
def test_histogram():
    "Test plot.uv.histogram"
    plot.configure_backend(False, False)
    ds = datasets.get_rand()
    plot.uv.Histogram('Y', 'A%B', ds=ds)
    plot.uv.Histogram('Y', 'A%B', match='rm', ds=ds)
    plt.close('all')
コード例 #6
0
ファイル: test_uv.py プロジェクト: mw1602/Eelbrain
def test_timeplot():
    "Test plot.uv.timeplot"
    plot.configure_backend(False, False)
    ds = datasets.get_rand()
    ds['seq'] = Var(np.arange(2).repeat(30))
    plot.uv.Timeplot('Y', 'B', 'seq', match='rm', ds=ds)
    plt.close('all')
コード例 #7
0
ファイル: test_uv.py プロジェクト: mw1602/Eelbrain
def test_barplot():
    "Test plot.uv.barplot"
    plot.configure_backend(False, False)
    ds = datasets.get_uv()
    plot.uv.Barplot('fltvar', 'A%B', match='rm', ds=ds)
    plot.uv.Barplot('fltvar', 'A%B', match='rm', test=0, ds=ds)
    plt.close('all')
コード例 #8
0
ファイル: test_testnd.py プロジェクト: mw1602/Eelbrain
def test_corr():
    "Test testnd.corr()"
    plot.configure_backend(False, False)
    ds = datasets.get_rand(True)

    # add correlation
    Y = ds['Y']
    utsnd = ds['utsnd']
    utsnd.x.shape
    utsnd.x[:, 3:5, 50:65] += Y.x[:, None, None]

    res = testnd.corr('utsnd', 'Y', 'rm', ds=ds)
    repr(res)
    p = plot.Array(res)
    p.close()

    res = testnd.corr('utsnd', 'Y', 'rm', ds=ds, samples=10, pmin=0.05)
    p = plot.Array(res)
    p.close()

    # persistence
    string = pickle.dumps(res, protocol=pickle.HIGHEST_PROTOCOL)
    res_ = pickle.loads(string)
    assert_equal(repr(res_), repr(res))
    assert_dataobj_equal(res.p_uncorrected, res_.p_uncorrected)
    assert_dataobj_equal(res.p, res_.p)

    # NaN
    r = _testnd._corr(np.arange(10), np.zeros(10))
    assert_equal(r, 0)
コード例 #9
0
ファイル: test_uv.py プロジェクト: mw1602/Eelbrain
def test_histogram():
    "Test plot.uv.histogram"
    plot.configure_backend(False, False)
    ds = datasets.get_rand()
    plot.uv.Histogram('Y', 'A%B', ds=ds)
    plot.uv.Histogram('Y', 'A%B', match='rm', ds=ds)
    plt.close('all')
コード例 #10
0
ファイル: test_uts.py プロジェクト: mw1602/Eelbrain
def test_clusters():
    "test plot.uts cluster plotting functions"
    plot.configure_backend(False, False)
    ds = datasets.get_rand()

    A = ds['A']
    B = ds['B']
    Y = ds['uts']

    # fixed effects model
    res = testnd.anova(Y, A * B)
    p = plot.UTSClusters(res, title="Fixed Effects Model")
    p.close()

    # random effects model:
    subject = Factor(range(15), tile=4, random=True, name='subject')
    res = testnd.anova(Y, A * B * subject, samples=2)
    p = plot.UTSClusters(res, title="Random Effects Model")
    p.close()

    # plot UTSStat
    p = plot.UTSStat(Y, A % B, match=subject)
    p.set_clusters(res.clusters)
    p.close()
    p = plot.UTSStat(Y, A, Xax=B, match=subject)
    p.close()
コード例 #11
0
def test_2():
    "Test fmtxt/table.py"
    exa_dir = os.path.join(examples_dir, 'fmtxt')
    exa_file = os.path.join(exa_dir, 'table.py')

    # find required files
    with open(exa_file) as fid:
        text = fid.read()
    filenames = re.findall("# requires: (\w+.\w+)", text)
    text = text.replace("n_samples = 1000", "n_samples = 2")

    # copy all files to temporary dir
    tempdir = mkdtemp()
    dst = os.path.join(tempdir, 'table.py')
    with open(dst, 'w') as fid:
        fid.write(text)
    for filename in filenames:
        src = os.path.join(exa_dir, filename)
        shutil.copy(src, tempdir)

    # execute example
    logging.info("executing from %s" % tempdir)
    os.chdir(tempdir)
    plot.configure_backend(False, False)
    execfile('table.py', {})
    plt.close('all')

    # delete temporary files
    shutil.rmtree(tempdir)
コード例 #12
0
ファイル: test_examples.py プロジェクト: mw1602/Eelbrain
def test_2():
    "Test fmtxt/table.py"
    exa_dir = os.path.join(examples_dir, 'fmtxt')
    exa_file = os.path.join(exa_dir, 'table.py')

    # find required files
    with open(exa_file) as fid:
        text = fid.read()
    filenames = re.findall("# requires: (\w+.\w+)", text)
    text = text.replace("n_samples = 1000", "n_samples = 2")

    # copy all files to temporary dir
    tempdir = mkdtemp()
    dst = os.path.join(tempdir, 'table.py')
    with open(dst, 'w') as fid:
        fid.write(text)
    for filename in filenames:
        src = os.path.join(exa_dir, filename)
        shutil.copy(src, tempdir)

    # execute example
    logging.info("executing from %s" % tempdir)
    os.chdir(tempdir)
    plot.configure_backend(False, False)
    execfile('table.py', {})
    plt.close('all')

    # delete temporary files
    shutil.rmtree(tempdir)
コード例 #13
0
ファイル: test_utsnd.py プロジェクト: mw1602/Eelbrain
def test_plot_array():
    "Test plot.Array"
    plot.configure_backend(False, False)
    ds = datasets.get_rand(utsnd=True)
    p = plot.Array('utsnd', 'A%B', ds=ds)
    p.close()
    p = plot.Array('utsnd', ds=ds)
    p.close()
コード例 #14
0
ファイル: test_uts.py プロジェクト: mw1602/Eelbrain
def test_uts():
    "test plot.UTS plotting function"
    plot.configure_backend(False, False)
    ds = datasets.get_rand()
    p = plot.UTS('uts', ds=ds)
    p.close()
    p = plot.UTS('uts', 'A%B', ds=ds)
    p.close()
コード例 #15
0
ファイル: test_uts.py プロジェクト: mw1602/Eelbrain
def test_uts():
    "test plot.UTS plotting function"
    plot.configure_backend(False, False)
    ds = datasets.get_rand()
    p = plot.UTS('uts', ds=ds)
    p.close()
    p = plot.UTS('uts', 'A%B', ds=ds)
    p.close()
コード例 #16
0
def test_plot_array():
    "Test plot.Array"
    plot.configure_backend(False, False)
    ds = datasets.get_rand(utsnd=True)
    p = plot.Array('utsnd', 'A%B', ds=ds)
    p.close()
    p = plot.Array('utsnd', ds=ds)
    p.close()
コード例 #17
0
ファイル: test_topo.py プロジェクト: mw1602/Eelbrain
def test_plot_array():
    "Test plot.TopoArray"
    plot.configure_backend(False, False)
    ds = datasets.get_rand(utsnd=True)
    p = plot.TopoArray('utsnd', ds=ds)
    p.close()
    p = plot.TopoArray('utsnd', ds=ds, vmax=0.2, w=2)
    p.close()
    p = plot.TopoArray('utsnd', 'A%B', ds=ds, axw=4)
    p.close()
コード例 #18
0
def test_plot_array():
    "Test plot.TopoArray"
    plot.configure_backend(False, False)
    ds = datasets.get_rand(utsnd=True)
    p = plot.TopoArray('utsnd', ds=ds)
    p.close()
    p = plot.TopoArray('utsnd', ds=ds, vmax=0.2, w=2)
    p.close()
    p = plot.TopoArray('utsnd', 'A%B', ds=ds, axw=4)
    p.close()
コード例 #19
0
ファイル: test_uv.py プロジェクト: mw1602/Eelbrain
def test_boxplot():
    "Test plot.uv.boxplot"
    plot.configure_backend(False, False)
    ds = datasets.get_uv()
    plot.uv.Boxplot('fltvar', 'A%B', match='rm', ds=ds)
    plt.close('all')

    # many pairwise significances
    ds['fltvar'][ds.eval("A%B==('a1','b1')")] += 1
    ds['fltvar'][ds.eval("A%B==('a2','b2')")] -= 1
    ds['C'] = Factor('qw', rep=10, tile=4)
    plot.uv.Boxplot('fltvar', 'A%B%C', ds=ds)
コード例 #20
0
ファイル: test_topo.py プロジェクト: mw1602/Eelbrain
def test_plot_topomap():
    "Test plot.Topomap"
    plot.configure_backend(False, False)
    ds = datasets.get_rand(utsnd=True)
    topo = ds.eval('utsnd.summary(time=(0.075, 0.125))')

    p = plot.Topomap(topo, ds=ds)
    p.close()
    p = plot.Topomap(topo, ds=ds, vmax=0.2, w=2)
    p.close()
    p = plot.Topomap(topo, 'A%B', ds=ds, axw=2)
    p.close()
コード例 #21
0
def test_plot_topomap():
    "Test plot.Topomap"
    plot.configure_backend(False, False)
    ds = datasets.get_rand(utsnd=True)
    topo = ds.eval('utsnd.summary(time=(0.075, 0.125))')

    p = plot.Topomap(topo, ds=ds)
    p.close()
    p = plot.Topomap(topo, ds=ds, vmax=0.2, w=2)
    p.close()
    p = plot.Topomap(topo, 'A%B', ds=ds, axw=2)
    p.close()
コード例 #22
0
ファイル: test_uv.py プロジェクト: mw1602/Eelbrain
def test_boxplot():
    "Test plot.uv.boxplot"
    plot.configure_backend(False, False)
    ds = datasets.get_uv()
    plot.uv.Boxplot('fltvar', 'A%B', match='rm', ds=ds)
    plt.close('all')

    # many pairwise significances
    ds['fltvar'][ds.eval("A%B==('a1','b1')")] += 1
    ds['fltvar'][ds.eval("A%B==('a2','b2')")] -= 1
    ds['C'] = Factor('qw', rep=10, tile=4)
    plot.uv.Boxplot('fltvar', 'A%B%C', ds=ds)
コード例 #23
0
ファイル: test_uv.py プロジェクト: mw1602/Eelbrain
def test_scatterplot():
    "Test plot.uv.corrplot and lot.uv.regplot"
    plot.configure_backend(False, False)
    ds = datasets.get_rand()
    ds['cov'] = ds['Y'] + np.random.normal(0, 1, (60, ))

    plot.uv.Correlation('Y', 'cov', ds=ds)
    plot.uv.Correlation('Y', 'cov', 'A%B', ds=ds)

    plot.uv.Regression('Y', 'cov', ds=ds)
    plot.uv.Regression('Y', 'cov', 'A%B', ds=ds)

    plt.close('all')
コード例 #24
0
ファイル: test_uv.py プロジェクト: mw1602/Eelbrain
def test_scatterplot():
    "Test plot.uv.corrplot and lot.uv.regplot"
    plot.configure_backend(False, False)
    ds = datasets.get_rand()
    ds['cov'] = ds['Y'] + np.random.normal(0, 1, (60,))

    plot.uv.Correlation('Y', 'cov', ds=ds)
    plot.uv.Correlation('Y', 'cov', 'A%B', ds=ds)

    plot.uv.Regression('Y', 'cov', ds=ds)
    plot.uv.Regression('Y', 'cov', 'A%B', ds=ds)

    plt.close('all')
コード例 #25
0
ファイル: test_topo.py プロジェクト: mw1602/Eelbrain
def test_plot_butterfly():
    "Test plot.TopoButterfly"
    plot.configure_backend(False, False)
    ds = datasets.get_rand(utsnd=True)
    p = plot.TopoButterfly('utsnd', ds=ds)
    p.close()
    p = plot.TopoButterfly('utsnd', ds=ds, vmax=0.2, w=2)
    p.close()
    p = plot.TopoButterfly('utsnd', 'A%B', ds=ds, axw=2)
    p.close()
    p = plot.TopoButterfly('utsnd', mark=[1, 2], ds=ds)
    p.close()
    p = plot.TopoButterfly('utsnd', mark=['1', '2'], ds=ds)
    p.close()
コード例 #26
0
def test_plot_butterfly():
    "Test plot.TopoButterfly"
    plot.configure_backend(False, False)
    ds = datasets.get_rand(utsnd=True)
    p = plot.TopoButterfly('utsnd', ds=ds)
    p.close()
    p = plot.TopoButterfly('utsnd', ds=ds, vmax=0.2, w=2)
    p.close()
    p = plot.TopoButterfly('utsnd', 'A%B', ds=ds, axw=2)
    p.close()
    p = plot.TopoButterfly('utsnd', mark=[1, 2], ds=ds)
    p.close()
    p = plot.TopoButterfly('utsnd', mark=['1', '2'], ds=ds)
    p.close()
コード例 #27
0
def test_multi():
    "Test plot.SensorMaps"
    plot.configure_backend(False, False)
    ds = datasets.get_rand(utsnd=True)
    Y = ds['utsnd']
    p = plot.SensorMaps(Y)
    roi = [1, 2]
    p.set_selection(roi)
    roi2 = p.get_selection()

    test_range = np.arange(3)
    assert_array_equal(test_range[roi2], test_range[roi], "ROI changed after "
                       "set/get")

    p.close()
コード例 #28
0
def test_map2d():
    "Test plot.SensorMap2d"
    plot.configure_backend(False, False)
    ds = datasets.get_rand(utsnd=True)
    Y = ds['utsnd']
    p = plot.SensorMap2d(Y)

    # plot attributes
    p.set_label_color('g')
    p.set_label_text('idx')

    # connectivity
    p.show_connectivity()
    p.show_connectivity(None)

    # mark sensors
    p.mark_sensors([1, 2])
    p.mark_sensors([0])
    p.remove_markers()

    p.close()
コード例 #29
0
ファイル: test_uts.py プロジェクト: mw1602/Eelbrain
def test_stat():
    "test plot.UTSStat plotting function"
    plot.configure_backend(False, False)
    ds = datasets.get_rand()
    p = plot.UTSStat('uts', ds=ds)
    p.close()
    p = plot.UTSStat('uts', 'A%B', ds=ds)
    p.close()
    p = plot.UTSStat('uts', 'A', Xax='B', ds=ds)
    p.close()
    p = plot.UTSStat('uts', 'A%B', 'rm', sub="rm.isin(('R00', 'R01'))", ds=ds)
    p.close()

    # clusters
    sds = ds.sub("B == 'b0'")
    res = testnd.ttest_rel('uts', 'A', 'a1', 'a0', match='rm', ds=sds,
                           samples=0, pmin=0.05, mintime=0.02)
    p = plot.UTSStat('uts', 'A', clusters=res.clusters, ds=ds)
    p.close()
    res = testnd.ttest_rel('uts', 'A', 'a1', 'a0', match='rm', ds=sds,
                           samples=100, pmin=0.05, mintime=0.02)
    p = plot.UTSStat('uts', 'A', clusters=res.clusters, ds=ds)
    p.close()
コード例 #30
0
ファイル: test_uts.py プロジェクト: mw1602/Eelbrain
def test_stat():
    "test plot.UTSStat plotting function"
    plot.configure_backend(False, False)
    ds = datasets.get_rand()
    p = plot.UTSStat('uts', ds=ds)
    p.close()
    p = plot.UTSStat('uts', 'A%B', ds=ds)
    p.close()
    p = plot.UTSStat('uts', 'A', Xax='B', ds=ds)
    p.close()
    p = plot.UTSStat('uts', 'A%B', 'rm', sub="rm.isin(('R00', 'R01'))", ds=ds)
    p.close()

    # clusters
    sds = ds.sub("B == 'b0'")
    res = testnd.ttest_rel('uts',
                           'A',
                           'a1',
                           'a0',
                           match='rm',
                           ds=sds,
                           samples=0,
                           pmin=0.05,
                           mintime=0.02)
    p = plot.UTSStat('uts', 'A', clusters=res.clusters, ds=ds)
    p.close()
    res = testnd.ttest_rel('uts',
                           'A',
                           'a1',
                           'a0',
                           match='rm',
                           ds=sds,
                           samples=100,
                           pmin=0.05,
                           mintime=0.02)
    p = plot.UTSStat('uts', 'A', clusters=res.clusters, ds=ds)
    p.close()
コード例 #31
0
ファイル: test_testnd.py プロジェクト: mw1602/Eelbrain
def test_anova():
    "Test testnd.anova()"
    plot.configure_backend(False, False)
    ds = datasets.get_rand(True)

    testnd.anova('utsnd', 'A*B', ds=ds)
    for samples in (0, 2):
        logger.info("TEST:  samples=%r" % samples)
        testnd.anova('utsnd', 'A*B', ds=ds, samples=samples)
        testnd.anova('utsnd', 'A*B', ds=ds, samples=samples, pmin=0.05)
        testnd.anova('utsnd', 'A*B', ds=ds, samples=samples, tfce=True)

    res = testnd.anova('utsnd', 'A*B*rm', ds=ds, samples=0, pmin=0.05)
    repr(res)
    p = plot.Array(res)
    p.close()

    res = testnd.anova('utsnd', 'A*B*rm', ds=ds, samples=2, pmin=0.05)
    repr(res)
    p = plot.Array(res)
    p.close()

    # persistence
    string = pickle.dumps(res, protocol=pickle.HIGHEST_PROTOCOL)
    res_ = pickle.loads(string)
    assert_equal(repr(res_), repr(res))

    # threshold-free
    res = testnd.anova('utsnd', 'A*B*rm', ds=ds, samples=10)
    repr(res)
    assert_in('A clusters', res.clusters.info)
    assert_in('B clusters', res.clusters.info)
    assert_in('A x B clusters', res.clusters.info)

    # no clusters
    res = testnd.anova('uts',
                       'B',
                       sub="A=='a1'",
                       ds=ds,
                       samples=5,
                       pmin=0.05,
                       mintime=0.02)
    repr(res)
    assert_in('v', res.clusters)
    assert_in('p', res.clusters)

    # all effects with clusters
    res = testnd.anova('uts',
                       'A*B*rm',
                       ds=ds,
                       samples=5,
                       pmin=0.05,
                       tstart=0.1,
                       mintime=0.02)
    assert_equal(set(res.clusters['effect'].cells), set(res.effects))

    # some effects with clusters, some without
    res = testnd.anova('uts',
                       'A*B*rm',
                       ds=ds,
                       samples=5,
                       pmin=0.05,
                       tstart=0.37,
                       mintime=0.02)
    string = pickle.dumps(res, pickle.HIGHEST_PROTOCOL)
    res_ = pickle.loads(string)
    assert_dataobj_equal(res.clusters, res_.clusters)

    # test multi-effect results (with persistence)
    # UTS
    res = testnd.anova('uts', 'A*B*rm', ds=ds, samples=5)
    repr(res)
    string = pickle.dumps(res, pickle.HIGHEST_PROTOCOL)
    res = pickle.loads(string)
    tfce_clusters = res._clusters(pmin=0.05)
    peaks = res.find_peaks()
    assert_equal(tfce_clusters.eval("p.min()"), peaks.eval("p.min()"))
    unmasked = res.f[0]
    masked = res.masked_parameter_map(effect=0, pmin=0.05)
    assert_array_equal(masked.x <= unmasked.x, True)
コード例 #32
0
ファイル: test_testnd.py プロジェクト: awjamison/Eelbrain
def test_anova():
    "Test testnd.anova()"
    plot.configure_backend(False, False)
    ds = datasets.get_uts(True)

    testnd.anova('utsnd', 'A*B', ds=ds)
    for samples in (0, 2):
        logger.info("TEST:  samples=%r" % samples)
        testnd.anova('utsnd', 'A*B', ds=ds, samples=samples)
        testnd.anova('utsnd', 'A*B', ds=ds, samples=samples, pmin=0.05)
        testnd.anova('utsnd', 'A*B', ds=ds, samples=samples, tfce=True)

    res = testnd.anova('utsnd', 'A*B*rm', ds=ds, samples=0, pmin=0.05)
    repr(res)
    p = plot.Array(res)
    p.close()

    res = testnd.anova('utsnd', 'A*B*rm', ds=ds, samples=2, pmin=0.05)
    repr(res)
    p = plot.Array(res)
    p.close()

    # persistence
    string = pickle.dumps(res, protocol=pickle.HIGHEST_PROTOCOL)
    res_ = pickle.loads(string)
    assert_equal(repr(res_), repr(res))

    # threshold-free
    res = testnd.anova('utsnd', 'A*B*rm', ds=ds, samples=10)
    repr(res)
    assert_in('A clusters', res.clusters.info)
    assert_in('B clusters', res.clusters.info)
    assert_in('A x B clusters', res.clusters.info)

    # no clusters
    res = testnd.anova('uts', 'B', sub="A=='a1'", ds=ds, samples=5, pmin=0.05,
                       mintime=0.02)
    repr(res)
    assert_in('v', res.clusters)
    assert_in('p', res.clusters)

    # all effects with clusters
    res = testnd.anova('uts', 'A*B*rm', ds=ds, samples=5, pmin=0.05,
                       tstart=0.1, mintime=0.02)
    assert_equal(set(res.clusters['effect'].cells), set(res.effects))

    # some effects with clusters, some without
    res = testnd.anova('uts', 'A*B*rm', ds=ds, samples=5, pmin=0.05,
                       tstart=0.37, mintime=0.02)
    string = pickle.dumps(res, pickle.HIGHEST_PROTOCOL)
    res_ = pickle.loads(string)
    assert_dataobj_equal(res.clusters, res_.clusters)

    # test multi-effect results (with persistence)
    # UTS
    res = testnd.anova('uts', 'A*B*rm', ds=ds, samples=5)
    repr(res)
    string = pickle.dumps(res, pickle.HIGHEST_PROTOCOL)
    res = pickle.loads(string)
    tfce_clusters = res.find_clusters(pmin=0.05)
    peaks = res.find_peaks()
    assert_equal(tfce_clusters.eval("p.min()"), peaks.eval("p.min()"))
    unmasked = res.f[0]
    masked = res.masked_parameter_map(effect=0, pmin=0.05)
    assert_array_equal(masked.x <= unmasked.x, True)