Example #1
0
def test_difference():
    "Test table.difference"
    ds = datasets.get_uv()
    print table.difference("fltvar", "A", "a1", "a2", "rm", ds=ds)
    print table.difference("fltvar", "A", "a1", "a2", "rm", by="B", ds=ds)
    print table.difference("fltvar", "A%B", ("a1", "b1"), ("a2", "b2"), "rm", ds=ds)

    # create bigger dataset
    ds["C", :] = "c1"
    ds2 = datasets.get_uv()
    ds2["C", :] = "c2"
    ds = combine((ds, ds2))
    print table.difference("fltvar", "A", "a1", "a2", "rm", "B%C", ds=ds)
    print table.difference("fltvar", "A%B", ("a1", "b1"), ("a2", "b2"), "rm", "C", ds=ds)
Example #2
0
def test_dataset_combining():
    "Test Dataset combination methods"
    ds = datasets.get_uv()
    del ds['fltvar'], ds['intvar'], ds['A']

    ds2 = datasets.get_uv()
    del ds2['fltvar'], ds2['intvar']
    ds.update(ds2)
    assert_array_equal(ds['A'], ds2['A'])

    ds2 = datasets.get_uv()
    del ds2['fltvar'], ds2['intvar']
    ds2['B'][5] = 'something_else'
    del ds['A']
    assert_raises(ValueError, ds.update, ds2)
Example #3
0
def test_dataset_combining():
    "Test Dataset combination methods"
    ds = datasets.get_uv()
    del ds['fltvar'], ds['intvar'], ds['A']

    ds2 = datasets.get_uv()
    del ds2['fltvar'], ds2['intvar']
    ds.update(ds2)
    assert_array_equal(ds['A'], ds2['A'])

    ds2 = datasets.get_uv()
    del ds2['fltvar'], ds2['intvar']
    ds2['B'][5] = 'something_else'
    del ds['A']
    assert_raises(ValueError, ds.update, ds2)
Example #4
0
def test_barplot():
    "Test plot.Barplot"
    ds = datasets.get_uv()

    # average
    plot.Barplot('fltvar', ds=ds)
    plot.Barplot('fltvar', match='rm', ds=ds)

    # one category
    p = plot.Barplot('fltvar + 2', 'A', ds=ds)
    assert p.get_ylim()[0] == 0
    p = plot.Barplot('fltvar - 2', 'A', 'rm', ds=ds)
    assert p.get_ylim()[1] == 0

    # multiple categories
    plot.Barplot('fltvar', 'A%B', match='rm', ds=ds)
    plot.Barplot('fltvar', 'A%B', match='rm', ds=ds, pool_error=False)
    # test against 0
    plot.Barplot('fltvar', 'A%B', match='rm', test=0, ds=ds)

    # cells
    plot.Barplot('fltvar', 'A%B', cells=(('a2', 'b2'), ('a1', 'b1')), ds=ds)
    plot.Barplot('fltvar',
                 'A%B',
                 match='rm',
                 cells=(('a2', 'b2'), ('a1', 'b1')),
                 ds=ds)

    # Fixed top
    p = plot.Barplot('fltvar', 'A%B', ds=ds, top=2, test_markers=False)
    ax = p._axes[0]
    assert ax.get_ylim()[1] == 2
Example #5
0
def test_difference():
    "Test table.difference"
    ds = datasets.get_uv()
    print table.difference('fltvar', 'A', 'a1', 'a2', 'rm', ds=ds)
    print table.difference('fltvar', 'A', 'a1', 'a2', 'rm', by='B', ds=ds)
    print table.difference('fltvar', 'A%B', ('a1', 'b1'), ('a2', 'b2'), 'rm',
                           ds=ds)

    # create bigger dataset
    ds['C', :] = 'c1'
    ds2 = datasets.get_uv()
    ds2['C', :] = 'c2'
    ds = combine((ds, ds2))
    print table.difference('fltvar', 'A', 'a1', 'a2', 'rm', 'B%C', ds=ds)
    print table.difference('fltvar', 'A%B', ('a1', 'b1'), ('a2', 'b2'), 'rm',
                           'C', ds=ds)
Example #6
0
def test_barplot():
    "Test plot.Barplot"
    ds = datasets.get_uv()

    # one category
    plot.Barplot('fltvar', ds=ds, test=False, show=False)
    plot.Barplot('fltvar', ds=ds, show=False)
    plot.Barplot('fltvar', match='rm', ds=ds, show=False)

    # multiple categories
    plot.Barplot('fltvar', 'A%B', match='rm', ds=ds, show=False)
    plot.Barplot('fltvar', 'A%B', match='rm', ds=ds, pool_error=False,
                 show=False)
    plot.Barplot('fltvar', 'A%B', match='rm', test=0, ds=ds, show=False)

    # cells
    plot.Barplot('fltvar', 'A%B', cells=(('a2', 'b2'), ('a1', 'b1')), ds=ds, show=False)
    plot.Barplot('fltvar', 'A%B', match='rm', cells=(('a2', 'b2'), ('a1', 'b1')),
                 ds=ds, show=False)

    # Fixed top
    p = plot.Barplot('fltvar', 'A%B', ds=ds, top=2, test_markers=False,
                     show=False)
    ax = p._axes[0]
    eq_(ax.get_ylim()[1], 2)
Example #7
0
def test_regression():
    "Test plot.Regression"
    ds = datasets.get_uv()

    plot.Regression('fltvar', 'fltvar2', ds=ds)
    plot.Regression('fltvar', 'fltvar2', 'A', ds=ds)
    plot.Regression('fltvar', 'fltvar2', 'A%B', ds=ds)
Example #8
0
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')
Example #9
0
def test_generate_colors():
    "Test functions for assigning colors to cells"
    ds = datasets.get_uv()
    cells_1 = ('A', 'B')
    cells_2 = ('a', 'b', 'c')

    colors = plot.colors_for_oneway(cells_1)
    assert len(colors) == len(cells_1)

    colors = plot.colors_for_twoway(cells_1, cells_2)
    assert len(colors) == len(cells_1) * len(cells_2)

    colors = plot.colors_for_twoway(cells_2, cells_1)
    assert len(colors) == len(cells_1) * len(cells_2)

    # colors_for_categorial()
    f = ds['A']
    colors = plot.colors_for_categorial(f)
    for cell in f.cells:
        assert cell in colors

    i = ds.eval("A%B")
    colors = plot.colors_for_categorial(i)
    for cell in i.cells:
        assert cell in colors

    i = ds.eval("A%B%rm")
    colors = plot.colors_for_categorial(i)
    for cell in i.cells:
        assert cell in colors

    with pytest.raises(TypeError):
        plot.colors_for_categorial("A%B")
Example #10
0
def test_cast_to_ndvar():
    "Test table.cast_to_ndvar()"
    long_ds = datasets.get_uv()
    long_ds['scalar'] = long_ds['A'] == 'a2'
    long_ds['time'] = long_ds.eval('A%B').as_var({
        ('a1', 'b1'): 0.,
        ('a1', 'b2'): 0.1,
        ('a2', 'b1'): 0.2,
        ('a2', 'b2'): 0.3,
    })

    # categorial
    ds = table.cast_to_ndvar('fltvar', 'A', 'B%rm', ds=long_ds, name='new')
    assert ds.n_cases == long_ds.n_cases / 2
    assert ds['new'].A == Categorial('A', ('a1', 'a2'))

    # scalar
    ds2 = table.cast_to_ndvar('fltvar', 'scalar', 'B%rm', ds=long_ds, dim='newdim', name='new')
    assert ds2.n_cases == long_ds.n_cases / 2
    assert ds2['new'].newdim == Scalar('newdim', [False, True])
    assert_array_equal(ds['new'].x, ds2['new'].x)

    # time
    ds = table.cast_to_ndvar('fltvar', 'time', 'rm', ds=long_ds, dim='uts', name='y')
    assert ds.n_cases == long_ds.n_cases / 4
    assert ds['y'].time == UTS(0, 0.1, 4)
