def test1(self): R = """\ t-Test: One Sample for means SUPPRESSION ===================================== Sample Mean 19.541 Hypothesized Pop. Mean 17 Variance 228.326 Observations 384 df 383 t Stat 3.295 alpha 0.050 P(T<=t) one-tail 5.384e-04 t Critical one-tail 1.966 P(T<=t) two-tail 0.001 t Critical two-tail 1.649 P(T<=t) two-tail 0.001 Effect size d 0.168 delta 3.295 Observed power one-tail 0.950 Observed power two-tail 0.908 """ df = DataFrame() df.read_tbl('data/suppression~subjectXgroupXageXcycleXphase.csv') D = df.ttest('SUPPRESSION', pop_mean=17.) self.assertEqual(str(D), R)
def test11(self): df = DataFrame() df.read_tbl('data/error~subjectXtimeofdayXcourseXmodel_MISSING.csv') D = str(df.descriptives('ERROR')) R = """\ Descriptive Statistics ERROR ========================== count 48.000 mean 3.896 mode 3.000 var 5.797 stdev 2.408 sem 0.348 rms 4.567 min 0.000 Q1 2.000 median 3.000 Q3 5.000 max 10.000 range 10.000 95ci_lower 3.215 95ci_upper 4.577 """ self.assertEqual(D, R)
def test0(self): R = { 'd': [ 9.0, 8.0, 6.0, 8.0, 10.0, 4.0, 6.0, 5.0, 7.0, 7.0, 7.0, 9.0, 6.0, 6.0, 6.0, 11.0, 6.0, 3.0, 8.0, 7.0, 11.0, 13.0, 8.0, 6.0, 14.0, 11.0, 13.0, 13.0, 10.0, 11.0, 12.0, 11.0, 16.0, 11.0, 9.0, 23.0, 12.0, 10.0, 19.0, 11.0, 10.0, 19.0, 14.0, 5.0, 10.0, 11.0, 14.0, 15.0, 11.0, 11.0, 8.0, 6.0, 4.0, 6.0, 7.0, 6.0, 5.0, 7.0, 9.0, 7.0, 10.0, 7.0, 8.0, 10.0, 4.0, 7.0, 10.0, 6.0, 7.0, 7.0, 14.0, 11.0, 18.0, 14.0, 13.0, 22.0, 17.0, 16.0, 12.0, 11.0, 20.0, 16.0, 16.0, 15.0, 18.0, 16.0, 20.0, 22.0, 14.0, 19.0, 21.0, 19.0, 17.0, 15.0, 22.0, 16.0, 22.0, 22.0, 18.0, 21.0 ], 'fname': r'output/box(WORDS).png', 'maintitle': 'WORDS', 'val': 'WORDS' } df = DataFrame() df.TESTMODE = True df.read_tbl(r'data/words~ageXcondition.csv') D = df.box_plot('WORDS', output_dir='output') self.assertEqual(D['fname'], R['fname']) self.assertEqual(D['maintitle'], R['maintitle']) self.assertEqual(D['val'], R['val']) for d, r in zip(np.array(D['d']).flat, np.array(R['d']).flat): self.assertAlmostEqual(d, r)
def test1(self): R = """\ Chi-Square: Single Factor SUMMARY 1 2 3 4 ============================================ Observed 7 20 23 9 Expected 14.750 14.750 14.750 14.750 CHI-SQUARE TESTS Value df P ======================================== Pearson Chi-Square 12.797 3 0.005 Likelihood Ratio 13.288 3 0.004 Observations 59 POST-HOC POWER Measure ============================== Effect size w 0.466 Non-centrality lambda 12.797 Critical Chi-Square 7.815 Power 0.865 """ df = DataFrame() df.read_tbl('data/chi_test.csv') X = df.chisquare1way('RESULT') self.assertEqual(str(X), R)
def test_kn(self): df = DataFrame() df.read_tbl('data/example.csv') y = [23] * len(df['X']) df['X'] = y self.assertEqual(df.keys(), ['CASE', 'TIME', 'CONDITION', 'X'])
def test01(self): df = DataFrame() df.TESTMODE = True df.read_tbl('data/iqbrainsize.txt', delimiter='\t') D = df.scatter_plot('TOTVOL', 'FIQ', output_dir='output') self.assertEqual(None, D['trend'])
def test1(self): R = { 'd': [ np.array([ 9, 8, 6, 8, 10, 4, 6, 5, 7, 7, 7, 9, 6, 6, 6, 11, 6, 3, 8, 7, 11, 13, 8, 6, 14, 11, 13, 13, 10, 11, 12, 11, 16, 11, 9, 23, 12, 10, 19, 11, 10, 19, 14, 5, 10, 11, 14, 15, 11, 11 ]), np.array([ 8, 6, 4, 6, 7, 6, 5, 7, 9, 7, 10, 7, 8, 10, 4, 7, 10, 6, 7, 7, 14, 11, 18, 14, 13, 22, 17, 16, 12, 11, 20, 16, 16, 15, 18, 16, 20, 22, 14, 19, 21, 19, 17, 15, 22, 16, 22, 22, 18, 21 ]) ], 'fname': r'output/box(WORDS~AGE).png', 'maintitle': 'WORDS by AGE', 'xlabels': [u'AGE = old', u'AGE = young'] } df = DataFrame() df.TESTMODE = True df.read_tbl(r'data/words~ageXcondition.csv') D = df.box_plot('WORDS', ['AGE'], output_dir='output') self.assertEqual(D['fname'], R['fname']) self.assertEqual(D['maintitle'], R['maintitle']) self.assertEqual(D['xlabels'], R['xlabels']) for d, r in zip(np.array(D['d']).flat, np.array(R['d']).flat): self.assertAlmostEqual(d, r)
def test1(self): df = DataFrame() df.read_tbl('data/error~subjectXtimeofdayXcourseXmodel_MISSING.csv') pt = df.pivot('ERROR', ['TIMEOFDAY', 'MODEL'], ['COURSE']) self.assertEqual(repr(eval(repr(pt))), repr(pt))
def test0(self): df = DataFrame() df.read_tbl('data/error~subjectXtimeofdayXcourseXmodel_MISSING.csv') pt = df.pivot('ERROR', ['TIMEOFDAY'], ['COURSE']) self.assertAlmostEqual(3.22222222222, pt[1, 0], 5)
def test02(self): df = DataFrame() df.read_tbl('data/words~ageXcondition.csv') D = repr(df.histogram('WORDS')) R = "Histogram([('values', [4.0, 14.0, 17.0, 12.0, 15.0, 10.0, 9.0, 5.0, 6.0, 8.0]), \ ('bin_edges', [3, 5.0, 7.0, 9.0, 11.0, 13.0, 15.0, 17.0, 19.0, 21.0, 23])], cname='WORDS')" self.assertEqual(D, R)
def test1(self): R = DataFrame([('SUBJECT', [1, 2]), ('TIMEOFDAY', [u'T1', u'T1']), ('COURSE', [u'C1', u'C2']), ('MODEL', [u'M1', u'M1']), ('ERROR', [10, 10])]) df = DataFrame() df.read_tbl('data/error~subjectXtimeofdayXcourseXmodel_MISSING.csv') df2 = df.where(['ERROR = 10']) self.assertEqual(repr(df2), repr(R))
def test05(self): R = """Marginals([('factorials', OrderedDict([('AGE', [u'old', u'old', u'old', u'old', u'old']), ('CONDITION', [u'adjective', u'counting', u'imagery', u'intention', u'rhyming'])])), ('dmu', [11.0, 7.0, 13.4, 12.0, 6.9000000000000004]), ('dN', [10, 10, 10, 10, 10]), ('dsem', [0.78881063774661542, 0.57735026918962573, 1.4236104336041748, 1.1832159566199232, 0.67412494720522276]), ('dlower', [9.4539311500166345, 5.868393472388334, 10.609723550135818, 9.6808967250249509, 5.578715103477764]), ('dupper', [12.546068849983365, 8.131606527611666, 16.190276449864182, 14.319103274975049, 8.2212848965222367])], val='WORDS', factors=['AGE', 'CONDITION'], where='AGE == "old"')""" df=DataFrame() df.read_tbl('data/words~ageXcondition.csv') D = df.marginals('WORDS', factors=['AGE','CONDITION'], where='AGE == "old"')
def test1(self): df = DataFrame() df.TESTMODE = True df.read_tbl(r'data/words~ageXcondition.csv') D = df.histogram_plot('WORDS', cumulative=True, output_dir='output') self.assertEqual(D['fname'], r'output/hist(WORDS,cumulative=True).png')
def test2(self): R = { 'aggregate': 'ci', 'clevels': [1], 'fname': r'output/interaction_plot(SUPPRESSION~CYCLE_X_AGE_X_PHASE,yerr=95% ci).png', 'maintitle': 'SUPPRESSION by CYCLE * AGE * PHASE', 'numcols': 1, 'numrows': 2, 'rlevels': ['I', 'II'], 'subplot_titles': ['I', 'II'], 'xmaxs': [4.1749999999999998, 4.1749999999999998], 'xmins': [0.32499999999999996, 0.32499999999999996], 'y': [[[17.33333333, 22.41666667, 22.29166667, 20.75], [7.34166667, 9.65, 9.70833333, 9.10833333]], [[26.625, 38.70833333, 39.08333333, 40.83333333], [10.24166667, 12.575, 13.19166667, 12.79166667]]], 'yerr': [[1.81325589, 1.44901936, 1.60883063, 1.57118871], [2.49411239, 1.34873573, 1.95209851, 1.35412572]], 'ymax': 64.8719707118471, 'ymin': 0.0 } # generate yerr df = DataFrame() df.TESTMODE = True df.read_tbl(r'data/suppression~subjectXgroupXageXcycleXphase.csv') D = df.interaction_plot('SUPPRESSION', 'CYCLE', seplines='AGE', sepyplots='PHASE', yerr='ci', output_dir='output') self.assertEqual(D['aggregate'], R['aggregate']) self.assertEqual(D['clevels'], R['clevels']) self.assertEqual(D['rlevels'], R['rlevels']) self.assertEqual(D['numcols'], R['numcols']) self.assertEqual(D['numrows'], R['numrows']) self.assertEqual(D['fname'], R['fname']) self.assertEqual(D['maintitle'], R['maintitle']) self.assertEqual(D['subplot_titles'], R['subplot_titles']) self.assertAlmostEqual(D['ymin'], R['ymin']) self.assertAlmostEqual(D['ymax'], R['ymax']) for d, r in zip(np.array(D['y']).flat, np.array(R['y']).flat): self.assertAlmostEqual(d, r) for d, r in zip(np.array(D['yerr']).flat, np.array(R['yerr']).flat): self.assertAlmostEqual(d, r)
def test1(self): R = { 'aggregate': None, 'clevels': ['M1', 'M2', 'M3'], 'fname': r'output/interaction_plot(ERROR~TIMEOFDAY_X_COURSE_X_MODEL,yerr=1.0).png', 'maintitle': 'ERROR by TIMEOFDAY * COURSE * MODEL', 'numcols': 3, 'numrows': 1, 'rlevels': [1], 'subplot_titles': ['M1', 'M2', 'M3'], 'xmaxs': [1.5, 1.5, 1.5], 'xmins': [-0.5, -0.5, -0.5], 'y': [[[9., 4.33333333], [8.66666667, 3.66666667], [4.66666667, 1.66666667]], [[7.5, 2.66666667], [6., 2.66666667], [5., 1.66666667]], [[5., 2.66666667], [3.5, 2.33333333], [2.33333333, 1.33333333]]], 'yerr': [[1.0, 1.0], [1.0, 1.0], [1.0, 1.0]], 'ymax': 11.119188627248182, 'ymin': 0.0 } # specify yerr df = DataFrame() df.TESTMODE = True df.read_tbl(r'data/error~subjectXtimeofdayXcourseXmodel_MISSING.csv') D = df.interaction_plot('ERROR', 'TIMEOFDAY', seplines='COURSE', sepxplots='MODEL', yerr=1., output_dir='output') self.assertEqual(D['aggregate'], R['aggregate']) self.assertEqual(D['clevels'], R['clevels']) self.assertEqual(D['rlevels'], R['rlevels']) self.assertEqual(D['numcols'], R['numcols']) self.assertEqual(D['numrows'], R['numrows']) self.assertEqual(D['fname'], R['fname']) self.assertEqual(D['maintitle'], R['maintitle']) self.assertEqual(D['subplot_titles'], R['subplot_titles']) self.assertAlmostEqual(D['ymin'], R['ymin']) self.assertAlmostEqual(D['ymax'], R['ymax']) for d, r in zip(np.array(D['y']).flat, np.array(R['y']).flat): self.assertAlmostEqual(d, r) for d, r in zip(np.array(D['yerr']).flat, np.array(R['yerr']).flat): self.assertAlmostEqual(d, r)
def test2(self): ## Between-Subjects test R = """WORDS ~ AGE * CONDITION TESTS OF BETWEEN-SUBJECTS EFFECTS Measure: WORDS Source Type III df MS F Sig. et2_G Obs. SE 95% CI lambda Obs. SS Power =============================================================================================================== AGE 240.250 1 240.250 29.936 3.981e-07 0.250 50 0.406 0.796 16.631 0.981 CONDITION 1514.940 4 378.735 47.191 2.530e-21 0.677 20 0.642 1.258 41.948 1.000 AGE * CONDITION 190.300 4 47.575 5.928 2.793e-04 0.209 10 0.908 1.780 2.635 0.207 Error 722.300 90 8.026 =============================================================================================================== Total 2667.790 99 TABLES OF ESTIMATED MARGINAL MEANS Estimated Marginal Means for AGE AGE Mean Std. Error 95% Lower Bound 95% Upper Bound =============================================================== old 10.060 0.567 8.949 11.171 young 13.160 0.818 11.556 14.764 Estimated Marginal Means for CONDITION CONDITION Mean Std. Error 95% Lower Bound 95% Upper Bound =================================================================== adjective 12.900 0.791 11.350 14.450 counting 6.750 0.362 6.041 7.459 imagery 15.500 0.933 13.671 17.329 intention 15.650 1.096 13.502 17.798 rhyming 7.250 0.452 6.363 8.137 Estimated Marginal Means for AGE * CONDITION AGE CONDITION Mean Std. Error 95% Lower Bound 95% Upper Bound =========================================================================== old adjective 11 0.789 9.454 12.546 old counting 7 0.577 5.868 8.132 old imagery 13.400 1.424 10.610 16.190 old intention 12 1.183 9.681 14.319 old rhyming 6.900 0.674 5.579 8.221 young adjective 14.800 1.104 12.637 16.963 young counting 6.500 0.453 5.611 7.389 young imagery 17.600 0.819 15.994 19.206 young intention 19.300 0.844 17.646 20.954 young rhyming 7.600 0.618 6.388 8.812 """ df = DataFrame() fname = 'data/words~ageXcondition.csv' df.read_tbl(fname) aov = Anova() aov.run(df, 'WORDS', bfactors=['AGE', 'CONDITION']) self.assertEqual(str(aov), R)
def test0(self): R = """SUBJECT TIMEOFDAY COURSE MODEL ERROR ============================================ 1 T1 C1 M1 10 1 T1 C1 M2 8 1 T1 C1 M3 6 1 T1 C2 M1 9 1 T1 C3 M1 7 1 T1 C3 M2 6 1 T1 C3 M3 3 1 T2 C1 M1 5 1 T2 C1 M2 4 1 T2 C1 M3 3 1 T2 C2 M1 4 1 T2 C2 M2 3 1 T2 C2 M3 3 1 T2 C3 M1 2 1 T2 C3 M2 2 1 T2 C3 M3 1 2 T1 C2 M1 10 2 T1 C2 M2 6 2 T1 C2 M3 4 2 T1 C3 M1 4 2 T1 C3 M2 5 2 T1 C3 M3 2 2 T2 C1 M1 4 2 T2 C1 M2 3 2 T2 C1 M3 3 2 T2 C2 M1 4 2 T2 C2 M2 2 2 T2 C2 M3 2 2 T2 C3 M1 2 2 T2 C3 M2 3 2 T2 C3 M3 2 3 T1 C1 M1 8 3 T1 C1 M2 7 3 T1 C1 M3 4 3 T1 C2 M1 7 3 T1 C2 M3 3 3 T1 C3 M1 3 3 T1 C3 M2 4 3 T1 C3 M3 2 3 T2 C1 M1 4 3 T2 C1 M2 1 3 T2 C1 M3 2 3 T2 C2 M1 3 3 T2 C2 M2 3 3 T2 C2 M3 2 3 T2 C3 M1 1 3 T2 C3 M2 0 3 T2 C3 M3 1 """ df = DataFrame() df.read_tbl('data/error~subjectXtimeofdayXcourseXmodel_MISSING.csv') self.assertEqual(str(df), R)
def test01(self): """confidence interval error bars specified""" R = { 'aggregate': 'ci', 'clevels': [1], 'fname': r'output/interaction_plot(WORDS~AGE_X_CONDITION,yerr=95% ci).png', 'maintitle': 'WORDS by AGE * CONDITION', 'numcols': 1, 'numrows': 1, 'rlevels': [1], 'subplot_titles': [''], 'xmaxs': [1.5], 'xmins': [-0.5], 'y': [[[11.0, 14.8], [7.0, 6.5], [13.4, 17.6], [12.0, 19.3], [6.9, 7.6]]], 'yerr': [[]], 'ymin': 0.0, 'ymax': 27.183257964740832 } # a simple plot df = DataFrame() df.TESTMODE = True df.read_tbl(r'data/words~ageXcondition.csv') D = df.interaction_plot('WORDS', 'AGE', seplines='CONDITION', output_dir='output', yerr='ci') self.assertEqual(D['aggregate'], R['aggregate']) self.assertEqual(D['clevels'], R['clevels']) self.assertEqual(D['rlevels'], R['rlevels']) self.assertEqual(D['numcols'], R['numcols']) self.assertEqual(D['numrows'], R['numrows']) self.assertEqual(D['fname'], R['fname']) self.assertEqual(D['maintitle'], R['maintitle']) self.assertEqual(D['subplot_titles'], R['subplot_titles']) self.assertAlmostEqual(D['ymin'], R['ymin']) self.assertAlmostEqual(D['ymax'], R['ymax']) for d, r in zip(np.array(D['y']).flat, np.array(R['y']).flat): self.assertAlmostEqual(d, r) for d, r in zip(np.array(D['yerr']).flat, np.array(R['yerr']).flat): self.assertAlmostEqual(d, r)
def test0(self): R = [[4.0, 14.0, 17.0, 12.0, 15.0, 10.0, 9.0, 5.0, 6.0, 8.0], [3.0, 5.0, 7.0, 9.0, 11.0, 13.0, 15.0, 17.0, 19.0, 21.0, 23.0]] df = DataFrame() df.read_tbl('data/words~ageXcondition.csv') D = df.histogram('WORDS') D = [D['values'], D['bin_edges']] for (d, r) in zip(_flatten(D), _flatten(R)): self.assertAlmostEqual(d, r)
def test6(self): R = { 'aggregate': 'ci', 'clevels': [1], 'fname': r'output/interaction_plot(SUPPRESSION~CYCLE_X_PHASE,yerr=95% ci).png', 'maintitle': 'SUPPRESSION by CYCLE * PHASE', 'numcols': 1, 'numrows': 2, 'rlevels': ['I', 'II'], 'subplot_titles': ['I', 'II'], 'xmaxs': [4.1749999999999998, 4.1749999999999998], 'xmins': [0.82499999999999996, 0.82499999999999996], 'y': [[12.3375, 16.03333333, 16., 14.92916667], [18.43333333, 25.64166667, 26.1375, 26.8125]], 'yerr': [[3.18994762, 3.20528834, 3.26882751, 3.53477953], [3.98429064, 4.5950803, 4.9514978, 4.97429769]], 'ymax': 64.8719707118471, 'ymin': 0.0 } # generate yerr df = DataFrame() df.TESTMODE = True df.read_tbl(r'data/suppression~subjectXgroupXageXcycleXphase.csv') D = df.interaction_plot('SUPPRESSION', 'CYCLE', sepyplots='PHASE', yerr='ci', output_dir='output') self.assertEqual(D['aggregate'], R['aggregate']) self.assertEqual(D['clevels'], R['clevels']) self.assertEqual(D['rlevels'], R['rlevels']) self.assertEqual(D['numcols'], R['numcols']) self.assertEqual(D['numrows'], R['numrows']) self.assertEqual(D['fname'], R['fname']) self.assertEqual(D['maintitle'], R['maintitle']) self.assertEqual(D['subplot_titles'], R['subplot_titles']) self.assertAlmostEqual(D['ymin'], R['ymin']) self.assertAlmostEqual(D['ymax'], R['ymax']) for d, r in zip(np.array(D['y']).flat, np.array(R['y']).flat): self.assertAlmostEqual(d, r) for d, r in zip(np.array(D['yerr']).flat, np.array(R['yerr']).flat): self.assertAlmostEqual(d, r)
def test4(self): R = { 'aggregate': None, 'clevels': ['adjective', 'counting', 'imagery', 'intention', 'rhyming'], 'fname': r'output/interaction_plot(WORDS~AGE_X_CONDITION).png', 'maintitle': 'WORDS by AGE * CONDITION', 'numcols': 5, 'numrows': 1, 'rlevels': [1], 'subplot_titles': ['adjective', 'counting', 'imagery', 'intention', 'rhyming'], 'xmaxs': [1.5, 1.5, 1.5, 1.5, 1.5], 'xmins': [-0.5, -0.5, -0.5, -0.5, -0.5], 'y': [[11., 14.8], [7., 6.5], [13.4, 17.6], [12., 19.3], [6.9, 7.6]], 'yerr': [[], [], [], [], []], 'ymax': 27.183257964740832, 'ymin': 0.0 } # a simple plot df = DataFrame() df.TESTMODE = True df.read_tbl(r'data/words~ageXcondition.csv') D = df.interaction_plot('WORDS', 'AGE', sepxplots='CONDITION', output_dir='output') self.assertEqual(D['aggregate'], R['aggregate']) self.assertEqual(D['clevels'], R['clevels']) self.assertEqual(D['rlevels'], R['rlevels']) self.assertEqual(D['numcols'], R['numcols']) self.assertEqual(D['numrows'], R['numrows']) self.assertEqual(D['fname'], R['fname']) self.assertEqual(D['maintitle'], R['maintitle']) self.assertEqual(D['subplot_titles'], R['subplot_titles']) self.assertAlmostEqual(D['ymin'], R['ymin']) self.assertAlmostEqual(D['ymax'], R['ymax']) for d, r in zip(np.array(D['y']).flat, np.array(R['y']).flat): self.assertAlmostEqual(d, r) for d, r in zip(np.array(D['yerr']).flat, np.array(R['yerr']).flat): self.assertAlmostEqual(d, r)
def test1(self): df=DataFrame() df.read_tbl('data/suppression~subjectXgroupXageXcycleXphase.csv') ##df['RANDDATA'][42]='nan' R=df.validate({'GROUP' : lambda x: x in ['AA', 'AB', 'LAB'], 'SEX' : lambda x: x in [0,1], 'SUPPRESSION' : lambda x: x < 1000., 'RANDDATA' : lambda x: _isfloat(x), 'SUBJECT' : _isint}, verbose=False, report=False) self.assertTrue(R)
def test02(self): """using loftus and masson error bars""" # a simple plot df = DataFrame() df.read_tbl(r'data/words~ageXcondition.csv') aov = df.anova('WORDS', wfactors=['AGE', 'CONDITION']) aov.plot('WORDS', 'AGE', seplines='CONDITION', errorbars='ci', output_dir='output')
def test0(self): df=DataFrame() df.read_tbl('data/suppression~subjectXgroupXageXcycleXphase.csv') df['RANDDATA'][42]=0. R=df.validate({'GROUP' : lambda x: x in ['AA', 'AB', 'LAB'], 'SEX' : lambda x: x in [0], 'SUPPRESSION' : lambda x: x < 62., 'RANDDATA' : lambda x: x!=0, 'SUBJECT' : _isint}, verbose=False, report=False) self.assertFalse(R)
def test3(self): R = np.array( [[7.16666667, 6.5, 4., 3.22222222, 2.88888889, 1.55555556]]) df = DataFrame() df.read_tbl('data/error~subjectXtimeofdayXcourseXmodel_MISSING.csv') pt = df.pivot('ERROR', cols=['TIMEOFDAY', 'COURSE']) self.assertEqual(str(R.shape), str(pt.shape)) for r, L in zip(R.flatten(), pt.flatten()): self.assertAlmostEqual(r, L)
def test2(self): R = """\ GROUP=AA, GROUP=AA, GROUP=AB, GROUP=AB, GROUP=LAB, GROUP=LAB, AGE=old AGE=young AGE=old AGE=young AGE=old AGE=young ======================================================================= 22.188 9.813 29.188 10.041 34.141 11.875 """ df = DataFrame() df.read_tbl('data/suppression~subjectXgroupXageXcycleXphase.csv') pt = df.pivot('SUPPRESSION', cols=['GROUP', 'AGE']) df2 = pt.to_dataframe() self.assertEqual(str(df2),R)
def test2(self): R = [ 7.16666666667, 6.5, 4.0, 3.22222222222, 2.88888888889, 1.55555555556 ] df = DataFrame() df.read_tbl('data/error~subjectXtimeofdayXcourseXmodel_MISSING.csv') pt = df.pivot('ERROR', cols=['TIMEOFDAY', 'COURSE']) pt_flat = pt.flatten() for r, d in zip(R, pt_flat): self.assertAlmostEqual(r, d)
def test4(self): R = """\ avg(ERROR) TIMEOFDAY COURSE=C1 COURSE=C2 COURSE=C3 ============================================= T2 3.222 2.889 1.556 """ df = DataFrame() df.read_tbl('data/error~subjectXtimeofdayXcourseXmodel_MISSING.csv') pt = df.pivot('ERROR', ['TIMEOFDAY'], ['COURSE']) self.assertEqual(R, str(pt[-1:]))
def test5(self): R = """\ avg(ERROR) TIMEOFDAY COURSE=C1 ===================== T1 7.167 T2 3.222 """ df = DataFrame() df.read_tbl('data/error~subjectXtimeofdayXcourseXmodel_MISSING.csv') pt = df.pivot('ERROR', ['TIMEOFDAY'], ['COURSE']) self.assertEqual(R, str(pt[:, 0]))
def test2(self): R = [ 7.16666666667, 6.5, 4.0, 3.22222222222, 2.88888888889, 1.55555555556 ] df = DataFrame() df.read_tbl('data/error~subjectXtimeofdayXcourseXmodel_MISSING.csv') pt = df.pivot('ERROR', ['TIMEOFDAY', 'COURSE']) for r, L in zip(R, pt.flat): self.assertEqual('%.5f' % r, '%.5f' % L)