# Xuvtools

### From LMBWiki

# 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/
- 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

Retrieved from "http://lmb.informatik.uni-freiburg.de/lmbwiki/index.php/Xuvtools"