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)
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 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)
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