def test_extract_sart_blocks_with_4_practice_and_survey(): df = get_csv_as_df('experiment', '104') blocks = compile_data.extract_sart_blocks(df, with_survey=True) # basic structure assert len(blocks) == 8 for b in blocks: assert isinstance(b, compile_data.pd.DataFrame) # number of trials assert len(blocks[0].index.values) == 84 assert len(blocks[1].index.values) == 84 assert len(blocks[2].index.values) == 84 assert len(blocks[3].index.values) == 84 assert len(blocks[4].index.values) == 84 assert len(blocks[5].index.values) == 84 assert len(blocks[6].index.values) == 84 assert len(blocks[7].index.values) == 74 # trial structure trial_type_mc = 'survey-multi-choice' trial_type_msmr = 'multi-stim-multi-response' b7 = blocks[7] b7_last_idx = b7.last_valid_index() b7_first_idx = b7.first_valid_index() assert b7.ix[b7_first_idx]['trial_type'] == trial_type_msmr assert b7.ix[b7_last_idx-1]['trial_type'] == trial_type_mc assert b7.ix[b7_last_idx]['trial_type'] == trial_type_mc
def test_summarize_sart_chunk(): pid = "011" df = get_csv_as_df('experiment', pid) blocks = compile_data.extract_sart_blocks(df, with_survey=True) # first block b1 = blocks[0] b1s = compile_data.summarize_sart_chunk(b1) assert b1s['anticipated'] == 0.0 assert b1s['accuracy'] == 0.731707317 assert b1s['effort'] == 4 assert b1s['discomfort'] == 5 assert b1s['ratings_time_min'] == 26.783333333 assert b1s['num_trials'] == 82 assert b1s['nogo_prev4_avg'] == 381.444444444 assert b1s['nogo_next4_avg'] == 391.875 # last block lb = blocks[-1] lbs = compile_data.summarize_sart_chunk(lb) assert lbs['num_trials'] == 68 assert lbs['anticipated'] == 0.014705882 assert lbs['accuracy'] == 0.911764706 assert lbs['effort'] == 3 assert lbs['discomfort'] == 5 assert lbs['ratings_time_min'] == 37.7
def test_extract_sart_blocks_with_2_practice(): # NOTE: tests out get_csv_as_dataframe() from compile_data csv_path = _csv_path('practice', '003') df = compile_data.get_csv_as_dataframe(csv_path) blocks = compile_data.extract_sart_blocks(df) assert len(blocks) == 2 for b in blocks: assert isinstance(b, compile_data.pd.DataFrame) # number of trials assert len(blocks[0].index.values) == 5 assert len(blocks[1].index.values) == 15
def test_extract_sart_blocks_with_4_practice(): df = get_csv_as_df('practice', 'fail1') blocks = compile_data.extract_sart_blocks(df) assert len(blocks) == 4 # number of trials assert len(blocks[0].index.values) == 29 assert len(blocks[1].index.values) == 72 assert len(blocks[2].index.values) == 72 assert len(blocks[3].index.values) == 72 for b in blocks: # class assert isinstance(b, compile_data.pd.DataFrame) # trials for idx, series in b.iterrows(): series['trial_type'] == 'multi-stim-multi-response'
def get_sart_trial_block(pid, block_index=0): df = get_csv_as_df('experiment', pid) blocks = compile_data.extract_sart_blocks(df, with_survey=True) b = blocks[block_index] trial_block = b.loc[b['trial_type'] == 'multi-stim-multi-response'] return trial_block