SOAX Source Code

Version 3.7.0 imlements a new algorithm for snake overlap detection, resulting in improved performance for large images (contributed by David M. Rutkowski).

Standalone Executables for Windows

SOAX (v3.7.0) is a standalone executable for Windows.

Batch SOAX (v3.7.0) is a command-line SOAX in batch mode that can be executed with options to set the image or directory names and to set different combinations of parameters.

Best SOACs (v3.7.0) is a command-line utility that generates candidate extractions from a large set of 3D extraction results (usually obtained by batch extraction using Batch SOAX).

Batch Length (v3.7.0) is a command-line utility that generates SOAC lengths from multiple SOAC files.

Batch Resample (v3.7.0) is a command-line utility that resamples TIFF images to have isotropic voxel size.

Older and 32-bit versions of Windows SOAX versions and its related applications are available in the archive.

Standalone Executables for Mac OS X (High Sierra)

SOAX (v3.7.0) as a Mac OS X Application.

Batch SOAX (v3.7.0) is a command-line SOAX in batch mode that can be executed with options to set the image or directory names and to set different combinations of parameters.

Best SOACs (v3.7.0) is a command-line utility that generates candidate extractions from a large set of 3D extraction results (usually obtained by batch extraction using Batch SOAX).

Batch Length (v3.7.0) is a command-line utility that generates SOAC lengths from multiple SOAC files.

Batch Resample (v3.7.0) is a command-line utility that resamples TIFF images to have isotropic voxel size.

Older versions of SOAX executables for Max OS X are available in the archive.

Image Data for Validation

We provide a synthetic image of actin cable network and its ground truth centerlines. The ground truth can be loaded via Load JFilament Snakes in SOAX's File menu.

Building SOAX in Windows (Visual Studio 2010, static linking)

  1. Install fully up-to-date Visual Studio 2010 with SP1
  2. Install Perl (32-bit)
  3. Install Python 2.7.x
  4. Install CMake
  5. Download and extract Qt source 4.8.6 to C:\Qt
  6. Setup environment variables. In Visual Studio Command Prompt, type
    set QMAKESPEC=win32-msvc2010
    set QTDIR=C:\Qt
    set PATH=C:\Qt\bin;%PATH%
  7. Download jom and extract it to C:\Qt\jom
  8. Open qmake.conf in %QTDIR%\mkspecs\win32-msvc2010 and change the line
    QMAKE_CFLAGS_RELEASE = /O2 /MD
    to
    QMAKE_CFLAGS_RELEASE = /O2 /MT
    Do the same for QMAKE_CFLAGS_DEBUG and QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO;
  9. Start VS2010 command prompt (for 64-bit, use Visual Studio x64 Win64 Command Prompt) and run
    configure -debug-and-release -static -opensource -no-phonon -no-phonon-backend -no-qt3support -no-multimedia -no-webkit -no-libtiff
    then
    .\jom\jom.exe -j N
    where N is the number of CPU cores you want to use for Qt compilation.
  10. Download boost library and extract it to C:\
  11. Go to boost directory and type
    bootstrap
    then
    .\b2 msvc link=static runtime-link=static threading=multi stage
  12. Download VTK source and configure using CMake. In CMake,
    • Change all /MD to /MT in CMAKE_CXX_FLAGS_MINSIZEREL, CMAKE_CXX_FLAGS_RELEASE, CMAKE_CXX_FLAGS_RELWITHDEBINFO, CMAKE_C_FLAGS_MINSIZEREL, CMAKE_C_FLAGS_RELEASE, and CMAKE_C_FLAGS_RELWITHDEBINFO;
    • Change /MDd to /MTd in CMAKE_CXX_FLAGS_DEBUG and CMAKE_C_FLAGS_DEBUG;
    • Uncheck BUILD_SHARED_LIBS;
    • Check Module_vtkGUISupportQt, Module_vtkGUISupportQtOpenGL, Module_vtkRenderingQt, Module_vtkViewsQt;
  13. Build VTK in Debug and Release mode using VS2010
  14. Download ITK source and configure using CMake. In CMake,
    • Change all /MD to /MT and /MDd to /MTd as in configuring VTK;
    • Check Module_ItkVtkGlue;
  15. Build ITK in Debug and Release mode using VS2010
  16. Download the above SOAX source and configure using CMake. In CMake,
    • Change all /MD to /MT and /MDd to /MTd
    • Set Boost_INCLUDE_DIR to the topmost boost directory
    • Set Boost_PROGRAM_OPTIONS_LIBRARY_RELEASE to "C:/boost_1_55_0/stage/lib/libboost_program_options-vc100-mt-s-1_55.lib"
    • Set Boost_PROGRAM_OPTIONS_LIBRARY_DEBUG to "C:/boost_1_55_0/stage/lib/libboost_program_options-vc100-mt-sgd-1_55.lib"
    • Do the same for Boost_FILESYSTEM_LIBRARY_DEBUG, Boost_FILESYSTEM_LIBRARY_RELEASE, Boost_SYSTEM_LIBRARY_DEBUG and Boost_SYSTEM_LIBRARY_RELEASE
  17. Build SOAX in Debug and Release using VS2010

