Skip to content

Commit 090de86

Browse files
committed
NF: new code to slice 4d or 5d data
1 parent d40473c commit 090de86

File tree

2 files changed

+36
-0
lines changed

2 files changed

+36
-0
lines changed

brainx/tests/test_util.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,17 @@
1717
# Functions
1818
#-----------------------------------------------------------------------------
1919

20+
def test_slice_data():
21+
subcond, blocks, subjects, nodes = 5, 10, 20, 4
22+
data_4d = np.ones((blocks, subjects, nodes, nodes))
23+
data_5d = np.ones((subcond, blocks, subjects, nodes, nodes))
24+
sym_4d = util.slice_data(data_4d, subjects - 1 , blocks - 1 )
25+
sym_5d = util.slice_data(data_5d, subjects -1 , blocks-1, subcond-1)
26+
npt.assert_equal(sym_4d.shape, (nodes, nodes))
27+
npt.assert_equal(sym_5d.shape, (nodes, nodes))
28+
npt.assert_raises(IndexError, util.slice_data, data_5d, subjects, blocks)
29+
30+
2031
def test_cost_size():
2132
n_nodes = 5
2233
npt.assert_warns(DeprecationWarning, util.cost_size, n_nodes)

brainx/util.py

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,31 @@
1414
#-----------------------------------------------------------------------------
1515
# Functions
1616
#-----------------------------------------------------------------------------
17+
def slice_data(data, sub, block, subcond=None):
18+
""" pull symmetric matrix from data block (4D or 5D)
19+
20+
Parameters
21+
----------
22+
data : numpy array
23+
4D array (block, sub, nnode, nnode)
24+
5D array (subcond, block, sub, nnode, nnode)
25+
sub : int
26+
int representing subject to index in data
27+
block : int
28+
int representing block to index in data
29+
subcond : int
30+
int representing optional subcondition from 5D array
31+
32+
Returns
33+
-------
34+
adjacency_matrix : numpy array
35+
symmetric numpy array (innode, nnode)
36+
"""
37+
if subcond:
38+
return data[subcond, block, sub]
39+
return data[block, sub]
40+
41+
1742
def format_matrix(data,s,b,lk,co,idc = [],costlist=[],nouptri = False):
1843
""" Function which formats matrix for a particular subject and particular block (thresholds, upper-tris it) so that we can make a graph object out of it
1944

0 commit comments

Comments
 (0)