Project

General

Profile

Install EMAN2 » History » Version 85

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 77 Neil Voss
h3. Download and install FLGL
23 76 Neil Voss
24
25
download
26
<pre>
27 79 Neil Voss
wget \
28
'http://downloads.sourceforge.net/project/ftgl/FTGL%20Source/2.1.3%7Erc5/ftgl-2.1.3-rc5.tar.gz' \
29
 -O ftgl-2.1.3-rc5.tar.gz
30 76 Neil Voss
</pre>
31
32
unzip
33
<pre>
34 77 Neil Voss
tar zxvf ftgl-2.1.3-rc5.tar.gz
35 76 Neil Voss
</pre>
36
37 77 Neil Voss
setup, compile, and install
38 76 Neil Voss
<pre>
39 77 Neil Voss
cd ftgl-2.1.3~rc5
40 76 Neil Voss
./configure
41
make
42
sudo make install
43
</pre>
44
45
46 3 Neil Voss
h2. Download the source
47
48
# To download the source code go to the link:
49
#* http://blake.bcm.edu/emanwiki/EMAN2
50 56 Amber Herold
# Click on *"Main EMAN2 Download Page"*
51 66 Neil Voss
# Click on *"Download EMAN 2"*, whichever is the latest release of EMAN. 
52
# Scroll down to *Source* to download the *eman2.1beta3.source.tar.gz* 
53 3 Neil Voss
54
h2. Work with the source
55
56
# go to the directory with the source code
57
# extract the archive:
58
<pre>
59 71 Neil Voss
tar zxvf eman2.12.source.tar.gz
60 1 Neil Voss
</pre>
61 15 Neil Voss
# go into directory
62
<pre>cd EMAN2/src/build</pre>
63 19 Neil Voss
# start configure script:
64 1 Neil Voss
<pre>cmake ../eman2/</pre>
65 11 Neil Voss
#* Note: alternatively you can run @ccmake ../eman2/@ and configure all the parameters
66 75 Neil Voss
#* I had to disable ftgl (fonts in OpenGL) to get 2.12 to compile.
67 82 Neil Voss
#* I had to manually set BOOST_LIBRARY=/usr/lib64/boost148/libboost_python.so
68 84 Neil Voss
#* I had to manually set BOOST_INCLUDE_PATH=/usr/include/boost148
69
#* I had to manually set FREETYPE_INCLUDE_PATH=/usr/include/freetype2/
70 70 Neil Voss
<pre>
71
-- The C compiler identification is GNU 4.4.7
72
-- The CXX compiler identification is GNU 4.4.7
73
-- Check for working C compiler: /usr/bin/cc
74
-- Check for working C compiler: /usr/bin/cc -- works
75
-- Detecting C compiler ABI info
76
-- Detecting C compiler ABI info - done
77
-- Check for working CXX compiler: /usr/bin/c++
78
-- Check for working CXX compiler: /usr/bin/c++ -- works
79
-- Detecting CXX compiler ABI info
80
-- Detecting CXX compiler ABI info - done
81
-- Looking for fseek64
82
-- Looking for fseek64 - not found
83
-- Looking for fseeko
84
-- Looking for fseeko - found
85
-- Looking for ftell64
86
-- Looking for ftell64 - not found
87
-- Looking for ftello
88
-- Looking for ftello - found
89
-- Configuring done
90
-- Generating done
91
-- Build files have been written to: /emg/sw/EMAN2/src/build
92
</pre>
93 18 Neil Voss
# start compiling:
94
<pre>make</pre>
95 3 Neil Voss
# install to directory:
96 23 Neil Voss
<pre>sudo make install</pre>
97
98
h2. Set environmental variables
99
100
h3. bash
101
102
<pre>sudo nano /etc/profile.d/eman2.sh</pre>
103 24 Neil Voss
104
<pre>
105
export EMAN2DIR=/usr/local/EMAN2
106
export PATH=${EMAN2DIR}/bin:${PATH}
107 23 Neil Voss
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${EMAN2DIR}/lib
108
export PYTHONPATH=${EMAN2DIR}/lib:${EMAN2DIR}/bin
109
</pre>
110 16 Neil Voss
111 51 Neil Voss
h3. c shell
112
113
<pre>sudo nano /etc/profile.d/eman2.csh</pre>
114
115
<pre>
116
setenv EMAN2DIR /usr/local/EMAN2
117
setenv PATH ${EMAN2DIR}/bin:${PATH}
118
setenv LD_LIBRARY_PATH ${LD_LIBRARY_PATH}:${EMAN2DIR}/lib
119
setenv PYTHONPATH ${EMAN2DIR}/lib:${EMAN2DIR}/bin
120
</pre>
121
122
123 50 Neil Voss
h2. Install MyMPI
124 42 Neil Voss
125 63 Amber Herold
* First, add the openmpi module so that MyMPI can find it.
126
<pre>
127
module add openmpi-i386
128
-or-
129
module add openmpi-x86_64
130
</pre>
131
132 42 Neil Voss
* Download source: 
133 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*.
134
Click on *Download MPI Support*
135
Click on *pydusa-1.15es.tgz*
136 42 Neil Voss
* Extract:
137 61 Amber Herold
<pre>tar zxvf pydusa-1.15es.tgz</pre>
138 42 Neil Voss
* go into directory
139 61 Amber Herold
<pre>cd pydusa-1.15es</pre>
140 65 Amber Herold
&nbsp;
141 62 Amber Herold
If you are on a 64bit machine, you may have problems with the code finding the numpy headers:
142 65 Amber Herold
&nbsp;
143 34 Neil Voss
<pre>nano configure</pre>
144 65 Amber Herold
&nbsp;
145 54 Neil Voss
find the line:
146 1 Neil Voss
<pre>
147
elif test -d ${PY_PREFIX}/lib/python$PY_VERSION/site-packages/numpy/core/include; then
148
   PY_HEADER_NUMPY="-I${PY_PREFIX}/lib/python$PY_VERSION/site-packages/numpy/core/include"
