Project

General

Profile

Install EMAN2 » History » Version 86

Neil Voss, 05/23/2016 02:59 PM

1 1 Neil Voss
h1. Install EMAN2/SPARX
2
3 53 Amber Herold
*Before you begin:*
4 55 Amber Herold
Please note that Appion 2.2, Appion 2.2-redux and any earlier releases do not include any features that require EMAN2/SPARX to be installed. Appion 3.0, the development trunk and future releases will require this software.
5 69 Neil Voss
This documentation assumes you are using CentOS 6 (written as of CentOS 6.5)
6
It is best to install EMAN2/SPARX from source to get MPI working on a cluster or to avoid conflicts with having two different versions of python on your system. Binaries of EMAN2/SPARX all come with their own python pre-installed.
7 6 Neil Voss
8
9 55 Amber Herold
h2. Install pre-requisite packages for EMAN2 compiling
10 6 Neil Voss
11 27 Neil Voss
h3. yum based packages
12
13 7 Neil Voss
* Make sure EPEL is install, if not go here: [[Download additional Software (CentOS Specific)]]
14
* Use yum to install devel libraries:
15
<pre>
16 81 Neil Voss
sudo yum install fftw-devel gsl-devel boost148-python numpy libjpeg-devel \
17
 PyQt4-devel cmake ipython hdf5-devel libtiff-devel libpng-devel boost148-devel \
18 85 Neil Voss
 PyOpenGL db4-devel python-argparse openmpi-devel python-pip freeglut-devel ftgl-devel
19 1 Neil Voss
</pre>
20 27 Neil Voss
21
22 3 Neil Voss
h2. Download the source
23
24
# To download the source code go to the link:
25
#* http://blake.bcm.edu/emanwiki/EMAN2
26 56 Amber Herold
# Click on *"Main EMAN2 Download Page"*
27 66 Neil Voss
# Click on *"Download EMAN 2"*, whichever is the latest release of EMAN. 
28
# Scroll down to *Source* to download the *eman2.1beta3.source.tar.gz* 
29 3 Neil Voss
30
h2. Work with the source
31
32
# go to the directory with the source code
33
# extract the archive:
34
<pre>
35 71 Neil Voss
tar zxvf eman2.12.source.tar.gz
36 1 Neil Voss
</pre>
37 15 Neil Voss
# go into directory
38
<pre>cd EMAN2/src/build</pre>
39 19 Neil Voss
# start configure script:
40 1 Neil Voss
<pre>cmake ../eman2/</pre>
41 11 Neil Voss
#* Note: alternatively you can run @ccmake ../eman2/@ and configure all the parameters
42 75 Neil Voss
#* I had to disable ftgl (fonts in OpenGL) to get 2.12 to compile.
43 82 Neil Voss
#* I had to manually set BOOST_LIBRARY=/usr/lib64/boost148/libboost_python.so
44 84 Neil Voss
#* I had to manually set BOOST_INCLUDE_PATH=/usr/include/boost148
45
#* I had to manually set FREETYPE_INCLUDE_PATH=/usr/include/freetype2/
46 70 Neil Voss
<pre>
47
-- The C compiler identification is GNU 4.4.7
48
-- The CXX compiler identification is GNU 4.4.7
49
-- Check for working C compiler: /usr/bin/cc
50
-- Check for working C compiler: /usr/bin/cc -- works
51
-- Detecting C compiler ABI info
52
-- Detecting C compiler ABI info - done
53
-- Check for working CXX compiler: /usr/bin/c++
54
-- Check for working CXX compiler: /usr/bin/c++ -- works
55
-- Detecting CXX compiler ABI info
56
-- Detecting CXX compiler ABI info - done
57
-- Looking for fseek64
58
-- Looking for fseek64 - not found
59
-- Looking for fseeko
60
-- Looking for fseeko - found
61
-- Looking for ftell64
62
-- Looking for ftell64 - not found
63
-- Looking for ftello
64
-- Looking for ftello - found
65
-- Configuring done
66
-- Generating done
67
-- Build files have been written to: /emg/sw/EMAN2/src/build
68
</pre>
69 18 Neil Voss
# start compiling:
70
<pre>make</pre>
71 3 Neil Voss
# install to directory:
72 23 Neil Voss
<pre>sudo make install</pre>
73
74
h2. Set environmental variables
75
76
h3. bash
77
78
<pre>sudo nano /etc/profile.d/eman2.sh</pre>
79 24 Neil Voss
80
<pre>
81
export EMAN2DIR=/usr/local/EMAN2
82
export PATH=${EMAN2DIR}/bin:${PATH}
83 23 Neil Voss
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${EMAN2DIR}/lib
84
export PYTHONPATH=${EMAN2DIR}/lib:${EMAN2DIR}/bin
85
</pre>
86 16 Neil Voss
87 51 Neil Voss
h3. c shell
88
89
<pre>sudo nano /etc/profile.d/eman2.csh</pre>
90
91
<pre>
92
setenv EMAN2DIR /usr/local/EMAN2
93
setenv PATH ${EMAN2DIR}/bin:${PATH}
94
setenv LD_LIBRARY_PATH ${LD_LIBRARY_PATH}:${EMAN2DIR}/lib
95
setenv PYTHONPATH ${EMAN2DIR}/lib:${EMAN2DIR}/bin
96
</pre>
97
98
99 50 Neil Voss
h2. Install MyMPI
100 42 Neil Voss
101 63 Amber Herold
* First, add the openmpi module so that MyMPI can find it.
102
<pre>
103
module add openmpi-i386
104
-or-
105
module add openmpi-x86_64
106
</pre>
107
108 42 Neil Voss
* Download source: 
109 61 Amber Herold
From the main software page: http://ncmi.bcm.tmc.edu/ncmi/software/software_details?selected_software=counter_222 scroll to *MPI Support*.
110
Click on *Download MPI Support*
111
Click on *pydusa-1.15es.tgz*
112 42 Neil Voss
* Extract:
113 61 Amber Herold
<pre>tar zxvf pydusa-1.15es.tgz</pre>
114 42 Neil Voss
* go into directory
115 61 Amber Herold
<pre>cd pydusa-1.15es</pre>
116 65 Amber Herold
&nbsp;
117 62 Amber Herold
If you are on a 64bit machine, you may have problems with the code finding the numpy headers:
118 65 Amber Herold
&nbsp;
119 34 Neil Voss
<pre>nano configure</pre>
120 65 Amber Herold
&nbsp;
121 54 Neil Voss
find the line:
122 1 Neil Voss
<pre>
123
elif test -d ${PY_PREFIX}/lib/python$PY_VERSION/site-packages/numpy/core/include; then
124
   PY_HEADER_NUMPY="-I${PY_PREFIX}/lib/python$PY_VERSION/site-packages/numpy/core/include"