Example #11
0
def test_report():
    "Test fmtxt.Report class"
    tempdir = tempfile.mkdtemp()
    report = fmtxt.Report("Test Report")

    section = report.add_section('unicode: \xe2 abc')
    ds = datasets.get_uv()
    p = plot.Barplot('fltvar', 'A', sub="B=='b1'", ds=ds, show=False)
    image = p.image()
    section.add_figure("test", image)

    report.sign()

    # report output
    print(report)
    dst = os.path.join(tempdir, 'report.html')
    report.save_html(dst)

    # test meta attribute reading
    eq_(read_meta(dst), {})
    report.save_html(dst, meta={'samples': 100, 'text': 'blah'})
    eq_(read_meta(dst), {'samples': '100', 'text': 'blah'})

    # clean up
    shutil.rmtree(tempdir)
Example #12
0
def test_align():
    "Testing align() and align1() functions"
    ds = datasets.get_uv()
    ds.index()
    idx4 = np.arange(0, ds.n_cases, 4)
    idx4i = idx4[::-1]
    ds2 = ds.sub(np.arange(0, ds.n_cases, 2))

    # align1: align Dataset to index
    dsa = align1(ds2, idx4)
    assert_array_equal(dsa['index'], idx4, "align1() failure")
    dsa = align1(ds2, idx4i)
    assert_array_equal(dsa['index'], idx4i, "align1() failure")
    # d_idx as Var
    dsa = align1(ds2[::2], idx4, idx4i)
    assert_array_equal(dsa['index'], idx4i, "align1() failure")
    assert_raises(ValueError, align1, ds2, idx4, idx4i)

    # Factor index
    assert_raises(ValueError, align1, ds, ds['rm', ::-1], 'rm')
    fds = ds[:20]
    dsa = align1(fds, fds['rm', ::-1], 'rm')
    assert_array_equal(dsa['index'], np.arange(19, -1, -1), "align1 Factor")

    # align two datasets
    dsa1, dsa2 = align(ds, ds2)
    assert_array_equal(dsa1['index'], dsa2['index'], "align() failure")
    dsa1, dsa2 = align(ds, ds2[::-1])
    assert_array_equal(dsa1['index'], dsa2['index'], "align() failure")
Example #13
0
def test_interaction():
    "Test Interaction"
    ds = datasets.get_uv()
    A = ds['A']
    B = ds['B']
    i = A % B
    # eq for sequence
    assert_array_equal(i == A % B, True)
    assert_array_equal(i == B % A, False)
    assert_array_equal(i == A, False)
    assert_array_equal(i == ds['fltvar'], False)
    assert_array_equal(ds.eval("A%B") == Factor(ds['A']) % B, True)
    # eq for element
    for a, b in product(A.cells, B.cells):
        assert_array_equal(i == (a, b), np.logical_and(A == a, B == b))

    # Interaction.as_factor()
    a = Factor('aabb')
    i = a % Factor('cdcd')
    assert_dataobj_equal(i.as_factor(), Factor(['a c', 'a d', 'b c', 'b d']))
    i = a % Factor(['c', '', 'c', ''])
    assert_dataobj_equal(i.as_factor(), Factor(['a c', 'a', 'b c', 'b']))

    # pickling
    ip = pickle.loads(pickle.dumps(i))
    assert_dataobj_equal(ip, i)
Example #14
0
def test_barplot():
    "Test plot.Barplot"
    ds = datasets.get_uv()

    # one category
    plot.Barplot('fltvar', ds=ds, test=False, show=False)
    plot.Barplot('fltvar', ds=ds, show=False)
    plot.Barplot('fltvar', match='rm', ds=ds, show=False)

    # multiple categories
    plot.Barplot('fltvar', 'A%B', match='rm', ds=ds, show=False)
    plot.Barplot('fltvar',
                 'A%B',
                 match='rm',
                 ds=ds,
                 pool_error=False,
                 show=False)
    plot.Barplot('fltvar', 'A%B', match='rm', test=0, ds=ds, show=False)

    # Fixed top
    p = plot.Barplot('fltvar',
                     'A%B',
                     ds=ds,
                     top=2,
                     test_markers=False,
                     show=False)
    ax = p._axes[0]
    eq_(ax.get_ylim()[1], 2)
Example #15
0
def test_tsv_io():
    """Test tsv I/O"""
    names = ['A', 'B', 'rm', 'intvar', 'fltvar', 'fltvar2', 'index']

    # get Dataset
    ds = datasets.get_uv()
    ds['fltvar'][5:10] = np.nan
    ds[:4, 'rm'] = ''

    # save and load
    tempdir = tempfile.mkdtemp()
    try:
        dst = os.path.join(tempdir, 'ds.txt')

        ds.save_txt(dst)
        ds1 = load.tsv(dst)
        ds2 = load.tsv(dst, skiprows=1, names=names)

        assert_dataset_equal(ds1, ds, "TSV write/read test failed", 10)
        assert_dataset_equal(ds2, ds, "TSV write/read test failed", 10)

        # guess data types with missing
        intvar2 = ds['intvar'].as_factor()
        intvar2[10:] = ''
        ds_intvar = Dataset((intvar2, ))
        ds_intvar.save_txt(dst)
        ds_intvar1 = load.tsv(dst, empty='nan')
        assert_dataobj_equal(ds_intvar1['intvar', :10], ds['intvar', :10])
        assert_array_equal(ds_intvar1['intvar', 10:], np.nan)

    finally:
        shutil.rmtree(tempdir)
Example #16
0
def test_boxplot():
    "Test plot.Boxplot"
    ds = datasets.get_uv()
    plot.Boxplot('fltvar', 'A%B', match='rm', ds=ds)

    # one category
    plot.Boxplot('fltvar', ds=ds, test=False)
    plot.Boxplot('fltvar', ds=ds)
    plot.Boxplot('fltvar', match='rm', ds=ds)

    # cells
    plot.Boxplot('fltvar', 'A%B', cells=(('a2', 'b2'), ('a1', 'b1')), ds=ds)
    plot.Boxplot('fltvar', 'A%B', match='rm', cells=(('a2', 'b2'), ('a1', 'b1')), ds=ds)

    # 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', repeat=10, tile=4)
    plot.Boxplot('fltvar', 'A%B%C', ds=ds)

    # long labels
    ds['A'].update_labels({'a1': 'a very long label', 'a2': 'another very long label'})
    p = plot.Barplot('fltvar', 'A%B', ds=ds)
    labels = p._ax.get_xticklabels()
    bbs = [l.get_window_extent() for l in labels]
    for i in range(len(bbs) - 1):
        assert bbs[i].x1 < bbs[i + 1].x0
