Install EMAN2 » History » Revision 52
Revision 51 (Neil Voss, 08/14/2012 11:09 AM) → Revision 52/87 (Neil Voss, 08/14/2012 12:27 PM)
h1. Install EMAN2/SPARX
It is best to install EMAN2/SPARX from source, so that do not have conflicts with having two different versions of python on your system. Binaries of EMAN2/SPARX all come with their own python pre-installed.
This documentation assumes you are using CentOS 6 (written as of CentOS 6.2)
h2. Install require pre-packages for EMAN2 compiling
h3. yum based packages
* Make sure EPEL is install, if not go here: [[Download additional Software (CentOS Specific)]]
* Use yum to install devel libraries:
<pre>
sudo yum install fftw-devel gsl-devel boost-python numpy \
PyQt4-devel cmake ipython hdf5-devel libtiff-devel libpng-devel \
PyOpenGL ftgl-devel db4-devel python-argparse openmpi-devel
</pre>
h3. bsddb3
Additionally you need to install the python-bsddb3 library (not available via YUM). I just use the pypi easy_installer, yum will never know.
<pre>
sudo easy_install bsddb3
</pre>
h2. Download the source
# To download the source code go to the link:
#* http://blake.bcm.edu/emanwiki/EMAN2
# Click on *"Current stable version - direct link"*
# Go under the heading "Source" at bottom of page
# Click to download the *eman-source-2.xx.tar.gz* file (as of August 2012, 2.xx is 2.06)
h2. Work with the source
# go to the directory with the source code
# extract the archive:
<pre>
tar zxvf eman-source-2.06.tar.gz
</pre>
# go into directory
<pre>cd EMAN2/src/build</pre>
# start configure script:
<pre>cmake ../eman2/</pre>
#* Note: alternatively you can run @ccmake ../eman2/@ and configure all the parameters
# start compiling:
<pre>make</pre>
# install to directory:
<pre>sudo make install</pre>
h2. Set environmental variables
h3. bash
<pre>sudo nano /etc/profile.d/eman2.sh</pre>
<pre>
export EMAN2DIR=/usr/local/EMAN2
export PATH=${EMAN2DIR}/bin:${PATH}
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${EMAN2DIR}/lib
export PYTHONPATH=${EMAN2DIR}/lib:${EMAN2DIR}/bin
</pre>
h3. c shell
<pre>sudo nano /etc/profile.d/eman2.csh</pre>
<pre>
setenv EMAN2DIR /usr/local/EMAN2
setenv PATH ${EMAN2DIR}/bin:${PATH}
setenv LD_LIBRARY_PATH ${LD_LIBRARY_PATH}:${EMAN2DIR}/lib
setenv PYTHONPATH ${EMAN2DIR}/lib:${EMAN2DIR}/bin
</pre>
h2. Install MyMPI
* Download source:
<pre>wget -O pydusa-1.15-sparx.tgz \
'http://sparx-em.org/sparxwiki/MPI-installation?action=AttachFile&do=get&target=pydusa-1.15-sparx.tgz'</pre>
* Extract:
<pre>tar zxvf pydusa-1.15-sparx.tgz</pre>
* go into directory
<pre>cd pydusa-1.15-sparx</pre>
<pre>nano configure</pre>
<pre>
elif test -d ${PY_PREFIX}/lib/python$PY_VERSION/site-packages/numpy/core/include; then
PY_HEADER_NUMPY="-I${PY_PREFIX}/lib/python$PY_VERSION/site-packages/numpy/core/include"
</pre><pre>
elif test -d ${PY_PREFIX}/lib64/python$PY_VERSION/site-packages/numpy/core/include; then
PY_HEADER_NUMPY="-I${PY_PREFIX}/lib64/python$PY_VERSION/site-packages/numpy/core/include"
</pre>
* Configure:
<pre>
setenv MPIROOT /usr/lib64/openmpi
setenv MPIINC /usr/include/openmpi-x86_64
setenv MPILIB ${MPIROOT}/lib
setenv MPIBIN ${MPIROOT}/bin
./configure
</pre>
<pre>
export MPIROOT=/usr/lib64/openmpi
export MPIINC=/usr/include/openmpi-x86_64
export MPILIB=${MPIROOT}/lib
export MPIBIN=${MPIROOT}/bin
./configure
</pre>
* compile the source:
<pre>make</pre>
* copy the mpi.so to site-packages with a different name:
<pre>
sudo mkdir /usr/lib64/python2.6/site-packages/mympi/
sudo touch /usr/lib64/python2.6/site-packages/mympi/__init__.py
sudo cp -v src/mpi.so /usr/lib64/python2.6/site-packages/mympi/mpi.so
</pre>
* create a wrapper around the wrapper:
<pre>sudo nano /usr/lib64/python2.6/site-packages/mpi.py</pre>
<pre>
import ctypes
mpi = ctypes.CDLL('libmpi.so.1', ctypes.RTLD_GLOBAL)
from mympi.mpi import *
</pre>
This needs to be done to avoid the error:
<pre>
python: symbol lookup error:
/usr/lib64/openmpi/lib/openmpi/mca_paffinity_hwloc.so:
undefined symbol: mca_base_param_reg_int
</pre>
* test 1:
<pre>
python -c 'import mpi'
python -c 'import sys; from mpi import mpi_init; mpi_init(len(sys.argv), sys.argv)'
</pre>
* test 2:
<pre>sxisac.py start.hdf</pre>
(Note: start.hdf does not need to exist, if it does not exist then it should exit with file not found)
h2. Test to see if code works
see http://blake.bcm.edu/emanwiki/EMAN2/FAQ/EMAN2_unittest
<pre>
cd EMAN2/test/rt
./rt.py
</pre>
h2. Install MyMPI for MPI functions
see http://sparx-em.org/sparxwiki/MPI-installation
or https://www.nbcr.net/pub/wiki/index.php?title=MyMPI_Setup
This fixes this problem:
<pre>
from mpi import mpi_init
ImportError: No module named mpi
</pre>
This module was very difficult to get working, it seems to be a poorly supported python wrapper for MPI. So, what we are going to do is compile the module, rename it, and create a wrapper. So, essentially we are creating a wrapper around the wrapper. We can only hope they switch to [http://mpi4py.scipy.org/ mpi4py] in the future.
h2. Documentation
* http://blake.bcm.edu/emanwiki/EMAN2/Install
* http://blake.bcm.edu/emanwiki/EMAN2/FAQ/eman2BuildFAQ
______
[[Install EMAN|< Install EMAN 1]] | [[Install SPIDER|Install SPIDER >]]
______