예제 #1
0
def test_parse():
    """Test .tab parsing
    """
    with ExperimentController(*std_args, stim_fs=44100, **std_kwargs) as ec:
        ec.identify_trial(ec_id='one', ttl_id=[0])
        ec.start_stimulus()
        ec.write_data_line('misc', 'trial one')
        ec.stop()
        ec.trial_ok()
        ec.write_data_line('misc', 'between trials')
        ec.identify_trial(ec_id='two', ttl_id=[1])
        ec.start_stimulus()
        ec.write_data_line('misc', 'trial two')
        ec.stop()
        ec.trial_ok()
        ec.write_data_line('misc', 'end of experiment')

    assert_raises(ValueError, read_tab, ec.data_fname, group_start='foo')
    assert_raises(ValueError, read_tab, ec.data_fname, group_end='foo')
    assert_raises(ValueError, read_tab, ec.data_fname, group_end='trial_id')
    assert_raises(RuntimeError, read_tab, ec.data_fname, group_end='misc')
    data = read_tab(ec.data_fname)
    keys = list(data[0].keys())
    assert_equal(len(keys), 6)
    for key in ['trial_id', 'flip', 'play', 'stop', 'misc', 'trial_ok']:
        assert_in(key, keys)
    assert_equal(len(data[0]['misc']), 1)
    assert_equal(len(data[1]['misc']), 1)
    data = read_tab(ec.data_fname, group_end=None)
    assert_equal(len(data[0]['misc']), 2)  # includes between-trials stuff
    assert_equal(len(data[1]['misc']), 2)
예제 #2
0
# -*- coding: utf-8 -*-
"""
============
Parsing demo
============

This example shows some of the functionality of ``read_tab``.
"""
# Author: Eric Larson <*****@*****.**>
#
# License: BSD (3-clause)

print(__doc__)

from os import path as op
import ast

import expyfun.analyze as ea

fname = op.join(op.dirname(__file__), 'sample.tab')  # from simple_experiment
data = ea.read_tab(fname)
print('Number of trials: %s' % len(data))
keys = list(data[0].keys())
print('Data keys:     %s\n' % keys)
for di, d in enumerate(data):
    if d['trial_id'][0][0] == 'multi-tone':
        print('Trial %s multi-tone' % (di + 1))
        targs = ast.literal_eval(d['multi-tone trial'][0][0])
        presses = [int(k[0]) for k in d['keypress']]
        print('  Targs: %s\n  Press: %s' % (targs, presses))