Skip to content

Commit 375b15e

Browse files
author
Jessica R. Cohen
committed
Added functions to util.py (format_matrix3 and store_metrics2) that are needed based on the structure of some projects
1 parent ace8468 commit 375b15e

File tree

1 file changed

+60
-0
lines changed

1 file changed

+60
-0
lines changed

brainx/util.py

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -162,6 +162,46 @@ def format_matrix2(data, s, sc, c, lk, co, idc=[],
162162
return ~(cmat == 0)
163163
return cmat
164164

165+
def format_matrix3(data, s, c, b, lk, co, idc=[],
166+
costlist=[], nouptri=False, asbool=True):
167+
""" Function which formats matrix for a particular subject and
168+
particular block (thresholds, upper-tris it) so that we can
169+
make a graph object out of it
170+
171+
Parameters
172+
----------
173+
data : numpy array
174+
full data array 5D (subcondition, condition, subject, node, node)
175+
s : int
176+
index of subject
177+
c : int
178+
index of condition
179+
b : int
180+
index of block
181+
lk : numpy array
182+
lookup table for thresholds at each possible cost
183+
co : float
184+
cost value to threshold at
185+
idc : float
186+
ideal cost
187+
costlist : list
188+
list of possible costs
189+
nouptri : bool
190+
False zeros out diag and below, True returns symmetric matrix
191+
asbool : bool
192+
If true returns boolean mask, otherwise returns thresholded w
193+
weighted matrix
194+
"""
195+
cmat = slice_data(data, s, b, c)
196+
th = cost2thresh2(co,s,c,b,lk,[],idc,costlist) #get the right threshold
197+
cmat = thresholded_arr(cmat,th,fill_val=0)
198+
if not nouptri:
199+
cmat = np.triu(cmat,1)
200+
if asbool:
201+
# return boolean mask
202+
return ~(cmat == 0)
203+
return cmat
204+
165205
def threshold_adjacency_matrix(adj_matrix, cost, uptri=False):
166206
"""threshold adj_matrix at cost
167207
@@ -317,6 +357,26 @@ def store_metrics(b, s, co, metd, arr):
317357

318358
for met_name, met_val in metd.iteritems():
319359
arr[idx][met_name] = met_val
360+
361+
362+
def store_metrics2(c, b, s, co, metd, arr):
363+
"""Store a set of metrics into a structured array
364+
c = condition
365+
b = block
366+
s = subject
367+
co = cost? float
368+
metd = dict of metrics
369+
arr : array?"""
370+
371+
if arr.ndim == 4:
372+
idx = c,b,s,co
373+
elif arr.ndim == 5:
374+
idx = c,b,s,co,slice(None)
375+
else:
376+
raise ValueError("only know how to handle 4 or 5-d arrays")
377+
378+
for met_name, met_val in metd.iteritems():
379+
arr[idx][met_name] = met_val
320380

321381

322382
def regular_lattice(n,k):

0 commit comments

Comments
 (0)