def test_orthogonalize_dense(collection): transform.Factor(collection, 'trial_type', sep=sep) # Store pre-orth variables needed for tests pg_pre = collection['trial_type/parametric gain'].to_dense(10) rt = collection['RT'].to_dense(10) # Orthogonalize and store result transform.Orthogonalize(collection, variables='trial_type/parametric gain', other='RT', dense=True, groupby=['run', 'subject']) pg_post = collection['trial_type/parametric gain'] # Verify that the to_dense() calls result in identical indexing ent_cols = ['subject', 'run'] assert pg_pre.to_df()[ent_cols].equals(rt.to_df()[ent_cols]) assert pg_post.to_df()[ent_cols].equals(rt.to_df()[ent_cols]) vals = np.c_[rt.values, pg_pre.values, pg_post.values] df = pd.DataFrame(vals, columns=['rt', 'pre', 'post']) groupby = rt.get_grouper(['run', 'subject']) pre_r = df.groupby(groupby).apply(lambda x: x.corr().iloc[0, 1]) post_r = df.groupby(groupby).apply(lambda x: x.corr().iloc[0, 2]) assert (pre_r > 0.2).any() assert (post_r < 0.0001).all()
def test_orthogonalize_sparse(collection): pg_pre = collection['parametric gain'].values rt = collection['RT'].values transform.Orthogonalize(collection, variables='parametric gain', other='RT', groupby=['run', 'subject']) pg_post = collection['parametric gain'].values vals = np.c_[rt.values, pg_pre.values, pg_post.values] df = pd.DataFrame(vals, columns=['rt', 'pre', 'post']) groupby = collection['RT'].get_grouper(['run', 'subject']) pre_r = df.groupby(groupby).apply(lambda x: x.corr().iloc[0, 1]) post_r = df.groupby(groupby).apply(lambda x: x.corr().iloc[0, 2]) assert (pre_r > 0.2).any() assert (post_r < 0.0001).all()