Building SOAX in Mac OS X

  1. Install Homebrew
  2. Install Boost C++ libraries:
    brew install boost
  3. Install Qt 4 libraries
  4. using:
    brew tap cartr/qt4
    brew tap-pin cartr/qt4
    brew install qt@4
    brew install qt-webkit@2.3
  5. Install CMake
  6. Configure and build VTK 6.3 from source (Enable VTK_Group_Qt and change CMAKE_BUILD_TYPE to "Release" in CMake; Disable BUILD_SHARED_LIBS; build in Xcode by opening "VTK.xcodeproj" generated by CMake and then Product > Build)
  7. Configure and build ITK 4.7.2 from source (Disable BUILD_EXAMPLES, BUILD_TESTING, and enable Module_ITKVtkGlue in CMake; build Release version in Xcode)
  8. Download SOAX source code above, configure by CMake and compile a Release version in Xcode
  9. Use macdeployqt for making a dmg application

Building SOAX in Windows Linux Subsystem (Ubuntu 18.04.1 LTS)

David Rutkowski, 12/2020
  1. Newer version of cmake: https://askubuntu.com/questions/829310/how-to-upgrade-cmake-in-ubuntu
    ccmake:
    sudo apt-get install cmake-curses-gui libxt-dev
  2. OpenGL implementation on Linux (if this is required):
    sudo apt-get install libegl1-mesa-dev
    https://stackoverflow.com/questions/31170869/cmake-could-not-find-opengl-in-ubuntu
  3. Subsystem GUI:
    Install XMing on Windows
    sudo apt-get install vim-gtk
    export DISPLAY=:0
    https://www.howtogeek.com/261575/how-to-run-graphical-linux-desktop-applications-from-windows-10s-bash-shell/
  4. QT4 package:
    sudo apt install qt4-default
    https://askubuntu.com/questions/1102660/enable-to-locate-qt-sdk-package
    sudo apt install build-essential cmake gdb git libphonon-dev libqt4-dev libqt4-opengl-dev libqtwebkit-dev qt4-designer qt4-doc qt4-doc-html qt4-qmake qtcreator qtcreator-doc subversion
  5. Boost libraries:
    sudo apt-get install libboost-all-dev
  6. VTK 6.3.0:
    https://github.com/Kitware/VTK/releases?after=v7.1.0
    Use ccmake from a separate build folder to Enable VTK_Group_Qt and change CMAKE_BUILD_TYPE to "Release"
  7. ITK 4.7.2:
    https://sourceforge.net/projects/itk/files/itk/4.7/
    Use ccmake to Disable BUILD_EXAMPLES, BUILD_TESTING; Enable Module_ITKVtkGlue
  8. Add the following to vcl_compiler.h (for gcc 7.5.0) (\InsightToolkit-4.7.2\Modules\ThirdParty\VNL\src\vxl\vcl\vcl_compiler.h) at line 129
    # elif (__GNUC__==7)
    # define VCL_GCC_7
    # if (__GNUC_MINOR__ > 4 )
    # define VCL_GCC_75
    # else
    # define VCL_GCC_70
    # endif
  9. Change vcl_new.h (\InsightToolkit-4.7.2\Modules\ThirdParty\VNL\src\vxl\vcl\vcl_new.h)
    Line 19 to # include < new > from # include < new.h>
  10. SOAX:
    Ccmake while specifying location of VTK and ITK build folders
    (These were already populated this way but just in case they are needed)
    CMAKE_INSTALL_PREFIX:/usr/local
    QT_IMPORTS_DIR:/usr/lib/x86_64-linux-gnu/qt4/imports
    QT_QMAKE_EXECUTABLE:/user/bin/qmake

Building SOAX in Ubuntu 14.04 LTS

  1. Install Boost C++ libraries, Qt 4, CMake and X11 library:
    sudo apt-get install libboost1.55-all-dev qt-sdk qt4-default cmake-curses-gui libxt-dev
  2. Build and install VTK from source (Enable VTK_Group_Qt and change CMAKE_BUILD_TYPE to "Release")
  3. Build and install ITK from source (Disable BUILD_EXAMPLES, BUILD_TESTING; Enable Module_ITKVtkGlue)
  4. Download SOAX source code above, configure by CMake and compile

Building SOAX in Fedora 21

  1. Install Boost C++ libraries, Qt 4, CMake and X11 library:
    sudo yum install boost-devel qt-devel qtwebkit-devel cmake libXt-devel
  2. Build and install VTK from source (Enable VTK_Group_Qt and change CMAKE_BUILD_TYPE to "Release")
  3. Build and install ITK from source (Disable BUILD_EXAMPLES, BUILD_TESTING; Enable Module_ITKVtkGlue)
  4. Download SOAX source code above, configure by CMake and compile