Example #17
0
def test_align():
    "Testing align() and align1() functions"
    ds = datasets.get_uv()
    ds.index()
    idx4 = np.arange(0, ds.n_cases, 4)
    idx4i = idx4[::-1]
    ds2 = ds.sub(np.arange(0, ds.n_cases, 2))

    # align1: align Dataset to index
    dsa = align1(ds2, idx4)
    assert_array_equal(dsa['index'], idx4, "align1() failure")
    dsa = align1(ds2, idx4i)
    assert_array_equal(dsa['index'], idx4i, "align1() failure")
    # d_idx as Var
    dsa = align1(ds2[::2], idx4, idx4i)
    assert_array_equal(dsa['index'], idx4i, "align1() failure")
    assert_raises(ValueError, align1, ds2, idx4, idx4i)

    # Factor index
    assert_raises(ValueError, align1, ds, ds['rm', ::-1], 'rm')
    fds = ds[:20]
    dsa = align1(fds, fds['rm', ::-1], 'rm')
    assert_array_equal(dsa['index'], np.arange(19, -1, -1), "align1 Factor")

    # align two datasets
    dsa1, dsa2 = align(ds, ds2)
    assert_array_equal(dsa1['index'], dsa2['index'], "align() failure")
    dsa1, dsa2 = align(ds, ds2[::-1])
    assert_array_equal(dsa1['index'], dsa2['index'], "align() failure")
Example #18
0
def test_correlations():
    "Test test.correlations()"
    ds = datasets.get_uv()

    res = test.correlations('fltvar', 'fltvar2', ds=ds)
    print(res)
    eq_(str(res[2][0]).strip(), '.398')
    res = test.correlations('fltvar', 'fltvar2', ds=ds, asds=True)
    assert_almost_equal(res[0, 'r'], .398, 3)

    res = test.correlations('fltvar', 'fltvar2', 'A', ds=ds)
    print(res)
    eq_(str(res[2][0]).strip(), 'a1')
    eq_(str(res[2][1]).strip(), '-0.149')
    eq_(str(res[3][1]).strip(), '.740')
    res = test.correlations('fltvar', 'fltvar2', 'A', ds=ds, asds=True)
    eq_(res[0, 'A'], 'a1')
    assert_almost_equal(res[0, 'r'], -0.149, 3)
    assert_almost_equal(res[1, 'r'], .740, 3)

    res = test.correlations('fltvar', 'fltvar2', 'A%B', ds=ds)
    print(res)
    eq_(str(res[2][2]).strip(), '-0.276')
    res = test.correlations('fltvar', 'fltvar2', 'A%B', ds=ds, asds=True)
    assert_almost_equal(res[0, 'r'], -0.276, 3)

    res = test.correlations('fltvar', ('fltvar2', 'intvar'), 'A%B', ds=ds)
    print(res)
    eq_(str(res[2][1]).strip(), 'a1')
    eq_(str(res[2][2]).strip(), 'b1')
    eq_(str(res[2][3]).strip(), '-0.276')
    res = test.correlations('fltvar', ('fltvar2', 'intvar'), 'A%B', ds=ds, asds=True)
    assert_almost_equal(res[0, 'r'], -0.276, 3)
Example #19
0
def test_correlation():
    "Test plot.Correlation()"
    ds = datasets.get_uv()

    plot.Correlation('fltvar', 'fltvar2', ds=ds)
    plot.Correlation('fltvar', 'fltvar2', 'A', ds=ds)
    plot.Correlation('fltvar', 'fltvar2', 'A%B', ds=ds)
Example #20
0
def test_boxplot():
    "Test plot.Boxplot"
    ds = datasets.get_uv()
    plot.Boxplot('fltvar', 'A%B', match='rm', ds=ds, show=False)

    # one category
    plot.Boxplot('fltvar', ds=ds, test=False, show=False)
    plot.Boxplot('fltvar', ds=ds, show=False)
    plot.Boxplot('fltvar', match='rm', ds=ds, show=False)

    # 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', repeat=10, tile=4)
    plot.Boxplot('fltvar', 'A%B%C', ds=ds, show=False)

    # long labels
    ds['A'].relabel({
        'a1': 'a very long label',
        'a2': 'another very long label'
    })
    p = plot.Barplot('fltvar', 'A%B', ds=ds, show=False)
    labels = p._ax.get_xticklabels()
    bbs = [l.get_window_extent() for l in labels]
    for i in xrange(len(bbs) - 1):
        ok_(bbs[i].x1 < bbs[i + 1].x0)
Example #21
0
def test_difference():
    "Test table.difference"
    ds = datasets.get_uv()
    # add a variables that should stay in the dataset
    labels = {c: c[-1] for c in ds['rm'].cells}
    ds['rmf'] = Factor(ds['rm'], labels=labels)

    dds = table.difference('fltvar', 'A', 'a1', 'a2', 'rm', ds=ds)
    assert repr(dds) == "<Dataset n_cases=20 {'rm':F, 'fltvar':V, 'rmf':F}>"
    assert_array_equal(dds['rmf'], Factor(dds['rm'], labels=labels))
    dds = table.difference('fltvar', 'A', 'a1', 'a2', 'rm', by='B', ds=ds)
    assert repr(dds) == "<Dataset n_cases=40 {'rm':F, 'fltvar':V, 'B':F, 'rmf':F}>"
    # difference of the difference
    ddds = table.difference('fltvar', 'B', 'b1', 'b2', 'rm', ds=dds)
    assert repr(ddds) == "<Dataset n_cases=20 {'rm':F, 'fltvar':V, 'rmf':F}>"
    dds = table.difference('fltvar', 'A%B', ('a1', 'b1'), ('a2', 'b2'), 'rm', ds=ds)
    assert repr(dds) == "<Dataset n_cases=20 {'rm':F, 'fltvar':V, 'rmf':F}>"

    # create bigger dataset
    ds2 = ds.copy()
    ds['C', :] = 'c1'
    ds2['C', :] = 'c2'
    ds = combine((ds, ds2))
    dds = table.difference('fltvar', 'A', 'a1', 'a2', 'rm', by='B%C', ds=ds)
    assert repr(dds) == "<Dataset n_cases=80 {'rm':F, 'fltvar':V, 'B':F, 'C':F, 'rmf':F}>"
    dds = table.difference('fltvar', 'A%B', ('a1', 'b1'), ('a2', 'b2'), 'rm', by='C', ds=ds)
    assert repr(dds) == "<Dataset n_cases=40 {'rm':F, 'fltvar':V, 'C':F, 'rmf':F}>"
Example #22
0
def test_cast_to_ndvar():
    "Test table.cast_to_ndvar()"
    long_ds = datasets.get_uv()
    long_ds['scalar'] = long_ds['A'] == 'a2'
    long_ds['time'] = long_ds.eval('A%B').as_var({
        ('a1', 'b1'): 0.,
        ('a1', 'b2'): 0.1,
        ('a2', 'b1'): 0.2,
        ('a2', 'b2'): 0.3,
    })

    # categorial
    ds = table.cast_to_ndvar('fltvar', 'A', 'B%rm', ds=long_ds, name='new')
    assert ds.n_cases == long_ds.n_cases / 2
    assert ds['new'].A == Categorial('A', ('a1', 'a2'))

    # scalar
    ds2 = table.cast_to_ndvar('fltvar', 'scalar', 'B%rm', ds=long_ds, dim='newdim', name='new')
    assert ds2.n_cases == long_ds.n_cases / 2
    assert ds2['new'].newdim == Scalar('newdim', [False, True])
    assert_array_equal(ds['new'].x, ds2['new'].x)

    # time
    ds = table.cast_to_ndvar('fltvar', 'time', 'rm', ds=long_ds, dim='uts', name='y')
    assert ds.n_cases == long_ds.n_cases / 4
    assert ds['y'].time == UTS(0, 0.1, 4)