125 54 Neil Voss
</pre>
126
and replace it with:
127 65 Amber Herold
&nbsp;
128 54 Neil Voss
<pre>
129 1 Neil Voss
elif test -d ${PY_PREFIX}/lib64/python$PY_VERSION/site-packages/numpy/core/include; then
130
   PY_HEADER_NUMPY="-I${PY_PREFIX}/lib64/python$PY_VERSION/site-packages/numpy/core/include"
131 46 Neil Voss
</pre>
132
* Configure:
133
<pre>
134
setenv MPIROOT /usr/lib64/openmpi
135
setenv MPIINC /usr/include/openmpi-x86_64
136
setenv MPILIB ${MPIROOT}/lib
137
setenv MPIBIN ${MPIROOT}/bin
138 1 Neil Voss
./configure
139
</pre>
140
<pre>
141
export MPIROOT=/usr/lib64/openmpi
142
export MPIINC=/usr/include/openmpi-x86_64
143
export MPILIB=${MPIROOT}/lib
144 47 Neil Voss
export MPIBIN=${MPIROOT}/bin
145 46 Neil Voss
./configure
146
</pre>
147 64 Amber Herold
Please ensure mpicc was found. If it is not found, a version of MPI will be installed that may cause errors. Look for the following error and correct this issue before moving on:
148
<pre>
149
configure: error: Unable to find mpicc! mpicc location can be specified with --with-mpicc
150
</pre>
151 65 Amber Herold
&nbsp;
152 46 Neil Voss
* compile the source:
153
<pre>make</pre>
154
* copy the mpi.so to site-packages with a different name:
155
<pre>
156 1 Neil Voss
sudo mkdir /usr/lib64/python2.6/site-packages/mympi/
157 52 Neil Voss
sudo touch /usr/lib64/python2.6/site-packages/mympi/__init__.py
158 1 Neil Voss
sudo cp -v src/mpi.so /usr/lib64/python2.6/site-packages/mympi/mpi.so
159
</pre>
160 47 Neil Voss
* create a wrapper around the wrapper:
161 1 Neil Voss
<pre>sudo nano /usr/lib64/python2.6/site-packages/mpi.py</pre>
162
<pre>
163
import ctypes
164
mpi = ctypes.CDLL('libmpi.so.1', ctypes.RTLD_GLOBAL)
165
from mympi.mpi import *
166
</pre>
167 50 Neil Voss
This needs to be done to avoid the error:
168
<pre>
169
python: symbol lookup error: 
170
  /usr/lib64/openmpi/lib/openmpi/mca_paffinity_hwloc.so: 
171
    undefined symbol: mca_base_param_reg_int
172
</pre>
173 1 Neil Voss
174
* test 1: 
175
<pre>
176
python -c 'import mpi'
177
python -c 'import sys; from mpi import mpi_init; mpi_init(len(sys.argv), sys.argv)'
178
</pre>
179
180 50 Neil Voss
* test 2: 
181
<pre>sxisac.py start.hdf</pre>
182
(Note: start.hdf does not need to exist, if it does not exist then it should exit with file not found)
183 42 Neil Voss
184 50 Neil Voss
h2. Test to see if code works
185
186
see http://blake.bcm.edu/emanwiki/EMAN2/FAQ/EMAN2_unittest
187
188
<pre>
189
cd EMAN2/test/rt
190
./rt.py
191
</pre>
192
193
h2. Install MyMPI for MPI functions
194
195
see http://sparx-em.org/sparxwiki/MPI-installation
196
or https://www.nbcr.net/pub/wiki/index.php?title=MyMPI_Setup
197
198
This fixes this problem:
199
<pre>
200
    from mpi import mpi_init
201
ImportError: No module named mpi
202
</pre>
203
204
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.
205 34 Neil Voss
206 9 Neil Voss
h2. Documentation
207 3 Neil Voss
208 1 Neil Voss
* http://blake.bcm.edu/emanwiki/EMAN2/Install
209 2 Neil Voss
* http://blake.bcm.edu/emanwiki/EMAN2/FAQ/eman2BuildFAQ
210 31 Neil Voss
211 2 Neil Voss
______
212
213
[[Install EMAN|< Install EMAN 1]] | [[Install SPIDER|Install SPIDER >]]
214 1 Neil Voss
215
______