def __init__(self, distance=0, *args, **kwargs): """Initialize `ReferencesAtlas` """ PyMVPAAtlas.__init__(self, *args, **kwargs) # sanity checks if not ('reference-atlas' in XMLBasedAtlas._children_tags(self.header)): raise XMLAtlasException( "ReferencesAtlas must refer to a some other atlas") referenceAtlasName = self.header["reference-atlas"].text # uff -- another evil import but we better use the factory method from mvpa.atlases.warehouse import Atlas self.__referenceAtlas = Atlas(filename=reuseAbsolutePath( self._filename, referenceAtlasName)) if self.__referenceAtlas.space != self.space or \ self.__referenceAtlas.spaceFlavor != self.spaceFlavor: raise XMLAtlasException( "Reference and original atlases should be in the same space") self.__referenceLevel = None self.setDistance(distance)
def _loadImages(self): # shortcut imagefile = self.header.images.imagefile #self.Nlevels = len(self._levels_by_id) # Set offset if defined in XML file # XXX: should just take one from the qoffset... now that one is # defined... this origin might be misleading actually self._origin = N.array( (0, 0, 0) ) if imagefile.attrib.has_key('offset'): self._origin = N.array( [int(x) for x in imagefile.get('offset').split(',')] ) # Load the image file which has labels if self._force_image_file is not None: imagefilename = self._force_image_file else: imagefilename = imagefile.text imagefilename = reuseAbsolutePath(self._filename, imagefilename) try: self._image = NiftiImage(imagefilename) except RuntimeError, e: raise RuntimeError, " Cannot open file %s due to %s" % (imagefilename, e)
def _loadImages(self): resolution = self._resolution header = self.header images = header.images # Load present images # XXX might be refactored to avoid duplication of # effort with PyMVPAAtlas ni_image = None resolutions = [] if self._force_image_file is None: imagefile_candidates = [ reuseAbsolutePath(self._filename, i.imagefile.text, force=True) for i in images] else: imagefile_candidates = [self._force_image_file] for imagefilename in imagefile_candidates: try: ni_image_ = NiftiImage(imagefilename, load=False) except RuntimeError, e: raise RuntimeError, " Cannot open file " + imagefilename resolution_ = ni_image_.pixdim[0] if resolution is None: # select this one if the best if ni_image is None or \ resolution_ < ni_image.pixdim[0]: ni_image = ni_image_ self._image_file = imagefilename else: if resolution_ == resolution: ni_image = ni_image_ self._image_file = imagefilename break else: resolutions += [resolution_]