Installation#
Overview#
omni
is a hybrid Python/C++17 library designed for developing image
preprocessing algorithms.
System Requirements#
A linux system is required to run omni
. Currently, the recommended linux
OS to use is Ubuntu 20.04
.
It is recommended that your system has at least 32 GB of RAM to run omni
.
Actual memory usage will depend on the size of the images, and the models
that you are using.
omni
currently relies on programs from FSL, AFNI, and ANTs for some functionality.
The list below are the known versions for each package known to work with omni
:
# Newer/Older versions may still work, but have not been tested.
FSL 6.0.4
AFNI 20.0.18
ANTs 15a6861
To install these packages, refer to each package’s respective documenation.
Installing omni
#
omni
has a PyPI package available here. To install it, you can
use pip
:
Warning
The PyPI package for omni
is called omnineuro
. The omni
package on PyPI
refers to an unrelated package. Take care to install the correct package!
# base installation of omni package
pip install omnineuro
# OR
# if you want to use SpaceTimeRealign (Simultaneous Slice Time/Motion Correction)
# you need to install the extra packages
pip install omnineuro[extra]
# post installation
omni_affine -h
# should run successfully and give you the help text for the omni_affine script
# note that on first run, it may take some time due to python generating bytcode files
Building and installing omni
from source#
While the omni
package is available on PyPI, you may have reason to build and install omni
directory from
source. In this case, you will need to install a few system dependencies to compile the C++ modules.
System Dependencies#
You will need python >=3.6
, pip >= 19.1
, gcc >=8
,
gfortran >=8
, openblas
, hdf5
, and fftw3
Example package manager commands are below:
Ubuntu
and Debian
#
# this was tested on Ubuntu 20.04 and 18.04
apt-get install -y python3 python3-dev python3-distutils python3-pip build-essential \
gfortran libopenblas-dev liblapack-dev libhdf5-dev libfftw3-dev
Centos
#
# this was tested on Centos 7
# add the epel repo
yum -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
# dependencies
yum -y install python3-devel openblas-devel lapack-devel hdf5-devel fftw3-devel
# pip version on Centos is old, so we use pip to update itself
pip3 install pip -U
# install devtoolset for gcc/gfortran 8
yum -y install centos-release-scl && yum -y install devtoolset-8
# this enables the gcc/gfortran toolset
source /opt/rh/devtoolset-8/enable
Compiling and installing omni
#
To compile and install omni
, you have two options:
Install the
sdist
package from PyPI.
You can install the sdist
package from PyPI by running:
# installs the sdist package from PyPI
pip install omnineuro --no-binary omnineuro
Install the package from the
git
repo.
This involves cloning the git repo and using pip
to install the package:
# clone the git repo
git clone https://gitlab.com/vanandrew/omni.git
# install omni package
pip install [path/to/the/cloned/omni/directory]
If you are running into compilation issues, it is helpful to use pip
’s verbose option -v
to see what is happening.
Running omni
on Docker#
It is also possible to run omni
on Docker. A pre-built Docker image can be found
at DockerHub.
# The first argument to the docker image is the command to run
# Note that unlike the local install, commands are called without the
# ``omni_`` prefix.
docker run -it --rm vanandrew/omni affine -h
# Running the image without any arguments will give you a list of
# available commands.
docker run -it --rm vanandrew/omni
For Developers#
If you are a developer, it may be convenient to install omni
in editable mode for making code modifications and
testing. This will allow you to directly work out of the cloned git repo (instead of modifying files in whatever
location pip
installs omni
into).
You will need to follow all the same steps as in Building and installing omni from source.
git clone https://gitlab.com/vanandrew/omni.git
pip install -e [path/to/the/cloned/omni/directory]
What’s next?#
After downloading and installing, you may want to read the Walkthrough: Field map-lessly correcting distortion in an example data set.
Over the course of that tutorial, you learn how to test and validate the success of your installation by using the
script, omni_pipeline
to preprocess the included example data set. Reading through this section will help you
understand how omni
preprocessing scripts organize their outputs, the purposes of the various intermediary files
they produce, and give you a sense of where to begin when troubleshooting registration issues, if they happen to crop
up.