Example #23
0
def test_correlations():
    "Test test.correlations()"
    ds = datasets.get_uv()

    res = test.correlations("fltvar", "fltvar2", ds=ds)
    print(res)
    eq_(str(res[2][0]).strip(), ".398")
    res = test.correlations("fltvar", "fltvar2", ds=ds, asds=True)
    assert_almost_equal(res[0, "r"], 0.398, 3)

    res = test.correlations("fltvar", "fltvar2", "A", ds=ds)
    print(res)
    eq_(str(res[2][0]).strip(), "a1")
    eq_(str(res[2][1]).strip(), "-0.149")
    eq_(str(res[3][1]).strip(), ".740")
    res = test.correlations("fltvar", "fltvar2", "A", ds=ds, asds=True)
    eq_(res[0, "A"], "a1")
    assert_almost_equal(res[0, "r"], -0.149, 3)
    assert_almost_equal(res[1, "r"], 0.740, 3)

    res = test.correlations("fltvar", "fltvar2", "A%B", ds=ds)
    print(res)
    eq_(str(res[2][2]).strip(), "-0.276")
    res = test.correlations("fltvar", "fltvar2", "A%B", ds=ds, asds=True)
    assert_almost_equal(res[0, "r"], -0.276, 3)

    res = test.correlations("fltvar", ("fltvar2", "intvar"), "A%B", ds=ds)
    print(res)
    eq_(str(res[2][1]).strip(), "a1")
    eq_(str(res[2][2]).strip(), "b1")
    eq_(str(res[2][3]).strip(), "-0.276")
    res = test.correlations("fltvar", ("fltvar2", "intvar"), "A%B", ds=ds, asds=True)
    assert_almost_equal(res[0, "r"], -0.276, 3)
Example #24
0
def test_correlation():
    "Test plot.Correlation()"
    ds = datasets.get_uv()

    plot.Correlation('fltvar', 'fltvar2', ds=ds, show=False)
    plot.Correlation('fltvar', 'fltvar2', 'A', ds=ds, show=False)
    plot.Correlation('fltvar', 'fltvar2', 'A%B', ds=ds, show=False)
Example #25
0
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')
Example #26
0
def test_report():
    "Test fmtxt.Report class"
    tempdir = tempfile.mkdtemp()
    report = fmtxt.Report("Test Report")

    section = report.add_section(u'unicode: \xe2 abc')
    ds = datasets.get_uv()
    p = plot.Barplot('fltvar', 'A', sub="B=='b1'", ds=ds, show=False)
    image = p.image()
    section.add_figure("test", image)

    report.sign()

    # report output
    print(report)
    dst = os.path.join(tempdir, 'report.html')
    report.save_html(dst)

    # test meta attribute reading
    eq_(read_meta(dst), {})
    report.save_html(dst, meta={'samples': 100, 'text': 'blah'})
    eq_(read_meta(dst), {'samples': '100', 'text': 'blah'})

    # clean up
    shutil.rmtree(tempdir)
Example #27
0
def test_regression():
    "Test plot.Regression"
    ds = datasets.get_uv()

    plot.Regression('fltvar', 'fltvar2', ds=ds, show=False)
    plot.Regression('fltvar', 'fltvar2', 'A', ds=ds, show=False)
    plot.Regression('fltvar', 'fltvar2', 'A%B', ds=ds, show=False)
Example #28
0
def test_anova():
    "Test ANOVA"
    from rpy2.robjects import r
    r_require('car')

    ds = datasets.get_uv()
    ds.to_r('ds')

    # fixed effects
    aov = test.anova('fltvar', 'A*B', ds=ds)
    print aov
    fs = run_on_lm_fitter('fltvar', 'A*B', ds)
    r_res = r("Anova(lm(fltvar ~ A * B, ds, type=2))")
    assert_f_tests_equal(aov.f_tests, r_res, fs, 'Anova')

    # random effects
    aov = test.anova('fltvar', 'A*B*rm', ds=ds)
    print aov
    fs = run_on_lm_fitter('fltvar', 'A*B*rm', ds)
    r('test.aov <- aov(fltvar ~ A * B + Error(rm / (A * B)), ds)')
    print r('test.summary <- summary(test.aov)')
    r_res = r['test.summary'][1:]
    assert_f_tests_equal(aov.f_tests, r_res, fs, 'rmaov')

    # not fully specified model with random effects
    assert_raises(NotImplementedError, test.anova, 'fltvar', 'A*rm', ds=ds)

    # empty cells
    dss = ds.sub("A%B != ('a2', 'b2')")
    assert_raises(NotImplementedError, test.anova, 'fltvar', 'A*B', ds=dss)
    assert_raises(NotImplementedError, run_on_lm_fitter, 'fltvar', 'A*B', ds=dss)
    dss = ds.sub("A%B != ('a1', 'b1')")
    assert_raises(NotImplementedError, test.anova, 'fltvar', 'A*B', ds=dss)
    assert_raises(NotImplementedError, run_on_lm_fitter, 'fltvar', 'A*B', ds=dss)
Example #29
0
def test_generate_colors():
    "Test functions for assigning colors to cells"
    ds = datasets.get_uv()
    cells_1 = ('A', 'B')
    cells_2 = ('a', 'b', 'c')

    colors = plot.colors_for_oneway(cells_1)
    eq_(len(colors), len(cells_1))

    colors = plot.colors_for_twoway(cells_1, cells_2)
    eq_(len(colors), len(cells_1) * len(cells_2))

    colors = plot.colors_for_twoway(cells_2, cells_1)
    eq_(len(colors), len(cells_1) * len(cells_2))

    # colors_for_categorial()
    f = ds['A']
    colors = plot.colors_for_categorial(f)
    for cell in f.cells:
        assert_in(cell, colors)

    i = ds.eval("A%B")
    colors = plot.colors_for_categorial(i)
    for cell in i.cells:
        assert_in(cell, colors)

    i = ds.eval("A%B%rm")
    colors = plot.colors_for_categorial(i)
    for cell in i.cells:
        assert_in(cell, colors)

    assert_raises(TypeError, plot.colors_for_categorial, "A%B")
Example #30
0
def test_difference():
    "Test tabe.difference"
    ds = datasets.get_uv()
    print table.difference('fltvar', 'A', 'a1', 'a2', 'rm', ds=ds)
    print table.difference('fltvar', 'A', 'a1', 'a2', 'rm', by='B', ds=ds)
    print table.difference('fltvar', 'A%B', ('a1', 'b1'), ('a2', 'b2'), 'rm',
                           ds=ds)

    # create bigger dataset
    ds['C', :] = 'c1'
    ds2 = datasets.get_uv()
    ds2['C', :] = 'c2'
    ds = combine((ds, ds2))
    print table.difference('fltvar', 'A', 'a1', 'a2', 'rm', 'B%C', ds=ds)
    print table.difference('fltvar', 'A%B', ('a1', 'b1'), ('a2', 'b2'), 'rm',
                           'C', ds=ds)
Example #31
0
def test_interaction():
    "Test Interaction"
    ds = datasets.get_uv()
    A = ds['A']
    B = ds['B']
    i = A % B
    # eq for sequence
    assert_array_equal(i == A % B, True)
    assert_array_equal(i == B % A, False)
    assert_array_equal(i == A, False)
    assert_array_equal(i == ds['fltvar'], False)
    assert_array_equal(ds.eval("A%B") == Factor(ds['A']) % B, True)
    # eq for element
    for a, b in product(A.cells, B.cells):
        assert_array_equal(i == (a, b), np.logical_and(A == a, B == b))

    # Interaction.as_factor()
    a = Factor('aabb')
    i = a % Factor('cdcd')
    assert_dataobj_equal(i.as_factor(), Factor(['a c', 'a d', 'b c', 'b d']))
    i = a % Factor(['c', '', 'c', ''])
    assert_dataobj_equal(i.as_factor(), Factor(['a c', 'a', 'b c', 'b']))

    # pickling
    ip = pickle.loads(pickle.dumps(i))
    assert_dataobj_equal(ip, i)
