Exemple #1
0
    def appendParametersToDOMTree(self, doc, node):
        if self.cuboid is not None:
            if 0:
                print ""
                print "Appending to DOM tree:"
                print "- parameters :"
                print self.parameters
                print "- cuboid descrip:"
                print self.cuboid.descrip()
            lu = max([self.longest_underscore(an) for an in self.cuboid.getAxesNames()])
            lud = 0
            for d in self.cuboid.getAxesDomains():
                if "str" in d.dtype.name:
                    lud = max([self.longest_underscore(v) for v in d])
            sep = "_" * (max([lud, lu]) + 1)

            if self.cuboid.is_nii_writable():
                fn0 = op.join(self.outDir, self.parameters["name"] + ".nii")
                eaxes, fns = writexndarrayToNiftii(self.cuboid, fn0, sep=sep)
                fns = fns.values()
            elif self.cuboid.getNbDims() <= 2:
                eaxes = []
                fns = [op.join(self.outDir, self.parameters["name"] + ".csv")]
                self.cuboid.save(fns[0])
            else:
                eaxes = []
                fns = [op.join(self.outDir, self.parameters["name"] + ".h5")]
                self.cuboid.save(fns[0])

            self.parameters["dataFiles"] = fns
            self.parameters["explodedAxes"] = eaxes
            # print 'eaxes:', eaxes
            XMLParamDrivenClass.appendParametersToDOMTree(self, doc, node)
Exemple #2
0
    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
Exemple #3
0
    def appendParametersToDOMTree(self, doc, node):
        if self.savexndarray:
            if self.cuboid is not None:
                if 0:
                    print ""
                    print "Appending to DOM tree:"
                    print "- parameters :"
                    print self.parameters
                    print "- cuboid descrip:"
                    print self.cuboid.descrip()
                sep = "_"

                if self.cuboid.is_nii_writable():
                    fn0 = op.join(self.outDir, self.parameters["name"] + ".nii")
                    pyhrf.verbose(3, "Writing cuboid for %s ..." % self.parameters["name"])
                    eaxes, slicefns = writexndarrayToNiftii(self.cuboid, fn0, sep=sep, meta_data=self.meta_data)
                    pyhrf.verbose(3, "Written cuboid for %s" % self.parameters["name"])
                elif self.cuboid.getNbDims() <= 2:
                    eaxes = []
                    fn = op.join(self.outDir, self.parameters["name"] + ".csv")
                    # slicefns = { ('_','_') : fn }
                    slicefns = {None: fn}
                    self.cuboid.save(fn)
                else:
                    eaxes = []
                    fn = op.join(self.outDir, self.parameters["name"] + ".h5")
                    # slicefns = { ('_','_') : fn }
                    slicefns = {None: fn}
                    self.cuboid.save(fn)

                for s, f in slicefns.iteritems():
                    if self.useRelativePath:
                        slicefns[s] = op.join("./", op.basename(f))
                    else:
                        slicefns[s] = op.abspath(f)

                self.parameters["dataFiles"] = slicefns
                self.parameters["explodedAxes"] = eaxes
                # print 'eaxes:', eaxes
                XMLParamDrivenClass.appendParametersToDOMTree(self, doc, node)
            else:
                raise Exception("No cuboid to save")
        else:
            XMLParamDrivenClass.appendParametersToDOMTree(self, doc, node)
Exemple #4
0
    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