New Developer Features in GIMIAS 1 5

From user's Wiki!
Revision as of 07:18, 27 June 2012 by Msteghofer (Talk | contribs)

Jump to: navigation, search

GIMIAS-1.5.a1 (22th March 2012)

Error recovery

When GIMIAS starts, sometimes it crashes because there's an error in the config.xml file or a plugin crashes when loading it. To fix this issue, GIMIAS will log the status of the Kernel when starting and next time it's started will show an error message to the user and will allow to configure it again.

ErrorLoadingPlugins.png ErrorLoadingConfig.png

Custom Application Wizard

Added custom application wizard that will guide you to configure the execution of external applications.

To execute an external application, XML description used by ModuleDescription is being used, adding some specific tags, like the executable file name. A new dialog allow to modify the general description, the parameters and the inputs/outputs of the executable. All these information will be stored in a single XML file. All XML files will be stored in the Application home path, in the folder "Descriptions".

When the XML is read, a ModuleDescription instance is created. The user can choose it as a processing tool and execute it. During the execution, a specific data transfer (DynDataTransferExternalApp) and Module execution class will be called (dynModuleExecutionExternalApp).

For execution of external applications, these tags have been added to the XML description:

  • executable: specify the executable file path
  • working directory: specify the working directory where to execute the application. In Windows, some executables need specific DLLs
  • format: for each parameter, this tag specify the format of the argument. For example "--grid 14". It's possible to use these variables that will be replaced by the real value during execution:
    • $(name): name of the parameter
    • $(value): value of the parameter


In order to configure a new external application, you should open the Custom Application Manager that is located in the menu Edit->Custom App Manager.

Custom application wizard

In this window you can manage new external applications: create, edit, delete, or import.

Here you can watch an example video on how to use this feature, here:

Custom application Warp

When editing a custom application, you will see this window:

Custom application wizard

It allows you to configure the general description of the executable, the parameters and the inputs/outputs.

The executable will appear in the Plugin selector, in the menu Edit->Preferences.

Custom application plugin selector

You can load the plugin and use it as a standard command line plugin, with automatic GUI generation. For example, for the external application warp.exe, this is the GUI:

Custom application Warp

To execute the application, you can configure the inputs/outputs and then press Apply. You can also expose the application using WebServices_Plugin

Release numbers

Changed release numbers of the GIMIAS components: Core, plugins and ThirdParty. These version numbers are used by Automatic Updates to check if a new version is available. The new version syntax is: <major>.<minor>.<development stage>.<release>

  • Major number is increased when there are significant jumps in functionality
  • Minor number is incremented when only minor features or significant fixes have been added
  • Development stage can be:
    • a: alpha (status). API and ABI can change. This version has not been tested. Only contains features that should be tested by some users. The developers can add more features.
    • b: beta (status). The alpha phase usually ends with a feature freeze, indicating that no more features will be added to the software. At this time, the software is said to be a feature complete. Software in the beta phase will generally have many more bugs in it than completed software, as well as speed/performance issues. The focus of beta testing is reducing impacts to users, often incorporating usability testing.
    • rc: release candidate. A release candidate (RC) is a beta version with potential to be a final product, which is ready to release unless significant bugs emerge.
    • r: (final) release. A release is called code complete when the development team agrees that no entirely new source code will be added to this release.
  • Revision number is incremented when changes are made on a development stage

The important characteristic of this approach is that the first version of a given level (beta, RC, production) must be identical to the last version of the release below it (1.5.a5 == 1.5.b1).

Examples: 1.5.a1, 1.5.a2, ... , 1.5.b1, 1.5.b2, ... 1.5.rc1, 1.5.rc2, ... 1.5.r1, 1.5.r2

You can read more here:

GIMIAS-1.5.a2 (12th of April 2012)

stereoscopic 3D

Added option to visualize images using stereoscopic 3D.


GIMIAS-1.5-a3 (1st May 2012)

GIMIAS-1.5-a4 (2nd May 2012)

ENH #0297: Allow reading/writing data using SFTP protocol

cURL library is being used for transferring data using several protocols. cURL supports DICT, FILE, FTP, FTPS, Gopher, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMTP, SMTPS, Telnet and TFTP. Curl library has been integrated in GIMIAS and allows reading/writing remote data files. The introduced URL will be passed directly to Curl library.

Examples of URLs are:

For protocols that require authentication:

  • FTP with relative path: ftp://<user>:<password>@
  • FTP with absolute path: ftp://<user>:<password>@
  • SFTP with relative path: sftp://<user>:<password>
  • SFTP with absolute path: sftp://<user>:<password>

Ring Cut

An improvement has been added in GIMIAS 1.5, in the last version of ring cut the cut is done on a plane perpendicular to the vessel direction, now It is possible to define two points, thus user can make oblicuous cuts.

With this ring cut tool the user can defiene a cut as usual, with one point, or define two points on the mesh to control the cutting angle with respect the blood vessel direction.

User selects New Cut as usual and selects first cutting point with "shift+leftclick", then the cut can be done or selects a second cutting point, again with "shift+leftclick".

Ring Cut Options
Oblique Cut Perpedicular Cut

DICOM Time tag

You can now specify a regular expression to extract part of the DICOM time tag, see DICOM Plugin#Improved_Time_tag_configuration for details.

ENH #0301: Too much widgets at the same time