Example #32
0
def test_tsv_io():
    """Test tsv I/O"""
    names = ['A', 'B', 'rm', 'intvar', 'fltvar', 'fltvar2', 'index']

    # get Dataset
    ds = datasets.get_uv()
    ds['fltvar'][5:10] = np.nan
    ds[:4, 'rm'] = ''

    # save and load
    tempdir = tempfile.mkdtemp()
    try:
        dst = os.path.join(tempdir, 'ds.txt')

        ds.save_txt(dst)
        ds1 = load.tsv(dst)
        ds2 = load.tsv(dst, skiprows=1, names=names)

        assert_dataset_equal(ds1, ds, "TSV write/read test failed", 10)
        assert_dataset_equal(ds2, ds, "TSV write/read test failed", 10)

        # guess data types with missing
        intvar2 = ds['intvar'].as_factor()
        intvar2[10:] = ''
        ds_intvar = Dataset((intvar2,))
        ds_intvar.save_txt(dst)
        ds_intvar1 = load.tsv(dst, empty='nan')
        assert_dataobj_equal(ds_intvar1['intvar', :10], ds['intvar', :10])
        assert_array_equal(ds_intvar1['intvar', 10:], np.nan)

    finally:
        shutil.rmtree(tempdir)
Example #33
0
def test_generate_colors():
    "Test functions for assigning colors to cells"
    ds = datasets.get_uv()
    cells_1 = ('A', 'B')
    cells_2 = ('a', 'b', 'c')

    colors = plot.colors_for_oneway(cells_1)
    assert_equal(len(colors), len(cells_1))

    colors = plot.colors_for_twoway(cells_1, cells_2)
    assert_equal(len(colors), len(cells_1) * len(cells_2))

    colors = plot.colors_for_twoway(cells_2, cells_1)
    assert_equal(len(colors), len(cells_1) * len(cells_2))

    # colors_for_categorial()
    f = ds['A']
    colors = plot.colors_for_categorial(f)
    for cell in f.cells:
        assert_in(cell, colors)

    i = ds.eval("A%B")
    colors = plot.colors_for_categorial(i)
    for cell in i.cells:
        assert_in(cell, colors)

    i = ds.eval("A%B%rm")
    colors = plot.colors_for_categorial(i)
    for cell in i.cells:
        assert_in(cell, colors)

    assert_raises(TypeError, plot.colors_for_categorial, "A%B")
Example #34
0
def test_anova_eq():
    "Test ANOVA against r-ez"
    r_require('ez')

    ds = datasets.get_uv(nrm=True)
    ds.to_r('ds')

    # nested random effect
    aov_explicit = test.ANOVA('fltvar', 'A + B + A%B + nrm(B) + A%nrm(B)', ds=ds)
    aov = test.ANOVA('fltvar', 'A * B * nrm(B)', ds=ds)
    assert str(aov_explicit) == str(aov)
    print(aov)
    fs = run_on_lm_fitter('fltvar', 'A * B * nrm(B)', ds)
    fnds = run_as_ndanova('fltvar', 'A * B * nrm(B)', ds)
    r_res = r('ezANOVA(ds, fltvar, nrm, A, between=B)')
    assert_f_tests_equal(aov.f_tests, r_res, fs, fnds, 'ez')

    # sub parameter
    r1 = test.ANOVA('fltvar', 'B * rm', ds=ds.sub('A == "a1"'))
    r2 = test.ANOVA('fltvar', 'B * rm', sub='A == "a1"', ds=ds)
    assert str(r2) == str(r1)

    # not fully specified model with random effects
    with pytest.raises(IncompleteModel):
        test.anova('fltvar', 'A*rm', ds=ds)

    # unequal group size, 1-way
    sds = ds.sub("A == 'a1'").sub("nrm.isnotin(('s037', 's038', 's039'))")
    sds.to_r('sds')
    aov = test.ANOVA('fltvar', 'B * nrm(B)', ds=sds)
    print(aov)
    fs = run_on_lm_fitter('fltvar', 'B * nrm(B)', sds)
    fnds = run_as_ndanova('fltvar', 'B * nrm(B)', sds)
    with r_warning_filter:  # type argument to ezANOVA
        r_res = r('ezANOVA(sds, fltvar, nrm, between=B)')
    assert_f_tests_equal(aov.f_tests, r_res, fs, fnds, 'ez')

    # unequal group size, 2-way
    sds = ds.sub("nrm.isnotin(('s037', 's038', 's039'))")
    sds.to_r('sds')
    aov = test.ANOVA('fltvar', 'A * B * nrm(B)', ds=sds)
    print(aov)
    fs = run_on_lm_fitter('fltvar', 'A * B * nrm(B)', sds)
    fnds = run_as_ndanova('fltvar', 'A * B * nrm(B)', sds)
    with r_warning_filter:  # type argument to ezANOVA
        r_res = r('ezANOVA(sds, fltvar, nrm, A, between=B)')
    assert_f_tests_equal(aov.f_tests, r_res, fs, fnds, 'ez')

    # empty cells
    dss = ds.sub("A%B != ('a2', 'b2')")
    with pytest.raises(NotImplementedError):
        test.anova('fltvar', 'A*B', ds=dss)
    with pytest.raises(NotImplementedError):
        run_on_lm_fitter('fltvar', 'A*B', ds=dss)
    dss = ds.sub("A%B != ('a1', 'b1')")
    with pytest.raises(NotImplementedError):
        test.anova('fltvar', 'A*B', ds=dss)
    with pytest.raises(NotImplementedError):
        run_on_lm_fitter('fltvar', 'A*B', ds=dss)
