def test_get_leaf(self): d = {} set_leaf(d, ['b1', 'b2', 'b3.1'], 'theLeaf1') set_leaf(d, ['b1', 'b2', 'b3.2'], 'theLeaf2') l1 = get_leaf(d, ['b1', 'b2', 'b3.1']) l2 = get_leaf(d, ['b1', 'b2', 'b3.2']) return l2
def __init__(self, parameters=None, xmlHandler=NumpyXMLHandler(), xmlLabel=None, xmlComment=None): XMLParamDrivenClass.__init__(self, parameters, xmlHandler, xmlLabel, xmlComment) clabel = self.parameters["name"] ad = self.parameters["domains"] an = self.parameters["orientation"] vlab = self.parameters["value_label"] fl = self.parameters["dataFiles"] eaxes = self.parameters["explodedAxes"] self.outDir = "./" # print '' # print 'clabel:', clabel # print 'eaxes :', eaxes # print 'an:', an if len(fl) > 0: ed = dict(zip(eaxes, [ad[ea] for ea in eaxes])) if len(eaxes) > 0: iaxes = list(set(an).difference(eaxes)) else: iaxes = an idomains = dict(zip(iaxes, [ad[ia] for ia in iaxes])) ctree = {} if 0: print "fl:", fl print "id:", idomains print "iaxes:", iaxes print "ad:", ad print "ed:", ed print "eaxes:", eaxes if len(eaxes) > 0: for fn in fl: n = os.path.splitext(os.path.basename(fn))[0] blabels, bvals = self.slice_idx_from_filename(n, clabel) if 0: print "blabels:", blabels print "bvals:", bvals print "fn:", fn cdata = self.load_cuboid(fn, iaxes, vlab, idomains) # print 'ctree:' # print ctree # print 'cdata:', cdata set_leaf(ctree, bvals, cdata) self.cuboid = tree_to_cuboid(ctree, branchLabels=blabels) else: self.cuboid = self.load_cuboid(fl[0], iaxes, vlab, idomains) self.cuboid.set_orientation(an) else: self.cuboid = None
def test_rearrange(self): d1 = {} set_leaf(d1, ['1', '2.1', 'o1'], 'c1') set_leaf(d1, ['1', '2.1', 'o2'], 'c2') set_leaf(d1, ['1', '2.2', 'o1'], 'c3') set_leaf(d1, ['1', '2.2', 'o2'], 'c4') blabels = ['p1', 'p2', 'outname'] nblabels = ['outname', 'p1', 'p2'] tree_rearrange(d1, blabels, nblabels)
def test_tree_to_xndarray(self): from pyhrf.ndarray import xndarray, tree_to_xndarray from pyhrf.tools import set_leaf d1 = {} set_leaf(d1, ['1', '2.1', '3.1'], xndarray(np.array([1]))) set_leaf(d1, ['1', '2.1', '3.2'], xndarray(np.array([2]))) set_leaf(d1, ['1', '2.2', '3.1'], xndarray(np.array([3]))) set_leaf(d1, ['1', '2.2', '3.2'], xndarray(np.array([3.1]))) d2 = {} set_leaf(d2, ['1', '2.1', '3.1'], xndarray(np.array([10]))) set_leaf(d2, ['1', '2.1', '3.2'], xndarray(np.array([11]))) set_leaf(d2, ['1', '2.2', '3.1'], xndarray(np.array([12]))) set_leaf(d2, ['1', '2.2', '3.2'], xndarray(np.array([13]))) d = {'d1': d1, 'd2': d2} labels = ['case', 'p1', 'p2', 'p3'] c = tree_to_xndarray(d, labels) self.assertEqual(c.data.shape, (2, 1, 2, 2, 1)) npt.assert_array_equal(c.axes_domains['case'], ['d1', 'd2']) npt.assert_array_equal(c.axes_domains['p1'], ['1']) npt.assert_array_equal(c.axes_domains['p2'], ['2.1', '2.2']) npt.assert_array_equal(c.axes_domains['p3'], ['3.1', '3.2'])
def test_stack_trees(self): d1 = {} set_leaf(d1, ['b1', 'b2.1', 'b3.1'], 'd1Leaf1') set_leaf(d1, ['b1', 'b2.1', 'b3.2'], 'd1Leaf2') set_leaf(d1, ['b1', 'b2.2', 'b3.3'], 'd1Leaf3') d2 = {} set_leaf(d2, ['b1', 'b2.1', 'b3.1'], 'd2Leaf1') set_leaf(d2, ['b1', 'b2.1', 'b3.2'], 'd2Leaf2') set_leaf(d2, ['b1', 'b2.2', 'b3.3'], 'd2Leaf3')
def test_walk_branches(self): d = {} set_leaf(d, ['b1', 'b2.1', 'b3.1'], 'theLeaf1') set_leaf(d, ['b1', 'b2.1', 'b3.2'], 'theLeaf2') set_leaf(d, ['b1', 'b2.2', 'b3.3'], 'theLeaf3')
def test_set_leaf(self): d = {} set_leaf(d, ['b1', 'b2', 'b3'], 'theLeaf')
def set_option(self, option_def, option_value): set_leaf(self.options, option_def, option_value) if option_def == ('view_mode',): self.switch_color_dialog() self.on_draw()
def outputResults_old(self, results, output_dir, filter='.\A', historyFlag=False): """ Return a dictionnary mapping output names to cuboid objects """ from pyhrf.boldsynth.spatialconfig import xndarrayMapper1D filter = re.compile(filter) pyhrf.verbose(1,'Building outputs ...') pyhrf.verbose(6, 'results :') pyhrf.verbose.printDict(6, results, exclude=['xmlHandler']) for i,r in enumerate(results): # print 'i:', i # print 'r:', r if r[1] is None: results.pop(i) nbROI = len(results) if nbROI == 0: #Nothing ... print 'No result found, everything crashed?' return None pyhrf.verbose(1, '%s ROI(s)' %(nbROI)) resultTree = {} roiMapperTree = {} target_shape = results[0][0].spatial_shape meta_data = results[0][0].meta_obj if len(target_shape) == 3: #Volumic data: targetAxes = MRI3Daxes#['axial','coronal', 'sagittal'] else: #surfacic targetAxes = ['voxel'] pyhrf.verbose(1,'Get each ROI output ...') for roiData,result,report in results: roiId = roiData.get_roi_id() roiMapper = xndarrayMapper1D(maskToMapping(roiData.roiMask==roiId), target_shape, targetAxes, 'voxel') if report == 'ok': if not isinstance(result, dict): outs = result.getOutputs() else: outs = result set_leaf(resultTree,[roiId], outs) set_leaf(roiMapperTree,[roiId], roiMapper) else: pyhrf.verbose(1, '-> Sampling crashed, roi %d!' %roiId) pyhrf.verbose(2, report) if len(resultTree) == 0: return None pyhrf.verbose(1,'Joining outputs ...') outputs = {} outputs = stack_trees(resultTree.values()) roiList = resultTree.keys() topop = [] for on, cubList in outputs.iteritems(): pyhrf.verbose(4, "Treating output: " + on + "...") if not filter.match(on): try: outputs[on] = self.joinOutputs(cubList, roiList, roiMapperTree) except Exception, e: print 'Could not join outputs for', on print 'Exception was:' print e topop.append(on) else: print on, 'filtered!'
def __init__(self, parameters=None, xmlHandler=NumpyXMLHandler(), xmlLabel=None, xmlComment=None): if 0: print "xndarrayXml2.__init__ ..." XMLParamDrivenClass.__init__(self, parameters, xmlHandler, xmlLabel, xmlComment) clabel = self.parameters["name"] ad = self.parameters["domains"] an = self.parameters["orientation"] vlab = self.parameters["value_label"] fl = self.parameters["dataFiles"] eaxes = self.parameters["explodedAxes"] self.outDir = "./" self.meta_data = None # print '' # print 'clabel:', clabel # print 'eaxes :', eaxes # print 'an:', an if len(fl) > 0 and self.loadxndarray: ed = dict(zip(eaxes, [ad[ea] for ea in eaxes])) if len(eaxes) > 0: iaxes = [] for a in an: if a not in eaxes: iaxes.append(a) # iaxes = list(set(an).difference(eaxes)) else: iaxes = an idomains = dict(zip(iaxes, [ad[ia] for ia in iaxes])) ctree = {} if 0: print "fl:", fl print "id:", idomains print "iaxes:", iaxes print "ad:", ad print "ed:", ed print "eaxes:", eaxes if len(eaxes) > 0: for slice, fn in fl.iteritems(): slice = list(slice) if 0: print "slice:", slice print "fn:", fn if slice is not None: if "_" in slice: slice.remove("_") if "_" in slice: slice.remove("_") cdata = self.load_cuboid(fn, iaxes, vlab, idomains) # print 'ctree:' # print ctree # print 'cdata:', cdata set_leaf(ctree, list(slice), cdata) self.cuboid = tree_to_cuboid(ctree, branchLabels=eaxes) else: self.cuboid = self.load_cuboid(fl.values()[0], iaxes, vlab, idomains) self.cuboid.set_orientation(an) else: self.cuboid = None self.useRelativePath = False