Example #1
0
 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
Example #2
0
 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
Example #3
0
File: io.py Project: philouc/pyhrf
    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
Example #4
0
    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)
Example #5
0
    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)
Example #6
0
    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'])
Example #7
0
    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')
Example #8
0
 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')
Example #9
0
 def test_set_leaf(self):
     d = {}
     set_leaf(d, ['b1', 'b2', 'b3'], 'theLeaf')
Example #10
0
    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')
Example #11
0
 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')
Example #12
0
 def test_set_leaf(self):
     d = {}
     set_leaf(d, ['b1', 'b2', 'b3'], 'theLeaf')
Example #13
0
    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'])
Example #14
0
    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()
Example #15
0
    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!'
Example #16
0
File: io.py Project: philouc/pyhrf
    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