Example #35
0
def test_anova_eq():
    "Test ANOVA against r-ez"
    r_require('ez')

    ds = datasets.get_uv(nrm=True)
    ds.to_r('ds')

    # nested random effect
    aov_explicit = test.ANOVA('fltvar', 'A + B + A%B + nrm(B) + A%nrm(B)', ds=ds)
    aov = test.ANOVA('fltvar', 'A * B * nrm(B)', ds=ds)
    assert str(aov_explicit) == str(aov)
    print(aov)
    fs = run_on_lm_fitter('fltvar', 'A * B * nrm(B)', ds)
    fnds = run_as_ndanova('fltvar', 'A * B * nrm(B)', ds)
    r_res = r('ezANOVA(ds, fltvar, nrm, A, between=B)')
    assert_f_tests_equal(aov.f_tests, r_res, fs, fnds, 'ez')

    # sub parameter
    r1 = test.ANOVA('fltvar', 'B * rm', ds=ds.sub('A == "a1"'))
    r2 = test.ANOVA('fltvar', 'B * rm', sub='A == "a1"', ds=ds)
    assert str(r2) == str(r1)

    # not fully specified model with random effects
    with pytest.raises(IncompleteModel):
        test.anova('fltvar', 'A*rm', ds=ds)

    # unequal group size, 1-way
    sds = ds.sub("A == 'a1'").sub("nrm.isnotin(('s037', 's038', 's039'))")
    sds.to_r('sds')
    aov = test.ANOVA('fltvar', 'B * nrm(B)', ds=sds)
    print(aov)
    fs = run_on_lm_fitter('fltvar', 'B * nrm(B)', sds)
    fnds = run_as_ndanova('fltvar', 'B * nrm(B)', sds)
    with r_warning_filter:  # type argument to ezANOVA
        r_res = r('ezANOVA(sds, fltvar, nrm, between=B)')
    assert_f_tests_equal(aov.f_tests, r_res, fs, fnds, 'ez')

    # unequal group size, 2-way
    sds = ds.sub("nrm.isnotin(('s037', 's038', 's039'))")
    sds.to_r('sds')
    aov = test.ANOVA('fltvar', 'A * B * nrm(B)', ds=sds)
    print(aov)
    fs = run_on_lm_fitter('fltvar', 'A * B * nrm(B)', sds)
    fnds = run_as_ndanova('fltvar', 'A * B * nrm(B)', sds)
    with r_warning_filter:  # type argument to ezANOVA
        r_res = r('ezANOVA(sds, fltvar, nrm, A, between=B)')
    assert_f_tests_equal(aov.f_tests, r_res, fs, fnds, 'ez')

    # empty cells
    dss = ds.sub("A%B != ('a2', 'b2')")
    with pytest.raises(NotImplementedError):
        test.anova('fltvar', 'A*B', ds=dss)
    with pytest.raises(NotImplementedError):
        run_on_lm_fitter('fltvar', 'A*B', ds=dss)
    dss = ds.sub("A%B != ('a1', 'b1')")
    with pytest.raises(NotImplementedError):
        test.anova('fltvar', 'A*B', ds=dss)
    with pytest.raises(NotImplementedError):
        run_on_lm_fitter('fltvar', 'A*B', ds=dss)
Example #36
0
def test_ttest():
    "Test test.ttest"
    ds = datasets.get_uv()

    print test.ttest('fltvar', ds=ds)
    print test.ttest('fltvar', 'A', ds=ds)
    print test.ttest('fltvar', 'A%B', ds=ds)
    print test.ttest('fltvar', 'A', match='rm', ds=ds)
Example #37
0
def test_ttest():
    """Test test.ttest()"""
    ds = datasets.get_uv()

    print(test.ttest('fltvar', ds=ds))
    print(test.ttest('fltvar', 'A', ds=ds))
    print(test.ttest('fltvar', 'A%B', ds=ds))
    print(test.ttest('fltvar', 'A', match='rm', ds=ds))
    print(test.ttest('fltvar', 'A', 'a1', match='rm', ds=ds))
    print(test.ttest('fltvar', 'A%B', ('a1', 'b1'), match='rm', ds=ds))
Example #38
0
def test_repmeas():
    "Test table.repmeas (repeated measures table)"
    ds = datasets.get_uv()
    print table.repmeas("fltvar", "A", "rm", ds=ds)
    print table.repmeas("fltvar", "A%B", "rm", ds=ds)
    print table.repmeas("fltvar", "A", "B%rm", ds=ds)

    # test naturalization of cellnames
    ds["ANum"] = Factor(ds["A"], labels={"a1": "1", "a2": "2"})
    print table.repmeas("fltvar", "ANum", "rm", ds=ds)
Example #39
0
def test_repmeas():
    "Test table.repmeas (repeated measures table)"
    ds = datasets.get_uv()
    print table.repmeas('fltvar', 'A', 'rm', ds=ds)
    print table.repmeas('fltvar', 'A%B', 'rm', ds=ds)
    print table.repmeas('fltvar', 'A', 'B%rm', ds=ds)

    # test naturalization of cellnames
    ds['ANum'] = Factor(ds['A'], labels={'a1': '1', 'a2': '2'})
    print table.repmeas('fltvar', 'ANum', 'rm', ds=ds)
Example #40
0
def test_nested_effects():
    """Test nested effects"""
    ds = datasets.get_uv(nrm=True)

    nested = ds.eval("nrm(B)")
    eq_(nested.cells, ds['nrm'].cells)

    # interaction
    i = ds.eval("A % nrm(B)")
    expected_cells = tuple((case['A'], case['nrm']) for case in ds.itercases())
Example #41
0
def test_ttest():
    """Test test.ttest()"""
    ds = datasets.get_uv()

    print(test.ttest("fltvar", ds=ds))
    print(test.ttest("fltvar", "A", ds=ds))
    print(test.ttest("fltvar", "A%B", ds=ds))
    print(test.ttest("fltvar", "A", match="rm", ds=ds))
    print(test.ttest("fltvar", "A", "a1", match="rm", ds=ds))
    print(test.ttest("fltvar", "A%B", ("a1", "b1"), match="rm", ds=ds))
Example #42
0
def test_dataset_indexing():
    """Test Dataset indexing"""
    ds = datasets.get_uv()

    # indexing values
    eq_(ds['A', 1], ds['A'][1])
    eq_(ds[1, 'A'], ds['A'][1])

    # indexing variables
    assert_dataobj_equal(ds[:, 'A'], ds['A'])
    assert_dataobj_equal(ds['A', :], ds['A'])
    assert_dataobj_equal(ds[:10, 'A'], ds['A'][:10])
    assert_dataobj_equal(ds['A', :10], ds['A'][:10])

    # new Dataset through indexing
    ds2 = Dataset()
    ds2['A'] = ds['A']
    assert_dataset_equal(ds[('A',)], ds2)
    ds2['B'] = ds['B']
    assert_dataset_equal(ds['A', 'B'], ds2)
    assert_dataset_equal(ds[('A', 'B'), :10], ds2[:10])
    assert_dataset_equal(ds[:10, ('A', 'B')], ds2[:10])

    # assigning value
    ds[2, 'A'] = 'hello'
    eq_(ds[2, 'A'], 'hello')
    ds['A', 2] = 'not_hello'
    eq_(ds[2, 'A'], 'not_hello')

    # assigning new factor
    ds['C', :] = 'c'
    ok_(np.all(ds.eval("C == 'c'")))

    # assigning new Var
    ds['D1', :] = 5.
    ds[:, 'D2'] = 5.
    assert_array_equal(ds['D1'], 5)
    assert_array_equal(ds['D2'], 5)

    # test illegal names
    f = Factor('aaabbb')
    assert_raises(ValueError, ds.__setitem__, '%dsa', f)
    assert_raises(ValueError, ds.__setitem__, '432', f)
    assert_raises(ValueError, ds.__setitem__, ('%dsa', slice(None)), 'value')
    assert_raises(ValueError, ds.__setitem__, (slice(None), '%dsa'), 'value')
    assert_raises(ValueError, ds.__setitem__, ('432', slice(None)), 4.)
    assert_raises(ValueError, ds.__setitem__, (slice(None), '432'), 4.)

    # deleting items
    del ds['A']
    ok_('A' not in ds)
    assert_raises(KeyError, ds.__getitem__, 'A')
    del ds['B', 'rm']
    ok_('B' not in ds and 'rm' not in ds)
Example #43
0
def test_boxplot():
    "Test plot.Boxplot"
    ds = datasets.get_uv()
    plot.Boxplot('fltvar', 'A%B', match='rm', ds=ds, show=False)
    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', repeat=10, tile=4)
    plot.Boxplot('fltvar', 'A%B%C', ds=ds, show=False)
