from pygiftiio import * import numpy # Read Gifti Image filename = '/path/to/file' image = gifti_read_image(fn, 1) # image is now of type GiftiImage # The _fields_ variable is populated with the same structure # as the C-based struct # Now we query the image to get data arrays, meta data, etc. print "Number of Data Arrays in Image = " + str(image.numDA) # Extract a dataarray from the Gifti Image based on its index. def get_da_from_index(im, ind): if ind = im.numDA: print "Index exceeds number of DA's in gifti image" # Most things are handled automatically by the ctypes wrapping. # However, in the case of pointers, you need to access the # contents of the pointer to get the right result return im.darray[ind].contents # Extract a dataarray from the Gifti Image based on its IntentCode def get_da_from_intent(im, intent): for i in xrange(im.numDA): # Intent code is stored in the DataArray struct da = im.darray[i].contents # The wrapping allows the intent codes to be represented as # integers as defined by the C-Macros or as the strings that # are replaced. if type(intent) == type(1): if da.intent == intent: # Grab the first DataArray that is the correct intent return da else: # If it's not an int, we have to look up the integer value in # the Intent Code dictionary if da.intent == GiftiIntentCode.intents[intent]: return da # Extract metadata from the GiftiImage OR a GiftiDataArray def get_metadata_from_image(im): metadata = im.meta # metadata is now of type GiftiMetaData. It has length, name, and value arrays. return metadata # Print all the metadata in the GiftiMetaData object def print_metadata(md): size = md.length for i in xrange(size): name = md.name[i] val = md.value[i] print str(name) + ": " + str(val) # Extract the Coordinate Transform(s) from a dataarray def get_coord_xform(da): dspace = da.coordsys.contents.dataspace xformspace = da.coordsys.contents.xformspace xform = da.coordsys.contents.xform xform_ar = numpy.array(xform) # make the list of values into an array xform_ar.shape = 4,4 # reshape the array into a valid transform matrix return xform_ar # Return a numpy array representing the transform