def test_merge_sparse_run_variables(layout1): dataset = load_variables(layout1, types='events', scan_length=480) runs = dataset.get_nodes('run') variables = [r.variables['RT'] for r in runs] n_rows = sum([len(c.values) for c in variables]) merged = merge_variables(variables) assert len(merged.values) == n_rows assert set(merged.index.columns) == set(variables[0].index.columns)
def test_merge_simple_variables(layout2): index = load_variables(layout2, types='sessions') subjects = index.get_nodes('subject') variables = [s.variables['panas_sad'] for s in subjects] n_rows = sum([len(c.values) for c in variables]) merged = merge_variables(variables) assert len(merged.values) == n_rows assert set(merged.index.columns) == set(variables[0].index.columns) assert variables[3].values.iloc[1] == merged.values.iloc[7]
def test_merge_densified_variables(layout1): SR = 10 dataset = load_variables(layout1, types='events', scan_length=480) runs = dataset.get_nodes('run') vars_ = [r.variables['RT'].to_dense(SR) for r in runs] dense = merge_variables(vars_) assert isinstance(dense, DenseRunVariable) n_rows = 480 * SR assert dense.values.shape == (len(runs) * n_rows, 1) for i in range(len(runs)): onset = i * n_rows offset = onset + n_rows run_vals = vars_[i].values dense_vals = dense.values.iloc[onset:offset].reset_index(drop=True) assert dense_vals.equals(run_vals)
def test_filter_simple_variable(layout2): dataset = load_variables(layout2, types=['scans']) sessions = dataset.get_nodes('session') variables = [s.variables['surroundings'] for s in sessions] merged = merge_variables(variables) assert merged.to_df().shape == (60, 9) filt = merged.filter({'acq': 'fullbrain'}) assert filt.to_df().shape == (40, 9) flt1 = merged.filter({'acq': 'fullbrain', 'subject': ['01', '02']}).to_df() assert flt1.shape == (8, 9) flt2 = merged.filter(query='acq=="fullbrain" and subject in ["01", "02"]') flt2 = flt2.to_df() assert flt1.equals(flt2) assert merged.filter({'nonexistent': 2}, strict=True) is None merged.filter({'acq': 'fullbrain'}, inplace=True) assert merged.to_df().shape == (40, 9)
def test_sparse_run_variable_to_dense(layout1): index = load_variables(layout1, types='events', scan_length=480) runs = index.get_nodes('run', {'subject': ['01', '02']}) for i, run in enumerate(runs): var = run.variables['RT'] dense = var.to_dense(20) # Check that all unique values are identical sparse_vals = set(np.unique(var.values.values)) | {0} dense_vals = set(np.unique(dense.values.values)) assert sparse_vals == dense_vals assert len(dense.values) > len(var.values) assert isinstance(dense, DenseRunVariable) assert dense.values.shape == (9600, 1) assert len(dense.run_info) == len(var.run_info) assert dense.source == 'events'