Example #44
0
def test_dataset_indexing():
    """Test Dataset indexing"""
    ds = datasets.get_uv()

    # indexing values
    eq_(ds['A', 1], ds['A'][1])
    eq_(ds[1, 'A'], ds['A'][1])

    # indexing variables
    assert_dataobj_equal(ds[:, 'A'], ds['A'])
    assert_dataobj_equal(ds['A', :], ds['A'])
    assert_dataobj_equal(ds[:10, 'A'], ds['A'][:10])
    assert_dataobj_equal(ds['A', :10], ds['A'][:10])

    # new Dataset through indexing
    ds2 = Dataset()
    ds2['A'] = ds['A']
    assert_dataset_equal(ds[('A',)], ds2)
    ds2['B'] = ds['B']
    assert_dataset_equal(ds['A', 'B'], ds2)
    assert_dataset_equal(ds[('A', 'B'), :10], ds2[:10])
    assert_dataset_equal(ds[:10, ('A', 'B')], ds2[:10])

    # assigning value
    ds[2, 'A'] = 'hello'
    eq_(ds[2, 'A'], 'hello')
    ds['A', 2] = 'not_hello'
    eq_(ds[2, 'A'], 'not_hello')

    # assigning new factor
    ds['C', :] = 'c'
    ok_(np.all(ds.eval("C == 'c'")))

    # assigning new Var
    ds['D1', :] = 5.
    ds[:, 'D2'] = 5.
    assert_array_equal(ds['D1'], 5)
    assert_array_equal(ds['D2'], 5)

    # test illegal names
    f = Factor('aaabbb')
    assert_raises(ValueError, ds.__setitem__, '%dsa', f)
    assert_raises(ValueError, ds.__setitem__, '432', f)
    assert_raises(ValueError, ds.__setitem__, ('%dsa', slice(None)), 'value')
    assert_raises(ValueError, ds.__setitem__, (slice(None), '%dsa'), 'value')
    assert_raises(ValueError, ds.__setitem__, ('432', slice(None)), 4.)
    assert_raises(ValueError, ds.__setitem__, (slice(None), '432'), 4.)

    # deleting items
    del ds['A']
    ok_('A' not in ds)
    assert_raises(KeyError, ds.__getitem__, 'A')
    del ds['B', 'rm']
    ok_('B' not in ds and 'rm' not in ds)
Example #45
0
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)
Example #46
0
def test_wilcoxon():
    ds = datasets.get_uv()

    ds_agg = ds.aggregate('A % rm', drop_bad=True)
    n = ds_agg.n_cases // 2
    w, p = scipy.stats.wilcoxon(ds_agg[:n, 'fltvar'].x,
                                ds_agg[n:, 'fltvar'].x,
                                alternative='two-sided')

    res = test.WilcoxonSignedRank('fltvar', 'A', 'a1', 'a2', 'rm', ds=ds)
    assert res.w == w
    assert res.p == p
Example #47
0
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)
Example #48
0
def test_anova():
    "Test ANOVA"
    from rpy2.robjects import r
    r_require('car')
    r_require('ez')

    ds = datasets.get_uv(nrm=True)
    ds.to_r('ds')

    # fixed effects
    aov = test.ANOVA('fltvar', 'A*B', ds=ds)
    print(aov)
    fs = run_on_lm_fitter('fltvar', 'A*B', ds)
    fnds = run_as_ndanova('fltvar', 'A*B', ds)
    r_res = r("Anova(lm(fltvar ~ A * B, ds, type=2))")
    assert_f_tests_equal(aov.f_tests, r_res, fs, fnds, 'Anova')

    # random effect
    aov = test.ANOVA('fltvar', 'A*B*rm', ds=ds)
    print(aov)
    fs = run_on_lm_fitter('fltvar', 'A*B*rm', ds)
    fnds = run_as_ndanova('fltvar', 'A*B*rm', ds)
    r('test.aov <- aov(fltvar ~ A * B + Error(rm / (A * B)), ds)')
    print(r('test.summary <- summary(test.aov)'))
    r_res = r['test.summary'][1:]
    assert_f_tests_equal(aov.f_tests, r_res, fs, fnds, 'rmaov')

    # nested random effect
    aov = test.ANOVA('fltvar', 'B + A%B + A * nrm(B)', ds=ds)
    print(aov)
    fs = run_on_lm_fitter('fltvar', 'B + A%B + A * nrm(B)', ds)
    fnds = run_as_ndanova('fltvar', 'B + A%B + A * nrm(B)', ds)
    r_res = r('ezANOVA(ds, fltvar, nrm, A, between=B)')
    assert_f_tests_equal(aov.f_tests, r_res, fs, fnds, 'ez')

    # not fully specified model with random effects
    assert_raises(NotImplementedError, test.anova, 'fltvar', 'A*rm', ds=ds)

    # empty cells
    dss = ds.sub("A%B != ('a2', 'b2')")
    assert_raises(NotImplementedError, test.anova, 'fltvar', 'A*B', ds=dss)
    assert_raises(NotImplementedError,
                  run_on_lm_fitter,
                  'fltvar',
                  'A*B',
                  ds=dss)
    dss = ds.sub("A%B != ('a1', 'b1')")
    assert_raises(NotImplementedError, test.anova, 'fltvar', 'A*B', ds=dss)
    assert_raises(NotImplementedError,
                  run_on_lm_fitter,
                  'fltvar',
                  'A*B',
                  ds=dss)
Example #49
0
def test_tsv_io():
    """Test tsv I/O"""
    tempdir = TempDir()
    names = ['A', 'B', 'rm', 'intvar', 'fltvar', 'fltvar2', 'index']
    ds = datasets.get_uv()
    ds['fltvar'][5:10] = np.nan
    ds[:4, 'rm'] = ''

    # save and load
    dst = Path(tempdir) / 'ds.txt'
    ds.save_txt(dst)
    ds1 = load.tsv(dst, random='rm')
    assert_dataset_equal(ds1, ds, decimal=10)
    ds1 = load.tsv(dst, skiprows=1, names=names, random='rm')
    assert_dataset_equal(ds1, ds, decimal=10)
    # delimiter
    for delimiter in [' ', ',']:
        ds.save_txt(dst, delimiter=delimiter)
        ds1 = load.tsv(dst, delimiter=delimiter, random='rm')
        assert_dataset_equal(ds1, ds, decimal=10)

    # guess data types with missing
    intvar2 = ds['intvar'].as_factor()
    intvar2[10:] = ''
    ds_intvar = Dataset((intvar2, ))
    ds_intvar.save_txt(dst)
    ds_intvar1 = load.tsv(dst, empty='nan')
    assert_dataobj_equal(ds_intvar1['intvar', :10], ds['intvar', :10])
    assert_array_equal(ds_intvar1['intvar', 10:], np.nan)

    # str with space
    ds[:5, 'A'] = 'a 1'
    ds.save_txt(dst)
    ds1 = load.tsv(dst, random='rm')
    assert_dataset_equal(ds1, ds, decimal=10)
    ds.save_txt(dst, delimiter=' ')
    ds1 = load.tsv(dst, delimiter=' ', random='rm')
    assert_dataset_equal(ds1, ds, decimal=10)

    # Fixed column width
    path = file_path('fox-prestige')
    ds = load.tsv(path, delimiter=' ', skipinitialspace=True)
    assert ds[1] == {
        'id': 'GENERAL.MANAGERS',
        'education': 12.26,
        'income': 25879,
        'women': 4.02,
        'prestige': 69.1,
        'census': 1130,
        'type': 'prof'
    }
Example #50
0
def test_interaction():
    "Test Interaction"
    ds = datasets.get_uv()
    A = ds['A']
    B = ds['B']
    i = A % B
    # eq for sequence
    assert_array_equal(i == A % B, True)
    assert_array_equal(i == B % A, False)
    assert_array_equal(i == A, False)
    assert_array_equal(i == ds['fltvar'], False)
    assert_array_equal(ds.eval("A%B") == Factor(ds['A']) % B, True)
    # eq for element
    for a, b in product(A.cells, B.cells):
        assert_array_equal(i == (a, b), np.logical_and(A == a, B == b))
