Orchestra conversion tools
-
Define the
SDKTOP
environment variable:export SDKTOP=/fmrif/projects/ESE/Orchestra
-
Define the
ISMRMRD_HOME
ANDGE_TOOLS_HOME
variables. These specify installation location(s), e.g.export ISMRMRD_HOME=<prefix>/ismrmrd export GE_TOOLS_HOME=<prefix>/ge-tools
-
Obtain the ISMRMRD source code:
git clone https://github.com/ismrmrd/ismrmrd
-
Pre-define the location of HDF5 in order to use Orchestra's static HDF5 library:
export HDF5_ROOT=$SDKTOP/include/recon/3p/Linux/hdf5-1.8.12_dev_linux64
Any other version of HDF5 on the system can cause conflicts as cmake will find all versions, and will cause issues or conflicts with the build process. For these instructions to work, only the HDF5 supplied with Orchestra should be on the system.
-
Configure, compile, and install ISMRMRD:
cd ismrmrd/ mkdir build cd build/ cmake -D CMAKE_INSTALL_PREFIX=$ISMRMRD_HOME -D HDF5_USE_STATIC_LIBRARIES=yes -D CMAKE_EXE_LINKER_FLAGS="-lpthread -lz -ldl" .. make install cd ../
If the situation is encountered where the system compilers and Boost version are "too far ahead" of how Orchestra's support libraries (which include Boost) were compiled, then it may be necessary to have the ISMRMRD build explicitly refer to Orchestra's Boost libraries, with a command like:
cmake -D Boost_INCLUDE_DIR=$SDKTOP/include/recon/3p/Linux/boost_1_55_0_dev_linux64/include/ -D CMAKE_INSTALL_PREFIX=$ISMRMRD_HOME -D HDF5_USE_STATIC_LIBRARIES=yes -D CMAKE_EXE_LINKER_FLAGS="-lpthread -lz -ldl" ..
It may also be necessary to force the usage of older ABIs standards for C++. To accomplish this, a switch along the lines of:
-D_GLIBCXX_USE_CXX11_ABI=0
will have to be added to the "CMAKE_CXX_FLAGS" option in the project's CMakeLists.txt file.
-
If using the Gadgetron for reconstruction, obtain and configure code similarly, to use the HDF5 supplied with Orchestra:
git clone https://github.com/gadgetron/gadgetron.git cd gadgetron/ mkdir build cd build/ cmake -D CMAKE_INSTALL_PREFIX=$GADGETRON_HOME -D HDF5_USE_STATIC_LIBRARIES=yes -D CMAKE_EXE_LINKER_FLAGS="-lpthread -lz -ldl" .. make install cd ../
On some systems, with multiple versions of gcc, to force Gadgetron to compile with the appropriate version of gcc (since at least version 6 is required), you can be explicit to cmake about the compiler it should use with a command like:
cmake -D CMAKE_C_COMPILER=/usr/bin/gcc-6 -D CMAKE_CXX_COMPILER=/usr/bin/g++-6 -D CMAKE_INSTALL_PREFIX=$GADGETRON_HOME -D HDF5_USE_STATIC_LIBRARIES=yes -D CMAKE_EXE_LINKER_FLAGS="-lpthread -lz -ldl" ..
-
Obtain the GE converter source code:
git clone https://github.com/ismrmrd/ge_to_ismrmrd.git
-
Configure, compile and install the converter:
cd ge_to_ismrmrd/ mkdir build cd build/ cmake -D CMAKE_INSTALL_PREFIX=$GE_TOOLS_HOME .. make install cd ../
-
Make sure
$ISMRMRD_HOME/bin
and$GE_TOOLS_HOME/bin
are added to your environment'sPATH
variable, and that$ISMRMRD_HOME/lib
and$GE_TOOLS_HOME/lib
are added to your environment'sLD_LIBRARY_PATH
variable, to be able to use the libraries and binaries supplied with these tools. -
A typical command line to convert the supplied P-file using this library is:
pfile2ismrmrd -v -l libp2i-generic.so -p GenericConverter -x $GE_TOOLS_HOME/share/ge-tools/config/default.xsl P21504_FSE.7
-
If customized conversion libraries are desired, the corresponding command will be:
pfile2ismrmrd -v -l libp2i-NIH.so -p NIH2dfastConverter -x $GE_TOOLS_HOME/share/ge-tools/config/default.xsl P21504_FSE.7
The source code that enables this example is included with these tools. This example is a straightforward copy of the GenericConverter, but it shows how these classes can be inherited from and implemented.
-
Similarly, a typical command line to convert an example ScanArchive file using this library is:
pfile2ismrmrd -v -l libp2i-generic.so -p GenericConverter -x $GE_TOOLS_HOME/share/ge-tools/config/default.xsl ScanArchive_FSE.h5
Sample raw data files are now in the 'sampleData' directory.