The Toolbox widget contains the set of common used tools, like processing toolbox, selection toolbox, visual properties or data information. A notebook control with an icon for each tool allows to easily identify each tool and compacts the space used for tools.

Toolbox widget

For developers

To include a new tool, you need to add the property Toolbox to the WindowConfig, when registering the factory of you widget:

	VisualProperties::Factory::NewBase( ),
	WindowConfig( ).VerticalLayout().Category( "Visualization" ).Toolbox( )
	.Id( wxID_VisualProperties ).Caption( "VisualProperties" ) );

The Toolbox widget will automatically add and remove an instance of your widget to the notebook, when the factory is registered/unregistered.

To configure the icon you need to call the function SetBitmap() in the constructor of your widget, passing a bitmap in XPM format.

SetBitmap( processingtools_xpm );

To retrieve a widget instance from the toolbox, you can directly call GetPluginTab::GetWidget( ). The function will search recursively the widget over all widgets that are child of the plugin tab, using the function BaseWindow::GetChildWindow( ).

SelectionToolboxWidget* selectionToolboxWidget;
GetPluginTab()->GetWidget( wxID_SelectionToolboxWidget, selectionToolboxWidget );

GIMIAS-1.5-a5 (In progress)

Allow to visualize compressed CFD simulation results

When a CGNS simulation results is loaded in GIMIAS, the option "use compression" can be selected to create a single volumetric mesh with the scalar arrays for all time points, instead of creating a volumetric mesh for each time point. This strategy saves memory because the structure of the mesh is the same for all time points.


The volumetric mesh contains all scalar arrays. However, the time selector allows to select the current array index automatically.


Store/Retrieve metadata in NRRD file format

When a data is written into dis using NRRD file format, the metadata of the DataEntity will automatically be converted to itk::MetaDataDictionary class and attached to the image. When reading a NRRD file, the metadata will be restored back to the metadata of the DataEntity.

For example, if your DataEntity has the tag "ED flag" with value 1, the NRRD file will contain the following tag in the header:

ED flag:=1

This feature only works with std::string tags.

Added new CLP data types

You can use the new following types: signal, volmesh and pointset as input or output parameters of your Command Line Plugin. You can read more information in HowToDevelopACommandLinePlugin.

Stop button doesn't work for some operations

An execution can be monitored in the main window, if implemented by the processor that is being executed. This monitoring is shown using a progress bar and a cancel button. When this functionality is not implemented, the cancel button will not be enabled.

3D+T data management

Read/Write NRRD/MHD 3D+T images

You can read/write data using 3D+T formats like NRRD or MHD in a single file. The data can be a 3D scalar image or a 3D vector image of 2 or 3 components.

NRRD File Example:

# Complete NRRD file format specification at:
type: short
dimension: 4
space dimension: 4
sizes: 160 144 208 16
space directions: (1.1648000000000001,0,0,0) (0,1.18421,0,0) (0,0,0.75187999999999999,0) (0,0,0,1)
kinds: domain domain domain domain
endian: little
encoding: raw
space origin: (0,0,0,0)

This file formats simplify the use of 3D+T data in CLP. For example, the Pixel Intensity CLP uses the format nrrd to transfer a 3D+T image to process.

Read/Write 3D+T data in CLP

To read/write 3D+T data in a CLP, you can also use two new functions:

  • blITKFileUtils::CheckDataFilenames()
  • blITKFileUtils::GenerateDataFilenames()

You can see an example in Volumetric Mesh Scalar Value CLP and read more information in HowToDevelopACommandLinePlugin#3D_.2B_T_processing.

GIMIAS Installer

Improved installer of GIMIAS with new features and fixed a bug when uninstalling it from the system.

GIMIAS installer

The new installer allows to select the plugins to install, the startup menu folder and shows a license.

Configure rendering properties of your CLP output data

You can configure the rendering properties of your output data. This allows you to change the opacity or to hide or not the input data when the execution of the CLP finishes.

1. Add a new dependency to your CLP to the library baseLibNumericData:

clp.AddProjects( [generateClp, slicer, baseLibNumericData] )

2. Include this files:

#include "itksys/SystemTools.hxx"
#include "blTagMap.h"
#include "blXMLTagMapWriter.h"

2. Create rendering properties

blTagMap::Pointer metadata = blTagMap::New( );
blTagMap::Pointer rendering = blTagMap::New( );
rendering->AddTag( "opacity", float(0.5) );
rendering->AddTag( "hideParent", false );
metadata->AddTag( "Rendering", rendering );

3. Write GMI file

// Write GMI
std::string path = itksys::SystemTools::GetFilenamePath( outputMesh );
std::string filename = itksys::SystemTools::GetFilenameWithoutExtension( outputMesh );
std::string extension = ".gmi";
std::string gmiFilename = path + "/" + filename + extension;
blXMLTagMapWriter::Pointer gmiWriter = blXMLTagMapWriter::New();
gmiWriter->SetFilename( gmiFilename.c_str() );
gmiWriter->SetInput( metadata );
gmiWriter->Update( );

Added several registration CLPs

The following registration CLP have been added to GIMIAS:

You can find more CLP in Users#Command_Line_Plugins.

Upgrade guide from GIMIAS-1.4 to GIMIAS-1.5

Command Panel

Now, the command panel is hidden by default. To show it you need to add this line into your widget collective:

if ( GetPluginTab( ) != NULL )
	GetPluginTab( )->ShowWindow( wxID_CommandPanel, true);