Example #51
0
def test_barplot():
    "Test plot.Barplot"
    ds = datasets.get_uv()
    plot.Barplot('fltvar', 'A%B', match='rm', ds=ds, show=False)
    plot.Barplot('fltvar', 'A%B', match='rm', ds=ds, pool_error=False,
                 show=False)
    plot.Barplot('fltvar', 'A%B', match='rm', test=0, ds=ds, show=False)

    # Fixed top
    p = plot.Barplot('fltvar', 'A%B', ds=ds, top=2, test_markers=False,
                     show=False)
    ax = p._axes[0]
    eq_(ax.get_ylim()[1], 2)

    plt.close('all')
Example #52
0
def test_interaction():
    "Test Interaction"
    ds = datasets.get_uv()
    A = ds['A']
    B = ds['B']
    i = A % B
    # eq for sequence
    assert_array_equal(i == A % B, True)
    assert_array_equal(i == B % A, False)
    assert_array_equal(i == A, False)
    assert_array_equal(i == ds['fltvar'], False)
    assert_array_equal(ds.eval("A%B") == Factor(ds['A']) % B, True)
    # eq for element
    for a, b in product(A.cells, B.cells):
        assert_array_equal(i == (a, b), np.logical_and(A == a, B == b))
Example #53
0
def test_mann_whitney():
    ds = datasets.get_uv()

    ds_agg = ds.aggregate('A % rm', drop_bad=True)
    n = ds_agg.n_cases // 2
    a, b = ds_agg[:n, 'fltvar'], ds_agg[n:, 'fltvar']
    u, p = scipy.stats.mannwhitneyu(a.x, b.x, alternative='two-sided')

    res = test.MannWhitneyU('fltvar', 'A', 'a1', 'a2', 'rm', ds=ds)
    assert res.u == u
    assert res.p == p

    res = test.MannWhitneyU(a, b)
    assert res.u == u
    assert res.p == p
Example #54
0
def test_nested_effects():
    """Test nested effects"""
    ds = datasets.get_uv(nrm=True)

    nested = ds.eval("nrm(B)")
    eq_(nested.cells, ds['nrm'].cells)

    # interaction
    i = ds.eval("A % nrm(B)")
    expected_cells = tuple((case['A'], case['nrm']) for case in ds.itercases())
    eq_(i.cells, expected_cells)

    assert_has_no_empty_cells(ds.eval('A * B + nrm(B) + A % nrm(B)'))

    i = ds.eval("nrm(B) % A")
    expected_cells = sorted((case['nrm'], case['A']) for case in ds.itercases())
    eq_(i.cells, tuple(expected_cells))
Example #55
0
def test_repmeas():
    "Test table.repmeas (repeated measures table)"
    ds = datasets.get_uv()
    print(table.repmeas('fltvar', 'A', 'rm', ds=ds))
    print(table.repmeas('fltvar', 'A%B', 'rm', ds=ds))
    print(table.repmeas('fltvar', 'A', 'B%rm', ds=ds))

    # with int model
    ds['Bv'] = ds['B'].as_var({'b1': 1, 'b2': 2})
    print(table.repmeas('fltvar', 'A', 'Bv%rm', ds=ds))

    # test naturalization of cellnames
    ds['ANum'] = Factor(ds['A'], labels={'a1': '1', 'a2': '2'})
    print(table.repmeas('fltvar', 'ANum', 'rm', ds=ds))

    # with empty cell name
    ds['A'].update_labels({'a1': ''})
    print(table.repmeas('fltvar', 'A', 'rm', ds=ds))
Example #56
0
def test_io_txt():
    "Test Dataset io as text"
    ds = datasets.get_uv()

    # Var that has integer values as float
    ds['intflt'] = ds.eval('intvar * 1.')
    ds['intflt'].name = 'intflt'

    # io test
    tempdir = tempfile.mkdtemp()
    try:
        dest = os.path.join(tempdir, 'test.txt')
        ds.save_txt(dest)
        ds2 = load.tsv(dest)
    finally:
        shutil.rmtree(tempdir)

    assert_dataset_equal(ds, ds2, decimal=6)
Example #57
0
def test_io_txt():
    "Test Dataset io as text"
    ds = datasets.get_uv()

    # Var that has integer values as float
    ds['intflt'] = ds.eval('intvar * 1.')
    ds['intflt'].name = 'intflt'

    # io test
    tempdir = tempfile.mkdtemp()
    try:
        dest = os.path.join(tempdir, 'test.txt')
        ds.save_txt(dest)
        ds2 = load.tsv(dest)
    finally:
        shutil.rmtree(tempdir)

    assert_dataset_equal(ds, ds2, decimal=6)
Example #58
0
def test_align():
    "Testing align() and align1() functions"
    ds = datasets.get_uv()
    # index the dataset
    ds.index()
    ds['aindex'] = ds.eval("A.enumerate_cells()")
    # subset
    idx4 = np.arange(0, ds.n_cases, 4)
    idx4i = idx4[::-1]
    ds2 = ds.sub(np.arange(0, ds.n_cases, 2))
    # shuffle the whole dataset
    shuffle_index = np.arange(ds.n_cases)
    np.random.shuffle(shuffle_index)
    ds_shuffled = ds[shuffle_index]

    # align1: align Dataset to index
    dsa = align1(ds2, idx4)
    assert_array_equal(dsa['index'], idx4, "align1() failure")
    dsa = align1(ds2, idx4i)
    assert_array_equal(dsa['index'], idx4i, "align1() failure")
    # d_idx as Var
    dsa = align1(ds2[::2], idx4, idx4i)
    assert_array_equal(dsa['index'], idx4i, "align1() failure")
    assert_raises(ValueError, align1, ds2, idx4, idx4i)

    # Factor index
    assert_raises(ValueError, align1, ds, ds['rm', ::-1], 'rm')
    fds = ds[:20]
    dsa = align1(fds, fds['rm', ::-1], 'rm')
    assert_array_equal(dsa['index'], np.arange(19, -1, -1), "align1 Factor")

    # align two datasets
    dsa1, dsa2 = align(ds, ds2)
    assert_array_equal(dsa1['index'], dsa2['index'], "align() failure")
    dsa1, dsa2 = align(ds, ds2[::-1])
    assert_array_equal(dsa1['index'], dsa2['index'], "align() failure")
    dsa1, dsa2 = align(ds, ds_shuffled)
    assert_dataset_equal(dsa1, dsa2)

    # align using categorial
    dsa1, dsa2 = align(ds, ds_shuffled, 'A % aindex')
    assert_dataset_equal(dsa1, dsa2)
    dsa1, dsa2 = align(ds, ds_shuffled, 'aindex % A')
    assert_dataset_equal(dsa1, dsa2)
Example #59
0
def test_report():
    "Test fmtxt.Report class"
    tempdir = tempfile.mkdtemp()
    report = fmtxt.Report("Test Report")

    section = report.add_section(u'unicode: \xe2 abc')
    ds = datasets.get_uv()
    p = plot.Barplot('fltvar', 'A', sub="B=='b1'", ds=ds)
    image = p.image()
    section.add_figure("test", image)

    report.sign()

    # report output
    print report
    dst = os.path.join(tempdir, 'report.html')
    report.save_html(dst)

    # clean up
    shutil.rmtree(tempdir)