[ITK-users] SimpleITK and R wrapping problems (bugs?)
Mathew Guilfoyle
mrguilfoyle at gmail.com
Sun Apr 3 11:18:53 EDT 2016
Hi
I’ve been trying to get to grips with using the R wrapping to SimpleITK. On OS X 10.11 I’ve successfully built/compiled SimpleITK from source with Python and R wrapping turned on in Cmake. I can import the SimpleITK package into R 3.2.4 within Studio without any error reports.
The main difficulties I’m finding are around importing CT image volumes which are stored as a series of image slices within a single directory. Following the usual workflow I’ve tried in Python I start with:
reader = ImageSeriesReader()
this works ok but the ‘GetGDCMSeriesFileNames’ function is not exposed for the reader object via the $ operator. This is in contrast to the Python wrapping where this function is available as 'reader.GetGDCMSeriesFilenames()'
In R the ImageSeriesReader_GetGDCMSeriesFileNames() static function is available but does not work when supplied with a directory either as a R character vector or as a SimpleITK ‘VectorString’ object.
For the moment I have resorted to getting a list of the files with native R code. Passing this list as an argument to reader$SetFileNames() causes the R session to crash. Instead I’ve created a (SimpleITK) VectorString of appropriate length and then transfer the individual filenames from the R list within a loop, before finally using the reader$SetFileNames(VectorString) method. When I then run reader$Execute the DICOM image series is correctly read to an image object.
Next I need to do some initial image transformation based on certain fields of DICOM metadata. However, I’ve not been able to access this at all. The image$GetMetaDataKeys() function does not work, reporting the error:
Error in validObject(.Object) :
invalid class “_p_std__vectorT_std__string_std__allocatorT_std__string_t_t” object: invalid object for slot "ref" in class "_p_std__vectorT_std__string_std__allocatorT_std__string_t_t": got class "character", should be or extend class "externalptr"
Image$GetMetaData(key) also returns an error whatever key value I use (including DICOM keys that I know are included in the series), whether these are passed as as an R character string or SimpleITK VectorString.
I know that the metadata is being read, at least to a certain extent, because basic info like pixel spacing, image direction, origin etc are all present and correct, and accessible via their dedicated Get.. methods.
If I’m using these functions with incorrect arguments or committing some other error I would be grateful for any pointers.
Cheers
Mat
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/insight-users/attachments/20160403/410c20d2/attachment.html>
More information about the Insight-users
mailing list