Xuvtools
From LMBWiki
Table of contents |
About xuvtools - the eXtent Ur Viev Toolset
The xuv toolset currently consists of the following tools:
- xuvstitch (xuvstitch, overlay_stacks, bleachcorrect and find_absolute_positions)
Planned, but not yet released are:
- xuvhdr
About xuvstitch
The approach of our stitcher to the problem is best illustrated in the following image:
Example usage of the Graphical User Interface
Currently the GUI is in early alpha status and can not be used.
Example usage of the Command Line Tools
All tools support the command line options -h / --help, and will print out detailed usage information.
A common way of usage would be the following:
- Given is a dataset example.h5, consisting of X (time-)stacks and Y channels: t0_channel0 to tX_channelY
- calling the stitcher with the dataset (fill in the names of the rest of the stacks at [...]):
FILE="example" xuvstitch \ --objfile ./${FILE}.h5 --outfile ./${FILE}_corr.h5 \ --channels Y --verbose 4 --sampling 20 \ --stacks `for((i=0; i<X;++i)) ; do echo "t${i}_channel" ; done`
- calling the position estimation with the correlation result (using an initial threshold of 0.3):
find_absolute_positions \ --corrfile ./${FILE}_corr.h5 --outfile ./${FILE}_pos.h5 \ --verbose 2 --corrthresh 0.55
- create a color overlay to visualize stitching quality of channel 0 (the important argument is --color):
overlay_stacks \ --objfile ./${FILE}.h5 --positionfile ./${FILE}_pos.h5 --outfile ./${FILE}_color.h5 \ --color --csuffix 0 --verbose 2 --blending 4
- apply bleaching correction to the stacks (the important argument is --width <in um>):
bleachcorrect \ --objfile ./${FILE}.h5 --positionfile ./${FILE}_pos.h5 --outfile ./${FILE}_bcorr.h5 \ --verbose 2 --thresh 10 --factor 0.60 --width 60
- create the final overlay with the bleachcorrected stacks, for all Y channels:
for((c=0; c<Y; ++c)); do overlay_stacks \ --objfile ./${FILE}_bcorr.h5 --positionfile ./${FILE}_pos.h5 \ --outfile ./${FILE}_channel${c}_overlay.h5 \ --csuffix ${c} --verbose 2 --blending 4 done
Installation HowTo
Installation of xuvtools
- Download xuvtools from http://lmb.informatik.uni-freiburg.de/lmbsoft/xuvtools/index.en.html
- Extract the archive
- Add the bin directory to your path:
- Linux bash: add export PATH="$PATH;/path/to/xuvtools/bin to $HOME/.bashrc"
- Linux tcsh: add setenv PATH "$PATH;/path/to/xuvtools/bin to $HOME/.bashrc"
- Windows: right-click on My Computer, select Properties, goto Advanced tab, click Environment Variables, add New User Variable called PATH with value %PATH%;C:\path\to\xuvtools\bin\
- The statically compiled version of xuvtools does not contain libraries and doesn't need the LD_LIBRARY_PATH to be set.
Compiling your own version of xuvtools from Source
- Change to the base directory you want xuvtools to reside below later (e.g. /misc/database/<login>/)
- Checkout current version of xuvtools (replace yourlogin in CVSLOGIN="yourlogin" with your cvs login name, the one you have gotten from us)
CVSLOGIN="yourlogin" cvs -d:pserver:${CVSLOGIN}@falballa.informatik.uni-freiburg.de:/lmbsoft login cvs -d:pserver:${CVSLOGIN}@falballa.informatik.uni-freiburg.de:/xuvtools login
- checkout needed libraries and the xuvtools
cvs -d:pserver:${CVSLOGIN}@falballa.informatik.uni-freiburg.de:/lmbsoft co lmbBlitz cvs -d:pserver:${CVSLOGIN}@falballa.informatik.uni-freiburg.de:/lmbsoft co lmbNetCDF cvs -d:pserver:${CVSLOGIN}@falballa.informatik.uni-freiburg.de:/lmbsoft co lmbHDF5 cvs -d:pserver:${CVSLOGIN}@falballa.informatik.uni-freiburg.de:/lmbsoft co lmbFFTW cvs -d:pserver:${CVSLOGIN}@falballa.informatik.uni-freiburg.de:/lmbsoft co libcmdline cvs -d:pserver:${CVSLOGIN}@falballa.informatik.uni-freiburg.de:/lmbsoft co libBlitzNetCDF cvs -d:pserver:${CVSLOGIN}@falballa.informatik.uni-freiburg.de:/lmbsoft co libBlitzHDF5 cvs -d:pserver:${CVSLOGIN}@falballa.informatik.uni-freiburg.de:/lmbsoft co libBlitzFFTW cvs -d:pserver:${CVSLOGIN}@falballa.informatik.uni-freiburg.de:/xuvtools co xuvtools
The checkout creates new directories for libraries and xuvtools in the current working directory.
Compiling your own version of xuvtools on i386 and/or x86_64 (Windows)
You need at least Visual Studio 2005 Standard or Professional Edition, or Visual Studio 2005 Express Edition with the Microsoft Windows SDK installed. Be sure to be able to use a x64 target compiler which supports MMX/SSE with Visual Studio. Recommended is using Visual Studio 2008 Professional Edition with the Intel x64 Target C++ Compiler for Windows.
Open the project file in every subdirectory of the lmbsoft tools, and (batch) compile the target you want to use. Then compile xuvtools.
Compiling your own version of xuvtools on i386 and/or x86_64 (Linux)
This HOWTO describes the full local installation of the current CVS snapshot. It assumes you are running a linux (or compatible) box on an x86 (or compatible) platform. The installation process will allow to compile and install builds for different architectures based on one source tree. Using a bash shell for installation is recommended, for then nearly all the following commands can be simply copied into the terminal (except for the CVS command, that requires you to fill in your user name)
Prerequisites:
g++ (4.x recommended), libtool, autoconf, automake, libtiff4-dev, libjpeg-dev, libnetpbm10-dev, cvs, libgsl0-dev, texinfo, texi2html, patch
aptitude install g++ libtool autoconf automake libtiff4-dev libjpeg-dev libnetpbm10-dev cvs libgsl0-dev texinfo texi2html patch
The list may be not complete, install missing packages as needed.
Create a variable with the path to that directory for later usage. Additionally create a variable for the destination of libraries, binaries, etc. The destination path depends on your platform. The usage of "$HOSTTYPE" gives a good choice for the name of the destination directory and enables the possibility of automatic environment setup on different machines.
export LMBSOFTSRC=/path/to/current/directory export LMBSOFTDEST=/path/where/to/install/$HOSTTYPE
The variable "${HOSTTYPE}" will return something similar to i386 for a 32bit and x86_64 for a 64bit machine
- Add xuvtools binary paths to your PATH environment variable. This is necessary, because subsequent packages need to find config scripts of dependent packages.
export PATH=${LMBSOFTDEST}/bin:${LMBSOFTDEST}/ext/bin:${PATH} export LD_LIBRARY_PATH=${LMBSOFTDEST}/lib:${LD_LIBRARY_PATH}
- Finally start the installation itself (Depending on the machine you're using this may need some time)
Currently the default configure options should be optimal for most people. The libraries include a recent blitz++, fftw and netcdf-release. If you do not want to use these, see the next point below. It is important to note that one should not enable openmp using --with-openmp because it is broken as of now (October 2007)!
cd ${LMBSOFTSRC}/lmbBlitz/ && \ ./bootstrap.sh && \ mkdir -p ${HOSTTYPE} && \ cd ${HOSTTYPE}/ && \ ../configure --prefix=${LMBSOFTDEST}/ && \ make && \ make install && \ make clean
cd ${LMBSOFTSRC}/lmbNetCDF/ && \ ./bootstrap.sh && \ mkdir -p ${HOSTTYPE} && \ cd ${HOSTTYPE}/ && \ ../configure --prefix=${LMBSOFTDEST}/ && \ make && \ make install && \ make clean
cd ${LMBSOFTSRC}/lmbHDF5/ && \ ./bootstrap.sh && \ mkdir -p ${HOSTTYPE} && \ cd ${HOSTTYPE}/ && \ ../configure --prefix=${LMBSOFTDEST}/ && \ make && \ make install && \ make clean
cd ${LMBSOFTSRC}/lmbFFTW/ && \ ./bootstrap.sh && \ mkdir -p ${HOSTTYPE} && \ cd ${HOSTTYPE}/ && \ ../configure --prefix=${LMBSOFTDEST}/ && \ make && \ make install && \ make clean
cd ${LMBSOFTSRC}/libcmdline/ && \ ./bootstrap.sh && \ mkdir -p ${HOSTTYPE} && \ cd ${HOSTTYPE}/ && \ ../configure --prefix=${LMBSOFTDEST}/ && \ make && \ make install && \ make clean
cd ${LMBSOFTSRC}/libBlitzNetCDF/ && \ ./bootstrap.sh && \ mkdir -p ${HOSTTYPE} && \ cd ${HOSTTYPE}/ && \ ../configure --prefix=${LMBSOFTDEST}/ && \ make && \ make install && \ make clean
cd ${LMBSOFTSRC}/libBlitzHDF5/ && \ ./bootstrap.sh && \ mkdir -p ${HOSTTYPE} && \ cd ${HOSTTYPE}/ && \ ../configure --prefix=${LMBSOFTDEST}/ && \ make && \ make install && \ make clean
cd ${LMBSOFTSRC}/libBlitzFFTW/ && \ ./bootstrap.sh && \ mkdir -p ${HOSTTYPE} && \ cd ${HOSTTYPE}/ && \ ../configure --prefix=${LMBSOFTDEST}/ && \ make && \ make install && \ make clean
cd ${LMBSOFTSRC}/xuvtools/ && \ ./bootstrap.sh && \ mkdir -p ${HOSTTYPE} && \ cd ${HOSTTYPE}/ && \ ../configure --prefix=${LMBSOFTDEST}/ && \ make && \ make install
- If you do not want to use the included packages but rather a package that you have previously installed, you can specify it using --with-system-<package>=/path/to/installdir. An example for users of the LMB Pollen software would be to replace the configure in above call with:
${LMBSOFTSRC}/configure --with-system-blitz=${POLDEST}/ext --with-system-fftw=${POLDEST}/ext --with-system-netcdf=${POLDEST}/ext --prefix=${PWD}
- That's all... if you want to install a build on a different platform, ssh to a machine of that type, and repeat the configuration and installation steps as above.
That should do. If you experience any problems during installation, don't hesitate to contact us.
To really benefit from the build structure you can add a few lines to your .bashrc (or some other startup script) like
export XUVSRC=/your/path/to/xuvtools export XUVDEST=${XUVSRC}/$HOSTTYPE export PATH=${XUVDEST}/bin:${XUVDEST}/ext/bin:${PATH} export LD_LIBRARY_PATH=${XUVDEST}/lib:${XUVDEST}/ext/lib:${LD_LIBRARY_PATH}
Mario Emmenlauer