<div dir="ltr">If you are trying to avoid IO, and the other packages already deal with streams, an option may be to stream into a numpy array + a python metadata structure, and convert that to a SimpleITK image. Obviously will be a little messy and incur a memory overhead, but could avoid disk IO.</div><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Oct 27, 2016 at 2:37 AM, Lowekamp, Bradley (NIH/NLM/LHC) [C] <span dir="ltr"><<a href="mailto:blowekamp@mail.nih.gov" target="_blank">blowekamp@mail.nih.gov</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi,<br>
<br>
Have you done a performance comparison? These other libraries may just download and cache the files, before doing file IO.<br>
<br>
I recall there was a URL/HTTP based ITK ImageIO, but that just downloaded the files and then use the actual file ImageIO. It was wrapped in a nice package to enable seamless passing of “http” URLS as filename strings to ITK.<br>
<br>
HTH,<br>
Brad<br>
<div><div class="h5"><br>
> On Oct 26, 2016, at 11:26 AM, Brian E Chapman <<a href="mailto:Brian.Chapman@utah.edu">Brian.Chapman@utah.edu</a>> wrote:<br>
><br>
> Ziv,<br>
><br>
> Thanks for your reply and the pointer to opneigtlink. Our main motivation is speed: just trying to save the write-to-disk/read-from-disk costs. Using PyDICOM we can read directly from Girder via streams and I believe we also can with nibabel. But ultimately our processing will be done with ITK and I was hoping to have SimpleITK so I was hoping to avoid all the challenges of reading in one format, passing to simpleitk and trying to keep track of all the meta data appropriately in the process.<br>
><br>
> Brian<br>
><br>
> ------<br>
> Brian E. Chapman, Ph.D.<br>
> Associate Professor<br>
> Department of Radiology and Imaging Sciences<br>
> University of Utah<br>
><br>
>> On Oct 26, 2016, at 8:22 AM, Yaniv, Ziv Rafael (NIH/NLM/LHC) [C] <<a href="mailto:zivrafael.yaniv@nih.gov">zivrafael.yaniv@nih.gov</a>> wrote:<br>
>><br>
>> Hi Brian,<br>
>><br>
>> Currently ITK/SimpleITK do not have components for reading an image<br>
>> directly from a stream. We usually download, save to disk, and read from<br>
>> disk using the appropriate IO. We used this approach with our Jupyter<br>
>> notebooks where the read function either finds the data in a cache or<br>
>> fetches it from MIDAS into the cache and then reads it<br>
>> (<a href="https://github.com/InsightSoftwareConsortium/SimpleITK-Notebooks/blob/mast" rel="noreferrer" target="_blank">https://github.com/<wbr>InsightSoftwareConsortium/<wbr>SimpleITK-Notebooks/blob/mast</a><br>
>> er/downloaddata.py).<br>
>><br>
>> The challenge with streaming is that we currently don't have a protocol<br>
>> for interpreting the streamed data (meta-data-dictionary + intensity/color<br>
>> values). A possible solution is to use a client-server architecture with<br>
>> the OpenIGTLink protocol (<a href="http://openigtlink.org" rel="noreferrer" target="_blank">http://openigtlink.org</a>). You can transfer<br>
>> meta-data (patient name etc.) and complete images. See the specification<br>
>> on their website.<br>
>><br>
>> Out of curiosity, what is the motivation for the streaming only approach<br>
>> (girder -> SimpleITK -> girder)?<br>
>><br>
>>  hope this helps<br>
>>    Ziv<br>
>><br>
>><br>
>><br>
>><br>
>><br>
>> On 10/25/16, 5:15 PM, "Brian E Chapman" <<a href="mailto:Brian.Chapman@utah.edu">Brian.Chapman@utah.edu</a>> wrote:<br>
>><br>
>>> Hi,<br>
>>><br>
>>> We are looking at using SimpleITK in conjunction with Girder to read<br>
>>> images from girder manipulate the images with a Python script and then<br>
>>> write the contents back up to Girder. We would prefer to do this using<br>
>>> Byte streams rather than saving to a local file, reading/writing to the<br>
>>> local file and then uploading the file to Girder, but we have not been<br>
>>> able to find a way within SimpleITK (within Python) to read and write<br>
>>> from/to streams rather than files.<br>
>>><br>
>>> Any guidance would be appreciated.<br>
>>><br>
>>> Brian<br>
>>><br>
>>> ______________________________<wbr>_______<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/<wbr>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/<wbr>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_<wbr>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/<wbr>mailman/listinfo/insight-users</a><br>
>><br>
><br>
> ______________________________<wbr>_______<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/<wbr>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/<wbr>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_<wbr>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/<wbr>mailman/listinfo/insight-users</a><br>
</div></div>> ______________________________<wbr>_________________<br>
> Community mailing list<br>
> <a href="mailto:Community@itk.org">Community@itk.org</a><br>
> <a href="http://public.kitware.com/mailman/listinfo/community" rel="noreferrer" target="_blank">http://public.kitware.com/<wbr>mailman/listinfo/community</a><br>
<div class="HOEnZb"><div class="h5"><br>
______________________________<wbr>_______<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/<wbr>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/<wbr>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_<wbr>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/<wbr>mailman/listinfo/insight-users</a><br>
</div></div></blockquote></div><br></div>