# Tutorial for using pyradiomics, no module named \_collections

**URL:** <https://discourse.slicer.org/t/tutorial-for-using-pyradiomics-no-module-named-collections/2111>\
**Category:** Support\
**Created:** [February 18, 2018, 5:49pm UTC](https://discourse.slicer.org/t/tutorial-for-using-pyradiomics-no-module-named-collections/2111 "2018-02-18T17:49:39Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![gmadevs](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.slicer.org/gmadevs/32/6702_2.png) [@gmadevs](https://discourse.slicer.org/u/gmadevs)\
**Post date:** [February 18, 2018, 5:49pm UTC](https://discourse.slicer.org/t/tutorial-for-using-pyradiomics-no-module-named-collections/2111/1 "2018-02-18T17:49:40Z")

</div>

Hi to all, is there any tutorial available for using the extension pyradiomics which covers all the steps since segmentation to the analysis? I’m having trouble obtaining the results. Thank you

I’m using the latest stable version on mac

This is the error I get

```auto
RadiomicsCLI standard error:

Traceback (most recent call last):
  File "/Applications/Slicer.app/Contents/Extensions-26813/SlicerRadiomics/lib/Slicer-4.8/cli-modules/SlicerRadiomicsCLIScript", line 6, in <module>
    from radiomics.scripts import commandline
  File "/Applications/Slicer.app/Contents/Extensions-26813/SlicerRadiomics/lib/python2.7/site-packages/radiomics/ __init__.py", line 4, in <module>
    import collections # noqa: F401
  File "/Applications/Slicer.app/Contents/lib/Python/lib/python2.7/collections.py", line 20, in <module>
    from _collections import deque, defaultdict
ImportError: No module named _collections

RadiomicsCLI completed with errors

```

---

<div class="post-metadata">

**Author:** ![JoostJM](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.slicer.org/joostjm/32/1091_2.png) [@JoostJM](https://discourse.slicer.org/u/JoostJM)\
**Post date:** [February 19, 2018, 9:27am UTC](https://discourse.slicer.org/t/tutorial-for-using-pyradiomics-no-module-named-collections/2111/2 "2018-02-19T09:27:45Z")

</div>

This appears to be an issue with the installation of PyRadiomics in Slicer, it is missing the package “collections”, which is normally a built-in package. Therefore, it is not checked for its presence during installation.  
Which version of Slicer do you use?  
If you’re using the nightly build, it may be a good idea to also try the stable build.

As to tutorials, documentation, etc on PyRadiomics, here are some useful resources:

PyRadiomics documentation: [pyradiomics.readthedocs.io](http://pyradiomics.readthedocs.io)  
PyRadiomics source code & examples: [github.com/Radiomics/PyRadiomics](http://github.com/Radiomics/PyRadiomics)  
SlicerRadiomics source code: [github.com/Radiomics/SlicerRadiomics](http://github.com/Radiomics/SlicerRadiomics)  
Radiomics start page featuring these packages: [radiomics.io](http://radiomics.io)

Kind regards,

Joost

---

<div class="post-metadata">

**Author:** ![gmadevs](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.slicer.org/gmadevs/32/6702_2.png) [@gmadevs](https://discourse.slicer.org/u/gmadevs)\
**Post date:** [February 19, 2018, 9:43am UTC](https://discourse.slicer.org/t/tutorial-for-using-pyradiomics-no-module-named-collections/2111/3 "2018-02-19T09:43:58Z")

</div>

Thanks for the reply. I’m using the latest stable for Mac since in the nightly build pyradiomics is not available. Do I have to reinstall pyradiomics via python or in the extension manager?

---

<div class="post-metadata">

**Author:** ![JoostJM](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.slicer.org/joostjm/32/1091_2.png) [@JoostJM](https://discourse.slicer.org/u/JoostJM)\
**Post date:** [February 19, 2018, 11:55am UTC](https://discourse.slicer.org/t/tutorial-for-using-pyradiomics-no-module-named-collections/2111/4 "2018-02-19T11:55:05Z")

</div>

Reinstalling the extension won’t help in this case, as it does not check for the presence of the built-in modules.  
I’m not sure if it works, but you could try to pip install the package.

```auto
import pip
pip.main(['install', 'collections'])

```

@jcfr, do you have additional suggestions?

Regards,

Joost

---

<div class="post-metadata">

**Author:** ![lassoan](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.slicer.org/lassoan/32/13_2.png) [@lassoan](https://discourse.slicer.org/u/lassoan)\
**Post date:** [February 19, 2018, 12:56pm UTC](https://discourse.slicer.org/t/tutorial-for-using-pyradiomics-no-module-named-collections/2111/5 "2018-02-19T12:56:13Z")

</div>

Collections can be imported without problem in both Slicer 4.8.1 and nightly versions on Windows.

Could you try what happens if you start Slicer and enter `import collections` in the Python console?

---

<div class="post-metadata">

**Author:** ![ihnorton](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.slicer.org/ihnorton/32/9_2.png) [@ihnorton](https://discourse.slicer.org/u/ihnorton)\
**Post date:** [February 19, 2018, 3:59pm UTC](https://discourse.slicer.org/t/tutorial-for-using-pyradiomics-no-module-named-collections/2111/6 "2018-02-19T15:59:45Z")

</div>

I can reproduce this in Slicer 4.8.1. `import collections` works fine at the Slicer python prompt, but fails from RadiomicsCLI. From `vmmap`, it looks like the script wrapper ends up pulling in system libpython, and confirmed by changing the wrapper call to `DYLD_PRINT_LIBRARIES=1 $python_interpreter "$0Script" $*` in SlicerRadiomicsCLI:

```auto
RadiomicsCLI standard error:

dyld: loaded: /opt/worksw/Slicer-4.8.1.app/Contents/bin/python-real
dyld: loaded: /usr/lib/libpython2.7.dylib
...

```

Presumably there is an ABI conflict. Somebody will need to dig through the (PYTHON)PATH and figure out why (I didn’t check nightly).

---

<div class="post-metadata">

**Author:** ![ihnorton](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.slicer.org/ihnorton/32/9_2.png) [@ihnorton](https://discourse.slicer.org/u/ihnorton)\
**Post date:** [February 19, 2018, 4:16pm UTC](https://discourse.slicer.org/t/tutorial-for-using-pyradiomics-no-module-named-collections/2111/7 "2018-02-19T16:16:06Z")

</div>

Actually, I think I see the problem. Slicer python has DYLD\_LIBRARY\_PATH set by the launcher:

```auto
>>> os.environ["DYLD_LIBRARY_PATH"]
'/opt/worksw/Slicer-4.8.1.app/Contents/Extensions-26813/SlicerRadiomics/bin:/opt/worksw/Slicer-4.8.1.app/Contents/Extensions-26813/SlicerRadiomics/lib/Slicer-4.8:/opt/worksw/Slicer-4.8.1.app/Contents/Extensions-26813/SlicerRadiomics/lib/Slicer-4.8/cli-modules:/opt/worksw/Slicer-4.8.1.app/Contents/Extensions-26813/SlicerRadiomics/lib/Slicer-4.8:/opt/worksw/Slicer-4.8.1.app/Contents/bin:/opt/worksw/Slicer-4.8.1.app/Contents/lib/Slicer-4.8:/opt/worksw/Slicer-4.8.1.app/Contents/lib/Slicer-4.8/cli-modules:/opt/worksw/Slicer-4.8.1.app/Contents/lib/Slicer-4.8/qt-loadable-modules:../lib/Slicer-4.8/qt-loadable-modules:/opt/worksw/Slicer-4.8.1.app/Contents/lib/TclTk/lib:/opt/worksw/Slicer-4.8.1.app/Contents/lib/Python/lib:/opt/worksw/Slicer-4.8.1.app/Contents/lib/Python/lib/python2.7/site-packages/numpy/core:/opt/worksw/Slicer-4.8.1.app/Contents/lib/Python/lib/python2.7/site-packages/numpy/lib:/opt/worksw/Slicer-4.8.1.app/Contents/lib/TclTk/lib/itcl4.0.1'

```

But the wrapper script subshell does not inherit this setting because of [Apple SIP policy](https://forums.developer.apple.com/message/31148). Adding `echo "DYLD: $DYLD_LIBRARY_PATH"` in `cli-modules/SlicerRadiomicsCLI` gives an empty result (`DYLD:`).

---

<div class="post-metadata">

**Author:** ![JoostJM](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.slicer.org/joostjm/32/1091_2.png) [@JoostJM](https://discourse.slicer.org/u/JoostJM)\
**Post date:** [February 19, 2018, 5:02pm UTC](https://discourse.slicer.org/t/tutorial-for-using-pyradiomics-no-module-named-collections/2111/8 "2018-02-19T17:02:26Z")

</div>

This topic is related to issue [#43](https://github.com/Radiomics/SlicerRadiomics/issues/43) on the SlicerRadiomics’ github.
