AIM-Harvard / SlicerRadiomics

A Slicer extension to provide a GUI around pyradiomics
BSD 3-Clause "New" or "Revised" License
106 stars 48 forks source link

I couldn't find the Radiomics in the 3D Slicer extensions manager #50

Closed jcnils closed 6 years ago

jcnils commented 6 years ago

I don't know if I did something wrong, or if there any dependency missing. But I couldn't find the Radiomics in the 3D Slicer extensions manager.

I tried the search mode in All, and looking for it into the Informatics category.

I am using windows 10, and tried using stable(4.10) and nightly (4.11)

pieper commented 6 years ago

There are some unresolved build issues currently on windows, but it is available for linux and mac, in case that helps.

http://slicer.cdash.org/viewBuildError.php?buildid=1417242

jcnils commented 6 years ago

Thank you @pieper, linux might help for now. I will boot linux while keeping an eye for updates, the lab where the researchers use 3D Slicer is windows only :(

pieper commented 6 years ago

@fedorov @JoostJM @jcfr Any ideas about why SlicerRadiomics build is failing on windows?

fedorov commented 6 years ago

I don't know. I took a look, but I could not see how it could be broken from inside Radiomics, and I don't know how to investigate whether something is wrong with the dashboard.

I split the earlier discussion on discourse into this thread: https://discourse.slicer.org/t/radiomics-extension-build-errors-on-windows/4616

fedorov commented 6 years ago

@jcnils I am reopening this, since the underlying issue has not been resolved.

JoostJM commented 6 years ago

@pieper, I just took a quick look at it, and it appears to be that it is unable to build PyWavelets (_dwt.pyd is part of PyWavelets). I will investigate, but I think we may be able to fix this by using a specific PyWavelets version.

pieper commented 6 years ago

Thanks for investigating @JoostJM - I hope using a specific version of PyWavelets solves the problem.

fedorov commented 6 years ago

Right, the question remains why pywavelets stopped building. In any case, using a fixed version of pywavelets makes a lot of sense.

lassoan commented 6 years ago

There might be an incompatibility with numpy version?

1> C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\BIN\amd64\link.exe /DLL /nologo /INCREMENTAL:NO /LIBPATH:C:/D/N/Slicer-0-build/python-install\libs /LIBPATH:C:/D/N/Slicer-0-build/python-install\PCbuild\amd64 /LIBPATH:C:/D/N/Slicer-0-build/python-install\PC\VS9.0\amd64 /LIBPATH:build\temp.win-amd64-2.7 c_wt.lib c_wt.lib /EXPORT:init_pywt build\temp.win-amd64-2.7\Release\pywt_extensions_pywt.obj /OUT:build\lib.win-amd64-2.7\pywt_extensions_pywt.pyd /IMPLIB:build\temp.win-amd64-2.7\Release\pywt_extensions_pywt.lib /MANIFESTFILE:build\temp.win-amd64-2.7\Release\pywt_extensions_pywt.pyd.manifest 1>_pywt.obj : warning LNK4197: export 'init_pywt' specified multiple times; using first specification 1> Creating library build\temp.win-amd64-2.7\Release\pywt_extensions_pywt.lib and object build\temp.win-amd64-2.7\Release\pywt_extensions_pywt.exp 1> building 'pywt._extensions._dwt' extension 1> C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\BIN\amd64\cl.exe /c /nologo /Ox /MD /W3 /GS- /DNDEBUG -DPY_EXTENSION -Ipywt_extensions\c -IC:\D\N\Slicer-0-build\python-install\lib\site-packages\numpy-1.13.1-py2.7-win-amd64.egg\numpy\core\include -IC:\D\N\Slicer-0-build\python-install\include -IC:/D/N/Slicer-0-build/python-install\PC /Tcpywt_extensions_dwt.c /Fobuild\temp.win-amd64-2.7\Release\pywt_extensions_dwt.obj 1> _dwt.c 1>c:\d\n\slicer-0-build\python-install\lib\site-packages\numpy-1.13.1-py2.7-win-amd64.egg\numpy\core\include\numpy\npy_1_7_deprecated_api.h(12): warning Msg: Using deprecated NumPy API, disable it by #defining NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION 1>pywt_extensions_dwt.c(3652): warning C4244: '=': conversion from 'long' to 'char', possible loss of data 1>pywt_extensions_dwt.c(5229): warning C4013: 'float_complex_dec_a' undefined; assuming extern returning int 1>pywt_extensions_dwt.c(5247): warning C4013: 'float_complex_dec_d' undefined; assuming extern returning int 1>pywt_extensions_dwt.c(5731): warning C4013: 'double_complex_dec_a' undefined; assuming extern returning int 1>pywt_extensions_dwt.c(5749): warning C4013: 'double_complex_dec_d' undefined; assuming extern returning int 1>pywt_extensions_dwt.c(6695): warning C4013: 'float_complex_downcoef_axis' undefined; assuming extern returning int 1>pywt_extensions_dwt.c(6878): warning C4013: 'double_complex_downcoef_axis' undefined; assuming extern returning int 1>pywt_extensions_dwt.c(7826): warning C4013: 'double_complex_idwt' undefined; assuming extern returning int 1>pywt_extensions_dwt.c(7970): warning C4013: 'float_complex_idwt' undefined; assuming extern returning int 1>pywt_extensions_dwt.c(9146): warning C4013: 'double_complex_idwt_axis' undefined; assuming extern returning int 1>pywt_extensions_dwt.c(9253): warning C4013: 'float_complex_idwt_axis' undefined; assuming extern returning int 1>pywt_extensions_dwt.c(9867): warning C4244: '=': conversion from 'long' to 'char', possible loss of data 1>pywt_extensions_dwt.c(10673): warning C4146: unary minus operator applied to unsigned type, result still unsigned 1>pywt_extensions_dwt.c(11368): warning C4146: unary minus operator applied to unsigned type, result still unsigned 1>pywt_extensions_dwt.c(11808): warning C4013: 'float_complex_rec_a' undefined; assuming extern returning int 1>pywt_extensions_dwt.c(11913): warning C4013: 'float_complex_rec_d' undefined; assuming extern returning int 1>pywt_extensions_dwt.c(12063): warning C4146: unary minus operator applied to unsigned type, result still unsigned 1>pywt_extensions_dwt.c(12503): warning C4013: 'double_complex_rec_a' undefined; assuming extern returning int 1>pywt_extensions_dwt.c(12608): warning C4013: 'double_complex_rec_d' undefined; assuming extern returning int 1>pywt_extensions_dwt.c(12758): warning C4146: unary minus operator applied to unsigned type, result still unsigned 1>pywt_extensions_dwt.c(13229): warning C4244: '=': conversion from 'long' to 'char', possible loss of data 1>pywt_extensions_dwt.c(38687): warning C4244: 'initializing': conversion from 'double' to 'float', possible loss of data 1>pywt_extensions_dwt.c(38693): warning C4244: 'initializing': conversion from 'double' to 'float', possible loss of data 1> C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\BIN\amd64\link.exe /DLL /nologo /INCREMENTAL:NO /LIBPATH:C:/D/N/Slicer-0-build/python-install\libs /LIBPATH:C:/D/N/Slicer-0-build/python-install\PCbuild\amd64 /LIBPATH:C:/D/N/Slicer-0-build/python-install\PC\VS9.0\amd64 /LIBPATH:build\temp.win-amd64-2.7 c_wt.lib c_wt.lib /EXPORT:init_dwt build\temp.win-amd64-2.7\Release\pywt_extensions_dwt.obj /OUT:build\lib.win-amd64-2.7\pywt_extensions_dwt.pyd /IMPLIB:build\temp.win-amd64-2.7\Release\pywt_extensions_dwt.lib /MANIFESTFILE:build\temp.win-amd64-2.7\Release\pywt_extensions_dwt.pyd.manifest 1>_dwt.obj : warning LNK4197: export 'init_dwt' specified multiple times; using first specification 1> Creating library build\temp.win-amd64-2.7\Release\pywt_extensions_dwt.lib and object build\temp.win-amd64-2.7\Release\pywt_extensions_dwt.exp 1>_dwt.obj : error LNK2019: unresolved external symbol float_complex_dec_a referenced in function pyx_fuse_2pyx_f_4pywt_11_extensions_4_dwt_dwt_single 1>_dwt.obj : error LNK2019: unresolved external symbol float_complex_dec_d referenced in function pyx_fuse_2pyx_f_4pywt_11_extensions_4_dwt_dwt_single 1>_dwt.obj : error LNK2019: unresolved external symbol double_complex_dec_a referenced in function pyx_fuse_3pyx_f_4pywt_11_extensions_4_dwt_dwt_single 1>_dwt.obj : error LNK2019: unresolved external symbol double_complex_dec_d referenced in function pyx_fuse_3pyx_f_4pywt_11_extensions_4_dwt_dwt_single 1>_dwt.obj : error LNK2019: unresolved external symbol float_complex_downcoef_axis referenced in function pyx_f_4pywt_11_extensions_4_dwt_dwt_axis 1>_dwt.obj : error LNK2019: unresolved external symbol double_complex_downcoef_axis referenced in function pyx_f_4pywt_11_extensions_4_dwt_dwt_axis 1>_dwt.obj : error LNK2019: unresolved external symbol double_complex_idwt referenced in function pyx_f_4pywt_11_extensions_4_dwt_idwt_single 1>_dwt.obj : error LNK2019: unresolved external symbol float_complex_idwt referenced in function pyx_f_4pywt_11_extensions_4_dwt_idwt_single 1>_dwt.obj : error LNK2019: unresolved external symbol double_complex_idwt_axis referenced in function pyx_f_4pywt_11_extensions_4_dwt_idwt_axis 1>_dwt.obj : error LNK2019: unresolved external symbol float_complex_idwt_axis referenced in function pyx_f_4pywt_11_extensions_4_dwt_idwt_axis 1>_dwt.obj : error LNK2019: unresolved external symbol float_complex_rec_a referenced in function pyx_fuse_2__pyx_f_4pywt_11_extensions_4_dwt_upcoef 1>_dwt.obj : error LNK2019: unresolved external symbol float_complex_rec_d referenced in function pyx_fuse_2pyx_f_4pywt_11_extensions_4_dwt_upcoef 1>_dwt.obj : error LNK2019: unresolved external symbol double_complex_rec_a referenced in function pyx_fuse_3pyx_f_4pywt_11_extensions_4_dwt_upcoef 1>_dwt.obj : error LNK2019: unresolved external symbol double_complex_rec_d referenced in function pyx_fuse_3__pyx_f_4pywt_11_extensions_4_dwt_upcoef 1>build\lib.win-amd64-2.7\pywt_extensions_dwt.pyd : fatal error LNK1120: 14 unresolved externals 1>CUSTOMBUILD : error : command 'C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\BIN\amd64\link.exe' failed with exit status 1120 1>

It is really difficult to debug this (all build files are immediately deleted) so we would need @jcfr expertise here.

lassoan commented 6 years ago

Slicer uses numpy 1.13.1, while pywavelet needs numpy >1.9.1, so maybe it is not related to numpy.

kevin-why commented 6 years ago

I couldn't find the Radiomics in the 3D Slicer extensions manager either,( in windows),is there another way to package the extension and install the extension from file? or the bug has been fixed ?

lassoan commented 6 years ago

The issue is still open, which means it has not been resolved yet.

@pieper @fedorov Would it be possible to disable wavelet-based features until this gets resolved?

An option to solve this would be to use wavelets available in VTK or ITK instead (there is at least a IsotropicWavelets remote module in ITK).

fedorov commented 6 years ago

@JoostJM is the lead on this project, we should discuss with him. I agree it makes sense to disable wavelets until this is resolved.

@lassoan can you reproduce this issue with a local build? I don't even have a Slicer build set up on Windows that I can access to investigate this.

lassoan commented 6 years ago

Yes, I can reproduce it. It is very hard to debug this, as it uses python scripts to create temporary build files that immediately disappear after the build is finished. I don't even know where can I find the Python file that I could change to prevent deleting of the build files so that I can investigate further.

Since pywavelets only supports 2D wavelets anyway, I'm not sure if it is worth the time investigating it.

pieper commented 6 years ago

+1 for disabling wavelets, at least on Windows, until this can be nailed down. There are lots of other features people would want to calculated and we've heard from a lot of users looking for this extension on windows.

JoostJM commented 6 years ago

I'll disable wavelets for now.

@lassoan, In PyRadiomics, we apply 3D wavelets by applying filters sequentially in row-column-slice.

Still, I'm really interested in the ITK/VTK implementation, it certainly warrants investigation into if this is easily implementable in PyRadiomics.

JoostJM commented 6 years ago

Short update, I now forced PyWavelet version to 1.0.0, which was released on august 31st, this year. Hopefully this fixes the build.

Looking at the release notes, it may be possible that this will fail as well, as complex number support was added in version 1.0.0. If it fails, I'll revert to the version before that (0.5.2).

fedorov commented 6 years ago

It is now failing on all platforms, but it looks like a completely different issue: http://slicer.cdash.org/index.php?project=SlicerPreview&filtercount=1&showfilters=1&field1=buildname&compare1=63&value1=radiomics

image

I will join the Slicer hangout today with the hope to get attention of the folks maintaining the dashboard.

jcfr commented 6 years ago

Hi,

I am out at a conference today and we will have a look later.

It seems the extensions server is getting overloaded and it will be time to plan for transitioning away to the new Girder based system.

Note that the backend is ready and we still need to finalize the frontend.

Thanks Jc

On Tue, Nov 13, 2018, 9:55 AM Andrey Fedorov <notifications@github.com wrote:

It is now failing on all platforms, but it looks like a completely different issue:

http://slicer.cdash.org/index.php?project=SlicerPreview&filtercount=1&showfilters=1&field1=buildname&compare1=63&value1=radiomics

[image: image] https://user-images.githubusercontent.com/313942/48421301-334b0f80-e72a-11e8-9d08-7dfd63937496.png

I will join the Slicer hangout today with the hope to get attention of the folks maintaining the dashboard.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/Radiomics/SlicerRadiomics/issues/50#issuecomment-438294517, or mute the thread https://github.com/notifications/unsubscribe-auth/AANXox5ySx8vuuAoGcvTA9FjHrv68XGdks5uut1egaJpZM4YE7Ld .

fedorov commented 6 years ago

Thanks JC, this would be great.

Do you have any ideas about the earlier failure as discussed in this issue and in https://discourse.slicer.org/t/radiomics-extension-build-errors-on-windows/4616?

Based on the current errors, do you know if the earlier issue was resolved, or the failure we observe now is happening earlier in the build process?

jcfr commented 6 years ago

The build completed on linux, macOS and Windows. This is confirmed by the dashboard (it only reports a failure to upload and no build error) and also by running the build on the build machine:

For example, here is the output running the windows build locally:

image

the extensions server is getting overloaded

To clarify, our monitoring confirm this, I have been getting message from our nagios probe and as a short term solution, I just asked our sysadmin to increase the memory associated with the server.

fedorov commented 6 years ago

@jcnils @kevin-why the extension should now be available on all platforms: http://slicer.cdash.org/index.php?project=SlicerPreview&filtercount=1&showfilters=1&field1=buildname&compare1=63&value1=radiomics

emanradiology commented 5 years ago

if I install an older version of 3D slicer, will radiomics extension work?

JoostJM commented 5 years ago

@emanradiology, depends on the version. If it is available in the extensions manager there is a high chance it will work. Beware however that this may use an older version of PyRadiomics (for differences between versions, see the release notes)

What version of Slicer are you planning to use?

JoostJM commented 5 years ago

To check the version of PyRadiomics installed, type the following in the python interactor in slicer:

import radiomics
radiomics.__version__