We are pleased to announce the latest version of VMTK is ready for general use! Please see the documentation below for details.
Python 3 Support
VMTK now supports the following python versions for each platform:
- Linux (Many Linux Compatible): 2.7, 3.5, 3.6+
- MacOSX (Minimum MacOS 10.9): 2.7, 3.5, 3.6+
- Windows 10: 3.5, 3.6+
Packaging and Distribution via Anaconda
VMTK has officially embraced the Anaconda Python packaging and distribution system for dependency and code management. Official releases are posted to the VMTK Anaconda Channel. Our Installation Instruction have been updated on the VMTK webpage to reflect the change.
Executable installers are also available at the VMTK Downloads Page.
In the future, we plan to also post releases to the conda-forge Anaconda channel. We are waiting for conda-forge to support VTK on MacOSX before making this transition.
Please note: we will no longer be releasing new versions of VMTK on PyPi
Native Conversion of VMTK Data Structures to Numpy Arrays
We now allow you to use all of the functionality that VMTK offers in filtering images, creating surfaces, centerlines, or volumetric meshes, while seemlessly being able to employ any external processing available in the scientific python ecosystem. With the following new methods, you can losslesly translate data (generated in either VMTK or in Python proper) back and forth between the VTK data formats and Numpy Arrays:
A tutorial has been provided on the VMTK website which walks you through the process of interacting with the translation routines
Store Data to Disk as HDF5 or Pickled Python Files
With the VMTK-Numpy conversion utilities, we now allow VMTK data structures to be saved (and read) to disk as HDF5 or Python Pickle objects. These methods are available in the following methods:
Pype Scripts Include Sensible Default Values
It is now significantly easier to break up pypes run on the command line. Instead of relying on output members to specify input array names for scripts down the pype, we now include sensible defaults to the input array names. It is now possible to run one set of commands which generate a surface/centerline from an image, write those files to disk, and run another set of commands which perform further calculations or visualizations with no need to respecify array names.
To demonstrate this consider the following example where we have previously generated centerlines from a surface and saved it to disk as a
centerlines.vtp file. If we later decide that we wanted to split the centerlines into their respective branches (see the branch splitting tutorial for details), we would previously have had to specify the array name where the maximum inscribed sphere radius was stored (ie. MaximumInscribedSphereRadius by default) as shown in the following pype script:
vmtkbranchextractor -ifile centerlines.vtp -radiusarray MaximumInscribedSphereRadius -ofile centerlines_split.vtp
With this update, if you did not specifically change the default names for the data arrays during creation of the centerlines file it will be filled in for you, and following pypescript will work as intended:
vmtkbranchextractor -ifile centerlines.vtp -ofile centerlines_split.vtp
It should be noted that this does not require any change in workflows that are already predefined. Any manually specified pype argument will override the default value. The same goes for vmtkscripts which are run from within a conventional python file. The default values have been updated on the VMTK Docs Webpage.
VTK & ITK Versions
VTK 8.1 is the default which will be distributed with binary packages. Custom builds should be able to use back to VTK 6.
ITK 4.13.0 is the default which is distributed with binary packages. Custom builds should be able to use back to ITK 4.9
Significant Backend Changes and Modernization
The VMTK build system and community workflows have undergone significant updates. We’ve documented the new process in our Contributing Guidelines. Changes of particular significance are:
- Unit Testing and Continuous Integration - We’ve built a PyTest based unit-test framework from scratch, and are using Travis-CI and Appveyor to test pull requests.
- Modernization of Our CMake Build System to improve local development builds. Activation of a development build no longer modifies LD_LIBRARY_PATH on Linux, or DYLD_LIBRARY_PATH on MacOSX. We have transitioned from CMAKE_MINIMUM_REQURED(2.8) to Version 3.4.
- External projects depending on VMTK should note that we now export VMTK-Targets in our cmake install methods.
- Overhaul our packaging & distribution system to allow for regular symantic version releases.
- #249 Add additional smoothing filter to vmtkimagesmoothing using ITK an-isotropic diffusion.
- #247 Font size scales based on display screen size.
- #233 Fix vmtkbranchclipper with insideout enabled.
- #200 Modify vmtksurfaceendclipper to clip based on centerline information
- Many bugfixes
New Python Requirements
With this release, the following python packages are requirements of VMTK. Please note that this is included soley for informational purposes (and developers who intend to build from source). The VMTK anaconda package (and windows installer) will automatically solve and configure the dependencies appropriatly for your system and current environment.
- Numpy <=1.13 (mkl preffered, but nomkl or openblas will work as well)
- H5Py >=2.7
- hdf5 >=1.18
- Python 2.7 is no longer supported on Windows.
- No further packages will be released on the VMTK PyPi channel.
- Removed ability to read in DICOM files specified only via a directory path (pypescript
-dargument). See #220
Thank you to the following people for dedicating their time and effort into making VMTK 1.4 possible!