<div dir="ltr"><div>OK, it turns out there are a couple of issues. The first one is that static member functions aren't being included in the list of functions accessible via '$' operator. Not sure if yet whether this is an option we can turn on via swig configuration. The second error is caused by incomplete support for character vectors. The C layer is turning the c++ vectors into R vectors, but I forgot to include the typemap that stops the R part of the swig binding thinking that it is still a c++ vector pointer. You can include a temporary fix at the R level be rewriting the function as follows:<br><br>ImageSeriesReader_GetGDCMSeriesFileNames__SWIG_0 <- function (directory, useSeriesDetails, recursive, loadSequences, <br>    loadPrivateTags, .copy = FALSE) <br>{<br>    directory = as(directory, "character")<br>    useSeriesDetails = as.logical(useSeriesDetails)<br>    recursive = as.logical(recursive)<br>    loadSequences = as.logical(loadSequences)<br>    loadPrivateTags = as.logical(loadPrivateTags)<br>    ans = .Call("R_swig_ImageSeriesReader_GetGDCMSeriesFileNames__SWIG_0", <br>        directory, useSeriesDetails, recursive, loadSequences, <br>        loadPrivateTags, as.logical(.copy), PACKAGE = "SimpleITK")<br></div>    # comment out the following two lines<br><div>    #ans <- new("_p_std__vectorT_std__string_std__allocatorT_std__string_t_t", <br>    #    ref = ans)<br>    ans<br>}<br><br></div><div>and repeat for the other __SWIG_? functions that use a .Call <br></div><div><br></div><div>I'm not yet certain whether the fix needs to happen in the simpleITK side or in swig. <br></div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Apr 4, 2016 at 1:18 AM, Mathew Guilfoyle <span dir="ltr"><<a href="mailto:mrguilfoyle@gmail.com" target="_blank">mrguilfoyle@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word">Hi<div><br></div><div>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.</div><div><br></div><div>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:</div><div><br></div><div>reader = ImageSeriesReader()</div><div> </div><div>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()'</div><div><br></div><div>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.</div><div><br></div><div>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.</div><div><br></div><div>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:</div><div><div><br></div><div><i>Error in validObject(.Object) : </i></div><div><i>  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"</i></div></div><div><br></div><div>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.</div><div><br></div><div>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.</div><div><br></div><div>If I’m using these functions with incorrect arguments or committing some other error I would be grateful for any pointers.</div><div><br></div><div>Cheers</div><div>Mat</div></div><br>_____________________________________<br>
Powered by <a href="http://www.kitware.com" rel="noreferrer" target="_blank">www.kitware.com</a><br>
<br>
Visit other Kitware open-source projects at<br>
<a href="http://www.kitware.com/opensource/opensource.html" rel="noreferrer" target="_blank">http://www.kitware.com/opensource/opensource.html</a><br>
<br>
Kitware offers ITK Training Courses, for more information visit:<br>
<a href="http://www.kitware.com/products/protraining.php" rel="noreferrer" target="_blank">http://www.kitware.com/products/protraining.php</a><br>
<br>
Please keep messages on-topic and check the ITK FAQ at:<br>
<a href="http://www.itk.org/Wiki/ITK_FAQ" rel="noreferrer" target="_blank">http://www.itk.org/Wiki/ITK_FAQ</a><br>
<br>
Follow this link to subscribe/unsubscribe:<br>
<a href="http://public.kitware.com/mailman/listinfo/insight-users" rel="noreferrer" target="_blank">http://public.kitware.com/mailman/listinfo/insight-users</a><br>
<br></blockquote></div><br></div>