149 54 Neil Voss
</pre>
150
and replace it with:
151 65 Amber Herold
&nbsp;
152 54 Neil Voss
<pre>
153 1 Neil Voss
elif test -d ${PY_PREFIX}/lib64/python$PY_VERSION/site-packages/numpy/core/include; then
154
   PY_HEADER_NUMPY="-I${PY_PREFIX}/lib64/python$PY_VERSION/site-packages/numpy/core/include"
155 46 Neil Voss
</pre>
156
* Configure:
157
<pre>
158
setenv MPIROOT /usr/lib64/openmpi
159
setenv MPIINC /usr/include/openmpi-x86_64
160
setenv MPILIB ${MPIROOT}/lib
161
setenv MPIBIN ${MPIROOT}/bin
162 1 Neil Voss
./configure
163
</pre>
164
<pre>
165
export MPIROOT=/usr/lib64/openmpi
166
export MPIINC=/usr/include/openmpi-x86_64
167
export MPILIB=${MPIROOT}/lib
168 47 Neil Voss
export MPIBIN=${MPIROOT}/bin
169 46 Neil Voss
./configure
170
</pre>
171 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:
172
<pre>
173
configure: error: Unable to find mpicc! mpicc location can be specified with --with-mpicc
174
</pre>
175 65 Amber Herold
&nbsp;
176 46 Neil Voss
* compile the source:
177
<pre>make</pre>
178
* copy the mpi.so to site-packages with a different name:
179
<pre>
180 1 Neil Voss
sudo mkdir /usr/lib64/python2.6/site-packages/mympi/
181 52 Neil Voss
sudo touch /usr/lib64/python2.6/site-packages/mympi/__init__.py
182 1 Neil Voss
sudo cp -v src/mpi.so /usr/lib64/python2.6/site-packages/mympi/mpi.so
183
</pre>
184 47 Neil Voss
* create a wrapper around the wrapper:
185 1 Neil Voss
<pre>sudo nano /usr/lib64/python2.6/site-packages/mpi.py</pre>
186
<pre>
187
import ctypes
188
mpi = ctypes.CDLL('libmpi.so.1', ctypes.RTLD_GLOBAL)
189
from mympi.mpi import *
190
</pre>
191 50 Neil Voss
This needs to be done to avoid the error:
192
<pre>
193
python: symbol lookup error: 
194
  /usr/lib64/openmpi/lib/openmpi/mca_paffinity_hwloc.so: 
195
    undefined symbol: mca_base_param_reg_int
196
</pre>
197 1 Neil Voss
198
* test 1: 
199
<pre>
200
python -c 'import mpi'
201
python -c 'import sys; from mpi import mpi_init; mpi_init(len(sys.argv), sys.argv)'
202
</pre>
203
204 50 Neil Voss
* test 2: 
205
<pre>sxisac.py start.hdf</pre>
206
(Note: start.hdf does not need to exist, if it does not exist then it should exit with file not found)
207 42 Neil Voss
208 50 Neil Voss
h2. Test to see if code works
209
210
see http://blake.bcm.edu/emanwiki/EMAN2/FAQ/EMAN2_unittest
211
212
<pre>
213
cd EMAN2/test/rt
214
./rt.py
215
</pre>
216
217
h2. Install MyMPI for MPI functions
218
219
see http://sparx-em.org/sparxwiki/MPI-installation
220
or https://www.nbcr.net/pub/wiki/index.php?title=MyMPI_Setup
221
222
This fixes this problem:
223
<pre>
224
    from mpi import mpi_init
225
ImportError: No module named mpi
226
</pre>
227
228
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.
229 34 Neil Voss
230 9 Neil Voss
h2. Documentation
231 3 Neil Voss
232 1 Neil Voss
* http://blake.bcm.edu/emanwiki/EMAN2/Install
233 2 Neil Voss
* http://blake.bcm.edu/emanwiki/EMAN2/FAQ/eman2BuildFAQ
234 31 Neil Voss
235 2 Neil Voss
______
236
237
[[Install EMAN|< Install EMAN 1]] | [[Install SPIDER|Install SPIDER >]]
238 1 Neil Voss
239
______