|
![](https://seccdn.libravatar.org/avatar/782cac864b311ac07269bbcb1ba21fda67bb5c7b6e6f004d3aafcb3f02392433?s=16&d=retro) |
f172162 |
from pygiftiio import *
|
|
![](https://seccdn.libravatar.org/avatar/782cac864b311ac07269bbcb1ba21fda67bb5c7b6e6f004d3aafcb3f02392433?s=16&d=retro) |
f172162 |
from ctypes import *
|
|
![](https://seccdn.libravatar.org/avatar/782cac864b311ac07269bbcb1ba21fda67bb5c7b6e6f004d3aafcb3f02392433?s=16&d=retro) |
f172162 |
import numpy
|
|
![](https://seccdn.libravatar.org/avatar/782cac864b311ac07269bbcb1ba21fda67bb5c7b6e6f004d3aafcb3f02392433?s=16&d=retro) |
f172162 |
|
|
![](https://seccdn.libravatar.org/avatar/782cac864b311ac07269bbcb1ba21fda67bb5c7b6e6f004d3aafcb3f02392433?s=16&d=retro) |
f172162 |
# setup
|
|
![](https://seccdn.libravatar.org/avatar/782cac864b311ac07269bbcb1ba21fda67bb5c7b6e6f004d3aafcb3f02392433?s=16&d=retro) |
f172162 |
image = GiftiImage()
|
|
![](https://seccdn.libravatar.org/avatar/782cac864b311ac07269bbcb1ba21fda67bb5c7b6e6f004d3aafcb3f02392433?s=16&d=retro) |
f172162 |
# CTypes provides constructors for pointer-based types. This is important
|
|
![](https://seccdn.libravatar.org/avatar/782cac864b311ac07269bbcb1ba21fda67bb5c7b6e6f004d3aafcb3f02392433?s=16&d=retro) |
f172162 |
# to the initialization of the various members of the structs we need
|
|
![](https://seccdn.libravatar.org/avatar/782cac864b311ac07269bbcb1ba21fda67bb5c7b6e6f004d3aafcb3f02392433?s=16&d=retro) |
f172162 |
# to write via the library.
|
|
![](https://seccdn.libravatar.org/avatar/782cac864b311ac07269bbcb1ba21fda67bb5c7b6e6f004d3aafcb3f02392433?s=16&d=retro) |
f172162 |
image.version = c_char_p("version_string")
|
|
![](https://seccdn.libravatar.org/avatar/782cac864b311ac07269bbcb1ba21fda67bb5c7b6e6f004d3aafcb3f02392433?s=16&d=retro) |
f172162 |
image.darray = POINTER(POINTER(GiftiDataArray))()
|
|
![](https://seccdn.libravatar.org/avatar/782cac864b311ac07269bbcb1ba21fda67bb5c7b6e6f004d3aafcb3f02392433?s=16&d=retro) |
f172162 |
image.data = c_void_p(None)
|
|
![](https://seccdn.libravatar.org/avatar/782cac864b311ac07269bbcb1ba21fda67bb5c7b6e6f004d3aafcb3f02392433?s=16&d=retro) |
f172162 |
image.numDA = c_int(0)
|
|
![](https://seccdn.libravatar.org/avatar/782cac864b311ac07269bbcb1ba21fda67bb5c7b6e6f004d3aafcb3f02392433?s=16&d=retro) |
f172162 |
image.swapped = c_int(0)
|
|
![](https://seccdn.libravatar.org/avatar/782cac864b311ac07269bbcb1ba21fda67bb5c7b6e6f004d3aafcb3f02392433?s=16&d=retro) |
f172162 |
image.compressed = c_int(0)
|
|
![](https://seccdn.libravatar.org/avatar/782cac864b311ac07269bbcb1ba21fda67bb5c7b6e6f004d3aafcb3f02392433?s=16&d=retro) |
f172162 |
|
|
![](https://seccdn.libravatar.org/avatar/782cac864b311ac07269bbcb1ba21fda67bb5c7b6e6f004d3aafcb3f02392433?s=16&d=retro) |
f172162 |
# type(im) = GiftiImage
|
|
![](https://seccdn.libravatar.org/avatar/782cac864b311ac07269bbcb1ba21fda67bb5c7b6e6f004d3aafcb3f02392433?s=16&d=retro) |
f172162 |
# type(ver) = str
|
|
![](https://seccdn.libravatar.org/avatar/782cac864b311ac07269bbcb1ba21fda67bb5c7b6e6f004d3aafcb3f02392433?s=16&d=retro) |
f172162 |
def set_version(im, ver):
|
|
![](https://seccdn.libravatar.org/avatar/782cac864b311ac07269bbcb1ba21fda67bb5c7b6e6f004d3aafcb3f02392433?s=16&d=retro) |
f172162 |
image.version = c_char_p(ver)
|
|
![](https://seccdn.libravatar.org/avatar/782cac864b311ac07269bbcb1ba21fda67bb5c7b6e6f004d3aafcb3f02392433?s=16&d=retro) |
f172162 |
|
|
![](https://seccdn.libravatar.org/avatar/782cac864b311ac07269bbcb1ba21fda67bb5c7b6e6f004d3aafcb3f02392433?s=16&d=retro) |
f172162 |
# type(im) = GiftiImage
|
|
![](https://seccdn.libravatar.org/avatar/782cac864b311ac07269bbcb1ba21fda67bb5c7b6e6f004d3aafcb3f02392433?s=16&d=retro) |
f172162 |
# type(numDA) = int
|
|
![](https://seccdn.libravatar.org/avatar/782cac864b311ac07269bbcb1ba21fda67bb5c7b6e6f004d3aafcb3f02392433?s=16&d=retro) |
f172162 |
def set_numDA(im, numDA):
|
|
![](https://seccdn.libravatar.org/avatar/782cac864b311ac07269bbcb1ba21fda67bb5c7b6e6f004d3aafcb3f02392433?s=16&d=retro) |
f172162 |
im.numDA = c_int(numDA)
|
|
![](https://seccdn.libravatar.org/avatar/782cac864b311ac07269bbcb1ba21fda67bb5c7b6e6f004d3aafcb3f02392433?s=16&d=retro) |
f172162 |
|
|
![](https://seccdn.libravatar.org/avatar/782cac864b311ac07269bbcb1ba21fda67bb5c7b6e6f004d3aafcb3f02392433?s=16&d=retro) |
f172162 |
# type(im) = GiftiImage
|
|
![](https://seccdn.libravatar.org/avatar/782cac864b311ac07269bbcb1ba21fda67bb5c7b6e6f004d3aafcb3f02392433?s=16&d=retro) |
f172162 |
# type(md) = GiftiMetaData
|
|
![](https://seccdn.libravatar.org/avatar/782cac864b311ac07269bbcb1ba21fda67bb5c7b6e6f004d3aafcb3f02392433?s=16&d=retro) |
f172162 |
def set_meta_data(im, md):
|
|
![](https://seccdn.libravatar.org/avatar/782cac864b311ac07269bbcb1ba21fda67bb5c7b6e6f004d3aafcb3f02392433?s=16&d=retro) |
f172162 |
im.meta = md
|
|
![](https://seccdn.libravatar.org/avatar/782cac864b311ac07269bbcb1ba21fda67bb5c7b6e6f004d3aafcb3f02392433?s=16&d=retro) |
f172162 |
|
|
![](https://seccdn.libravatar.org/avatar/782cac864b311ac07269bbcb1ba21fda67bb5c7b6e6f004d3aafcb3f02392433?s=16&d=retro) |
f172162 |
# type(im) = GiftiImage
|
|
![](https://seccdn.libravatar.org/avatar/782cac864b311ac07269bbcb1ba21fda67bb5c7b6e6f004d3aafcb3f02392433?s=16&d=retro) |
f172162 |
# type(da) = GiftiDataArray
|
|
![](https://seccdn.libravatar.org/avatar/782cac864b311ac07269bbcb1ba21fda67bb5c7b6e6f004d3aafcb3f02392433?s=16&d=retro) |
f172162 |
def add_data_array(im, da):
|
|
![](https://seccdn.libravatar.org/avatar/782cac864b311ac07269bbcb1ba21fda67bb5c7b6e6f004d3aafcb3f02392433?s=16&d=retro) |
f172162 |
cur_numda = im.numDA
|
|
![](https://seccdn.libravatar.org/avatar/782cac864b311ac07269bbcb1ba21fda67bb5c7b6e6f004d3aafcb3f02392433?s=16&d=retro) |
f172162 |
|
|
![](https://seccdn.libravatar.org/avatar/782cac864b311ac07269bbcb1ba21fda67bb5c7b6e6f004d3aafcb3f02392433?s=16&d=retro) |
f172162 |
# Create a pointer to the new dataarray
|
|
![](https://seccdn.libravatar.org/avatar/782cac864b311ac07269bbcb1ba21fda67bb5c7b6e6f004d3aafcb3f02392433?s=16&d=retro) |
f172162 |
da_ptr = pointer(da.data)
|
|
![](https://seccdn.libravatar.org/avatar/782cac864b311ac07269bbcb1ba21fda67bb5c7b6e6f004d3aafcb3f02392433?s=16&d=retro) |
f172162 |
# Grab the pointer to the image's dataarrays
|
|
![](https://seccdn.libravatar.org/avatar/782cac864b311ac07269bbcb1ba21fda67bb5c7b6e6f004d3aafcb3f02392433?s=16&d=retro) |
f172162 |
ptr = image.darray
|
|
![](https://seccdn.libravatar.org/avatar/782cac864b311ac07269bbcb1ba21fda67bb5c7b6e6f004d3aafcb3f02392433?s=16&d=retro) |
f172162 |
|
|
![](https://seccdn.libravatar.org/avatar/782cac864b311ac07269bbcb1ba21fda67bb5c7b6e6f004d3aafcb3f02392433?s=16&d=retro) |
f172162 |
# Create a new dataarray array pointer
|
|
![](https://seccdn.libravatar.org/avatar/782cac864b311ac07269bbcb1ba21fda67bb5c7b6e6f004d3aafcb3f02392433?s=16&d=retro) |
f172162 |
ar = (POINTER(GiftiDataArray)*(cur_numda+1))()
|
|
![](https://seccdn.libravatar.org/avatar/782cac864b311ac07269bbcb1ba21fda67bb5c7b6e6f004d3aafcb3f02392433?s=16&d=retro) |
f172162 |
# We need to cast the resulting pointer for use by C
|
|
![](https://seccdn.libravatar.org/avatar/782cac864b311ac07269bbcb1ba21fda67bb5c7b6e6f004d3aafcb3f02392433?s=16&d=retro) |
f172162 |
ar = cast(ar, POINTER(POINTER(GiftiDataArray)))
|
|
![](https://seccdn.libravatar.org/avatar/782cac864b311ac07269bbcb1ba21fda67bb5c7b6e6f004d3aafcb3f02392433?s=16&d=retro) |
f172162 |
|
|
![](https://seccdn.libravatar.org/avatar/782cac864b311ac07269bbcb1ba21fda67bb5c7b6e6f004d3aafcb3f02392433?s=16&d=retro) |
f172162 |
# Copy all of the current da's to the new array. This just copies the pointers!
|
|
![](https://seccdn.libravatar.org/avatar/782cac864b311ac07269bbcb1ba21fda67bb5c7b6e6f004d3aafcb3f02392433?s=16&d=retro) |
f172162 |
for i in xrange(num_da):
|
|
![](https://seccdn.libravatar.org/avatar/782cac864b311ac07269bbcb1ba21fda67bb5c7b6e6f004d3aafcb3f02392433?s=16&d=retro) |
f172162 |
ar[i] = im.darray[i]
|
|
![](https://seccdn.libravatar.org/avatar/782cac864b311ac07269bbcb1ba21fda67bb5c7b6e6f004d3aafcb3f02392433?s=16&d=retro) |
f172162 |
|
|
![](https://seccdn.libravatar.org/avatar/782cac864b311ac07269bbcb1ba21fda67bb5c7b6e6f004d3aafcb3f02392433?s=16&d=retro) |
f172162 |
# Add the new data array to the image's data
|
|
![](https://seccdn.libravatar.org/avatar/782cac864b311ac07269bbcb1ba21fda67bb5c7b6e6f004d3aafcb3f02392433?s=16&d=retro) |
f172162 |
ar[num_da] = da_ptr
|
|
![](https://seccdn.libravatar.org/avatar/782cac864b311ac07269bbcb1ba21fda67bb5c7b6e6f004d3aafcb3f02392433?s=16&d=retro) |
f172162 |
|
|
![](https://seccdn.libravatar.org/avatar/782cac864b311ac07269bbcb1ba21fda67bb5c7b6e6f004d3aafcb3f02392433?s=16&d=retro) |
f172162 |
# Reassign the pointer
|
|
![](https://seccdn.libravatar.org/avatar/782cac864b311ac07269bbcb1ba21fda67bb5c7b6e6f004d3aafcb3f02392433?s=16&d=retro) |
f172162 |
im.darray = ar
|
|
![](https://seccdn.libravatar.org/avatar/782cac864b311ac07269bbcb1ba21fda67bb5c7b6e6f004d3aafcb3f02392433?s=16&d=retro) |
f172162 |
|
|
![](https://seccdn.libravatar.org/avatar/782cac864b311ac07269bbcb1ba21fda67bb5c7b6e6f004d3aafcb3f02392433?s=16&d=retro) |
f172162 |
# Tell the image it has an extra DA now
|
|
![](https://seccdn.libravatar.org/avatar/782cac864b311ac07269bbcb1ba21fda67bb5c7b6e6f004d3aafcb3f02392433?s=16&d=retro) |
f172162 |
cur_numda += 1
|
|
![](https://seccdn.libravatar.org/avatar/782cac864b311ac07269bbcb1ba21fda67bb5c7b6e6f004d3aafcb3f02392433?s=16&d=retro) |
f172162 |
im.numDA = c_int(cur_numda)
|
|
![](https://seccdn.libravatar.org/avatar/782cac864b311ac07269bbcb1ba21fda67bb5c7b6e6f004d3aafcb3f02392433?s=16&d=retro) |
f172162 |
|
|
![](https://seccdn.libravatar.org/avatar/782cac864b311ac07269bbcb1ba21fda67bb5c7b6e6f004d3aafcb3f02392433?s=16&d=retro) |
f172162 |
# type(da) = GiftiDataArray
|
|
![](https://seccdn.libravatar.org/avatar/782cac864b311ac07269bbcb1ba21fda67bb5c7b6e6f004d3aafcb3f02392433?s=16&d=retro) |
f172162 |
# type(axis) = int
|
|
![](https://seccdn.libravatar.org/avatar/782cac864b311ac07269bbcb1ba21fda67bb5c7b6e6f004d3aafcb3f02392433?s=16&d=retro) |
f172162 |
# type(val) = int
|
|
![](https://seccdn.libravatar.org/avatar/782cac864b311ac07269bbcb1ba21fda67bb5c7b6e6f004d3aafcb3f02392433?s=16&d=retro) |
f172162 |
def set_da_dim(da, axis, val):
|
|
![](https://seccdn.libravatar.org/avatar/782cac864b311ac07269bbcb1ba21fda67bb5c7b6e6f004d3aafcb3f02392433?s=16&d=retro) |
f172162 |
# Simple setter. However, the axis variable here is a
|
|
![](https://seccdn.libravatar.org/avatar/782cac864b311ac07269bbcb1ba21fda67bb5c7b6e6f004d3aafcb3f02392433?s=16&d=retro) |
f172162 |
# python array index (as the da dims is an array)
|
|
![](https://seccdn.libravatar.org/avatar/782cac864b311ac07269bbcb1ba21fda67bb5c7b6e6f004d3aafcb3f02392433?s=16&d=retro) |
f172162 |
# To properly assign the value, the val variable must
|
|
![](https://seccdn.libravatar.org/avatar/782cac864b311ac07269bbcb1ba21fda67bb5c7b6e6f004d3aafcb3f02392433?s=16&d=retro) |
f172162 |
# be usable by C, so we must form a c_int type.
|
|
![](https://seccdn.libravatar.org/avatar/782cac864b311ac07269bbcb1ba21fda67bb5c7b6e6f004d3aafcb3f02392433?s=16&d=retro) |
f172162 |
# This is true for all Setters.
|
|
![](https://seccdn.libravatar.org/avatar/782cac864b311ac07269bbcb1ba21fda67bb5c7b6e6f004d3aafcb3f02392433?s=16&d=retro) |
f172162 |
da.dims[axis] = c_int(val)
|
|
![](https://seccdn.libravatar.org/avatar/782cac864b311ac07269bbcb1ba21fda67bb5c7b6e6f004d3aafcb3f02392433?s=16&d=retro) |
f172162 |
|
|
![](https://seccdn.libravatar.org/avatar/782cac864b311ac07269bbcb1ba21fda67bb5c7b6e6f004d3aafcb3f02392433?s=16&d=retro) |
f172162 |
# type(filename) = string
|
|
![](https://seccdn.libravatar.org/avatar/782cac864b311ac07269bbcb1ba21fda67bb5c7b6e6f004d3aafcb3f02392433?s=16&d=retro) |
f172162 |
# type(im) = GiftiImage
|
|
![](https://seccdn.libravatar.org/avatar/782cac864b311ac07269bbcb1ba21fda67bb5c7b6e6f004d3aafcb3f02392433?s=16&d=retro) |
f172162 |
def write_image(filename, im):
|
|
![](https://seccdn.libravatar.org/avatar/782cac864b311ac07269bbcb1ba21fda67bb5c7b6e6f004d3aafcb3f02392433?s=16&d=retro) |
f172162 |
return gifti_write_image, im, filename, 1)
|